feat: Enhance frame class extraction logic to include width matching and update test assertions

This commit is contained in:
sHa
2025-12-27 05:49:56 +00:00
parent 8ceea5bce3
commit 229478ce64
5 changed files with 40 additions and 25 deletions

BIN
dist/renamer-0.2.12-py3-none-any.whl vendored Normal file

Binary file not shown.

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "renamer" name = "renamer"
version = "0.2.11" version = "0.2.12"
description = "Terminal-based media file renamer and metadata viewer" description = "Terminal-based media file renamer and metadata viewer"
readme = "README.md" readme = "README.md"
requires-python = ">=3.11" requires-python = ">=3.11"

View File

@@ -58,11 +58,26 @@ class MediaInfoExtractor:
if not self.video_tracks: if not self.video_tracks:
return None return None
height = getattr(self.video_tracks[0], 'height', None) height = getattr(self.video_tracks[0], 'height', None)
if height: width = getattr(self.video_tracks[0], 'width', None)
if not height or not width:
return None
# Check if interlaced # Check if interlaced
interlaced = getattr(self.video_tracks[0], 'interlaced', None) interlaced = getattr(self.video_tracks[0], 'interlaced', None)
scan_type = 'i' if interlaced == 'Yes' else 'p' scan_type = 'i' if interlaced == 'Yes' else 'p'
# First, try to match width to typical widths
matching_classes = []
for frame_class, info in FRAME_CLASSES.items():
if width in info['typical_widths'] and frame_class.endswith(scan_type):
matching_classes.append((frame_class, info))
if matching_classes:
# If multiple matches, choose the one with closest height
closest = min(matching_classes, key=lambda x: abs(height - x[1]['nominal_height']))
return closest[0]
# If no width match, fall back to height-based matching
# First try exact match # First try exact match
frame_class = f"{height}{scan_type}" frame_class = f"{height}{scan_type}"
if frame_class in FRAME_CLASSES: if frame_class in FRAME_CLASSES:

View File

@@ -29,4 +29,4 @@ class TestMediaInfoExtractor:
"""Test extracting audio languages""" """Test extracting audio languages"""
langs = extractor.extract_audio_langs() langs = extractor.extract_audio_langs()
# Text files don't have audio tracks # Text files don't have audio tracks
assert langs == '' assert langs is None

2
uv.lock generated
View File

@@ -164,7 +164,7 @@ wheels = [
[[package]] [[package]]
name = "renamer" name = "renamer"
version = "0.2.11" version = "0.2.12"
source = { editable = "." } source = { editable = "." }
dependencies = [ dependencies = [
{ name = "langcodes" }, { name = "langcodes" },