From 718c911c81ab0b9a6ee9c14e62d7adf9731d07c1 Mon Sep 17 00:00:00 2001 From: Hellow2 Date: Mon, 20 Mar 2023 15:33:45 +0100 Subject: [PATCH] parsed names to fix a bug --- src/music_kraken/pages/musify.py | 33 ++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/music_kraken/pages/musify.py b/src/music_kraken/pages/musify.py index 3e6a4e5..af3fdcb 100644 --- a/src/music_kraken/pages/musify.py +++ b/src/music_kraken/pages/musify.py @@ -377,7 +377,7 @@ class Musify(Page): ) @classmethod - def parse_album_card(cls, album_card: BeautifulSoup) -> Album: + def parse_album_card(cls, album_card: BeautifulSoup, artist_name: str = None) -> Album: """
@@ -423,6 +423,27 @@ class Musify(Page): timestamp: Optional[ID3Timestamp] = None album_status = None + def set_name(new_name: str): + nonlocal name + nonlocal artist_name + + # example of just setting not working: https://musify.club/release/unjoy-eurythmie-psychonaut-4-tired-numb-still-alive-2012-324067 + if new_name.count(" - ") != 1: + name = new_name + return + + potential_artist_list, potential_name = new_name.split(" - ") + unified_artist_list = string_processing.unify(potential_artist_list) + if artist_name is not None: + if string_processing.unify(artist_name) not in unified_artist_list: + name = new_name + return + + name = potential_name + return + + name = new_name + album_status_id = album_card.get("data-type") if album_status_id.isdigit(): album_status_id = int(album_status_id) @@ -455,7 +476,7 @@ class Musify(Page): if not text_is_name: return - name = _anchor.text + set_name(_anchor.text) anchor_list = album_card.find_all("a", recursive=False) if len(anchor_list) > 0: @@ -466,7 +487,7 @@ class Musify(Page): if thumbnail is not None: alt = thumbnail.get("alt") if alt is not None: - name = alt + set_name(alt) image_url = thumbnail.get("src") else: @@ -516,7 +537,7 @@ class Musify(Page): ) @classmethod - def get_discography(cls, url: MusifyUrl, flat=False) -> List[Album]: + def get_discography(cls, url: MusifyUrl, artist_name: str = None, flat=False) -> List[Album]: """ POST https://musify.club/artist/filteralbums ArtistID: 280348 @@ -539,7 +560,7 @@ class Musify(Page): discography: List[Album] = [] for card_soup in soup.find_all("div", {"class": "card"}): - new_album: Album = cls.parse_album_card(card_soup) + new_album: Album = cls.parse_album_card(card_soup, artist_name) album_source: Source if not flat: for album_source in new_album.source_collection.get_sources_from_page(cls.SOURCE_TYPE): @@ -700,7 +721,7 @@ class Musify(Page): artist = cls.get_artist_attributes(url) - discography: List[Album] = cls.get_discography(url) + discography: List[Album] = cls.get_discography(url, artist.name) artist.main_album_collection.extend(discography) return artist