From 336b030a6bbe299054e5464faaa284034824f8cc Mon Sep 17 00:00:00 2001 From: sHa Date: Sun, 4 Jan 2026 20:49:55 +0000 Subject: [PATCH] refactor: Consolidate text color decorators and update related properties --- dist/renamer-0.8.3-py3-none-any.whl | Bin 0 -> 123707 bytes pyproject.toml | 2 +- renamer/formatters/size_formatter.py | 11 +- renamer/formatters/text_decorators.py | 97 +---------- renamer/formatters/text_formatter.py | 67 ++------ renamer/test/test_decorators.py | 4 +- renamer/test/test_formatters.py | 6 - renamer/views/media_panel.py | 8 +- renamer/views/media_panel_properties.py | 211 +++++++++++------------- renamer/views/proposed_filename.py | 8 +- uv.lock | 2 +- 11 files changed, 136 insertions(+), 280 deletions(-) create mode 100644 dist/renamer-0.8.3-py3-none-any.whl diff --git a/dist/renamer-0.8.3-py3-none-any.whl b/dist/renamer-0.8.3-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..3f979186e3b09fc1f748f59164e5b070336bd31d GIT binary patch literal 123707 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%0Ak%^kKN_RDpd)|ZNJrea!k?y;Wz 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 str: """Format bytes to human readable with unit""" @@ -9,9 +9,14 @@ class SizeFormatter: return f"{bytes_size:.1f} {unit}" bytes_size /= 1024 return f"{bytes_size:.1f} TB" - + @staticmethod def format_size_full(bytes_size: int) -> str: """Format size with both human readable and bytes""" size_formatted = SizeFormatter.format_size(bytes_size) - return f"{size_formatted} ({bytes_size:,} bytes)" \ No newline at end of file + return f"{size_formatted} ({bytes_size:,} bytes)" + + @staticmethod + def format_size_short(bytes_size: int) -> str: + """Format size with only human readable""" + return SizeFormatter.format_size(bytes_size) diff --git a/renamer/formatters/text_decorators.py b/renamer/formatters/text_decorators.py index 9106e4a..cec2c9e 100644 --- a/renamer/formatters/text_decorators.py +++ b/renamer/formatters/text_decorators.py @@ -42,106 +42,15 @@ class TextDecorators: return decorator @staticmethod - def green() -> Callable: - """Decorator to color text green.""" - def decorator(func: Callable) -> Callable: - @wraps(func) - def wrapper(*args, **kwargs) -> str: - result = func(*args, **kwargs) - if result == "": - return "" - return TextFormatter.green(str(result)) - return wrapper - return decorator - - @staticmethod - def yellow() -> Callable: - """Decorator to color text yellow.""" + def colour(name) -> Callable: + """Decorator to colour text.""" def decorator(func: Callable) -> Callable: @wraps(func) def wrapper(*args, **kwargs) -> str: result = func(*args, **kwargs) if not result: return "" - return TextFormatter.yellow(str(result)) - return wrapper - return decorator - - @staticmethod - def cyan() -> Callable: - """Decorator to color text cyan.""" - def decorator(func: Callable) -> Callable: - @wraps(func) - def wrapper(*args, **kwargs) -> str: - result = func(*args, **kwargs) - if not result: - return "" - return TextFormatter.cyan(str(result)) - return wrapper - return decorator - - @staticmethod - def magenta() -> Callable: - """Decorator to color text magenta.""" - def decorator(func: Callable) -> Callable: - @wraps(func) - def wrapper(*args, **kwargs) -> str: - result = func(*args, **kwargs) - if not result: - return "" - return TextFormatter.magenta(str(result)) - return wrapper - return decorator - - @staticmethod - def red() -> Callable: - """Decorator to color text red.""" - def decorator(func: Callable) -> Callable: - @wraps(func) - def wrapper(*args, **kwargs) -> str: - result = func(*args, **kwargs) - if not result: - return "" - return TextFormatter.red(str(result)) - return wrapper - return decorator - - @staticmethod - def orange() -> Callable: - """Decorator to color text orange.""" - def decorator(func: Callable) -> Callable: - @wraps(func) - def wrapper(*args, **kwargs) -> str: - result = func(*args, **kwargs) - if not result: - return "" - return TextFormatter.orange(str(result)) - return wrapper - return decorator - - @staticmethod - def blue() -> Callable: - """Decorator to color text blue.""" - def decorator(func: Callable) -> Callable: - @wraps(func) - def wrapper(*args, **kwargs) -> str: - result = func(*args, **kwargs) - if not result: - return "" - return TextFormatter.blue(str(result)) - return wrapper - return decorator - - @staticmethod - def grey() -> Callable: - """Decorator to color text grey.""" - def decorator(func: Callable) -> Callable: - @wraps(func) - def wrapper(*args, **kwargs) -> str: - result = func(*args, **kwargs) - if not result: - return "" - return TextFormatter.grey(str(result)) + return TextFormatter.colour(name, str(result)) return wrapper return decorator diff --git a/renamer/formatters/text_formatter.py b/renamer/formatters/text_formatter.py index d9b8ec5..85229c6 100644 --- a/renamer/formatters/text_formatter.py +++ b/renamer/formatters/text_formatter.py @@ -27,84 +27,45 @@ class TextFormatter: return ''.join(word.capitalize() for word in text.split()) @staticmethod - def bold_green(text: str) -> str: - """Deprecated: Use [TextFormatter.bold, TextFormatter.green] instead""" - import warnings - warnings.warn( - "TextFormatter.bold_green is deprecated. Use [TextFormatter.bold, TextFormatter.green] instead.", - DeprecationWarning, - stacklevel=2 - ) - return f"[bold green]{text}[/bold green]" - - @staticmethod - def bold_cyan(text: str) -> str: - """Deprecated: Use [TextFormatter.bold, TextFormatter.cyan] instead""" - import warnings - warnings.warn( - "TextFormatter.bold_cyan is deprecated. Use [TextFormatter.bold, TextFormatter.cyan] instead.", - DeprecationWarning, - stacklevel=2 - ) - return f"[bold cyan]{text}[/bold cyan]" - - @staticmethod - def bold_magenta(text: str) -> str: - """Deprecated: Use [TextFormatter.bold, TextFormatter.magenta] instead""" - import warnings - warnings.warn( - "TextFormatter.bold_magenta is deprecated. Use [TextFormatter.bold, TextFormatter.magenta] instead.", - DeprecationWarning, - stacklevel=2 - ) - return f"[bold magenta]{text}[/bold magenta]" - - @staticmethod - def bold_yellow(text: str) -> str: - """Deprecated: Use [TextFormatter.bold, TextFormatter.yellow] instead""" - import warnings - warnings.warn( - "TextFormatter.bold_yellow is deprecated. Use [TextFormatter.bold, TextFormatter.yellow] instead.", - DeprecationWarning, - stacklevel=2 - ) - return f"[bold yellow]{text}[/bold yellow]" + def colour(colour_name: str, text: str) -> str: + """Generic method to color text with given colour name.""" + return f"[{colour_name}]{text}[/{colour_name}]" @staticmethod def green(text: str) -> str: - return f"[green]{text}[/green]" + return TextFormatter.colour("green", text) @staticmethod def yellow(text: str) -> str: - return f"[yellow]{text}[/yellow]" + return TextFormatter.colour("yellow", text) @staticmethod def orange(text: str) -> str: - return f"[orange]{text}[/orange]" + return TextFormatter.colour("orange", text) @staticmethod def magenta(text: str) -> str: - return f"[magenta]{text}[/magenta]" + return TextFormatter.colour("magenta", text) @staticmethod def cyan(text: str) -> str: - return f"[cyan]{text}[/cyan]" + return TextFormatter.colour("cyan", text) @staticmethod def red(text: str) -> str: - return f"[red]{text}[/red]" - + return TextFormatter.colour("red", text) + @staticmethod def blue(text: str) -> str: - return f"[blue]{text}[/blue]" + return TextFormatter.colour("blue", text) @staticmethod def grey(text: str) -> str: - return f"[grey]{text}[/grey]" + return TextFormatter.colour("grey", text) @staticmethod def dim(text: str) -> str: - return f"[dim]{text}[/dim]" + return TextFormatter.colour("dimgray", text) @staticmethod def link(url: str, text: str | None = None) -> str: @@ -119,4 +80,4 @@ class TextFormatter: if url and url != "" and url.startswith("http"): # Use OSC 8 hyperlink escape sequence for clickable links return f"\x1b]8;;{url}\x1b\\Open in TMDB\x1b]8;;\x1b\\" - return url \ No newline at end of file + return url diff --git a/renamer/test/test_decorators.py b/renamer/test/test_decorators.py index fff92fb..2f0bd5f 100644 --- a/renamer/test/test_decorators.py +++ b/renamer/test/test_decorators.py @@ -78,9 +78,9 @@ class TestTextDecorators: assert obj.get_text() == "[bold]Hello[/bold]" def test_green_decorator(self): - """Test @text_decorators.green() decorator.""" + """Test @text_decorators.colour(name="green") decorator.""" class TestClass: - @text_decorators.green() + @text_decorators.colour(name="green") def get_text(self): return "Success" diff --git a/renamer/test/test_formatters.py b/renamer/test/test_formatters.py index 816bbcc..34b9496 100644 --- a/renamer/test/test_formatters.py +++ b/renamer/test/test_formatters.py @@ -78,12 +78,6 @@ class TestTextFormatter: result = TextFormatter.red("test") assert result == "[red]test[/red]" - def test_bold_green_deprecated(self): - """Test deprecated bold_green method.""" - with pytest.warns(DeprecationWarning): - result = TextFormatter.bold_green("test") - assert "[bold green]" in result - class TestDurationFormatter: """Test DurationFormatter functionality.""" diff --git a/renamer/views/media_panel.py b/renamer/views/media_panel.py index bc45284..c5d25f4 100644 --- a/renamer/views/media_panel.py +++ b/renamer/views/media_panel.py @@ -32,17 +32,16 @@ class MediaPanelView: """Return formatted selected data""" return "\n".join( [ - self._props.title("Media Info Summary"), self._props.media_title, self._props.media_year, - self._props.media_genres, + self._props.tmdb_genres, self._props.media_duration, self._props.media_file_size, self._props.media_file_extension, self._props.selected_frame_class, self._props.selected_source, self._props.selected_audio_langs, - self._props.selected_database_info, + self._props.tmdb_database_info, self._props.selected_order, ] ) @@ -52,7 +51,7 @@ class MediaPanelView: """Return formatted file info""" return "\n".join( [ - self._props.title("File Info"), + self._props.file_info_title, self._props.file_path, self._props.file_size, self._props.file_name, @@ -66,7 +65,6 @@ class MediaPanelView: """Return formatted TMDB data""" return "\n".join( [ - self._props.title("TMDB Data"), self._props.tmdb_id, self._props.tmdb_title, self._props.tmdb_original_title, diff --git a/renamer/views/media_panel_properties.py b/renamer/views/media_panel_properties.py index 23c9eef..295a405 100644 --- a/renamer/views/media_panel_properties.py +++ b/renamer/views/media_panel_properties.py @@ -44,40 +44,48 @@ class MediaPanelProperties: # ============================================================ @property - @conditional_decorators.wrap("Path: ") - @text_decorators.blue() + @conditional_decorators.wrap(left="󰷊 ", right="") + @text_decorators.uppercase() + @text_decorators.bold() + def file_info_title(self) -> str: + """Get file info title formatted with label.""" + return "File Info" + + @property + @conditional_decorators.wrap("├ 󰙅 : ") + @text_decorators.colour(name="blue") @text_decorators.escape() def file_path(self) -> str: """Get file path formatted with label.""" return self._extractor.get("file_path") @property - @conditional_decorators.wrap("Size: ") - @text_decorators.green() + @conditional_decorators.wrap(left="├  : ") + @text_decorators.colour(name="bisque") @size_decorators.size_full() def file_size(self) -> str: """Get file size formatted with label.""" return self._extractor.get("file_size") @property - @conditional_decorators.wrap("Name: ") - @text_decorators.cyan() + @conditional_decorators.wrap(left="├ 󰈙 : ") + @text_decorators.colour(name="bisque") @text_decorators.escape() def file_name(self) -> str: """Get file name formatted with label.""" return self._extractor.get("file_name") @property - @conditional_decorators.wrap("Modified: ") - @text_decorators.magenta() + @conditional_decorators.wrap(left="├ 󱋡 : ") + @text_decorators.colour("bisque") @date_decorators.modification_date() def modification_time(self) -> str: """Get modification time formatted with label.""" return self._extractor.get("modification_time") @property - @conditional_decorators.wrap("Extension: ") - @text_decorators.green() + @conditional_decorators.wrap(left="└  : ") + @text_decorators.colour(name="bisque") @extension_decorators.extension_info() def extension_fileinfo(self) -> str: """Get extension from FileInfo formatted with label.""" @@ -88,63 +96,62 @@ class MediaPanelProperties: # ============================================================ @property - @text_decorators.blue() - @conditional_decorators.wrap("ID: ") - @text_decorators.yellow() + @conditional_decorators.wrap("󰈚 TMDB : ") + @text_decorators.colour(name="yellow") @conditional_decorators.default("") def tmdb_id(self) -> str: """Get TMDB ID formatted with label.""" return self._extractor.get("tmdb_id", "TMDB") @property - @text_decorators.blue() - @conditional_decorators.wrap("Title: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├ 󰗴 : ") + @text_decorators.colour(name="yellow") @conditional_decorators.default("") def tmdb_title(self) -> str: """Get TMDB title formatted with label.""" return self._extractor.get("title", "TMDB") @property - @text_decorators.blue() - @conditional_decorators.wrap("Original Title: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├ 󰗴 : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def tmdb_original_title(self) -> str: """Get TMDB original title formatted with label.""" return self._extractor.get("original_title", "TMDB") @property - @text_decorators.blue() - @conditional_decorators.wrap("Year: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├  : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def tmdb_year(self) -> str: """Get TMDB year formatted with label.""" return self._extractor.get("year", "TMDB") @property - @text_decorators.blue() - @conditional_decorators.wrap("Countries: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├  : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def tmdb_countries(self) -> str: """Get TMDB production countries formatted with label.""" return self._extractor.get("production_countries", "TMDB") @property - @text_decorators.blue() - @conditional_decorators.wrap("Genres: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├ 󰴂 : ") + @text_decorators.colour(name="cyan") @conditional_decorators.default("") def tmdb_genres(self) -> str: """Get TMDB genres formatted with label.""" return self._extractor.get("genres", "TMDB") @property - @text_decorators.blue() - @conditional_decorators.wrap("Database Info: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├ 󰻾 : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") @special_info_decorators.database_info() def tmdb_database_info(self) -> str: @@ -152,8 +159,9 @@ class MediaPanelProperties: return self._extractor.get("movie_db", "TMDB") @property - # @text_decorators.blue() - @conditional_decorators.default("") + # @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="└ ") + @conditional_decorators.default(default_value="") @text_decorators.url() def tmdb_url(self) -> str: """Get TMDB URL formatted with label.""" @@ -165,7 +173,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Title: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def metadata_title(self) -> str: """Get metadata title formatted with label.""" @@ -173,7 +181,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Duration: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") @duration_decorators.duration_full() def metadata_duration(self) -> str: @@ -182,7 +190,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Artist: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def metadata_artist(self) -> str: """Get metadata artist formatted with label.""" @@ -194,7 +202,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Duration: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") @duration_decorators.duration_full() def mediainfo_duration(self) -> str: @@ -203,7 +211,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Frame Class: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def mediainfo_frame_class(self) -> str: """Get MediaInfo frame class formatted with label.""" @@ -211,7 +219,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Resolution: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") @resolution_decorators.resolution_dimensions() def mediainfo_resolution(self) -> str: @@ -220,7 +228,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Aspect Ratio: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def mediainfo_aspect_ratio(self) -> str: """Get MediaInfo aspect ratio formatted with label.""" @@ -228,7 +236,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("HDR: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def mediainfo_hdr(self) -> str: """Get MediaInfo HDR formatted with label.""" @@ -236,7 +244,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Audio Languages: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def mediainfo_audio_langs(self) -> str: """Get MediaInfo audio languages formatted with label.""" @@ -244,7 +252,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Anamorphic: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def mediainfo_anamorphic(self) -> str: """Get MediaInfo anamorphic formatted with label.""" @@ -252,7 +260,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Extension: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") @extension_decorators.extension_info() def mediainfo_extension(self) -> str: @@ -261,7 +269,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("3D Layout: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def mediainfo_3d_layout(self) -> str: """Get MediaInfo 3D layout formatted with label.""" @@ -273,7 +281,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Order: ") - @text_decorators.yellow() + @text_decorators.colour(name="yellow") @conditional_decorators.default("Not extracted") def filename_order(self) -> str: """Get filename order formatted with label.""" @@ -281,15 +289,15 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Movie title: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("") def filename_title(self) -> str: """Get filename title formatted with label.""" return self._extractor.get("title", "Filename") @property - @conditional_decorators.wrap("Year: ") - @text_decorators.grey() + @conditional_decorators.wrap(left="├  : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def filename_year(self) -> str: """Get filename year formatted with label.""" @@ -297,7 +305,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Video source: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def filename_source(self) -> str: """Get filename source formatted with label.""" @@ -305,7 +313,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Frame class: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def filename_frame_class(self) -> str: """Get filename frame class formatted with label.""" @@ -313,7 +321,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("HDR: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def filename_hdr(self) -> str: """Get filename HDR formatted with label.""" @@ -321,7 +329,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Audio langs: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def filename_audio_langs(self) -> str: """Get filename audio languages formatted with label.""" @@ -329,9 +337,9 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Special info: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") - @text_decorators.blue() + @text_decorators.colour(name="blue") @special_info_decorators.special_info() def filename_special_info(self) -> str: """Get filename special info formatted with label.""" @@ -339,7 +347,7 @@ class MediaPanelProperties: @property @conditional_decorators.wrap("Movie DB: ") - @text_decorators.grey() + @text_decorators.colour(name="grey") @conditional_decorators.default("Not extracted") def filename_movie_db(self) -> str: """Get filename movie DB formatted with label.""" @@ -350,72 +358,63 @@ class MediaPanelProperties: # ============================================================ @property - @text_decorators.blue() - @conditional_decorators.wrap("Duration: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├ 󰔚 : ") + @text_decorators.colour(name="bisque") @duration_decorators.duration_full() def media_duration(self) -> str: """Get media duration from best available source.""" return self._extractor.get("duration") @property - @text_decorators.blue() - @conditional_decorators.wrap("Order: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="└ 󰒾 : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def selected_order(self) -> str: """Get selected order formatted with label.""" return self._extractor.get("order") @property - @text_decorators.blue() - @conditional_decorators.wrap(left="󰿎 ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="󰿎 MOVIE : ") + @text_decorators.colour(name="yellow") @conditional_decorators.default("") def media_title(self) -> str: """Get selected title formatted with label.""" return self._extractor.get("title") @property - @text_decorators.blue() - @conditional_decorators.wrap("Year: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├  : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def media_year(self) -> str: """Get selected year formatted with label.""" return self._extractor.get("year") @property - @text_decorators.blue() - @conditional_decorators.wrap("Genres: ") - @text_decorators.cyan() - @conditional_decorators.default("") - def media_genres(self) -> str: - """Get TMDB genres formatted with label.""" - return self._extractor.get("genres") - - @property - @text_decorators.blue() - @conditional_decorators.wrap("File size: ") - @text_decorators.green() - @size_decorators.size_full() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├  : ") + @text_decorators.colour(name="green") + @size_decorators.size_short() def media_file_size(self) -> str: """Get media file size formatted with label.""" return self._extractor.get("file_size") @property - @text_decorators.blue() - @conditional_decorators.wrap("Extension: ") - @text_decorators.green() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├  : ") + @text_decorators.colour(name="bisque") @extension_decorators.extension_info() def media_file_extension(self) -> str: """Get media file extension formatted with label.""" return self._extractor.get("extension") @property - @text_decorators.blue() + @text_decorators.colour(name="blue") @conditional_decorators.wrap("Special info: ") - @text_decorators.yellow() + @text_decorators.colour(name="yellow") @conditional_decorators.default("") @special_info_decorators.special_info() def selected_special_info(self) -> str: @@ -423,58 +422,48 @@ class MediaPanelProperties: return self._extractor.get("special_info") @property - @text_decorators.blue() - @conditional_decorators.wrap("Source: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├  : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def selected_source(self) -> str: """Get selected source formatted with label.""" return self._extractor.get("source") @property - @text_decorators.blue() - @conditional_decorators.wrap("Frame class: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├ 󱣴 : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def selected_frame_class(self) -> str: """Get selected frame class formatted with label.""" return self._extractor.get("frame_class") @property - @text_decorators.blue() - @conditional_decorators.wrap("HDR: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├ 󰵽 : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def selected_hdr(self) -> str: """Get selected HDR formatted with label.""" return self._extractor.get("hdr") @property - @text_decorators.blue() - @conditional_decorators.wrap("Audio langs: ") - @text_decorators.yellow() + @text_decorators.colour(name="blue") + @conditional_decorators.wrap(left="├ 󰗊 : ") + @text_decorators.colour(name="bisque") @conditional_decorators.default("") def selected_audio_langs(self) -> str: """Get selected audio languages formatted with label.""" return self._extractor.get("audio_langs") - @property - @text_decorators.blue() - @conditional_decorators.wrap("Database Info: ") - @text_decorators.yellow() - @conditional_decorators.default("") - @special_info_decorators.database_info() - def selected_database_info(self) -> str: - """Get selected database info formatted with label.""" - return self._extractor.get("movie_db") - @property def video_tracks(self) -> list[str]: """Return formatted video track data""" tracks = self._extractor.get("video_tracks", "MediaInfo") or [] return [self.video_track(track, i) for i, track in enumerate(tracks, start=1)] - @text_decorators.green() + @text_decorators.colour(name="green") @conditional_decorators.wrap("Video Track {index}: ") @track_decorators.video_track() def video_track(self, track, index) -> str: @@ -487,7 +476,7 @@ class MediaPanelProperties: tracks = self._extractor.get("audio_tracks", "MediaInfo") or [] return [self.audio_track(track, i) for i, track in enumerate(tracks, start=1)] - @text_decorators.yellow() + @text_decorators.colour(name="yellow") @conditional_decorators.wrap("Audio Track {index}: ") @track_decorators.audio_track() def audio_track(self, track, index) -> str: @@ -502,7 +491,7 @@ class MediaPanelProperties: self.subtitle_track(track, i) for i, track in enumerate(tracks, start=1) ] - @text_decorators.magenta() + @text_decorators.colour(name="magenta") @conditional_decorators.wrap("Subtitle Track {index}: ") @track_decorators.subtitle_track() def subtitle_track(self, track, index) -> str: diff --git a/renamer/views/proposed_filename.py b/renamer/views/proposed_filename.py index 912bac1..8f2fa96 100644 --- a/renamer/views/proposed_filename.py +++ b/renamer/views/proposed_filename.py @@ -92,14 +92,14 @@ class ProposedFilenameView: @property @conditional_decorators.wrap(">> ", " <<") - @text_decorators.green() + @text_decorators.colour(name="green") def rename_line_similar(self) -> str: """Generate a simplified proposed filename for similarity checks.""" return escape(str(self)) @property - @conditional_decorators.wrap(">> ", " <<") - @text_decorators.orange() + @conditional_decorators.wrap(left=">> ", right=" <<") + @text_decorators.colour(name="orange") def rename_line_different(self) -> str: """Generate a detailed proposed filename for difference checks.""" - return escape(str(self)) \ No newline at end of file + return escape(str(self)) diff --git a/uv.lock b/uv.lock index 71c2de1..aa5db26 100644 --- a/uv.lock +++ b/uv.lock @@ -462,7 +462,7 @@ wheels = [ [[package]] name = "renamer" -version = "0.8.2" +version = "0.8.3" source = { editable = "." } dependencies = [ { name = "langcodes" },