🐛 Fixed covers that were fetched unnecessarily #245 (#254)

* 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
This commit is contained in:
Oskar Dudziński
2025-12-01 19:05:46 +01:00
committed by GitHub
parent 145a776b63
commit 82c4ce0c37
3 changed files with 14 additions and 13 deletions
+1 -1
View File
@@ -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"
+9 -9
View File
@@ -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,
+4 -3
View File
@@ -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)