diff --git a/dist/renamer-0.2.7-py3-none-any.whl b/dist/renamer-0.2.7-py3-none-any.whl new file mode 100644 index 0000000..63c9cbf Binary files /dev/null and b/dist/renamer-0.2.7-py3-none-any.whl differ diff --git a/pyproject.toml b/pyproject.toml index 1a85f72..f5203db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "renamer" -version = "0.2.6" +version = "0.2.7" description = "Terminal-based media file renamer and metadata viewer" readme = "README.md" requires-python = ">=3.11" diff --git a/renamer/extractors/mediainfo_extractor.py b/renamer/extractors/mediainfo_extractor.py index f8a11aa..77c5819 100644 --- a/renamer/extractors/mediainfo_extractor.py +++ b/renamer/extractors/mediainfo_extractor.py @@ -22,10 +22,27 @@ class MediaInfoExtractor: self.sub_tracks = [] def _get_frame_class_from_height(self, height: int) -> str | None: - """Get frame class from video height using FRAME_CLASSES constant""" + """Get frame class from video height, finding closest match if exact not found""" + if not height: + return None + + # First try exact match for frame_class, info in FRAME_CLASSES.items(): if height == info['nominal_height']: return frame_class + + # If no exact match, find closest + closest = None + min_diff = float('inf') + for frame_class, info in FRAME_CLASSES.items(): + diff = abs(height - info['nominal_height']) + if diff < min_diff: + min_diff = diff + closest = frame_class + + # Only return if difference is reasonable (within 50 pixels) + if min_diff <= 50: + return closest return None def extract_duration(self) -> float | None: diff --git a/uv.lock b/uv.lock index 404dbf3..f3d70de 100644 --- a/uv.lock +++ b/uv.lock @@ -164,7 +164,7 @@ wheels = [ [[package]] name = "renamer" -version = "0.2.6" +version = "0.2.7" source = { editable = "." } dependencies = [ { name = "langcodes" },