From e9153d22256d57842a16558a34077427b9f33f3e Mon Sep 17 00:00:00 2001 From: sHa Date: Sat, 27 Dec 2025 03:24:40 +0000 Subject: [PATCH] feat: Bump version to 0.2.7, enhance frame class extraction logic for better matching --- dist/renamer-0.2.7-py3-none-any.whl | Bin 0 -> 32926 bytes pyproject.toml | 2 +- renamer/extractors/mediainfo_extractor.py | 19 ++++++++++++++++++- uv.lock | 2 +- 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 dist/renamer-0.2.7-py3-none-any.whl 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 0000000000000000000000000000000000000000..63c9cbfa9c5d8a3b132af7fd88d45b87e297d51f GIT binary patch literal 32926 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 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" },