diff --git a/dist/renamer-0.5.2-py3-none-any.whl b/dist/renamer-0.5.2-py3-none-any.whl new file mode 100644 index 0000000..3ac3360 Binary files /dev/null and b/dist/renamer-0.5.2-py3-none-any.whl differ diff --git a/pyproject.toml b/pyproject.toml index 9b9ab7d..1c15733 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "renamer" -version = "0.5.1" +version = "0.5.2" 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 1b7b5fb..c722a20 100644 --- a/renamer/extractors/mediainfo_extractor.py +++ b/renamer/extractors/mediainfo_extractor.py @@ -71,43 +71,26 @@ class MediaInfoExtractor: if not self.video_tracks: return None height = getattr(self.video_tracks[0], 'height', None) - width = getattr(self.video_tracks[0], 'width', None) - if not height or not width: + if not height: return None # Check if interlaced interlaced = getattr(self.video_tracks[0], 'interlaced', None) 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 - frame_class = f"{height}{scan_type}" - if frame_class in FRAME_CLASSES: - return frame_class - - # Find closest height with same scan type - closest_height = None + # Find the closest frame class based on height + closest_class = None min_diff = float('inf') - for fc, info in FRAME_CLASSES.items(): - if fc.endswith(scan_type): + for frame_class, info in FRAME_CLASSES.items(): + if frame_class.endswith(scan_type): diff = abs(height - info['nominal_height']) if diff < min_diff: min_diff = diff - closest_height = info['nominal_height'] + closest_class = frame_class - if closest_height and min_diff <= 100: - return f"{closest_height}{scan_type}" + # Return the closest match if within reasonable distance + if closest_class and min_diff <= 100: + return closest_class return None @cached_method() diff --git a/renamer/formatters/formatter.py b/renamer/formatters/formatter.py index f719991..68bb78f 100644 --- a/renamer/formatters/formatter.py +++ b/renamer/formatters/formatter.py @@ -34,7 +34,6 @@ class FormatterApplier: DateFormatter.format_modification_date, DateFormatter.format_year, ExtensionFormatter.format_extension_info, - ResolutionFormatter.get_frame_class_from_resolution, ResolutionFormatter.format_resolution_dimensions, TrackFormatter.format_video_track, TrackFormatter.format_audio_track, diff --git a/renamer/formatters/resolution_formatter.py b/renamer/formatters/resolution_formatter.py index cdf401d..53b8557 100644 --- a/renamer/formatters/resolution_formatter.py +++ b/renamer/formatters/resolution_formatter.py @@ -1,41 +1,6 @@ -from renamer.constants import FRAME_CLASSES - class ResolutionFormatter: """Class for formatting video resolutions and frame classes""" - @staticmethod - def get_frame_class_from_resolution(resolution: str) -> str: - """Convert resolution string (WIDTHxHEIGHT) to frame class (480p, 720p, etc.)""" - if not resolution: - return 'Unclassified' - - try: - # Extract height from WIDTHxHEIGHT format - if 'x' in resolution: - height = int(resolution.split('x')[1]) - else: - # Try to extract number directly - import re - match = re.search(r'(\d{3,4})', resolution) - if match: - height = int(match.group(1)) - else: - return 'Unclassified' - - # Find the closest frame class based on nominal height - closest_class = 'Unclassified' - min_diff = float('inf') - for frame_class, info in FRAME_CLASSES.items(): - nominal_height = info['nominal_height'] - diff = abs(height - nominal_height) - if diff < min_diff: - min_diff = diff - closest_class = frame_class - - return closest_class - except (ValueError, IndexError): - return 'Unclassified' - @staticmethod def format_resolution_dimensions(resolution: tuple[int, int]) -> str: """Format resolution as WIDTHxHEIGHT""" diff --git a/uv.lock b/uv.lock index ceb5dc0..314488d 100644 --- a/uv.lock +++ b/uv.lock @@ -342,7 +342,7 @@ wheels = [ [[package]] name = "renamer" -version = "0.5.1" +version = "0.5.2" source = { editable = "." } dependencies = [ { name = "langcodes" },