From 06687b51fb9b08ff7f5545236378158a3cc9a5e2 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 13 Aug 2025 15:00:30 +0000 Subject: [PATCH] feat(config): Add series_year option to control year inclusion in titles and YAML configuration --- unshackle/core/config.py | 1 + unshackle/core/titles/episode.py | 8 ++++---- unshackle/unshackle-example.yaml | 5 +++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/unshackle/core/config.py b/unshackle/core/config.py index 4c63761..6017114 100644 --- a/unshackle/core/config.py +++ b/unshackle/core/config.py @@ -91,6 +91,7 @@ class Config: self.update_checks: bool = kwargs.get("update_checks", True) self.update_check_interval: int = kwargs.get("update_check_interval", 24) self.scene_naming: bool = kwargs.get("scene_naming", True) + self.series_year: bool = kwargs.get("series_year", True) self.title_cache_time: int = kwargs.get("title_cache_time", 1800) # 30 minutes default self.title_cache_max_retention: int = kwargs.get("title_cache_max_retention", 86400) # 24 hours default diff --git a/unshackle/core/titles/episode.py b/unshackle/core/titles/episode.py index 0d16e96..f66bcb7 100644 --- a/unshackle/core/titles/episode.py +++ b/unshackle/core/titles/episode.py @@ -81,7 +81,7 @@ class Episode(Title): def __str__(self) -> str: return "{title}{year} S{season:02}E{number:02} {name}".format( title=self.title, - year=f" {self.year}" if self.year else "", + year=f" {self.year}" if self.year and config.series_year else "", season=self.season, number=self.number, name=self.name or "", @@ -95,13 +95,13 @@ class Episode(Title): # Title [Year] SXXEXX Name (or Title [Year] SXX if folder) if folder: name = f"{self.title}" - if self.year: + if self.year and config.series_year: name += f" {self.year}" name += f" S{self.season:02}" else: name = "{title}{year} S{season:02}E{number:02} {name}".format( title=self.title.replace("$", "S"), # e.g., Arli$$ - year=f" {self.year}" if self.year else "", + year=f" {self.year}" if self.year and config.series_year else "", season=self.season, number=self.number, name=self.name or "", @@ -197,7 +197,7 @@ class Series(SortedKeyList, ABC): def __str__(self) -> str: if not self: return super().__str__() - return self[0].title + (f" ({self[0].year})" if self[0].year else "") + return self[0].title + (f" ({self[0].year})" if self[0].year and config.series_year else "") def tree(self, verbose: bool = False) -> Tree: seasons = Counter(x.season for x in self) diff --git a/unshackle/unshackle-example.yaml b/unshackle/unshackle-example.yaml index 44cf7fd..dbca3e9 100644 --- a/unshackle/unshackle-example.yaml +++ b/unshackle/unshackle-example.yaml @@ -15,6 +15,11 @@ set_terminal_bg: false # false for style - Prime Suspect S07E01 The Final Act - Part One scene_naming: true +# Whether to include the year in series names for episodes and folders (default: true) +# true for style - Show Name (2023) S01E01 Episode Name +# false for style - Show Name S01E01 Episode Name +series_year: true + # Check for updates from GitHub repository on startup (default: true) update_checks: true