feat: Enhance frame class extraction logic to include width matching and update test assertions
This commit is contained in:
BIN
dist/renamer-0.2.12-py3-none-any.whl
vendored
Normal file
BIN
dist/renamer-0.2.12-py3-none-any.whl
vendored
Normal file
Binary file not shown.
@@ -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"
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user