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]
|
[project]
|
||||||
name = "renamer"
|
name = "renamer"
|
||||||
version = "0.3.2"
|
version = "0.3.3"
|
||||||
description = "Terminal-based media file renamer and metadata viewer"
|
description = "Terminal-based media file renamer and metadata viewer"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
|
|||||||
@@ -133,50 +133,56 @@ MOVIE_DB_DICT = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
SPECIAL_EDITIONS = [
|
SPECIAL_EDITIONS = {
|
||||||
"Theatrical Cut",
|
"Theatrical Cut": ["Theatrical Cut"],
|
||||||
"Director's Cut",
|
"Director's Cut": ["Director's Cut", "Director Cut"],
|
||||||
"Director Cut",
|
"Extended Edition": ["Extended Edition", "Ultimate Extended Edition"],
|
||||||
"Extended Edition",
|
"Special Edition": ["Special Edition"],
|
||||||
"Ultimate Extended Edition",
|
"Collector's Edition": ["Collector's Edition"],
|
||||||
"Special Edition",
|
"Criterion Collection": ["Criterion Collection"],
|
||||||
"Collector's Edition",
|
"Anniversary Edition": ["Anniversary Edition"],
|
||||||
"Criterion Collection",
|
"Redux": ["Redux"],
|
||||||
"Fundamental Collection",
|
"Final Cut": ["Final Cut"],
|
||||||
"Anniversary Edition",
|
"Alternate Cut": ["Alternate Cut"],
|
||||||
"Redux",
|
"International Cut": ["International Cut"],
|
||||||
"Final Cut",
|
"Restored Edition": [
|
||||||
"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",
|
|
||||||
"Restored Edition",
|
"Restored Edition",
|
||||||
|
"Restored Version",
|
||||||
"4K Restoration",
|
"4K Restoration",
|
||||||
"HD Remaster",
|
"Restoration",
|
||||||
"Director's Definitive Cut",
|
],
|
||||||
"Extended Director's Cut",
|
"Remastered": ["Remastered", "Remaster", "HD Remaster"],
|
||||||
"Ultimate Director's Cut",
|
"Unrated": ["Unrated"],
|
||||||
"Original Cut",
|
"Uncensored": ["Uncensored"],
|
||||||
"Cinematic Cut",
|
"Definitive Edition": ["Definitive Edition"],
|
||||||
"Roadshow Cut",
|
"Platinum Edition": ["Platinum Edition"],
|
||||||
"Premiere Cut",
|
"Gold Edition": ["Gold Edition"],
|
||||||
"Festival Cut",
|
"Diamond Edition": ["Diamond Edition"],
|
||||||
"Workprint",
|
"Steelbook Edition": ["Steelbook Edition"],
|
||||||
"Rough Cut",
|
"Limited Edition": ["Limited Edition"],
|
||||||
"Special Assembly Cut",
|
"Deluxe Edition": ["Deluxe Edition"],
|
||||||
"Amazon Edition",
|
"Premium Edition": ["Premium Edition"],
|
||||||
"Amazon",
|
"Complete Edition": ["Complete Edition"],
|
||||||
"Netflix Edition",
|
"AI Remaster": ["AI Remaster", "AI Remastered"],
|
||||||
"HBO Edition",
|
"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
|
# Look for special edition indicators in brackets or as standalone text
|
||||||
special_info = []
|
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.
|
# Check in brackets: [Theatrical Cut], [Director's Cut], etc.
|
||||||
bracket_pattern = r'\[([^\]]+)\]'
|
bracket_pattern = r'\[([^\]]+)\]'
|
||||||
brackets = re.findall(bracket_pattern, self.file_name)
|
brackets = re.findall(bracket_pattern, self.file_name)
|
||||||
@@ -225,13 +226,13 @@ class FilenameExtractor:
|
|||||||
items = [item.strip() for item in bracket.split(',')]
|
items = [item.strip() for item in bracket.split(',')]
|
||||||
for item in items:
|
for item in items:
|
||||||
if edition.lower() == item.lower().strip():
|
if edition.lower() == item.lower().strip():
|
||||||
if edition not in special_info:
|
if canonical_edition not in special_info:
|
||||||
special_info.append(edition)
|
special_info.append(canonical_edition)
|
||||||
|
|
||||||
# Check as standalone text (case-insensitive)
|
# Check as standalone text (case-insensitive)
|
||||||
if re.search(r'\b' + re.escape(edition) + r'\b', self.file_name, re.IGNORECASE):
|
if re.search(r'\b' + re.escape(edition) + r'\b', self.file_name, re.IGNORECASE):
|
||||||
if edition not in special_info:
|
if canonical_edition not in special_info:
|
||||||
special_info.append(edition)
|
special_info.append(canonical_edition)
|
||||||
|
|
||||||
return special_info
|
return special_info
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user