diff --git a/lazy_player/__init__.py b/lazy_player/__init__.py index 4f5b6cc..d24a27c 100644 --- a/lazy_player/__init__.py +++ b/lazy_player/__init__.py @@ -8,6 +8,7 @@ from typing import Any, cast import gi from .file_model import FileItem, FileListModel, FileType +from .thumbnailer import Thumbnailer from .video_player import VideoPlayer gi.require_version("Gdk", "4.0") @@ -29,8 +30,9 @@ class MainWindow(Gtk.ApplicationWindow): overlay_hide_time: float last_position_save: float - def __init__(self, *args: Any, **kwargs: Any): + def __init__(self, *args: Any, thumbnailer: Thumbnailer, **kwargs: Any): super().__init__(*args, **kwargs) + self.thumbnailer = thumbnailer # Directory history stack self.directory_history: list[Path] = [] @@ -441,7 +443,10 @@ class MainWindow(Gtk.ApplicationWindow): if path.is_dir(): items.append(FileItem(path.name, FileType.DIRECTORY, path.resolve())) elif path.suffix in (".mkv", ".mp4", ".avi"): - items.append(FileItem(path.name, FileType.VIDEO, path.resolve())) + file_item = FileItem(path.name, FileType.VIDEO, path.resolve()) + if not file_item.saved_thumbnail: + self.thumbnailer.generate_thumbnail(file_item) + items.append(file_item) # Sort directories first, then files, both alphabetically items.sort(key=lambda x: (x.file_type != FileType.DIRECTORY, x.name.lower())) @@ -459,6 +464,9 @@ class App(Gtk.Application): # Initialize GStreamer Gst.init(None) + # Create thumbnailer + self.thumbnailer = Thumbnailer() + # Load CSS css_provider = Gtk.CssProvider() css_file = Path(__file__).parent / "style.css" @@ -475,7 +483,7 @@ class App(Gtk.Application): ) def do_activate(self): - win = MainWindow(application=self) + win = MainWindow(application=self, thumbnailer=self.thumbnailer) win.present()