From ae44976bcc889af7b297a89013301517f7693a9a Mon Sep 17 00:00:00 2001 From: sHa Date: Sun, 4 Jan 2026 12:33:36 +0000 Subject: [PATCH] feat: Add HEVC encoding options and support for MPG/MPEG formats in conversion --- ToDo.md | 8 + dist/renamer-0.7.5-py3-none-any.whl | Bin 0 -> 121526 bytes pyproject.toml | 2 +- renamer/app.py | 8 +- renamer/constants/edition_constants.py | 2 +- renamer/constants/media_constants.py | 10 ++ renamer/screens.py | 176 ++++++++++++++------- renamer/services/conversion_service.py | 206 +++++++++++++++++++++---- renamer/settings.py | 2 + uv.lock | 2 +- 10 files changed, 326 insertions(+), 90 deletions(-) create mode 100644 dist/renamer-0.7.5-py3-none-any.whl diff --git a/ToDo.md b/ToDo.md index b8febb1..51e62ab 100644 --- a/ToDo.md +++ b/ToDo.md @@ -60,6 +60,14 @@ This file tracks future feature enhancements and improvements. - Support for fanart/backdrops - Poster cache management UI +- [ ] **Dedicated Poster Window with Real Image Support** + - Create separate panel/window for poster display in catalog mode + - Display actual poster images (not ASCII art) using terminal graphics protocols + - Support for Kitty graphics protocol, iTerm2 inline images, or Sixel + - Configurable poster size with smaller font rendering + - Side-by-side layout: metadata (60%) + poster (40%) + - Higher resolution ASCII art as fallback (100+ chars with extended gradient) + - [ ] **Progress Indicators** - Show scan progress - Batch operation progress bars diff --git a/dist/renamer-0.7.5-py3-none-any.whl b/dist/renamer-0.7.5-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..3ec72b5d416f2c0be520bd07670e9071b1411f97 GIT binary patch literal 121526 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 Q{*41?BVC_>RTAX?0l-%}wg3PC literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index b053869..63dbd1c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "renamer" -version = "0.7.4" +version = "0.7.5" description = "Terminal-based media file renamer and metadata viewer" readme = "README.md" requires-python = ">=3.11" diff --git a/renamer/app.py b/renamer/app.py index aaf0186..053d4e0 100644 --- a/renamer/app.py +++ b/renamer/app.py @@ -69,7 +69,7 @@ class AppCommandProvider(Provider): ("scan", "Scan Directory", "Scan current directory for media files (s)"), ("refresh", "Refresh File", "Refresh metadata for selected file (f)"), ("rename", "Rename File", "Rename the selected file (r)"), - ("convert", "Convert AVI to MKV", "Convert AVI file to MKV container with metadata (c)"), + ("convert", "Convert to MKV", "Convert AVI/MPG/MPEG file to MKV container with metadata (c)"), ("delete", "Delete File", "Delete the selected file (d)"), ("toggle_mode", "Toggle Display Mode", "Switch between technical and catalog view (m)"), ("expand", "Toggle Tree Expansion", "Expand or collapse all tree nodes (p)"), @@ -105,7 +105,7 @@ class RenamerApp(App): ("s", "scan", "Scan"), ("f", "refresh", "Refresh"), ("r", "rename", "Rename"), - ("c", "convert", "Convert AVI→MKV"), + ("c", "convert", "Convert to MKV"), ("d", "delete", "Delete"), ("p", "expand", "Toggle Tree"), ("m", "toggle_mode", "Toggle Mode"), @@ -390,7 +390,7 @@ By Category:""" self.notify("Proposed name is the same as current name; no rename needed.", severity="information", timeout=3) async def action_convert(self): - """Convert AVI file to MKV with metadata preservation.""" + """Convert AVI/MPG/MPEG file to MKV with metadata preservation.""" tree = self.query_one("#file_tree", Tree) node = tree.cursor_node @@ -403,7 +403,7 @@ By Category:""" # Check if file can be converted if not conversion_service.can_convert(file_path): - self.notify("Only AVI files can be converted to MKV", severity="error", timeout=3) + self.notify("Only AVI, MPG, and MPEG files can be converted to MKV", severity="error", timeout=3) return # Create extractor for metadata diff --git a/renamer/constants/edition_constants.py b/renamer/constants/edition_constants.py index a162228..021bb46 100644 --- a/renamer/constants/edition_constants.py +++ b/renamer/constants/edition_constants.py @@ -7,7 +7,7 @@ and their aliases for detection in filenames. SPECIAL_EDITIONS = { "Theatrical Cut": ["Theatrical Cut"], "Director's Cut": ["Director's Cut", "Director Cut"], - "Extended Edition": ["Extended Edition", "Ultimate Extended Edition"], + "Extended Cut": ["Extended Cut", "Ultimate Extended Cut", "Extended Edition", "Ultimate Extended Edition"], "Special Edition": ["Special Edition"], "Collector's Edition": ["Collector's Edition"], "Criterion Collection": ["Criterion Collection"], diff --git a/renamer/constants/media_constants.py b/renamer/constants/media_constants.py index 5ce795c..23cddd9 100644 --- a/renamer/constants/media_constants.py +++ b/renamer/constants/media_constants.py @@ -43,4 +43,14 @@ MEDIA_TYPES = { "m4v": {"description": "MPEG-4 video", "meta_type": "MP4", "mime": "video/mp4"}, "3gp": {"description": "3GPP multimedia", "meta_type": "MP4", "mime": "video/3gpp"}, "ogv": {"description": "Ogg Video", "meta_type": "Ogg", "mime": "video/ogg"}, + "mpg": { + "description": "MPEG video", + "meta_type": "MPEG-PS", + "mime": "video/mpeg", + }, + "mpeg": { + "description": "MPEG video", + "meta_type": "MPEG-PS", + "mime": "video/mpeg", + }, } diff --git a/renamer/screens.py b/renamer/screens.py index eb66b2a..41fde92 100644 --- a/renamer/screens.py +++ b/renamer/screens.py @@ -308,6 +308,21 @@ Configure application settings. yield Button("Pseudo", id="poster_pseudo", variant="primary" if settings.get("poster") == "pseudo" else "default") yield Button("Viu", id="poster_viu", variant="primary" if settings.get("poster") == "viu" else "default") + # HEVC quality selection + yield Static("HEVC Encoding Quality (for conversions):", classes="label") + with Horizontal(): + yield Button("CRF 18 (Visually Lossless)", id="hevc_crf_18", variant="primary" if settings.get("hevc_crf") == 18 else "default") + yield Button("CRF 23 (High Quality)", id="hevc_crf_23", variant="primary" if settings.get("hevc_crf") == 23 else "default") + yield Button("CRF 28 (Balanced)", id="hevc_crf_28", variant="primary" if settings.get("hevc_crf") == 28 else "default") + + # HEVC preset selection + yield Static("HEVC Encoding Speed (faster = lower quality/smaller file):", classes="label") + with Horizontal(): + yield Button("Ultrafast", id="hevc_preset_ultrafast", variant="primary" if settings.get("hevc_preset") == "ultrafast" else "default") + yield Button("Veryfast", id="hevc_preset_veryfast", variant="primary" if settings.get("hevc_preset") == "veryfast" else "default") + yield Button("Fast", id="hevc_preset_fast", variant="primary" if settings.get("hevc_preset") == "fast" else "default") + yield Button("Medium", id="hevc_preset_medium", variant="primary" if settings.get("hevc_preset") == "medium" else "default") + # TTL inputs yield Static("Cache TTL - Extractors (hours):", classes="label") yield Input(value=str(settings.get("cache_ttl_extractors") // 3600), id="ttl_extractors", classes="input_field") @@ -348,6 +363,30 @@ Configure application settings. no_btn.variant = "primary" if poster_mode == "no" else "default" pseudo_btn.variant = "primary" if poster_mode == "pseudo" else "default" viu_btn.variant = "primary" if poster_mode == "viu" else "default" + elif event.button.id.startswith("hevc_crf_"): + # Toggle HEVC CRF buttons + crf_value = int(event.button.id.split("_")[-1]) + self.app.settings.set("hevc_crf", crf_value) # type: ignore + # Update button variants + crf18_btn = self.query_one("#hevc_crf_18", Button) + crf23_btn = self.query_one("#hevc_crf_23", Button) + crf28_btn = self.query_one("#hevc_crf_28", Button) + crf18_btn.variant = "primary" if crf_value == 18 else "default" + crf23_btn.variant = "primary" if crf_value == 23 else "default" + crf28_btn.variant = "primary" if crf_value == 28 else "default" + elif event.button.id.startswith("hevc_preset_"): + # Toggle HEVC preset buttons + preset_value = event.button.id.split("_")[-1] + self.app.settings.set("hevc_preset", preset_value) # type: ignore + # Update button variants + ultrafast_btn = self.query_one("#hevc_preset_ultrafast", Button) + veryfast_btn = self.query_one("#hevc_preset_veryfast", Button) + fast_btn = self.query_one("#hevc_preset_fast", Button) + medium_btn = self.query_one("#hevc_preset_medium", Button) + ultrafast_btn.variant = "primary" if preset_value == "ultrafast" else "default" + veryfast_btn.variant = "primary" if preset_value == "veryfast" else "default" + fast_btn.variant = "primary" if preset_value == "fast" else "default" + medium_btn.variant = "primary" if preset_value == "medium" else "default" def save_settings(self): try: @@ -409,7 +448,7 @@ class ConvertConfirmScreen(Screen): def compose(self): from .formatters.text_formatter import TextFormatter - title_text = f"{TextFormatter.bold(TextFormatter.yellow('AVI → MKV CONVERSION'))}" + title_text = f"{TextFormatter.bold(TextFormatter.yellow('MKV CONVERSION'))}" # Build details details_lines = [ @@ -438,83 +477,106 @@ class ConvertConfirmScreen(Screen): details_text = "\n".join(details_lines) - warning_text = f""" -{TextFormatter.bold(TextFormatter.red("Fast remux - streams will be copied without re-encoding"))} -{TextFormatter.yellow("This operation may take a few seconds to minutes depending on file size")} + # Get HEVC CRF from settings + settings = self.app.settings # type: ignore + hevc_crf = settings.get("hevc_crf", 23) -Do you want to proceed with conversion? + info_text = f""" +{TextFormatter.bold('Choose conversion mode:')} + +{TextFormatter.green('Copy Mode')} - Fast remux, no re-encoding (seconds to minutes) +{TextFormatter.yellow(f'HEVC Mode')} - Re-encode to H.265, CRF {hevc_crf} quality (minutes to hours) + {TextFormatter.grey('(Change quality in Settings with Ctrl+S)')} """.strip() with Center(): with Vertical(): yield Static(title_text, id="convert_content", markup=True) yield Static(details_text, id="conversion_details", markup=True) - yield Static(warning_text, id="warning_content", markup=True) + yield Static(info_text, id="info_text", markup=True) with Horizontal(id="buttons"): - yield Button("Convert (y)", id="convert", variant="success") + yield Button("Convert Copy (c)", id="convert_copy", variant="success") + yield Button("Convert HEVC (e)", id="convert_hevc", variant="primary") yield Button("Cancel (n)", id="cancel", variant="error") def on_mount(self): - self.set_focus(self.query_one("#convert")) + self.set_focus(self.query_one("#convert_copy")) def on_button_pressed(self, event): - if event.button.id == "convert": - # Start conversion - app = self.app # type: ignore - app.notify("Starting conversion...", severity="information", timeout=2) + if event.button.id == "convert_copy": + self._do_conversion(encode_hevc=False) + elif event.button.id == "convert_hevc": + self._do_conversion(encode_hevc=True) + elif event.button.id == "cancel": + self.app.pop_screen() # type: ignore - def do_conversion(): - from .services.conversion_service import ConversionService - import threading - import logging + def _do_conversion(self, encode_hevc: bool): + """Start conversion with the specified encoding mode.""" + app = self.app # type: ignore + settings = app.settings - conversion_service = ConversionService() - logging.info(f"Starting conversion of {self.avi_path}") + # Get CRF and preset from settings if using HEVC + crf = settings.get("hevc_crf", 23) if encode_hevc else 18 + preset = settings.get("hevc_preset", "fast") if encode_hevc else "medium" - success, message = conversion_service.convert_avi_to_mkv( - self.avi_path, - extractor=self.extractor - ) + mode_str = f"HEVC CRF {crf} ({preset})" if encode_hevc else "Copy" + app.notify(f"Starting conversion ({mode_str})...", severity="information", timeout=2) - logging.info(f"Conversion result: success={success}, message={message}") - - # Schedule UI updates on the main thread - mkv_path = self.avi_path.with_suffix('.mkv') - - def handle_success(): - logging.info(f"handle_success called: {mkv_path}") - app.notify(f"✓ {message}", severity="information", timeout=5) - logging.info(f"Adding file to tree: {mkv_path}") - app.add_file_to_tree(mkv_path) - logging.info("Conversion success handler completed") - - def handle_error(): - logging.info(f"handle_error called: {message}") - app.notify(f"✗ {message}", severity="error", timeout=10) - logging.info("Conversion error handler completed") - - if success: - logging.info(f"Conversion successful, scheduling UI update for {mkv_path}") - app.call_later(handle_success) - else: - logging.error(f"Conversion failed: {message}") - app.call_later(handle_error) - - # Run conversion in background thread + def do_conversion(): + from .services.conversion_service import ConversionService import threading - threading.Thread(target=do_conversion, daemon=True).start() + import logging - # Close the screen - self.app.pop_screen() # type: ignore - else: - # Cancel - self.app.pop_screen() # type: ignore + conversion_service = ConversionService() + logging.info(f"Starting conversion of {self.avi_path} with encode_hevc={encode_hevc}, crf={crf}, preset={preset}") + logging.info(f"CPU architecture: {conversion_service.cpu_arch}") + + success, message = conversion_service.convert_avi_to_mkv( + self.avi_path, + extractor=self.extractor, + encode_hevc=encode_hevc, + crf=crf, + preset=preset + ) + + logging.info(f"Conversion result: success={success}, message={message}") + + # Schedule UI updates on the main thread + mkv_path = self.avi_path.with_suffix('.mkv') + + def handle_success(): + logging.info(f"handle_success called: {mkv_path}") + app.notify(f"✓ {message}", severity="information", timeout=5) + logging.info(f"Adding file to tree: {mkv_path}") + app.add_file_to_tree(mkv_path) + logging.info("Conversion success handler completed") + + def handle_error(): + logging.info(f"handle_error called: {message}") + app.notify(f"✗ {message}", severity="error", timeout=10) + logging.info("Conversion error handler completed") + + if success: + logging.info(f"Conversion successful, scheduling UI update for {mkv_path}") + app.call_later(handle_success) + else: + logging.error(f"Conversion failed: {message}") + app.call_later(handle_error) + + # Run conversion in background thread + import threading + threading.Thread(target=do_conversion, daemon=True).start() + + # Close the screen + self.app.pop_screen() # type: ignore def on_key(self, event): - if event.key == "y": - # Simulate convert button press - convert_button = self.query_one("#convert") - self.on_button_pressed(type('Event', (), {'button': convert_button})()) + if event.key == "c": + # Copy mode + self._do_conversion(encode_hevc=False) + elif event.key == "e": + # HEVC mode + self._do_conversion(encode_hevc=True) elif event.key == "n" or event.key == "escape": self.app.pop_screen() # type: ignore diff --git a/renamer/services/conversion_service.py b/renamer/services/conversion_service.py index ba2acda..a9306d3 100644 --- a/renamer/services/conversion_service.py +++ b/renamer/services/conversion_service.py @@ -10,6 +10,7 @@ This service manages the process of converting AVI files to MKV container: import logging import subprocess +import platform from pathlib import Path from typing import Optional, List, Dict, Tuple @@ -45,29 +46,148 @@ class ConversionService: def __init__(self): """Initialize the conversion service.""" - logger.debug("ConversionService initialized") + self.cpu_arch = self._detect_cpu_architecture() + logger.debug(f"ConversionService initialized with CPU architecture: {self.cpu_arch}") + + def _detect_cpu_architecture(self) -> str: + """Detect CPU architecture for optimization. + + Returns: + Architecture string: 'x86_64', 'arm64', 'aarch64', or 'unknown' + """ + machine = platform.machine().lower() + + # Try to get more specific CPU info + try: + if machine in ['x86_64', 'amd64']: + # Check for Intel vs AMD + with open('/proc/cpuinfo', 'r') as f: + cpuinfo = f.read().lower() + if 'intel' in cpuinfo or 'xeon' in cpuinfo: + return 'intel_x86_64' + elif 'amd' in cpuinfo: + return 'amd_x86_64' + else: + return 'x86_64' + elif machine in ['arm64', 'aarch64']: + # Check for specific ARM chips + with open('/proc/cpuinfo', 'r') as f: + cpuinfo = f.read().lower() + if 'rk3588' in cpuinfo or 'rockchip' in cpuinfo: + return 'arm64_rk3588' + else: + return 'arm64' + except Exception as e: + logger.debug(f"Could not read /proc/cpuinfo: {e}") + + return machine + + def _get_x265_params(self, preset: str = 'medium') -> str: + """Get optimized x265 parameters based on CPU architecture. + + Args: + preset: Encoding preset (ultrafast, superfast, veryfast, faster, fast, medium, slow) + + Returns: + x265 parameter string optimized for the detected CPU + """ + # Base parameters for quality + base_params = [ + 'profile=main10', + 'level=4.1', + ] + + # CPU-specific optimizations + if self.cpu_arch in ['intel_x86_64', 'amd_x86_64', 'x86_64']: + # Intel Xeon / AMD optimization + # Enable assembly optimizations and threading + cpu_params = [ + 'pools=+', # Enable thread pools + 'frame-threads=4', # Parallel frame encoding (adjust based on cores) + 'lookahead-threads=2', # Lookahead threads + 'asm=auto', # Enable CPU-specific assembly optimizations + ] + + # For faster encoding on servers + if preset in ['ultrafast', 'superfast', 'veryfast', 'faster', 'fast']: + cpu_params.extend([ + 'ref=2', # Fewer reference frames for speed + 'bframes=3', # Fewer B-frames + 'me=1', # Faster motion estimation (DIA) + 'subme=1', # Faster subpixel refinement + 'rd=2', # Faster RD refinement + ]) + else: # medium or slow + cpu_params.extend([ + 'ref=3', + 'bframes=4', + 'me=2', # HEX motion estimation + 'subme=2', + 'rd=3', + ]) + + elif self.cpu_arch in ['arm64_rk3588', 'arm64', 'aarch64']: + # ARM64 / RK3588 optimization + # RK3588 has 4x Cortex-A76 + 4x Cortex-A55 + cpu_params = [ + 'pools=+', + 'frame-threads=4', # Use big cores + 'lookahead-threads=1', # Lighter lookahead for ARM + 'asm=auto', # Enable NEON optimizations + ] + + # ARM is slower, so optimize more aggressively for speed + if preset in ['ultrafast', 'superfast', 'veryfast', 'faster', 'fast']: + cpu_params.extend([ + 'ref=1', # Minimal reference frames + 'bframes=2', + 'me=0', # Full search (faster on ARM) + 'subme=0', + 'rd=1', + 'weightp=0', # Disable weighted prediction for speed + 'weightb=0', + ]) + else: # medium + cpu_params.extend([ + 'ref=2', + 'bframes=3', + 'me=1', + 'subme=1', + 'rd=2', + ]) + + else: + # Generic/unknown architecture - conservative settings + cpu_params = [ + 'pools=+', + 'frame-threads=2', + 'ref=2', + 'bframes=3', + ] + + return ':'.join(base_params + cpu_params) def can_convert(self, file_path: Path) -> bool: - """Check if a file can be converted (is AVI). + """Check if a file can be converted (is AVI, MPG, or MPEG). Args: file_path: Path to the file to check Returns: - True if file is AVI and can be converted + True if file is AVI, MPG, or MPEG and can be converted """ if not file_path.exists() or not file_path.is_file(): return False - return file_path.suffix.lower() == '.avi' + return file_path.suffix.lower() in {'.avi', '.mpg', '.mpeg'} - def find_subtitle_files(self, avi_path: Path) -> List[Path]: - """Find subtitle files near the AVI file. + def find_subtitle_files(self, video_path: Path) -> List[Path]: + """Find subtitle files near the video file. Looks for subtitle files with the same basename in the same directory. Args: - avi_path: Path to the AVI file + video_path: Path to the video file Returns: List of Path objects for found subtitle files @@ -77,8 +197,8 @@ class ConversionService: [Path("/media/movie.srt"), Path("/media/movie.eng.srt")] """ subtitle_files = [] - base_name = avi_path.stem # filename without extension - directory = avi_path.parent + base_name = video_path.stem # filename without extension + directory = video_path.parent # Look for files with same base name and subtitle extensions for sub_ext in self.SUBTITLE_EXTENSIONS: @@ -93,7 +213,7 @@ class ConversionService: if sub_file not in subtitle_files: subtitle_files.append(sub_file) - logger.debug(f"Found {len(subtitle_files)} subtitle files for {avi_path.name}") + logger.debug(f"Found {len(subtitle_files)} subtitle files for {video_path.name}") return subtitle_files def map_audio_languages( @@ -142,35 +262,41 @@ class ConversionService: def build_ffmpeg_command( self, - avi_path: Path, + source_path: Path, mkv_path: Path, audio_languages: List[Optional[str]], - subtitle_files: List[Path] + subtitle_files: List[Path], + encode_hevc: bool = False, + crf: int = 18, + preset: str = 'medium' ) -> List[str]: - """Build ffmpeg command for AVI to MKV conversion. + """Build ffmpeg command for video to MKV conversion. Creates a command that: - - Copies video and audio streams (no re-encoding) + - Copies video and audio streams (no re-encoding) OR + - Encodes video to HEVC with high quality settings - Sets audio language metadata - Includes external subtitle files - Sets MKV title from filename Args: - avi_path: Source AVI file + source_path: Source video file (AVI, MPG, or MPEG) mkv_path: Destination MKV file audio_languages: Language codes for each audio track subtitle_files: List of subtitle files to include + encode_hevc: If True, encode video to HEVC instead of copying + crf: Constant Rate Factor for HEVC (18=visually lossless, 23=high quality default) Returns: List of command arguments for subprocess """ cmd = ['ffmpeg'] - # Add flags to fix timestamp issues in AVI files + # Add flags to fix timestamp issues (particularly for AVI files) cmd.extend(['-fflags', '+genpts']) # Input file - cmd.extend(['-i', str(avi_path)]) + cmd.extend(['-i', str(source_path)]) # Add subtitle files as inputs for sub_file in subtitle_files: @@ -186,8 +312,25 @@ class ConversionService: for i in range(len(subtitle_files)): cmd.extend(['-map', f'{i+1}:s:0']) - # Copy codecs (no re-encoding) - cmd.extend(['-c', 'copy']) + # Video codec settings + if encode_hevc: + # HEVC encoding with CPU-optimized parameters + cmd.extend(['-c:v', 'libx265']) + cmd.extend(['-crf', str(crf)]) + # Use specified preset + cmd.extend(['-preset', preset]) + # 10-bit encoding for better quality (if source supports it) + cmd.extend(['-pix_fmt', 'yuv420p10le']) + # CPU-optimized x265 parameters + x265_params = self._get_x265_params(preset) + cmd.extend(['-x265-params', x265_params]) + # Copy audio streams (no audio re-encoding) + cmd.extend(['-c:a', 'copy']) + # Copy subtitle streams + cmd.extend(['-c:s', 'copy']) + else: + # Copy all streams (no re-encoding) + cmd.extend(['-c', 'copy']) # Set audio language metadata for i, lang in enumerate(audio_languages): @@ -195,7 +338,7 @@ class ConversionService: cmd.extend([f'-metadata:s:a:{i}', f'language={lang}']) # Set title metadata from filename - title = avi_path.stem + title = source_path.stem cmd.extend(['-metadata', f'title={title}']) # Output file @@ -209,28 +352,36 @@ class ConversionService: avi_path: Path, extractor: Optional[MediaExtractor] = None, output_path: Optional[Path] = None, - dry_run: bool = False + dry_run: bool = False, + encode_hevc: bool = False, + crf: int = 18, + preset: str = 'medium' ) -> Tuple[bool, str]: - """Convert AVI file to MKV with metadata preservation. + """Convert AVI/MPG/MPEG file to MKV with metadata preservation. Args: - avi_path: Source AVI file path + avi_path: Source video file path (AVI, MPG, or MPEG) extractor: Optional MediaExtractor (creates new if None) output_path: Optional output path (defaults to same name with .mkv) dry_run: If True, build command but don't execute + encode_hevc: If True, encode video to HEVC instead of copying + crf: Constant Rate Factor for HEVC (18=visually lossless, 23=high quality) + preset: x265 preset (ultrafast, veryfast, faster, fast, medium, slow) Returns: Tuple of (success, message) Example: >>> success, msg = service.convert_avi_to_mkv( - ... Path("/media/movie.avi") + ... Path("/media/movie.avi"), + ... encode_hevc=True, + ... crf=18 ... ) >>> print(msg) """ # Validate input if not self.can_convert(avi_path): - error_msg = f"File is not AVI or doesn't exist: {avi_path}" + error_msg = f"File is not a supported format (AVI/MPG/MPEG) or doesn't exist: {avi_path}" logger.error(error_msg) return False, error_msg @@ -273,7 +424,10 @@ class ConversionService: avi_path, output_path, audio_languages, - subtitle_files + subtitle_files, + encode_hevc, + crf, + preset ) # Dry run mode diff --git a/renamer/settings.py b/renamer/settings.py index 3c0391f..5fd5aa3 100644 --- a/renamer/settings.py +++ b/renamer/settings.py @@ -10,6 +10,8 @@ class Settings: DEFAULTS = { "mode": "technical", # "technical" or "catalog" "poster": "no", # "no", "pseudo", "viu" + "hevc_crf": 23, # HEVC quality: 18=visually lossless, 23=high quality, 28=balanced + "hevc_preset": "fast", # HEVC speed: ultrafast, veryfast, faster, fast, medium, slow "cache_ttl_extractors": 21600, # 6 hours in seconds "cache_ttl_tmdb": 21600, # 6 hours in seconds "cache_ttl_posters": 2592000, # 30 days in seconds diff --git a/uv.lock b/uv.lock index f1288b1..f44da92 100644 --- a/uv.lock +++ b/uv.lock @@ -462,7 +462,7 @@ wheels = [ [[package]] name = "renamer" -version = "0.7.4" +version = "0.7.5" source = { editable = "." } dependencies = [ { name = "langcodes" },