feat: Bump version to 0.3.3, update special editions structure, and enhance filename extraction logic
This commit is contained in:
BIN
dist/renamer-0.3.3-py3-none-any.whl
vendored
Normal file
BIN
dist/renamer-0.3.3-py3-none-any.whl
vendored
Normal file
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "renamer"
|
||||
version = "0.3.2"
|
||||
version = "0.3.3"
|
||||
description = "Terminal-based media file renamer and metadata viewer"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.11"
|
||||
|
||||
@@ -133,50 +133,56 @@ MOVIE_DB_DICT = {
|
||||
},
|
||||
}
|
||||
|
||||
SPECIAL_EDITIONS = [
|
||||
"Theatrical Cut",
|
||||
"Director's Cut",
|
||||
"Director Cut",
|
||||
"Extended Edition",
|
||||
"Ultimate Extended Edition",
|
||||
"Special Edition",
|
||||
"Collector's Edition",
|
||||
"Criterion Collection",
|
||||
"Fundamental Collection",
|
||||
"Anniversary Edition",
|
||||
"Redux",
|
||||
"Final Cut",
|
||||
"Alternate Cut",
|
||||
"International Cut",
|
||||
"Restored Version",
|
||||
"Remastered",
|
||||
"Unrated",
|
||||
"Uncensored",
|
||||
"Definitive Edition",
|
||||
"Platinum Edition",
|
||||
"Gold Edition",
|
||||
"Diamond Edition",
|
||||
"Steelbook Edition",
|
||||
"Limited Edition",
|
||||
"Deluxe Edition",
|
||||
"Premium Edition",
|
||||
"Complete Edition",
|
||||
SPECIAL_EDITIONS = {
|
||||
"Theatrical Cut": ["Theatrical Cut"],
|
||||
"Director's Cut": ["Director's Cut", "Director Cut"],
|
||||
"Extended Edition": ["Extended Edition", "Ultimate Extended Edition"],
|
||||
"Special Edition": ["Special Edition"],
|
||||
"Collector's Edition": ["Collector's Edition"],
|
||||
"Criterion Collection": ["Criterion Collection"],
|
||||
"Anniversary Edition": ["Anniversary Edition"],
|
||||
"Redux": ["Redux"],
|
||||
"Final Cut": ["Final Cut"],
|
||||
"Alternate Cut": ["Alternate Cut"],
|
||||
"International Cut": ["International Cut"],
|
||||
"Restored Edition": [
|
||||
"Restored Edition",
|
||||
"Restored Version",
|
||||
"4K Restoration",
|
||||
"HD Remaster",
|
||||
"Director's Definitive Cut",
|
||||
"Extended Director's Cut",
|
||||
"Ultimate Director's Cut",
|
||||
"Original Cut",
|
||||
"Cinematic Cut",
|
||||
"Roadshow Cut",
|
||||
"Premiere Cut",
|
||||
"Festival Cut",
|
||||
"Workprint",
|
||||
"Rough Cut",
|
||||
"Special Assembly Cut",
|
||||
"Amazon Edition",
|
||||
"Amazon",
|
||||
"Netflix Edition",
|
||||
"HBO Edition",
|
||||
]
|
||||
"Restoration",
|
||||
],
|
||||
"Remastered": ["Remastered", "Remaster", "HD Remaster"],
|
||||
"Unrated": ["Unrated"],
|
||||
"Uncensored": ["Uncensored"],
|
||||
"Definitive Edition": ["Definitive Edition"],
|
||||
"Platinum Edition": ["Platinum Edition"],
|
||||
"Gold Edition": ["Gold Edition"],
|
||||
"Diamond Edition": ["Diamond Edition"],
|
||||
"Steelbook Edition": ["Steelbook Edition"],
|
||||
"Limited Edition": ["Limited Edition"],
|
||||
"Deluxe Edition": ["Deluxe Edition"],
|
||||
"Premium Edition": ["Premium Edition"],
|
||||
"Complete Edition": ["Complete Edition"],
|
||||
"AI Remaster": ["AI Remaster", "AI Remastered"],
|
||||
"Upscaled": [
|
||||
"AI Upscaled",
|
||||
"AI Enhanced",
|
||||
"AI Upscale",
|
||||
"Upscaled",
|
||||
"Upscale",
|
||||
"Upscaling",
|
||||
],
|
||||
"Director's Definitive Cut": ["Director's Definitive Cut"],
|
||||
"Extended Director's Cut": ["Extended Director's Cut", "Ultimate Director's Cut"],
|
||||
"Original Cut": ["Original Cut"],
|
||||
"Cinematic Cut": ["Cinematic Cut"],
|
||||
"Roadshow Cut": ["Roadshow Cut"],
|
||||
"Premiere Cut": ["Premiere Cut"],
|
||||
"Festival Cut": ["Festival Cut"],
|
||||
"Workprint": ["Workprint"],
|
||||
"Rough Cut": ["Rough Cut"],
|
||||
"Special Assembly Cut": ["Special Assembly Cut"],
|
||||
"Amazon Edition": ["Amazon Edition", "Amazon"],
|
||||
"Netflix Edition": ["Netflix Edition"],
|
||||
"HBO Edition": ["HBO Edition"],
|
||||
}
|
||||
|
||||
@@ -216,7 +216,8 @@ class FilenameExtractor:
|
||||
# Look for special edition indicators in brackets or as standalone text
|
||||
special_info = []
|
||||
|
||||
for edition in SPECIAL_EDITIONS:
|
||||
for canonical_edition, variants in SPECIAL_EDITIONS.items():
|
||||
for edition in variants:
|
||||
# Check in brackets: [Theatrical Cut], [Director's Cut], etc.
|
||||
bracket_pattern = r'\[([^\]]+)\]'
|
||||
brackets = re.findall(bracket_pattern, self.file_name)
|
||||
@@ -225,13 +226,13 @@ class FilenameExtractor:
|
||||
items = [item.strip() for item in bracket.split(',')]
|
||||
for item in items:
|
||||
if edition.lower() == item.lower().strip():
|
||||
if edition not in special_info:
|
||||
special_info.append(edition)
|
||||
if canonical_edition not in special_info:
|
||||
special_info.append(canonical_edition)
|
||||
|
||||
# Check as standalone text (case-insensitive)
|
||||
if re.search(r'\b' + re.escape(edition) + r'\b', self.file_name, re.IGNORECASE):
|
||||
if edition not in special_info:
|
||||
special_info.append(edition)
|
||||
if canonical_edition not in special_info:
|
||||
special_info.append(canonical_edition)
|
||||
|
||||
return special_info
|
||||
|
||||
|
||||
Reference in New Issue
Block a user