From 36bf30e314345ce6b56cd6cee7059e611627a6fa Mon Sep 17 00:00:00 2001 From: Jeena Date: Thu, 5 Jun 2025 12:53:51 +0900 Subject: [PATCH] Store window size and use template in transcoder --- src/recoder/transcoder.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/recoder/transcoder.py b/src/recoder/transcoder.py index 4765e6e..ed1213c 100644 --- a/src/recoder/transcoder.py +++ b/src/recoder/transcoder.py @@ -4,7 +4,7 @@ import subprocess import re import signal -from gi.repository import GLib, GObject +from gi.repository import GLib, GObject, Gio from recoder.models import FileStatus, FileItem @@ -25,6 +25,9 @@ class Transcoder(GObject.GObject): batch_progress = GObject.Property(type=int, minimum=0, maximum=100, default=0) batch_status = GObject.Property(type=BatchStatus, default=BatchStatus.IDLE) + # Property bound to GSettings key for output folder template + output_folder_template = GObject.Property(type=str, default="transcoded") + def __init__(self, file_items): super().__init__() self.file_items = file_items @@ -34,6 +37,20 @@ class Transcoder(GObject.GObject): self._paused.set() self._process = None + self.settings = Gio.Settings.new("net.jeena.recoder.preferences") + self.settings.bind( + "output-folder-template", self, + "output_folder_template", + Gio.SettingsBindFlags.DEFAULT + ) + + def get_output_folder(self, path): + source_folder = os.path.basename(os.path.dirname(path)) + folder_name = self.output_folder_template.replace("{{source_folder_name}}", source_folder) + folder_name = os.path.expanduser(folder_name) + output_folder = os.path.join(os.path.dirname(path), folder_name) + return output_folder + def start(self): if self.is_processing: return @@ -76,14 +93,13 @@ class Transcoder(GObject.GObject): GLib.idle_add(file_item.set_property, "status", FileStatus.PROCESSING) GLib.idle_add(file_item.set_property, "progress", 0) - success, _ = self._transcode_file(path, os.path.join(os.path.dirname(path), "transcoded"), - base, idx, total, file_item) + output_folder = self.get_output_folder(path) + success, _ = self._transcode_file(path, output_folder, base, idx, total, file_item) new_status = FileStatus.DONE if success else FileStatus.ERROR GLib.idle_add(file_item.set_property, "status", new_status) GLib.idle_add(file_item.set_property, "progress", 100 if success else 0) - # Fix: Only set ERROR if not stopped by user if not success and not self._stop_requested: self.batch_status = BatchStatus.ERROR break