diff --git a/dist/renamer-0.8.8-py3-none-any.whl b/dist/renamer-0.8.8-py3-none-any.whl new file mode 100644 index 0000000..88daa2a Binary files /dev/null and b/dist/renamer-0.8.8-py3-none-any.whl differ diff --git a/pyproject.toml b/pyproject.toml index db8b017..e5a041a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "renamer" -version = "0.8.7" +version = "0.8.8" 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 9cdcbd8..9acdd7d 100644 --- a/renamer/extractors/mediainfo_extractor.py +++ b/renamer/extractors/mediainfo_extractor.py @@ -78,9 +78,21 @@ class MediaInfoExtractor: if not height or not width: return None - # Check if interlaced + # Check if interlaced - try multiple attributes + # PyMediaInfo may use different attribute names depending on version + scan_type_attr = getattr(self.video_tracks[0], 'scan_type', None) interlaced = getattr(self.video_tracks[0], 'interlaced', None) - scan_type = 'i' if interlaced == 'Yes' else 'p' + + # Determine scan type from available attributes + # Check scan_type first (e.g., "Interlaced", "Progressive", "MBAFF") + if scan_type_attr and isinstance(scan_type_attr, str): + scan_type = 'i' if 'interlaced' in scan_type_attr.lower() else 'p' + # Then check interlaced flag (e.g., "Yes", "No") + elif interlaced and isinstance(interlaced, str): + scan_type = 'i' if interlaced.lower() in ['yes', 'true', '1'] else 'p' + else: + # Default to progressive if no information available + scan_type = 'p' # Calculate effective height for frame class determination aspect_ratio = 16 / 9 diff --git a/renamer/test/datasets/filenames/filename_patterns.json b/renamer/test/datasets/filenames/filename_patterns.json index 5844ac6..ce4c0e3 100644 --- a/renamer/test/datasets/filenames/filename_patterns.json +++ b/renamer/test/datasets/filenames/filename_patterns.json @@ -2,6 +2,24 @@ "description": "Comprehensive test dataset for filename metadata extraction", "version": "2.0", "test_cases": [ + { + "filename": "Le Jaguar.(1996).[1080i,3ukr,fra].mkv", + "expected": { + "order": null, + "title": "Le Jaguar", + "year": "1996", + "source": null, + "frame_class": "1080i", + "hdr": null, + "movie_db": null, + "special_info": null, + "audio_langs": "3ukr,fra", + "extension": "mkv" + }, + "testname": "edge-frameclass-001", + "category": "edge_cases", + "description": "Interlaced 1080i frame class" + }, { "filename": "Dumbo.1941.BluRay.1080p.DD5.1.AVC.REMUX.mkv", "expected": { diff --git a/uv.lock b/uv.lock index 4eae59d..1fc889e 100644 --- a/uv.lock +++ b/uv.lock @@ -462,7 +462,7 @@ wheels = [ [[package]] name = "renamer" -version = "0.8.7" +version = "0.8.8" source = { editable = "." } dependencies = [ { name = "langcodes" },