From 82c4ce0c37a542283ffb76993fd6d368862e4b98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oskar=20Dudzi=C5=84ski?= <56404247+oskvr37@users.noreply.github.com> Date: Mon, 1 Dec 2025 19:05:46 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fixed=20covers=20that=20were=20f?= =?UTF-8?q?etched=20unnecessarily=20#245=20(#254)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fetch cover only when item is about to be downloaded * rename cover method to `fetch_data` * 🚀 Bump version from 3.1.4a3 to 3.1.4 --- pyproject.toml | 2 +- tiddl/cli/commands/download/__init__.py | 18 +++++++++--------- tiddl/core/metadata/cover.py | 7 ++++--- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 405bcf7..4fd4469 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tiddl" -version = "3.1.4a3" +version = "3.1.4" description = "Download Tidal tracks with CLI downloader." readme = "README.md" requires-python = ">=3.13" diff --git a/tiddl/cli/commands/download/__init__.py b/tiddl/cli/commands/download/__init__.py index 0c9ef9a..e2cdd78 100644 --- a/tiddl/cli/commands/download/__init__.py +++ b/tiddl/cli/commands/download/__init__.py @@ -193,13 +193,13 @@ def download_callback( date: str = "", artist: str = "", credits: list[AlbumItemsCredits.ItemWithCredits.CreditsEntry] = [], - cover_data: bytes | None = None, + cover: Cover | None = None, album_review: str = "", ) -> None: self.date = date self.artist = artist self.credits = credits - self.cover_data = cover_data + self.cover = cover self.album_review = album_review async def handle_resource(resource: TidalResource): @@ -238,20 +238,21 @@ def download_callback( log.error(e) if ( - not track_metadata.cover_data + not track_metadata.cover and item.album.cover and CONFIG.metadata.cover ): - track_metadata.cover_data = Cover( - item.album.cover - )._get_data() + track_metadata.cover = Cover(item.album.cover) + + if track_metadata.cover and track_metadata.cover.data is None: + track_metadata.cover.fetch_data() add_track_metadata( path=download_path, track=item, lyrics=lyrics_subtitles, album_artist=track_metadata.artist, - cover_data=track_metadata.cover_data, + cover_data=getattr(track_metadata.cover, "data"), date=track_metadata.date, credits_contributors=track_metadata.credits, comment=track_metadata.album_review, @@ -277,7 +278,6 @@ def download_callback( if album.cover and (CONFIG.metadata.cover or save_cover): cover = Cover(album.cover, size=CONFIG.cover.size) - cover._get_data() album_review = "" @@ -305,7 +305,7 @@ def download_callback( quality=get_item_quality(album_item.item), ), track_metadata=Metadata( - cover_data=cover.data if cover else b"", + cover=cover, date=str(album.releaseDate), artist=album.artist.name if album.artist else "", credits=album_item.credits, diff --git a/tiddl/core/metadata/cover.py b/tiddl/core/metadata/cover.py index 55ab186..aa4eeca 100644 --- a/tiddl/core/metadata/cover.py +++ b/tiddl/core/metadata/cover.py @@ -26,14 +26,15 @@ class Cover: self.data = None - def _get_data(self) -> bytes: + def fetch_data(self) -> bytes: req = requests.get(self.url) if req.status_code != 200: log.error(f"could not download cover. ({req.status_code}) {self.url}") + self.data = b"" return b"" - log.debug(f"got cover {self.url}") + log.debug(f"got cover data of {self.url}") self.data = req.content @@ -47,7 +48,7 @@ class Cover: return if not self.data: - self.data = self._get_data() + self.data = self.fetch_data() file.parent.mkdir(parents=True, exist_ok=True)