From 4ee2914405153686dc6445f73903dd31599715c0 Mon Sep 17 00:00:00 2001 From: Hellow <74311245+HeIIow2@users.noreply.github.com> Date: Thu, 11 Apr 2024 20:29:05 +0200 Subject: [PATCH] feat: added artwork fetching from musify --- music_kraken/__init__.py | 2 +- music_kraken/objects/artwork.py | 5 ++++- music_kraken/pages/musify.py | 11 +++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/music_kraken/__init__.py b/music_kraken/__init__.py index 788c82f..73dbbf1 100644 --- a/music_kraken/__init__.py +++ b/music_kraken/__init__.py @@ -9,7 +9,7 @@ from rich.console import Console from .utils.shared import DEBUG, DEBUG_LOGGING from .utils.config import logging_settings, main_settings, read_config -__version__ = "1.14.0" +__version__ = "1.15.0" read_config() diff --git a/music_kraken/objects/artwork.py b/music_kraken/objects/artwork.py index 397df91..9b9b9ce 100644 --- a/music_kraken/objects/artwork.py +++ b/music_kraken/objects/artwork.py @@ -33,7 +33,10 @@ class Artwork: def _calculate_deviation(*dimensions: List[int]) -> float: return sum(abs(d - main_settings["preferred_artwork_resolution"]) for d in dimensions) / len(dimensions) - def append(self, url: str, width: int, height: int, **kwargs) -> None: + def append(self, url: str, width: int = main_settings["preferred_artwork_resolution"], height: int = main_settings["preferred_artwork_resolution"], **kwargs) -> None: + if url is None: + return + self._variant_mapping[hash_url(url=url)] = { "url": url, "width": width, diff --git a/music_kraken/pages/musify.py b/music_kraken/pages/musify.py index 90912bf..c9c6460 100644 --- a/music_kraken/pages/musify.py +++ b/music_kraken/pages/musify.py @@ -21,7 +21,8 @@ from ..objects import ( Label, Target, DatabaseObject, - Lyrics + Lyrics, + Artwork ) from ..utils.config import logging_settings from ..utils import string_processing, shared @@ -476,7 +477,12 @@ class Musify(Page): _parse_album_anchor(album_anchor) track_name = list_points[4].text.strip() - + + # artwork + artwork: Artwork = Artwork() + album_image_element_list: List[BeautifulSoup] = soup.find_all("img", {"class": "album-img"}) + for album_image_element in album_image_element_list: + artwork.append(url=album_image_element.get("data-src", album_image_element.get("src"))) # lyrics lyrics_container: List[BeautifulSoup] = soup.find_all("div", {"id": "tabLyrics"}) @@ -501,6 +507,7 @@ class Musify(Page): lyrics_list=lyrics_list, main_artist_list=artist_list, album_list=album_list, + artwork=artwork, ) def _parse_song_card(self, song_card: BeautifulSoup) -> Song: