mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-03-12 17:39:01 +00:00
feat(tracks): add edition tags to output filenames
Extend track.edition to support a list of tags (e.g., ["IMAX", "3D"]) that are inserted into the output filename before the resolution.
This commit is contained in:
@@ -158,6 +158,11 @@ class Episode(Title):
|
|||||||
if getattr(config, "repack", False):
|
if getattr(config, "repack", False):
|
||||||
name += " REPACK"
|
name += " REPACK"
|
||||||
|
|
||||||
|
if self.tracks:
|
||||||
|
first_track = next(iter(self.tracks), None)
|
||||||
|
if first_track and first_track.edition:
|
||||||
|
name += " " + " ".join(first_track.edition)
|
||||||
|
|
||||||
if primary_video_track:
|
if primary_video_track:
|
||||||
resolution_token = _get_resolution_token(primary_video_track)
|
resolution_token = _get_resolution_token(primary_video_track)
|
||||||
if resolution_token:
|
if resolution_token:
|
||||||
@@ -286,4 +291,4 @@ class Series(SortedKeyList, ABC):
|
|||||||
return tree
|
return tree
|
||||||
|
|
||||||
|
|
||||||
__all__ = ("Episode", "Series")
|
__all__ = ("Episode", "Series")
|
||||||
|
|||||||
@@ -93,6 +93,11 @@ class Movie(Title):
|
|||||||
if getattr(config, "repack", False):
|
if getattr(config, "repack", False):
|
||||||
name += " REPACK"
|
name += " REPACK"
|
||||||
|
|
||||||
|
if self.tracks:
|
||||||
|
first_track = next(iter(self.tracks), None)
|
||||||
|
if first_track and first_track.edition:
|
||||||
|
name += " " + " ".join(first_track.edition)
|
||||||
|
|
||||||
if primary_video_track:
|
if primary_video_track:
|
||||||
resolution_token = _get_resolution_token(primary_video_track)
|
resolution_token = _get_resolution_token(primary_video_track)
|
||||||
if resolution_token:
|
if resolution_token:
|
||||||
|
|||||||
@@ -103,6 +103,11 @@ class Song(Title):
|
|||||||
if getattr(config, "repack", False):
|
if getattr(config, "repack", False):
|
||||||
name += " REPACK"
|
name += " REPACK"
|
||||||
|
|
||||||
|
if self.tracks:
|
||||||
|
first_track = next(iter(self.tracks), None)
|
||||||
|
if first_track and first_track.edition:
|
||||||
|
name += " " + " ".join(first_track.edition)
|
||||||
|
|
||||||
# Service (use track source if available)
|
# Service (use track source if available)
|
||||||
if show_service:
|
if show_service:
|
||||||
source_name = None
|
source_name = None
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ class Audio(Track):
|
|||||||
),
|
),
|
||||||
f"{self.bitrate // 1000} kb/s" if self.bitrate else None,
|
f"{self.bitrate // 1000} kb/s" if self.bitrate else None,
|
||||||
self.get_track_name(),
|
self.get_track_name(),
|
||||||
self.edition,
|
", ".join(self.edition) if self.edition else None,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ class Track:
|
|||||||
raise TypeError(f"Expected name to be a {str}, not {type(name)}")
|
raise TypeError(f"Expected name to be a {str}, not {type(name)}")
|
||||||
if not isinstance(id_, (str, type(None))):
|
if not isinstance(id_, (str, type(None))):
|
||||||
raise TypeError(f"Expected id_ to be a {str}, not {type(id_)}")
|
raise TypeError(f"Expected id_ to be a {str}, not {type(id_)}")
|
||||||
if not isinstance(edition, (str, type(None))):
|
if not isinstance(edition, (str, list, type(None))):
|
||||||
raise TypeError(f"Expected edition to be a {str}, not {type(edition)}")
|
raise TypeError(f"Expected edition to be a {str}, {list}, or None, not {type(edition)}")
|
||||||
if not isinstance(downloader, (Callable, type(None))):
|
if not isinstance(downloader, (Callable, type(None))):
|
||||||
raise TypeError(f"Expected downloader to be a {Callable}, not {type(downloader)}")
|
raise TypeError(f"Expected downloader to be a {Callable}, not {type(downloader)}")
|
||||||
if not isinstance(downloader_args, (dict, type(None))):
|
if not isinstance(downloader_args, (dict, type(None))):
|
||||||
@@ -103,7 +103,7 @@ class Track:
|
|||||||
self.needs_repack = needs_repack
|
self.needs_repack = needs_repack
|
||||||
self.name = name
|
self.name = name
|
||||||
self.drm = drm
|
self.drm = drm
|
||||||
self.edition: str = edition
|
self.edition: list[str] = [edition] if isinstance(edition, str) else (edition or [])
|
||||||
self.downloader = downloader
|
self.downloader = downloader
|
||||||
self.downloader_args = downloader_args
|
self.downloader_args = downloader_args
|
||||||
self.from_file = from_file
|
self.from_file = from_file
|
||||||
|
|||||||
@@ -291,7 +291,7 @@ class Video(Track):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
self.edition,
|
", ".join(self.edition) if self.edition else None,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user