def main(argv): factory = GnomeDesktop.DesktopThumbnailFactory() for filename in argv[1:]: if os.path.isdir(filename): thumbnail_folder(factory, filename) else: make_thumbnail(factory, filename)
def generate_thumbnail_gnome(filename): factory = GnomeDesktop.DesktopThumbnailFactory() mtime = os.path.getmtime(filename) # Use Gio to determine the URI and mime type f = Gio.file_new_for_path(filename) uri = f.get_uri() info = f.query_info("standard::content-type", Gio.FileQueryInfoFlags.NONE, None) mime_type = info.get_content_type() if factory.lookup(uri, mtime) is not None: return False if not factory.can_thumbnail(uri, mime_type, mtime): return False thumbnail = factory.generate_thumbnail(uri, mime_type) if thumbnail is None: return False factory.save_thumbnail(thumbnail, uri, mtime) return True
import os import sys from multiprocessing import Pool from pathlib import Path from typing import List, Union import click import gi from loguru import logger from tqdm import tqdm gi.require_version("GnomeDesktop", "3.0") from gi.repository import Gio, GnomeDesktop # isort:skip global factory factory = GnomeDesktop.DesktopThumbnailFactory().new( GnomeDesktop.DesktopThumbnailSize.LARGE) logger.remove() logger.add(sys.stdout, level="INFO") logger.add("/tmp/thumbgen.log", level="DEBUG", rotation="100 MB") def make_thumbnail(fpath: str) -> bool: mtime = os.path.getmtime(fpath) # Use Gio to determine the URI and mime type f = Gio.file_new_for_path(str(fpath)) uri = f.get_uri() info = f.query_info("standard::content-type", Gio.FileQueryInfoFlags.NONE, None) mime_type = info.get_content_type() if factory.lookup(uri, mtime) is not None:
import sys from multiprocessing import Pool from pathlib import Path from typing import List, Union import click import gi from loguru import logger from tqdm import tqdm gi.require_version("GnomeDesktop", "3.0") from gi.repository import Gio, GnomeDesktop # isort:skip global factory factory = GnomeDesktop.DesktopThumbnailFactory() logger.remove() logger.add(sys.stdout, level="INFO") logger.add("/tmp/thumbgen.log", level="DEBUG", rotation="100 MB") def make_thumbnail(fpath: str) -> bool: mtime = os.path.getmtime(fpath) # Use Gio to determine the URI and mime type f = Gio.file_new_for_path(str(fpath)) uri = f.get_uri() info = f.query_info("standard::content-type", Gio.FileQueryInfoFlags.NONE, None) mime_type = info.get_content_type() if factory.lookup(uri, mtime) is not None: logger.debug("FRESH {}".format(uri))