diff --git a/app/api/__init__.py b/app/api/__init__.py index 85f15d4..cb250ba 100644 --- a/app/api/__init__.py +++ b/app/api/__init__.py @@ -25,7 +25,7 @@ def create_api(): Creates the Flask instance, registers modules and registers all the API blueprints. """ app = Flask(__name__) - CORS(app) + CORS(app, origins="*") Compress(app) app.config["COMPRESS_MIMETYPES"] = [ diff --git a/app/api/artist.py b/app/api/artist.py index f729a81..a6e3aaa 100644 --- a/app/api/artist.py +++ b/app/api/artist.py @@ -216,7 +216,17 @@ def get_artist(artisthash: str): artist.is_favorite = favdb.check_is_favorite(artisthash, FavType.artist) - return {"artist": artist, "tracks": serialize_tracks(tracks[:limit])} + genres = set() + + for t in tracks: + if t.genre is not None: + genres = genres.union(t.genre) + + return { + "artist": artist, + "tracks": serialize_tracks(tracks[:limit]), + "genres": list(genres), + } @api.route("/artist//albums", methods=["GET"]) diff --git a/app/models/track.py b/app/models/track.py index f3104d7..8dce12a 100644 --- a/app/models/track.py +++ b/app/models/track.py @@ -93,8 +93,22 @@ class Track: self.image = self.albumhash + ".webp" if self.genre is not None and self.genre != "": - self.genre = str(self.genre).replace("/", ",").replace(";", ",") - self.genre = str(self.genre).lower().split(",") + self.genre = self.genre.lower() + separators = {"/", ";", "&"} + + contains_rnb = "r&b" in self.genre + contains_rock = "rock & roll" in self.genre + + if contains_rnb: + self.genre = self.genre.replace("r&b", "RnB") + + if contains_rock: + self.genre = self.genre.replace("rock & roll", "rock") + + for s in separators: + self.genre: str = self.genre.replace(s, ",") + + self.genre = self.genre.split(",") self.genre = [g.strip() for g in self.genre] self.recreate_hash() diff --git a/app/utils/parsers.py b/app/utils/parsers.py index ba8b128..5c8faca 100644 --- a/app/utils/parsers.py +++ b/app/utils/parsers.py @@ -9,12 +9,12 @@ def split_artists(src: str): Splits a string of artists into a list of artists. """ separators: set = get_flag(SessionVarKeys.ARTIST_SEPARATORS) - separators = separators.union({","}) + # separators = separators.union({","}) for sep in separators: - src = src.replace(sep, "߸") + src = src.replace(sep, ",") - artists = src.split("߸") + artists = src.split(",") return [a.strip() for a in artists]