From: Marvin Schenkel Date: Mon, 23 Feb 2026 18:10:13 +0000 (+0100) Subject: Add genre icons and SVG handling to imageproxy (#3223) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=b0572d46e8b8d0f750598e262439141d17e3ad65;p=music-assistant-server.git Add genre icons and SVG handling to imageproxy (#3223) * Add genre icons and SVG handling to imageproxy * Cleanup --- diff --git a/music_assistant/constants.py b/music_assistant/constants.py index 88061829..ee908258 100644 --- a/music_assistant/constants.py +++ b/music_assistant/constants.py @@ -53,7 +53,8 @@ VARIOUS_ARTISTS_MBID: Final[str] = "89ad4ac3-39f7-470e-963a-56509c546377" RESOURCES_DIR: Final[pathlib.Path] = ( pathlib.Path(__file__).parent.resolve().joinpath("helpers/resources") ) -GENRE_MAPPING_FILE: Final[pathlib.Path] = RESOURCES_DIR.joinpath("genre_mapping.json") +GENRE_ICONS_DIR: Final[pathlib.Path] = RESOURCES_DIR.joinpath("genres") +GENRE_MAPPING_FILE: Final[pathlib.Path] = GENRE_ICONS_DIR.joinpath("genre_mapping.json") ANNOUNCE_ALERT_FILE: Final[str] = str(RESOURCES_DIR.joinpath("announce.mp3")) SILENCE_FILE: Final[str] = str(RESOURCES_DIR.joinpath("silence.mp3")) diff --git a/music_assistant/controllers/media/genres.py b/music_assistant/controllers/media/genres.py index b0ff61d1..1c601012 100644 --- a/music_assistant/controllers/media/genres.py +++ b/music_assistant/controllers/media/genres.py @@ -8,11 +8,13 @@ import logging import time from typing import TYPE_CHECKING, Any -from music_assistant_models.enums import EventType, MediaType +from music_assistant_models.enums import EventType, ImageType, MediaType from music_assistant_models.media_items import ( Album, Artist, Genre, + MediaItemImage, + MediaItemMetadata, RecommendationFolder, Track, ) @@ -29,6 +31,7 @@ from music_assistant.constants import ( DB_TABLE_RADIOS, DB_TABLE_TRACKS, DEFAULT_GENRE_MAPPING, + GENRE_ICONS_DIR, ) from music_assistant.helpers.compare import create_safe_string from music_assistant.helpers.database import UNSET @@ -131,6 +134,24 @@ class GenreController(MediaControllerBase[Genre]): # Run genre mapping scanner after library sync completes self.mass.subscribe(self._on_sync_tasks_updated, EventType.SYNC_TASKS_UPDATED) + @staticmethod + def _get_genre_icon_metadata(translation_key: str | None) -> MediaItemMetadata | None: + """Build metadata with genre icon image if an SVG exists for the translation key. + + :param translation_key: The genre's translation key (matches SVG filename). + """ + if not translation_key: + return None + icon_path = GENRE_ICONS_DIR / f"{translation_key}.svg" + if not icon_path.is_file(): + return None + image = MediaItemImage( + type=ImageType.THUMB, + path=str(icon_path), + provider="builtin", + ) + return MediaItemMetadata(images=UniqueList([image])) + @staticmethod def _dedup_aliases(existing: list[str], new: list[str]) -> list[str]: """Merge alias lists, deduplicating by normalized form (create_safe_string). @@ -489,15 +510,17 @@ class GenreController(MediaControllerBase[Genre]): continue # Create new genre + translation_key = entry.get("translation_key") + icon_metadata = self._get_genre_icon_metadata(translation_key) genre_id = await self.mass.music.database.insert( DB_TABLE_GENRES, { "name": name_value, "sort_name": sort_name, - "translation_key": entry.get("translation_key"), + "translation_key": translation_key, "description": None, "favorite": 0, - "metadata": serialize_to_json({}), + "metadata": serialize_to_json(icon_metadata.to_dict() if icon_metadata else {}), "external_ids": serialize_to_json(set()), "genre_aliases": serialize_to_json(all_aliases), "play_count": 0, diff --git a/music_assistant/controllers/metadata.py b/music_assistant/controllers/metadata.py index 39295885..a22623e8 100644 --- a/music_assistant/controllers/metadata.py +++ b/music_assistant/controllers/metadata.py @@ -6,6 +6,7 @@ import asyncio import collections import logging import os +import pathlib import random import urllib.parse from base64 import b64encode @@ -51,7 +52,7 @@ from music_assistant.constants import ( ) from music_assistant.helpers.api import api_command from music_assistant.helpers.compare import compare_strings -from music_assistant.helpers.images import create_collage, get_image_thumb +from music_assistant.helpers.images import create_collage, get_image_data, get_image_thumb from music_assistant.helpers.security import is_safe_path from music_assistant.helpers.throttle_retry import Throttler from music_assistant.models.core_controller import CoreController @@ -64,6 +65,18 @@ if TYPE_CHECKING: from music_assistant.models.metadata_provider import MetadataProvider from music_assistant.providers.musicbrainz import MusicbrainzProvider + +def _detect_image_format(path: str) -> str: + """Detect image format from file path extension, defaulting to jpg.""" + match pathlib.PurePath(path).suffix.lower(): + case ".svg": + return "svg" + case ".png": + return "png" + case _: + return "jpg" + + LOCALES = { "af_ZA": "African", "ar_AE": "Arabic (United Arab Emirates)", @@ -404,7 +417,10 @@ class MetaDataController(CoreController): ) -> str: """Get (proxied) URL for MediaItemImage.""" if image_format is None: - image_format = "png" if image.path.lower().endswith(".png") else "jpg" + image_format = _detect_image_format(image.path) + if image_format == "svg": + # SVGs don't need resizing + size = 0 if not image.remotely_accessible or prefer_proxy or size: # return imageproxy url for images that need to be resolved # the original path is double encoded @@ -430,13 +446,19 @@ class MetaDataController(CoreController): if not self.mass.get_provider(provider) and not path.startswith("http"): raise ProviderUnavailableError if image_format is None: - image_format = "png" if path.lower().endswith(".png") else "jpg" + image_format = _detect_image_format(path) if provider == "builtin" and path.startswith("/collage/"): # special case for collage images collage_rel = path.split("/collage/")[-1] if not is_safe_path(collage_rel): raise FileNotFoundError("Invalid collage path") path = os.path.join(self._collage_images_dir, collage_rel) + if image_format == "svg": + svg_bytes = await get_image_data(self.mass, path, provider) + if base64: + enc_image = b64encode(svg_bytes).decode() + return f"data:image/svg+xml;base64,{enc_image}" + return svg_bytes thumbnail_bytes = await get_image_thumb( self.mass, path, size=size, provider=provider, image_format=image_format ) @@ -455,7 +477,7 @@ class MetaDataController(CoreController): size = int(request.query.get("size", "0")) image_format = request.query.get("fmt", None) if image_format is None: - image_format = "png" if path.lower().endswith(".png") else "jpg" + image_format = _detect_image_format(path) if not self.mass.get_provider(provider) and not path.startswith("http"): return web.Response(status=404) if "%" in path: @@ -467,10 +489,11 @@ class MetaDataController(CoreController): ) # we set the cache header to 1 year (forever) # assuming that images do not/rarely change + content_type = "image/svg+xml" if image_format == "svg" else f"image/{image_format}" return web.Response( body=image_data, headers={"Cache-Control": "max-age=31536000", "Access-Control-Allow-Origin": "*"}, - content_type=f"image/{image_format}", + content_type=content_type, ) except Exception as err: # broadly catch all exceptions here to ensure we dont crash the request handler diff --git a/music_assistant/controllers/music.py b/music_assistant/controllers/music.py index 03e833a9..82b813bc 100644 --- a/music_assistant/controllers/music.py +++ b/music_assistant/controllers/music.py @@ -2306,13 +2306,17 @@ class MusicController(CoreController): if search_name in genre_cache: return genre_cache[search_name] aliases_json = serialize_to_json(aliases or [name]) + icon_metadata = GenreController._get_genre_icon_metadata(translation_key) + metadata_json = ( + serialize_to_json(icon_metadata.to_dict()) if icon_metadata else empty_metadata + ) row_id = await db.execute_insert( genre_insert_sql, ( name, sort_name, translation_key, - empty_metadata, + metadata_json, empty_external_ids, aliases_json, search_name, diff --git a/music_assistant/helpers/images.py b/music_assistant/helpers/images.py index 90e5058e..2670705c 100644 --- a/music_assistant/helpers/images.py +++ b/music_assistant/helpers/images.py @@ -88,7 +88,9 @@ async def get_image_data(mass: MusicAssistant, path_or_url: str, provider: str) if path_or_url.startswith("data:image"): return b64decode(path_or_url.split(",")[-1]) # handle FILE location (of type image) - if path_or_url.endswith(("jpg", "JPG", "png", "PNG", "jpeg")) and is_safe_path(path_or_url): + if path_or_url.endswith(("jpg", "JPG", "png", "PNG", "jpeg", "svg", "SVG")) and is_safe_path( + path_or_url + ): if await asyncio.to_thread(os.path.isfile, path_or_url): async with aiofiles.open(path_or_url, "rb") as _file: return cast("bytes", await _file.read()) diff --git a/music_assistant/helpers/resources/genre_mapping.json b/music_assistant/helpers/resources/genre_mapping.json deleted file mode 100644 index 750f9960..00000000 --- a/music_assistant/helpers/resources/genre_mapping.json +++ /dev/null @@ -1,2010 +0,0 @@ -[ - { - "genre": "afrobeats (West African urban/pop music)", - "translation_key": "afrobeats", - "aliases": [ - "africa", - "african / arabic / bollywood and desi", - "african music", - "afro", - "afro / caribbean", - "afrobeat", - "afrobeats", - "afropiano", - "alté", - "world" - ] - }, - { - "genre": "ambient", - "translation_key": "ambient", - "aliases": [ - "ambient / wellness", - "ambient americana", - "ambient dub", - "ambient/new age", - "electronic", - "kankyō ongaku", - "new age", - "sound therapy / sleep", - "space ambient", - "tribal ambient" - ] - }, - { - "genre": "anime & video game music", - "translation_key": "anime_and_video_game_music", - "aliases": [ - "anime", - "anime/video game", - "j-pop", - "japanese music", - "movies & series", - "soundtracks and musicals", - "video game music", - "video games" - ] - }, - { - "genre": "asian music", - "translation_key": "asian_music", - "aliases": [ - "anime", - "asia", - "bollywood and desi", - "j-pop", - "japanese music", - "k-pop", - "korean music", - "mandopop & cantopop" - ] - }, - { - "genre": "bluegrass", - "translation_key": "bluegrass", - "aliases": [ - "bluegrass gospel", - "jamgrass", - "progressive bluegrass" - ] - }, - { - "genre": "blues", - "translation_key": "blues", - "aliases": [ - "acoustic blues", - "african blues", - "blues rock", - "boogie rock", - "boogie-woogie", - "classic blues", - "country blues", - "delta blues", - "desert blues", - "electric blues", - "electric texas blues", - "jazz blues", - "jug band", - "jump blues", - "modern blues", - "piano blues", - "piedmont blues", - "soul blues", - "swamp blues" - ] - }, - { - "genre": "brazilian music", - "translation_key": "brazilian_music", - "aliases": [ - "bossa nova", - "brazil", - "brazilian funk", - "forro", - "forró", - "funk", - "funk brasileiro", - "latin", - "mpb", - "pagode", - "samba", - "sertanejo" - ] - }, - { - "genre": "chanson", - "translation_key": "chanson", - "aliases": [ - "chanson française", - "decades / pop", - "french music", - "pop", - "retro french music" - ] - }, - { - "genre": "children's music", - "translation_key": "childrens_music", - "aliases": [ - "batonebi songs", - "children", - "family", - "kids", - "kids & family", - "kids / family", - "lullaby", - "stories and nursery rhymes" - ] - }, - { - "genre": "christmas music", - "translation_key": "christmas_music", - "aliases": [ - "holiday" - ] - }, - { - "genre": "church music", - "translation_key": "church_music", - "aliases": [ - "ambrosian chant", - "anglican chant", - "beneventan chant", - "byzantine chant", - "cantatas (sacred)", - "celtic chant", - "choirs (sacred)", - "christian & gospel", - "christian / gospel", - "classical", - "gallican chant", - "gospel", - "gospel / christian", - "gregorian chant", - "kontakion", - "mozarabic chant", - "old roman chant", - "plainchant", - "russian orthodox liturgical music", - "sacred vocal music", - "sarum chant", - "sticheron", - "troparion", - "zema", - "znamenny chant" - ] - }, - { - "genre": "classical", - "translation_key": "classical", - "aliases": [ - "alternative", - "ambrosian chant", - "ars antiqua", - "ars nova", - "ars subtilior", - "art song", - "art songs", - "art songs, mélodies & lieder", - "bagatelle", - "ballad opera", - "ballet", - "ballet de cour", - "ballets", - "baroque", - "baroque suite", - "beneventan chant", - "brass band", - "british brass band", - "burmese classical", - "cantata", - "cantatas (secular)", - "canzona", - "capriccio", - "cello concertos", - "cello solos", - "celtic chant", - "chamber music", - "character piece", - "choirs (sacred)", - "choral music", - "choral music (choirs)", - "choral symphony", - "christian & gospel", - "christian / gospel", - "cinematic classical", - "circus march", - "classical period", - "comédie-ballet", - "concert band", - "concertina band", - "concerto", - "concerto for orchestra", - "concerto grosso", - "concertos", - "concertos for trumpet", - "concertos for wind instruments", - "contemporary classical", - "dechovka", - "divertissement", - "duets", - "electronic", - "english pastoral school", - "experimental", - "expressionism", - "fantasia", - "fugue", - "full operas", - "funeral march", - "futurism", - "gallican chant", - "gamelan", - "gospel", - "gospel / christian", - "grand opera", - "gregorian chant", - "holy minimalism", - "impressionism", - "impromptu", - "indeterminacy", - "integral serialism", - "iraqi maqam", - "islamic modal music", - "j-pop", - "japanese classical", - "japanese music", - "japanese traditional", - "k-pop", - "kacapi suling", - "keyboard concertos", - "korean classical", - "korean traditional", - "kulintang", - "lied", - "lieder (german)", - "lute song", - "madrigal", - "mahori", - "march", - "mass", - "masses, passions, requiems", - "medieval", - "medieval lyric poetry", - "microtonal classical", - "minimal music", - "minimalism", - "modern classical", - "monodrama", - "motet", - "mozarabic chant", - "mugham", - "music by vocal ensembles", - "musique concrète instrumentale", - "mélodie", - "mélodies", - "neoclassicism", - "new complexity", - "nocturne", - "old roman chant", - "opera", - "opera buffa", - "opera extracts", - "opera semiseria", - "opera seria", - "operetta", - "operettas", - "opéra comique", - "oratorio", - "oratorios (secular)", - "orchestral", - "orchestral song", - "overture", - "overtures", - "passion setting", - "pinpeat", - "plainchant", - "post-classical", - "post-minimalism", - "prelude", - "process music", - "quartets", - "quintets", - "renaissance", - "requiem", - "ricercar", - "romantic classical", - "romantische oper", - "russian romance", - "saluang klasik", - "sarum chant", - "sawt", - "secular vocal music", - "serenade", - "serialism", - "sinfonia concertante", - "singspiel", - "solo piano", - "sonata", - "sonorism", - "soundtracks and musicals", - "soundtracks and musicals / classical", - "southeast asian classical", - "spectralism", - "stochastic music", - "string quartet", - "symphonic mugham", - "symphonic music", - "symphonic poem", - "symphonic poems", - "symphonies", - "symphony", - "talempong", - "tembang cianjuran", - "thai classical", - "theme and variations", - "third stream", - "toccata", - "totalism", - "tragédie en musique", - "trios", - "turkish classical", - "uyghur muqam", - "verismo", - "violin concertos", - "violin solos", - "vocal music", - "vocal music (secular and sacred)", - "vocal recitals", - "western classical", - "zarzuela", - "zeitoper", - "étude" - ] - }, - { - "genre": "comedy", - "translation_key": "comedy", - "aliases": [ - "bawdy songs", - "break-in", - "humour", - "prank calls", - "sketch comedy", - "standup comedy" - ] - }, - { - "genre": "country", - "translation_key": "country", - "aliases": [ - "alternative country", - "americana", - "bro-country", - "classic country", - "close harmony", - "contemporary country", - "cosmic country", - "country and americana", - "country boogie", - "country folk", - "country gospel", - "country pop", - "country rock", - "country soul", - "countrypolitan", - "folk & acoustic", - "folk / americana", - "gothic country", - "honky tonk", - "neo-traditional country", - "north america", - "outlaw country", - "progressive country", - "traditional country", - "urban cowboy", - "western swing" - ] - }, - { - "genre": "dance", - "translation_key": "dance", - "aliases": [ - "alternative dance", - "bubblegum dance", - "dance & edm", - "dance & electronic", - "dance and electronic", - "dance/electronic", - "electro", - "electronic", - "electronic / dance", - "eurobeat", - "eurodance", - "italo dance", - "j-euro", - "madchester", - "new rave", - "skweee" - ] - }, - { - "genre": "dark ambient", - "translation_key": "dark_ambient", - "aliases": [ - "black ambient", - "ritual ambient" - ] - }, - { - "genre": "dark wave", - "translation_key": "dark_wave", - "aliases": [ - "ethereal wave", - "neoclassical dark wave" - ] - }, - { - "genre": "disco", - "translation_key": "disco", - "aliases": [ - "boogie", - "decades / r&b and soul", - "electro-disco", - "euro-disco", - "funk & disco", - "hi-nrg", - "italo-disco", - "latin disco", - "red disco", - "soul & funk / dance & edm", - "soul/funk", - "space disco" - ] - }, - { - "genre": "electronic", - "translation_key": "electronic", - "aliases": [ - "acid breaks", - "acid house", - "acid techno", - "acid trance", - "acidcore", - "acousmatic", - "afro house", - "algorave", - "amapiano", - "ambient house", - "ambient techno", - "ambient trance", - "amigacore", - "aquacrunk", - "artcore", - "atmospheric drum and bass", - "autonomic", - "balani show", - "balearic beat", - "balearic trance", - "ballroom house", - "baltimore club", - "barber beats", - "bass house", - "belgian techno", - "berlin school", - "big beat", - "big room house", - "big room trance", - "birmingham sound", - "bit music", - "bitpop", - "black midi", - "bleep techno", - "bouncy techno", - "brazilian bass", - "breakbeat", - "breakbeat hardcore", - "breakbeat kota", - "breakcore", - "briddim", - "broken beat", - "broken transmission", - "brostep", - "bubblegum bass", - "bubbling", - "buchiage trance", - "budots", - "bytebeat", - "bérite club", - "celtic electronica", - "changa tuki", - "chicago house", - "chill", - "chill-out", - "chillout", - "chillstep", - "chillsynth", - "chillwave", - "chiptune", - "club", - "colour bass", - "comfy synth", - "complextro", - "coupé-décalé", - "crossbreed", - "cruise", - "crunkcore", - "dance", - "dance & edm", - "dance & electronic", - "dance and electronic", - "dance/electronic", - "dancefloor drum and bass", - "dariacore", - "dark disco", - "dark psytrance", - "darkcore", - "darkcore edm", - "darkstep", - "darksynth", - "deathchant hardcore", - "deathstep", - "deconstructed club", - "deep drum and bass", - "deep house", - "deep tech", - "deep techno", - "detroit techno", - "digital cumbia", - "digital fusion", - "digital hardcore", - "diva house", - "donk", - "doomcore", - "doskpop", - "downtempo", - "dream trance", - "dreampunk", - "drift phonk", - "drill and bass", - "drum & bass", - "drum and bass", - "drumfunk", - "drumstep", - "dub techno", - "dubstep", - "dubstyle", - "dubwise", - "dungeon sound", - "dungeon synth", - "dutch house", - "early hardstyle", - "eccojams", - "edm", - "electro house", - "electro latino", - "electro swing", - "electroacoustic", - "electroclash", - "electronic / dance", - "electronic rock", - "electronica", - "electronicore", - "electrotango", - "euphoric hardstyle", - "euro house", - "euro-trance", - "experimental electronic", - "extratone", - "festival progressive house", - "festival trap", - "fidget house", - "flashcore", - "florida breaks", - "fm synthesis", - "folktronica", - "footwork", - "footwork jungle", - "forest psytrance", - "frapcore", - "free tekno", - "freeform hardcore", - "freestyle", - "french electro", - "french house", - "frenchcore", - "full-on", - "funkot", - "funktronica", - "funky breaks", - "funky house", - "future bass", - "future bounce", - "future core", - "future funk", - "future garage", - "future house", - "future rave", - "future riddim", - "futurepop", - "g-house", - "gabber", - "garage house", - "ghetto funk", - "ghetto house", - "ghettotech", - "glitch", - "glitch hop", - "glitch hop edm", - "glitch pop", - "goa trance", - "gospel house", - "gqom", - "graphical sound", - "grime", - "halftime", - "hands up", - "happy hardcore", - "hard drum", - "hard house", - "hard nrg", - "hard techno", - "hard trance", - "hard trap", - "hardbag", - "hardbass", - "hardcore breaks", - "hardcore techno", - "hardgroove techno", - "hardstep", - "hardstyle", - "hardvapour", - "hardwave", - "heaven trap", - "hexd", - "hi-tech", - "hi-tech full-on", - "hip house", - "hip-hop / r&b", - "hip-hop / r&b and soul", - "horror synth", - "house", - "hybrid trap", - "hyper techno (Italo-Japanese 1990s genre)", - "hypertechno (2020s genre)", - "idm", - "illbient", - "indietronica", - "industrial hardcore", - "industrial techno", - "italo house", - "j-core", - "jackin house", - "jazz house", - "jazzstep", - "jersey club", - "jersey sound", - "juke", - "jump up", - "jumpstyle", - "jungle", - "jungle terror", - "kawaii future bass", - "krushclub", - "kuduro", - "kwaito", - "latin house", - "leftfield", - "lento violento", - "liquid funk", - "liquid riddim", - "lo-fi house", - "lolicore", - "lounge", - "makina", - "mallsoft", - "manyao", - "mashcore", - "melbourne bounce", - "melodic bass", - "melodic dubstep", - "melodic house", - "melodic techno", - "melodic trance", - "microfunk", - "microhouse", - "microsound", - "midtempo bass", - "minatory", - "minimal drum and bass", - "minimal synth", - "minimal techno", - "minimal wave", - "modern hardtek", - "moogsploitation", - "moombahcore", - "moombahton", - "musique concrète", - "neo-grime", - "nerdcore techno", - "neurofunk", - "neurohop", - "night full-on", - "nightcore", - "nortec", - "nu disco", - "nu jazz", - "nu skool breaks", - "nu style gabber", - "nustyle", - "organic house", - "ori deck", - "outsider house", - "peak time techno", - "philly club", - "phonk house", - "post-dubstep", - "powerstomp", - "progressive breaks", - "progressive electronic", - "progressive house", - "progressive psytrance", - "progressive trance", - "psybient", - "psybreaks", - "psycore", - "psystyle", - "psytrance", - "pumpcore", - "purple sound", - "ragga jungle", - "raggacore", - "raggatek", - "rap / electronic", - "rave", - "rawphoric", - "rawstyle", - "riddim dubstep", - "rominimal", - "sambass", - "sampledelia", - "schranz", - "seapunk", - "shangaan electro", - "singeli", - "skullstep", - "slap house", - "slimepunk", - "slushwave", - "sovietwave", - "spacesynth", - "speed garage", - "speed house", - "speedcore", - "splittercore", - "stutter house", - "suomisaundi", - "synthwave", - "tearout (older dubstep subgenre)", - "tearout brostep", - "tech house", - "tech trance", - "techno", - "technoid", - "techstep", - "terrorcore", - "trance", - "trancestep", - "trap edm", - "tribal guarachero", - "tribal house", - "trip hop", - "tropical house", - "twerk", - "uk funky", - "uk garage", - "uk hardcore", - "uk jackin", - "uptempo hardcore", - "utopian virtual", - "vapornoise", - "vaportrap", - "vaporwave", - "vinahouse", - "vocal house", - "vocal trance", - "wave", - "weightless", - "west coast breaks", - "winter synth", - "witch house", - "wonky", - "wonky techno", - "zenonesque" - ] - }, - { - "genre": "experimental", - "translation_key": "experimental", - "aliases": [ - "alternative", - "ambient noise wall", - "black noise", - "classical", - "conducted improvisation", - "data sonification", - "electronic / classical", - "harsh noise", - "harsh noise wall", - "lowercase", - "mad", - "musique concrète", - "noise", - "onkyo", - "plunderphonics", - "power electronics", - "reductionism", - "sound art", - "sound collage", - "spamwave", - "tape music", - "ytpmv" - ] - }, - { - "genre": "field recording", - "translation_key": "field_recording", - "aliases": [ - "animal sounds", - "birdsong", - "nature sounds", - "rain sounds", - "whale song" - ] - }, - { - "genre": "folk", - "translation_key": "folk", - "aliases": [ - "aboio", - "alternative folk", - "american primitive guitar", - "anti-folk", - "appalachian folk", - "avant-folk", - "bagad", - "baguala", - "biraha", - "cape breton fiddling", - "celtic", - "chamber folk", - "contemporary folk", - "country folk", - "dark folk", - "desert blues", - "falak", - "fife and drum blues", - "fijiri", - "filk", - "folk & acoustic", - "folk & singer-songwriter", - "folk / americana", - "folk and acoustic", - "folk pop", - "freak folk", - "free folk", - "gypsy", - "gypsy music", - "haozi", - "hungarian folk", - "indie folk", - "industrial folk song", - "ireland", - "irish celtic", - "irish folk", - "isa", - "loner folk", - "ländlermusik", - "manele", - "música criolla", - "neo-medieval folk", - "neofolk", - "neofolklore", - "new mexico music", - "néo-trad", - "old-time", - "pagan folk", - "progressive folk", - "psychedelic folk", - "scottish", - "scottish country dance music", - "scrumpy and western", - "sea shanty", - "seguidilla", - "sevdalinka", - "sevillanas", - "shan'ge", - "skiffle", - "stomp and holler", - "stornello", - "sutartinės", - "swiss folk music", - "tajaraste", - "talking blues", - "tallava", - "tarantella", - "tonada asturiana", - "trampská hudba", - "trikitixa", - "turbo-folk", - "turkish folk", - "udigrudi", - "visa", - "volksmusik", - "waulking song", - "white voice", - "work song", - "world fusion", - "wyrd folk", - "xuc", - "yodeling" - ] - }, - { - "genre": "funk", - "translation_key": "funk", - "aliases": [ - "acid jazz", - "afro-funk", - "afrobeat (funk/soul + West African sounds)", - "bounce beat", - "deep funk", - "electro-funk", - "funk & disco", - "funk metal", - "funk rock", - "go-go", - "jazz / r&b and soul", - "latin funk", - "minneapolis sound", - "p-funk", - "r&b", - "r&b / soul", - "r&b / soul/funk", - "r&b and soul", - "soul", - "soul & funk", - "soul / r&b", - "soul/funk", - "soul/funk/r&b", - "synth funk" - ] - }, - { - "genre": "gangsta rap", - "translation_key": "gangsta_rap", - "aliases": [ - "coke rap", - "scam rap" - ] - }, - { - "genre": "gospel", - "translation_key": "gospel", - "aliases": [ - "cantata", - "cantatas (sacred)", - "cantatas (secular)", - "choirs (sacred)", - "choral music", - "choral music (choirs)", - "christian & gospel", - "christian / gospel", - "church music", - "classical", - "contemporary gospel", - "gospel / christian", - "mass", - "masses, passions, requiems", - "music by vocal ensembles", - "oratorio", - "oratorios (secular)", - "passion setting", - "praise break", - "requiem", - "sacred steel", - "sacred vocal music", - "southern gospel", - "traditional black gospel", - "urban contemporary gospel" - ] - }, - { - "genre": "hip hop", - "translation_key": "hip_hop", - "aliases": [ - "abstract hip hop", - "acid jazz", - "alternative hip hop", - "battle rap", - "battle record", - "britcore", - "chap hop", - "chicago bop", - "chicano rap", - "chipmunk soul", - "chopped and screwed", - "chopper", - "christian hip hop", - "cloud rap", - "comedy hip hop", - "conscious hip hop", - "crunk", - "crunkcore", - "digicore", - "drumless hip hop", - "dungeon rap", - "electronic", - "emo rap", - "experimental hip hop", - "frat rap", - "g-funk", - "glitch hop", - "hardcore hip hop", - "hip-hop", - "hip-hop / r&b", - "hip-hop / r&b and soul", - "hip-hop/rap", - "horrorcore", - "industrial hip hop", - "instrumental hip hop", - "jazz rap", - "jerk (2020s)", - "lo-fi hip hop", - "lowend", - "memphis rap", - "nerdcore", - "phonk (older style, a.k.a. rare phonk)", - "political hip hop", - "pop rap", - "punk rap", - "ragga hip-hop", - "rap", - "rap / electronic", - "rap rock", - "rapcore", - "stoner rap", - "trip hop", - "turntablism", - "underground hip hop", - "wonky" - ] - }, - { - "genre": "indian classical", - "translation_key": "indian_classical", - "aliases": [ - "bollywood and desi", - "indian music", - "world" - ] - }, - { - "genre": "industrial", - "translation_key": "industrial", - "aliases": [ - "aggrotech", - "cyber metal", - "dark electro", - "death industrial", - "ebm", - "electro-industrial", - "epic collage", - "industrial metal", - "industrial rock", - "martial industrial", - "new beat", - "post-industrial", - "power noise" - ] - }, - { - "genre": "jazz", - "translation_key": "jazz", - "aliases": [ - "acid jazz", - "afro-cuban jazz", - "afro-jazz", - "afrobeat (funk/soul + West African sounds)", - "avant-garde jazz", - "bebop", - "big band", - "classic jazz", - "contemporary jazz", - "cool jazz", - "crime jazz", - "crossover", - "crossover jazz", - "dark jazz", - "dixieland", - "experimental big band", - "free jazz", - "free jazz & avant-garde", - "gypsy jazz", - "hard bop", - "indo jazz", - "instrumental jazz", - "jazz / r&b and soul", - "jazz / rock", - "jazz / soul", - "jazz blues", - "jazz fusion", - "jazz fusion & jazz rock", - "jazz mugham", - "jazz rock", - "jazz-funk", - "latin", - "latin jazz", - "latin music", - "modal jazz", - "modern creative", - "new orleans r&b", - "orchestral jazz", - "post-bop", - "smooth jazz", - "soul jazz", - "spiritual jazz", - "stride", - "sweet jazz", - "third stream", - "traditional jazz", - "traditional jazz & new orleans", - "vocal jazz", - "vocalese", - "world fusion" - ] - }, - { - "genre": "klezmer", - "translation_key": "klezmer", - "aliases": [ - "folk & acoustic", - "folk & singer-songwriter", - "folk and acoustic", - "yiddish & klezmer" - ] - }, - { - "genre": "latin", - "translation_key": "latin", - "aliases": [ - "bachata", - "bolero", - "boogaloo", - "latin jazz", - "latin music", - "spain", - "spanish music" - ] - }, - { - "genre": "marching band", - "translation_key": "marching_band", - "aliases": [ - "beni", - "drum and bugle corps", - "drumline", - "fife and drum", - "guggenmusik", - "march", - "military music", - "pep band" - ] - }, - { - "genre": "metal", - "translation_key": "metal", - "aliases": [ - "alternative metal", - "atmospheric black metal", - "atmospheric sludge metal", - "avant-garde metal", - "black 'n' roll", - "black metal", - "blackened death metal", - "blackgaze", - "brutal death metal", - "celtic metal", - "christian metal", - "crossover thrash", - "cyber metal", - "cybergrind", - "death 'n' roll", - "death metal", - "death-doom metal", - "deathcore", - "deathgrind", - "depressive black metal", - "dissonant black metal", - "dissonant death metal", - "djent", - "doom metal", - "doomgaze", - "downtempo deathcore", - "drone metal", - "electronicore", - "epic doom metal", - "folk metal", - "funeral doom metal", - "funk metal", - "goregrind", - "gorenoise", - "gothic metal", - "grindcore", - "groove metal", - "hard rock", - "heavy metal", - "industrial metal", - "kawaii metal", - "mathcore", - "medieval metal", - "melodic black metal", - "melodic death metal", - "melodic metalcore", - "metalcore", - "mincecore", - "neoclassical metal", - "neue deutsche härte", - "noisegrind", - "nu metal", - "nwobhm", - "old school death metal", - "pagan black metal", - "pop metal", - "post-metal", - "power metal", - "progressive metal", - "progressive metalcore", - "rap metal", - "rock", - "rock / indie", - "slam death metal", - "sludge metal", - "southern metal", - "speed metal", - "stoner metal", - "symphonic black metal", - "symphonic metal", - "technical death metal", - "technical thrash metal", - "thall", - "thrash metal", - "traditional doom metal", - "trance metal", - "us power metal", - "viking metal", - "war metal" - ] - }, - { - "genre": "middle eastern music", - "translation_key": "middle_eastern_music", - "aliases": [ - "arabic", - "oriental music", - "world" - ] - }, - { - "genre": "musical", - "translation_key": "musical", - "aliases": [ - "cabaret", - "chèo", - "film, tv & stage", - "industrial musical", - "minstrelsy", - "movies & series", - "murga", - "murga uruguaya", - "music hall", - "musical theatre", - "operetta", - "operettas", - "revue", - "rock musical", - "soundtracks", - "soundtracks and musicals", - "theatre music", - "tv & films", - "vaudeville" - ] - }, - { - "genre": "new age", - "translation_key": "new_age", - "aliases": [ - "ambient", - "ambient / wellness", - "ambient/new age", - "andean new age", - "celtic new age", - "electronic", - "native american new age", - "neoclassical new age", - "sound therapy / sleep" - ] - }, - { - "genre": "poetry", - "translation_key": "poetry", - "aliases": [ - "beat poetry", - "cowboy poetry", - "dub poetry", - "jazz poetry", - "kakawin", - "literature", - "ngâm thơ", - "punk poetry", - "slam poetry", - "sound poetry", - "spoken word" - ] - }, - { - "genre": "polka", - "translation_key": "polka", - "aliases": [ - "chicago polka", - "eastern-style polka", - "schottische" - ] - }, - { - "genre": "pop", - "translation_key": "pop", - "aliases": [ - "alternative pop", - "ambient pop", - "art pop", - "avant-garde pop", - "bardcore", - "baroque pop", - "beat music", - "bedroom pop", - "bitpop", - "bolero-beat", - "brill building", - "bro-country", - "bubblegum pop", - "burmese stereo", - "c-pop", - "c86", - "canción melódica", - "chamber pop", - "city pop", - "classical crossover", - "cocktail nation", - "contemporary christian", - "country pop", - "countrypolitan", - "crooners", - "cuddlecore", - "dance-pop", - "dansband", - "dansktop", - "denpa", - "donosti sound", - "dutch", - "dutch music", - "eastern europe", - "easy listening", - "electro hop", - "electropop", - "europe", - "european music", - "europop", - "exotica", - "flamenco pop", - "folk & acoustic", - "folk & singer-songwriter", - "folk / americana", - "folk and acoustic", - "folk pop", - "french artists", - "french music", - "germany", - "hyperpop", - "hypnagogic pop", - "indian pop", - "indie", - "indie & alternative", - "indie and alternative", - "indie pop", - "international pop", - "irish pop music", - "italian pop", - "italy", - "j-pop", - "jangle pop", - "japanese music", - "jazz pop", - "jesus music", - "k-pop", - "kayōkyoku", - "korean ballad", - "latin pop", - "levenslied", - "lounge", - "manele", - "manila sound", - "motown", - "mulatós", - "música cebolla", - "nederpop", - "neo-acoustic", - "nyū myūjikku", - "operatic pop", - "opm", - "orthodox pop", - "palingsound", - "persian pop", - "pop / afro / latin", - "pop / rock", - "pop ghazal", - "pop kreatif", - "pop minang", - "pop rock", - "pop soul", - "pop/rock", - "power pop", - "praise & worship", - "progressive pop", - "psychedelic pop", - "q-pop", - "rock / indie", - "rom kbach", - "romanian popcorn", - "russia", - "russian chanson", - "russian music", - "schlager", - "shibuya-kei", - "sitarsploitation", - "sophisti-pop", - "space age pop", - "stimmungsmusik", - "sundanese pop", - "sunshine pop", - "synth-pop", - "t-pop", - "tallava", - "tecnorumba", - "teen pop", - "tin pan alley", - "tontipop", - "township bubblegum", - "toytown pop", - "traditional pop", - "tropical rock", - "tropipop", - "turbo-folk", - "turkey", - "turkish music", - "turkish pop", - "twee pop", - "v-pop", - "volksmusik", - "volkstümliche musik", - "wong shadow", - "yé-yé" - ] - }, - { - "genre": "psychedelic", - "translation_key": "psychedelic", - "aliases": [ - "neo-psychedelia", - "paisley underground", - "psychploitation", - "space rock revival" - ] - }, - { - "genre": "punk", - "translation_key": "punk", - "aliases": [ - "alternative / rock", - "alternative punk", - "anarcho-punk", - "art punk", - "beatdown hardcore", - "blackened crust", - "burning spirits", - "celtic punk", - "christian hardcore", - "cowpunk", - "crack rock steady", - "crossover thrash", - "crunkcore", - "crust punk", - "cybergrind", - "d-beat", - "deathcore", - "deathgrind", - "deathrock", - "digital hardcore", - "downtempo deathcore", - "easycore", - "electronicore", - "electropunk", - "emo", - "emo pop", - "emo rap", - "emocore", - "emoviolence", - "folk punk", - "garage punk", - "goregrind", - "gorenoise", - "grindcore", - "gypsy punk", - "hardcore punk", - "horror punk", - "indie & alternative", - "könsrock", - "mathcore", - "melodic hardcore", - "melodic metalcore", - "metalcore", - "midwest emo", - "mincecore", - "neocrust", - "neon pop punk", - "new wave", - "nintendocore", - "noisecore", - "noisegrind", - "oi", - "pop punk", - "post-hardcore", - "powerviolence", - "progressive metalcore", - "psychobilly", - "punk / new wave", - "punk rock", - "queercore", - "rapcore", - "raw punk", - "riot grrrl", - "rock", - "rock / indie", - "sasscore", - "screamo", - "seishun punk", - "ska punk", - "skacore", - "skate punk", - "stenchcore", - "street punk", - "surf punk", - "swancore", - "thall", - "thrashcore", - "uk82", - "viking rock" - ] - }, - { - "genre": "r&b", - "translation_key": "r_b", - "aliases": [ - "alternative r&b", - "blue-eyed soul", - "contemporary r&b", - "doo-wop", - "funk", - "funk & disco", - "hip hop soul", - "jazz / r&b and soul", - "new jack swing", - "quiet storm", - "r&b / soul", - "r&b / soul/funk", - "r&b and soul", - "soul", - "soul & funk", - "soul / r&b", - "soul/funk", - "soul/funk/r&b", - "trap soul", - "uk street soul" - ] - }, - { - "genre": "ragtime", - "translation_key": "ragtime", - "aliases": [ - "classic ragtime", - "ragtime song" - ] - }, - { - "genre": "raï", - "translation_key": "rai", - "aliases": [ - "african", - "afro", - "arabic", - "chaabi", - "maghreb" - ] - }, - { - "genre": "reggae", - "translation_key": "reggae", - "aliases": [ - "ambient dub", - "dancehall", - "dub", - "jawaiian", - "lovers rock", - "novo dub", - "pacific reggae", - "reggae / dancehall", - "reggae and caribbean", - "reggae-pop", - "skinhead reggae" - ] - }, - { - "genre": "reggaeton", - "translation_key": "reggaeton", - "aliases": [ - "bachatón", - "cubatón", - "cumbiatón", - "doble paso", - "latin", - "latin music", - "latin urban", - "neoperreo", - "rkt", - "romantic flow", - "urbano latino" - ] - }, - { - "genre": "rock", - "translation_key": "rock", - "aliases": [ - "acid rock", - "acoustic rock", - "afro rock", - "alternative & indie", - "alternative / indie", - "alternative / rock", - "alternative dance", - "alternative rock", - "anatolian rock", - "aor", - "arena rock", - "art rock", - "avant-prog", - "beat music", - "blackgaze", - "blues rock", - "boogie rock", - "british folk rock", - "britpop", - "brutal prog", - "burmese stereo", - "canterbury scene", - "celtic rock", - "christian rock", - "classic rock", - "coldwave", - "comedy rock", - "cosmic country", - "country rock", - "crossover prog", - "dance-punk", - "dance-punk revival", - "dance-rock", - "desert blues", - "desert rock", - "dream pop", - "dunedin sound", - "electronic rock", - "eleki", - "emo", - "emo pop", - "emo rap", - "emocore", - "experimental rock", - "folk rock", - "frat rock", - "freakbeat", - "french rock", - "funk metal", - "funk rock", - "garage psych", - "garage punk", - "garage rock", - "garage rock revival", - "geek rock", - "glam metal", - "glam punk", - "glam rock", - "gothic rock", - "grebo", - "grunge", - "hamburger schule", - "hard rock", - "heartland rock", - "heavy psych", - "hot rod music", - "indie & alternative", - "indie and alternative", - "indie rock", - "indie surf", - "industrial rock", - "instrumental rock", - "j-rock", - "jam band", - "jangle pop", - "jazz / rock", - "jazz fusion & jazz rock", - "jazz rock", - "krautrock", - "latin rock", - "livetronica", - "lo-fi", - "madchester", - "mainstream rock", - "mangue beat", - "manila sound", - "math pop", - "math rock", - "medieval rock", - "midwest emo", - "miejski folk", - "mod", - "neo-progressive rock", - "neo-rockabilly", - "neue deutsche welle", - "new rave", - "new romantic", - "new wave", - "no wave", - "noise pop", - "noise rock", - "occult rock", - "phleng phuea chiwit", - "piano rock", - "pop / rock", - "pop rock", - "pop yeh-yeh", - "pop/rock", - "post-britpop", - "post-grunge", - "post-punk", - "post-punk revival", - "post-rock", - "power pop", - "progressive rock", - "proto-punk", - "psychedelic rock", - "psychobilly", - "pub rock", - "punk", - "punk / new wave", - "punk blues", - "raga rock", - "rap rock", - "rautalanka", - "reggae rock", - "rock / indie", - "rock and roll", - "rock andaluz", - "rock andino (andean rock)", - "rock opera", - "rock rural", - "rock urbano mexicano", - "rockabilly", - "roots rock", - "shoegaze", - "slacker rock", - "sleaze rock", - "slowcore", - "soft rock", - "southern rock", - "space rock", - "space rock revival", - "stoner rock", - "sufi rock", - "surf", - "surf rock", - "swamp rock", - "symphonic prog", - "symphonic rock", - "tex-mex", - "tropical rock", - "visual kei", - "vocal surf", - "xian psych", - "yacht rock", - "zamrock", - "zeuhl", - "zolo" - ] - }, - { - "genre": "salsa", - "translation_key": "salsa", - "aliases": [ - "latin", - "salsa choke", - "salsa dura", - "salsa romántica", - "timba" - ] - }, - { - "genre": "singer-songwriter", - "translation_key": "singer_songwriter", - "aliases": [ - "avtorskaya pesnya", - "euskal kantagintza berria", - "kleinkunst", - "liedermacher", - "música de intervenção", - "nova cançó", - "nueva canción", - "nueva canción chilena", - "nueva canción española", - "nuevo cancionero" - ] - }, - { - "genre": "ska", - "translation_key": "ska", - "aliases": [ - "2 tone", - "crack rock steady", - "reggae", - "reggae / dancehall", - "reggae and caribbean", - "rocksteady", - "ska & rocksteady", - "ska punk", - "skacore", - "third wave ska" - ] - }, - { - "genre": "soul", - "translation_key": "soul", - "aliases": [ - "acid jazz", - "country soul", - "funk", - "funk & disco", - "jazz / r&b and soul", - "latin soul", - "motown", - "neo soul", - "northern soul", - "pop soul", - "progressive soul", - "psychedelic soul", - "r&b", - "r&b / soul", - "r&b / soul/funk", - "r&b and soul", - "soul & funk", - "soul / r&b", - "soul/funk", - "soul/funk/r&b" - ] - }, - { - "genre": "sound effects", - "translation_key": "sound_effects", - "aliases": [ - "binaural beats", - "broadband noise" - ] - }, - { - "genre": "soundtrack", - "translation_key": "soundtrack", - "aliases": [ - "cinema music", - "film score", - "film soundtracks", - "film, tv & stage", - "movies & series", - "soundtracks", - "soundtracks and musicals", - "tv & films", - "tv series" - ] - }, - { - "genre": "spoken word", - "translation_key": "spoken_word", - "aliases": [ - "audio documentary", - "educational", - "fairy tale", - "guided meditation", - "historical documents", - "interview", - "lecture", - "literature", - "poetry", - "sermon", - "speech" - ] - }, - { - "genre": "swing", - "translation_key": "swing", - "aliases": [ - "electro swing", - "swing revival" - ] - }, - { - "genre": "tango", - "translation_key": "tango", - "aliases": [ - "latin", - "latin music" - ] - }, - { - "genre": "trap", - "translation_key": "trap", - "aliases": [ - "ambient plugg", - "asian rock (pluggnb subgenre - not rock from Asia)", - "dark plugg", - "new jazz (trap subgenre)", - "plugg", - "pluggnb", - "rage", - "regalia", - "sigilkore", - "terror plugg", - "trap latino (latin trap)", - "trap metal", - "trap soul", - "tread" - ] - }, - { - "genre": "waltz", - "translation_key": "waltz", - "aliases": [ - "slow waltz", - "vals venezolano", - "valsa brasileira" - ] - }, - { - "genre": "wellness", - "translation_key": "wellness", - "aliases": [ - "healing", - "meditation", - "relaxation", - "sleep", - "sleep / sound therapy", - "sleep / wellness", - "soundscape", - "wellness / meditation" - ] - } -] diff --git a/music_assistant/helpers/resources/genres/afrobeats.svg b/music_assistant/helpers/resources/genres/afrobeats.svg new file mode 100644 index 00000000..c9de9d34 --- /dev/null +++ b/music_assistant/helpers/resources/genres/afrobeats.svg @@ -0,0 +1,111 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/ambient.svg b/music_assistant/helpers/resources/genres/ambient.svg new file mode 100644 index 00000000..d7f5586e --- /dev/null +++ b/music_assistant/helpers/resources/genres/ambient.svg @@ -0,0 +1,62 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/anime_and_video_game_music.svg b/music_assistant/helpers/resources/genres/anime_and_video_game_music.svg new file mode 100644 index 00000000..a369d755 --- /dev/null +++ b/music_assistant/helpers/resources/genres/anime_and_video_game_music.svg @@ -0,0 +1,103 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/asian_music.svg b/music_assistant/helpers/resources/genres/asian_music.svg new file mode 100644 index 00000000..079c4793 --- /dev/null +++ b/music_assistant/helpers/resources/genres/asian_music.svg @@ -0,0 +1,121 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/bluegrass.svg b/music_assistant/helpers/resources/genres/bluegrass.svg new file mode 100644 index 00000000..9b81e90a --- /dev/null +++ b/music_assistant/helpers/resources/genres/bluegrass.svg @@ -0,0 +1,157 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/blues.svg b/music_assistant/helpers/resources/genres/blues.svg new file mode 100644 index 00000000..c0d2ee0c --- /dev/null +++ b/music_assistant/helpers/resources/genres/blues.svg @@ -0,0 +1,146 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/brazilian_music.svg b/music_assistant/helpers/resources/genres/brazilian_music.svg new file mode 100644 index 00000000..847312bf --- /dev/null +++ b/music_assistant/helpers/resources/genres/brazilian_music.svg @@ -0,0 +1,160 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/chanson.svg b/music_assistant/helpers/resources/genres/chanson.svg new file mode 100644 index 00000000..c3692eb7 --- /dev/null +++ b/music_assistant/helpers/resources/genres/chanson.svg @@ -0,0 +1,158 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/childrens_music.svg b/music_assistant/helpers/resources/genres/childrens_music.svg new file mode 100644 index 00000000..88a99839 --- /dev/null +++ b/music_assistant/helpers/resources/genres/childrens_music.svg @@ -0,0 +1,95 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/christmas_music.svg b/music_assistant/helpers/resources/genres/christmas_music.svg new file mode 100644 index 00000000..b667479d --- /dev/null +++ b/music_assistant/helpers/resources/genres/christmas_music.svg @@ -0,0 +1,114 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/church_music.svg b/music_assistant/helpers/resources/genres/church_music.svg new file mode 100644 index 00000000..85a99224 --- /dev/null +++ b/music_assistant/helpers/resources/genres/church_music.svg @@ -0,0 +1,100 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/classical.svg b/music_assistant/helpers/resources/genres/classical.svg new file mode 100644 index 00000000..65a78364 --- /dev/null +++ b/music_assistant/helpers/resources/genres/classical.svg @@ -0,0 +1,82 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/comedy.svg b/music_assistant/helpers/resources/genres/comedy.svg new file mode 100644 index 00000000..cfb053ce --- /dev/null +++ b/music_assistant/helpers/resources/genres/comedy.svg @@ -0,0 +1,68 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/country.svg b/music_assistant/helpers/resources/genres/country.svg new file mode 100644 index 00000000..ff1bd78f --- /dev/null +++ b/music_assistant/helpers/resources/genres/country.svg @@ -0,0 +1,79 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/dance.svg b/music_assistant/helpers/resources/genres/dance.svg new file mode 100644 index 00000000..ccd53442 --- /dev/null +++ b/music_assistant/helpers/resources/genres/dance.svg @@ -0,0 +1,189 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/dark_ambient.svg b/music_assistant/helpers/resources/genres/dark_ambient.svg new file mode 100644 index 00000000..e89ee757 --- /dev/null +++ b/music_assistant/helpers/resources/genres/dark_ambient.svg @@ -0,0 +1,74 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/dark_wave.svg b/music_assistant/helpers/resources/genres/dark_wave.svg new file mode 100644 index 00000000..7f5f58e3 --- /dev/null +++ b/music_assistant/helpers/resources/genres/dark_wave.svg @@ -0,0 +1,86 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/disco.svg b/music_assistant/helpers/resources/genres/disco.svg new file mode 100644 index 00000000..a882beb7 --- /dev/null +++ b/music_assistant/helpers/resources/genres/disco.svg @@ -0,0 +1,168 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/electronic.svg b/music_assistant/helpers/resources/genres/electronic.svg new file mode 100644 index 00000000..8e431394 --- /dev/null +++ b/music_assistant/helpers/resources/genres/electronic.svg @@ -0,0 +1,67 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + diff --git a/music_assistant/helpers/resources/genres/experimental.svg b/music_assistant/helpers/resources/genres/experimental.svg new file mode 100644 index 00000000..4482ebc4 --- /dev/null +++ b/music_assistant/helpers/resources/genres/experimental.svg @@ -0,0 +1,79 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/field_recording.svg b/music_assistant/helpers/resources/genres/field_recording.svg new file mode 100644 index 00000000..bcd0982e --- /dev/null +++ b/music_assistant/helpers/resources/genres/field_recording.svg @@ -0,0 +1,67 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/folk.svg b/music_assistant/helpers/resources/genres/folk.svg new file mode 100644 index 00000000..5994097d --- /dev/null +++ b/music_assistant/helpers/resources/genres/folk.svg @@ -0,0 +1,93 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/funk.svg b/music_assistant/helpers/resources/genres/funk.svg new file mode 100644 index 00000000..3638d0ff --- /dev/null +++ b/music_assistant/helpers/resources/genres/funk.svg @@ -0,0 +1,146 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/gangsta_rap.svg b/music_assistant/helpers/resources/genres/gangsta_rap.svg new file mode 100644 index 00000000..8f4f696c --- /dev/null +++ b/music_assistant/helpers/resources/genres/gangsta_rap.svg @@ -0,0 +1,203 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/genre_mapping.json b/music_assistant/helpers/resources/genres/genre_mapping.json new file mode 100644 index 00000000..750f9960 --- /dev/null +++ b/music_assistant/helpers/resources/genres/genre_mapping.json @@ -0,0 +1,2010 @@ +[ + { + "genre": "afrobeats (West African urban/pop music)", + "translation_key": "afrobeats", + "aliases": [ + "africa", + "african / arabic / bollywood and desi", + "african music", + "afro", + "afro / caribbean", + "afrobeat", + "afrobeats", + "afropiano", + "alté", + "world" + ] + }, + { + "genre": "ambient", + "translation_key": "ambient", + "aliases": [ + "ambient / wellness", + "ambient americana", + "ambient dub", + "ambient/new age", + "electronic", + "kankyō ongaku", + "new age", + "sound therapy / sleep", + "space ambient", + "tribal ambient" + ] + }, + { + "genre": "anime & video game music", + "translation_key": "anime_and_video_game_music", + "aliases": [ + "anime", + "anime/video game", + "j-pop", + "japanese music", + "movies & series", + "soundtracks and musicals", + "video game music", + "video games" + ] + }, + { + "genre": "asian music", + "translation_key": "asian_music", + "aliases": [ + "anime", + "asia", + "bollywood and desi", + "j-pop", + "japanese music", + "k-pop", + "korean music", + "mandopop & cantopop" + ] + }, + { + "genre": "bluegrass", + "translation_key": "bluegrass", + "aliases": [ + "bluegrass gospel", + "jamgrass", + "progressive bluegrass" + ] + }, + { + "genre": "blues", + "translation_key": "blues", + "aliases": [ + "acoustic blues", + "african blues", + "blues rock", + "boogie rock", + "boogie-woogie", + "classic blues", + "country blues", + "delta blues", + "desert blues", + "electric blues", + "electric texas blues", + "jazz blues", + "jug band", + "jump blues", + "modern blues", + "piano blues", + "piedmont blues", + "soul blues", + "swamp blues" + ] + }, + { + "genre": "brazilian music", + "translation_key": "brazilian_music", + "aliases": [ + "bossa nova", + "brazil", + "brazilian funk", + "forro", + "forró", + "funk", + "funk brasileiro", + "latin", + "mpb", + "pagode", + "samba", + "sertanejo" + ] + }, + { + "genre": "chanson", + "translation_key": "chanson", + "aliases": [ + "chanson française", + "decades / pop", + "french music", + "pop", + "retro french music" + ] + }, + { + "genre": "children's music", + "translation_key": "childrens_music", + "aliases": [ + "batonebi songs", + "children", + "family", + "kids", + "kids & family", + "kids / family", + "lullaby", + "stories and nursery rhymes" + ] + }, + { + "genre": "christmas music", + "translation_key": "christmas_music", + "aliases": [ + "holiday" + ] + }, + { + "genre": "church music", + "translation_key": "church_music", + "aliases": [ + "ambrosian chant", + "anglican chant", + "beneventan chant", + "byzantine chant", + "cantatas (sacred)", + "celtic chant", + "choirs (sacred)", + "christian & gospel", + "christian / gospel", + "classical", + "gallican chant", + "gospel", + "gospel / christian", + "gregorian chant", + "kontakion", + "mozarabic chant", + "old roman chant", + "plainchant", + "russian orthodox liturgical music", + "sacred vocal music", + "sarum chant", + "sticheron", + "troparion", + "zema", + "znamenny chant" + ] + }, + { + "genre": "classical", + "translation_key": "classical", + "aliases": [ + "alternative", + "ambrosian chant", + "ars antiqua", + "ars nova", + "ars subtilior", + "art song", + "art songs", + "art songs, mélodies & lieder", + "bagatelle", + "ballad opera", + "ballet", + "ballet de cour", + "ballets", + "baroque", + "baroque suite", + "beneventan chant", + "brass band", + "british brass band", + "burmese classical", + "cantata", + "cantatas (secular)", + "canzona", + "capriccio", + "cello concertos", + "cello solos", + "celtic chant", + "chamber music", + "character piece", + "choirs (sacred)", + "choral music", + "choral music (choirs)", + "choral symphony", + "christian & gospel", + "christian / gospel", + "cinematic classical", + "circus march", + "classical period", + "comédie-ballet", + "concert band", + "concertina band", + "concerto", + "concerto for orchestra", + "concerto grosso", + "concertos", + "concertos for trumpet", + "concertos for wind instruments", + "contemporary classical", + "dechovka", + "divertissement", + "duets", + "electronic", + "english pastoral school", + "experimental", + "expressionism", + "fantasia", + "fugue", + "full operas", + "funeral march", + "futurism", + "gallican chant", + "gamelan", + "gospel", + "gospel / christian", + "grand opera", + "gregorian chant", + "holy minimalism", + "impressionism", + "impromptu", + "indeterminacy", + "integral serialism", + "iraqi maqam", + "islamic modal music", + "j-pop", + "japanese classical", + "japanese music", + "japanese traditional", + "k-pop", + "kacapi suling", + "keyboard concertos", + "korean classical", + "korean traditional", + "kulintang", + "lied", + "lieder (german)", + "lute song", + "madrigal", + "mahori", + "march", + "mass", + "masses, passions, requiems", + "medieval", + "medieval lyric poetry", + "microtonal classical", + "minimal music", + "minimalism", + "modern classical", + "monodrama", + "motet", + "mozarabic chant", + "mugham", + "music by vocal ensembles", + "musique concrète instrumentale", + "mélodie", + "mélodies", + "neoclassicism", + "new complexity", + "nocturne", + "old roman chant", + "opera", + "opera buffa", + "opera extracts", + "opera semiseria", + "opera seria", + "operetta", + "operettas", + "opéra comique", + "oratorio", + "oratorios (secular)", + "orchestral", + "orchestral song", + "overture", + "overtures", + "passion setting", + "pinpeat", + "plainchant", + "post-classical", + "post-minimalism", + "prelude", + "process music", + "quartets", + "quintets", + "renaissance", + "requiem", + "ricercar", + "romantic classical", + "romantische oper", + "russian romance", + "saluang klasik", + "sarum chant", + "sawt", + "secular vocal music", + "serenade", + "serialism", + "sinfonia concertante", + "singspiel", + "solo piano", + "sonata", + "sonorism", + "soundtracks and musicals", + "soundtracks and musicals / classical", + "southeast asian classical", + "spectralism", + "stochastic music", + "string quartet", + "symphonic mugham", + "symphonic music", + "symphonic poem", + "symphonic poems", + "symphonies", + "symphony", + "talempong", + "tembang cianjuran", + "thai classical", + "theme and variations", + "third stream", + "toccata", + "totalism", + "tragédie en musique", + "trios", + "turkish classical", + "uyghur muqam", + "verismo", + "violin concertos", + "violin solos", + "vocal music", + "vocal music (secular and sacred)", + "vocal recitals", + "western classical", + "zarzuela", + "zeitoper", + "étude" + ] + }, + { + "genre": "comedy", + "translation_key": "comedy", + "aliases": [ + "bawdy songs", + "break-in", + "humour", + "prank calls", + "sketch comedy", + "standup comedy" + ] + }, + { + "genre": "country", + "translation_key": "country", + "aliases": [ + "alternative country", + "americana", + "bro-country", + "classic country", + "close harmony", + "contemporary country", + "cosmic country", + "country and americana", + "country boogie", + "country folk", + "country gospel", + "country pop", + "country rock", + "country soul", + "countrypolitan", + "folk & acoustic", + "folk / americana", + "gothic country", + "honky tonk", + "neo-traditional country", + "north america", + "outlaw country", + "progressive country", + "traditional country", + "urban cowboy", + "western swing" + ] + }, + { + "genre": "dance", + "translation_key": "dance", + "aliases": [ + "alternative dance", + "bubblegum dance", + "dance & edm", + "dance & electronic", + "dance and electronic", + "dance/electronic", + "electro", + "electronic", + "electronic / dance", + "eurobeat", + "eurodance", + "italo dance", + "j-euro", + "madchester", + "new rave", + "skweee" + ] + }, + { + "genre": "dark ambient", + "translation_key": "dark_ambient", + "aliases": [ + "black ambient", + "ritual ambient" + ] + }, + { + "genre": "dark wave", + "translation_key": "dark_wave", + "aliases": [ + "ethereal wave", + "neoclassical dark wave" + ] + }, + { + "genre": "disco", + "translation_key": "disco", + "aliases": [ + "boogie", + "decades / r&b and soul", + "electro-disco", + "euro-disco", + "funk & disco", + "hi-nrg", + "italo-disco", + "latin disco", + "red disco", + "soul & funk / dance & edm", + "soul/funk", + "space disco" + ] + }, + { + "genre": "electronic", + "translation_key": "electronic", + "aliases": [ + "acid breaks", + "acid house", + "acid techno", + "acid trance", + "acidcore", + "acousmatic", + "afro house", + "algorave", + "amapiano", + "ambient house", + "ambient techno", + "ambient trance", + "amigacore", + "aquacrunk", + "artcore", + "atmospheric drum and bass", + "autonomic", + "balani show", + "balearic beat", + "balearic trance", + "ballroom house", + "baltimore club", + "barber beats", + "bass house", + "belgian techno", + "berlin school", + "big beat", + "big room house", + "big room trance", + "birmingham sound", + "bit music", + "bitpop", + "black midi", + "bleep techno", + "bouncy techno", + "brazilian bass", + "breakbeat", + "breakbeat hardcore", + "breakbeat kota", + "breakcore", + "briddim", + "broken beat", + "broken transmission", + "brostep", + "bubblegum bass", + "bubbling", + "buchiage trance", + "budots", + "bytebeat", + "bérite club", + "celtic electronica", + "changa tuki", + "chicago house", + "chill", + "chill-out", + "chillout", + "chillstep", + "chillsynth", + "chillwave", + "chiptune", + "club", + "colour bass", + "comfy synth", + "complextro", + "coupé-décalé", + "crossbreed", + "cruise", + "crunkcore", + "dance", + "dance & edm", + "dance & electronic", + "dance and electronic", + "dance/electronic", + "dancefloor drum and bass", + "dariacore", + "dark disco", + "dark psytrance", + "darkcore", + "darkcore edm", + "darkstep", + "darksynth", + "deathchant hardcore", + "deathstep", + "deconstructed club", + "deep drum and bass", + "deep house", + "deep tech", + "deep techno", + "detroit techno", + "digital cumbia", + "digital fusion", + "digital hardcore", + "diva house", + "donk", + "doomcore", + "doskpop", + "downtempo", + "dream trance", + "dreampunk", + "drift phonk", + "drill and bass", + "drum & bass", + "drum and bass", + "drumfunk", + "drumstep", + "dub techno", + "dubstep", + "dubstyle", + "dubwise", + "dungeon sound", + "dungeon synth", + "dutch house", + "early hardstyle", + "eccojams", + "edm", + "electro house", + "electro latino", + "electro swing", + "electroacoustic", + "electroclash", + "electronic / dance", + "electronic rock", + "electronica", + "electronicore", + "electrotango", + "euphoric hardstyle", + "euro house", + "euro-trance", + "experimental electronic", + "extratone", + "festival progressive house", + "festival trap", + "fidget house", + "flashcore", + "florida breaks", + "fm synthesis", + "folktronica", + "footwork", + "footwork jungle", + "forest psytrance", + "frapcore", + "free tekno", + "freeform hardcore", + "freestyle", + "french electro", + "french house", + "frenchcore", + "full-on", + "funkot", + "funktronica", + "funky breaks", + "funky house", + "future bass", + "future bounce", + "future core", + "future funk", + "future garage", + "future house", + "future rave", + "future riddim", + "futurepop", + "g-house", + "gabber", + "garage house", + "ghetto funk", + "ghetto house", + "ghettotech", + "glitch", + "glitch hop", + "glitch hop edm", + "glitch pop", + "goa trance", + "gospel house", + "gqom", + "graphical sound", + "grime", + "halftime", + "hands up", + "happy hardcore", + "hard drum", + "hard house", + "hard nrg", + "hard techno", + "hard trance", + "hard trap", + "hardbag", + "hardbass", + "hardcore breaks", + "hardcore techno", + "hardgroove techno", + "hardstep", + "hardstyle", + "hardvapour", + "hardwave", + "heaven trap", + "hexd", + "hi-tech", + "hi-tech full-on", + "hip house", + "hip-hop / r&b", + "hip-hop / r&b and soul", + "horror synth", + "house", + "hybrid trap", + "hyper techno (Italo-Japanese 1990s genre)", + "hypertechno (2020s genre)", + "idm", + "illbient", + "indietronica", + "industrial hardcore", + "industrial techno", + "italo house", + "j-core", + "jackin house", + "jazz house", + "jazzstep", + "jersey club", + "jersey sound", + "juke", + "jump up", + "jumpstyle", + "jungle", + "jungle terror", + "kawaii future bass", + "krushclub", + "kuduro", + "kwaito", + "latin house", + "leftfield", + "lento violento", + "liquid funk", + "liquid riddim", + "lo-fi house", + "lolicore", + "lounge", + "makina", + "mallsoft", + "manyao", + "mashcore", + "melbourne bounce", + "melodic bass", + "melodic dubstep", + "melodic house", + "melodic techno", + "melodic trance", + "microfunk", + "microhouse", + "microsound", + "midtempo bass", + "minatory", + "minimal drum and bass", + "minimal synth", + "minimal techno", + "minimal wave", + "modern hardtek", + "moogsploitation", + "moombahcore", + "moombahton", + "musique concrète", + "neo-grime", + "nerdcore techno", + "neurofunk", + "neurohop", + "night full-on", + "nightcore", + "nortec", + "nu disco", + "nu jazz", + "nu skool breaks", + "nu style gabber", + "nustyle", + "organic house", + "ori deck", + "outsider house", + "peak time techno", + "philly club", + "phonk house", + "post-dubstep", + "powerstomp", + "progressive breaks", + "progressive electronic", + "progressive house", + "progressive psytrance", + "progressive trance", + "psybient", + "psybreaks", + "psycore", + "psystyle", + "psytrance", + "pumpcore", + "purple sound", + "ragga jungle", + "raggacore", + "raggatek", + "rap / electronic", + "rave", + "rawphoric", + "rawstyle", + "riddim dubstep", + "rominimal", + "sambass", + "sampledelia", + "schranz", + "seapunk", + "shangaan electro", + "singeli", + "skullstep", + "slap house", + "slimepunk", + "slushwave", + "sovietwave", + "spacesynth", + "speed garage", + "speed house", + "speedcore", + "splittercore", + "stutter house", + "suomisaundi", + "synthwave", + "tearout (older dubstep subgenre)", + "tearout brostep", + "tech house", + "tech trance", + "techno", + "technoid", + "techstep", + "terrorcore", + "trance", + "trancestep", + "trap edm", + "tribal guarachero", + "tribal house", + "trip hop", + "tropical house", + "twerk", + "uk funky", + "uk garage", + "uk hardcore", + "uk jackin", + "uptempo hardcore", + "utopian virtual", + "vapornoise", + "vaportrap", + "vaporwave", + "vinahouse", + "vocal house", + "vocal trance", + "wave", + "weightless", + "west coast breaks", + "winter synth", + "witch house", + "wonky", + "wonky techno", + "zenonesque" + ] + }, + { + "genre": "experimental", + "translation_key": "experimental", + "aliases": [ + "alternative", + "ambient noise wall", + "black noise", + "classical", + "conducted improvisation", + "data sonification", + "electronic / classical", + "harsh noise", + "harsh noise wall", + "lowercase", + "mad", + "musique concrète", + "noise", + "onkyo", + "plunderphonics", + "power electronics", + "reductionism", + "sound art", + "sound collage", + "spamwave", + "tape music", + "ytpmv" + ] + }, + { + "genre": "field recording", + "translation_key": "field_recording", + "aliases": [ + "animal sounds", + "birdsong", + "nature sounds", + "rain sounds", + "whale song" + ] + }, + { + "genre": "folk", + "translation_key": "folk", + "aliases": [ + "aboio", + "alternative folk", + "american primitive guitar", + "anti-folk", + "appalachian folk", + "avant-folk", + "bagad", + "baguala", + "biraha", + "cape breton fiddling", + "celtic", + "chamber folk", + "contemporary folk", + "country folk", + "dark folk", + "desert blues", + "falak", + "fife and drum blues", + "fijiri", + "filk", + "folk & acoustic", + "folk & singer-songwriter", + "folk / americana", + "folk and acoustic", + "folk pop", + "freak folk", + "free folk", + "gypsy", + "gypsy music", + "haozi", + "hungarian folk", + "indie folk", + "industrial folk song", + "ireland", + "irish celtic", + "irish folk", + "isa", + "loner folk", + "ländlermusik", + "manele", + "música criolla", + "neo-medieval folk", + "neofolk", + "neofolklore", + "new mexico music", + "néo-trad", + "old-time", + "pagan folk", + "progressive folk", + "psychedelic folk", + "scottish", + "scottish country dance music", + "scrumpy and western", + "sea shanty", + "seguidilla", + "sevdalinka", + "sevillanas", + "shan'ge", + "skiffle", + "stomp and holler", + "stornello", + "sutartinės", + "swiss folk music", + "tajaraste", + "talking blues", + "tallava", + "tarantella", + "tonada asturiana", + "trampská hudba", + "trikitixa", + "turbo-folk", + "turkish folk", + "udigrudi", + "visa", + "volksmusik", + "waulking song", + "white voice", + "work song", + "world fusion", + "wyrd folk", + "xuc", + "yodeling" + ] + }, + { + "genre": "funk", + "translation_key": "funk", + "aliases": [ + "acid jazz", + "afro-funk", + "afrobeat (funk/soul + West African sounds)", + "bounce beat", + "deep funk", + "electro-funk", + "funk & disco", + "funk metal", + "funk rock", + "go-go", + "jazz / r&b and soul", + "latin funk", + "minneapolis sound", + "p-funk", + "r&b", + "r&b / soul", + "r&b / soul/funk", + "r&b and soul", + "soul", + "soul & funk", + "soul / r&b", + "soul/funk", + "soul/funk/r&b", + "synth funk" + ] + }, + { + "genre": "gangsta rap", + "translation_key": "gangsta_rap", + "aliases": [ + "coke rap", + "scam rap" + ] + }, + { + "genre": "gospel", + "translation_key": "gospel", + "aliases": [ + "cantata", + "cantatas (sacred)", + "cantatas (secular)", + "choirs (sacred)", + "choral music", + "choral music (choirs)", + "christian & gospel", + "christian / gospel", + "church music", + "classical", + "contemporary gospel", + "gospel / christian", + "mass", + "masses, passions, requiems", + "music by vocal ensembles", + "oratorio", + "oratorios (secular)", + "passion setting", + "praise break", + "requiem", + "sacred steel", + "sacred vocal music", + "southern gospel", + "traditional black gospel", + "urban contemporary gospel" + ] + }, + { + "genre": "hip hop", + "translation_key": "hip_hop", + "aliases": [ + "abstract hip hop", + "acid jazz", + "alternative hip hop", + "battle rap", + "battle record", + "britcore", + "chap hop", + "chicago bop", + "chicano rap", + "chipmunk soul", + "chopped and screwed", + "chopper", + "christian hip hop", + "cloud rap", + "comedy hip hop", + "conscious hip hop", + "crunk", + "crunkcore", + "digicore", + "drumless hip hop", + "dungeon rap", + "electronic", + "emo rap", + "experimental hip hop", + "frat rap", + "g-funk", + "glitch hop", + "hardcore hip hop", + "hip-hop", + "hip-hop / r&b", + "hip-hop / r&b and soul", + "hip-hop/rap", + "horrorcore", + "industrial hip hop", + "instrumental hip hop", + "jazz rap", + "jerk (2020s)", + "lo-fi hip hop", + "lowend", + "memphis rap", + "nerdcore", + "phonk (older style, a.k.a. rare phonk)", + "political hip hop", + "pop rap", + "punk rap", + "ragga hip-hop", + "rap", + "rap / electronic", + "rap rock", + "rapcore", + "stoner rap", + "trip hop", + "turntablism", + "underground hip hop", + "wonky" + ] + }, + { + "genre": "indian classical", + "translation_key": "indian_classical", + "aliases": [ + "bollywood and desi", + "indian music", + "world" + ] + }, + { + "genre": "industrial", + "translation_key": "industrial", + "aliases": [ + "aggrotech", + "cyber metal", + "dark electro", + "death industrial", + "ebm", + "electro-industrial", + "epic collage", + "industrial metal", + "industrial rock", + "martial industrial", + "new beat", + "post-industrial", + "power noise" + ] + }, + { + "genre": "jazz", + "translation_key": "jazz", + "aliases": [ + "acid jazz", + "afro-cuban jazz", + "afro-jazz", + "afrobeat (funk/soul + West African sounds)", + "avant-garde jazz", + "bebop", + "big band", + "classic jazz", + "contemporary jazz", + "cool jazz", + "crime jazz", + "crossover", + "crossover jazz", + "dark jazz", + "dixieland", + "experimental big band", + "free jazz", + "free jazz & avant-garde", + "gypsy jazz", + "hard bop", + "indo jazz", + "instrumental jazz", + "jazz / r&b and soul", + "jazz / rock", + "jazz / soul", + "jazz blues", + "jazz fusion", + "jazz fusion & jazz rock", + "jazz mugham", + "jazz rock", + "jazz-funk", + "latin", + "latin jazz", + "latin music", + "modal jazz", + "modern creative", + "new orleans r&b", + "orchestral jazz", + "post-bop", + "smooth jazz", + "soul jazz", + "spiritual jazz", + "stride", + "sweet jazz", + "third stream", + "traditional jazz", + "traditional jazz & new orleans", + "vocal jazz", + "vocalese", + "world fusion" + ] + }, + { + "genre": "klezmer", + "translation_key": "klezmer", + "aliases": [ + "folk & acoustic", + "folk & singer-songwriter", + "folk and acoustic", + "yiddish & klezmer" + ] + }, + { + "genre": "latin", + "translation_key": "latin", + "aliases": [ + "bachata", + "bolero", + "boogaloo", + "latin jazz", + "latin music", + "spain", + "spanish music" + ] + }, + { + "genre": "marching band", + "translation_key": "marching_band", + "aliases": [ + "beni", + "drum and bugle corps", + "drumline", + "fife and drum", + "guggenmusik", + "march", + "military music", + "pep band" + ] + }, + { + "genre": "metal", + "translation_key": "metal", + "aliases": [ + "alternative metal", + "atmospheric black metal", + "atmospheric sludge metal", + "avant-garde metal", + "black 'n' roll", + "black metal", + "blackened death metal", + "blackgaze", + "brutal death metal", + "celtic metal", + "christian metal", + "crossover thrash", + "cyber metal", + "cybergrind", + "death 'n' roll", + "death metal", + "death-doom metal", + "deathcore", + "deathgrind", + "depressive black metal", + "dissonant black metal", + "dissonant death metal", + "djent", + "doom metal", + "doomgaze", + "downtempo deathcore", + "drone metal", + "electronicore", + "epic doom metal", + "folk metal", + "funeral doom metal", + "funk metal", + "goregrind", + "gorenoise", + "gothic metal", + "grindcore", + "groove metal", + "hard rock", + "heavy metal", + "industrial metal", + "kawaii metal", + "mathcore", + "medieval metal", + "melodic black metal", + "melodic death metal", + "melodic metalcore", + "metalcore", + "mincecore", + "neoclassical metal", + "neue deutsche härte", + "noisegrind", + "nu metal", + "nwobhm", + "old school death metal", + "pagan black metal", + "pop metal", + "post-metal", + "power metal", + "progressive metal", + "progressive metalcore", + "rap metal", + "rock", + "rock / indie", + "slam death metal", + "sludge metal", + "southern metal", + "speed metal", + "stoner metal", + "symphonic black metal", + "symphonic metal", + "technical death metal", + "technical thrash metal", + "thall", + "thrash metal", + "traditional doom metal", + "trance metal", + "us power metal", + "viking metal", + "war metal" + ] + }, + { + "genre": "middle eastern music", + "translation_key": "middle_eastern_music", + "aliases": [ + "arabic", + "oriental music", + "world" + ] + }, + { + "genre": "musical", + "translation_key": "musical", + "aliases": [ + "cabaret", + "chèo", + "film, tv & stage", + "industrial musical", + "minstrelsy", + "movies & series", + "murga", + "murga uruguaya", + "music hall", + "musical theatre", + "operetta", + "operettas", + "revue", + "rock musical", + "soundtracks", + "soundtracks and musicals", + "theatre music", + "tv & films", + "vaudeville" + ] + }, + { + "genre": "new age", + "translation_key": "new_age", + "aliases": [ + "ambient", + "ambient / wellness", + "ambient/new age", + "andean new age", + "celtic new age", + "electronic", + "native american new age", + "neoclassical new age", + "sound therapy / sleep" + ] + }, + { + "genre": "poetry", + "translation_key": "poetry", + "aliases": [ + "beat poetry", + "cowboy poetry", + "dub poetry", + "jazz poetry", + "kakawin", + "literature", + "ngâm thơ", + "punk poetry", + "slam poetry", + "sound poetry", + "spoken word" + ] + }, + { + "genre": "polka", + "translation_key": "polka", + "aliases": [ + "chicago polka", + "eastern-style polka", + "schottische" + ] + }, + { + "genre": "pop", + "translation_key": "pop", + "aliases": [ + "alternative pop", + "ambient pop", + "art pop", + "avant-garde pop", + "bardcore", + "baroque pop", + "beat music", + "bedroom pop", + "bitpop", + "bolero-beat", + "brill building", + "bro-country", + "bubblegum pop", + "burmese stereo", + "c-pop", + "c86", + "canción melódica", + "chamber pop", + "city pop", + "classical crossover", + "cocktail nation", + "contemporary christian", + "country pop", + "countrypolitan", + "crooners", + "cuddlecore", + "dance-pop", + "dansband", + "dansktop", + "denpa", + "donosti sound", + "dutch", + "dutch music", + "eastern europe", + "easy listening", + "electro hop", + "electropop", + "europe", + "european music", + "europop", + "exotica", + "flamenco pop", + "folk & acoustic", + "folk & singer-songwriter", + "folk / americana", + "folk and acoustic", + "folk pop", + "french artists", + "french music", + "germany", + "hyperpop", + "hypnagogic pop", + "indian pop", + "indie", + "indie & alternative", + "indie and alternative", + "indie pop", + "international pop", + "irish pop music", + "italian pop", + "italy", + "j-pop", + "jangle pop", + "japanese music", + "jazz pop", + "jesus music", + "k-pop", + "kayōkyoku", + "korean ballad", + "latin pop", + "levenslied", + "lounge", + "manele", + "manila sound", + "motown", + "mulatós", + "música cebolla", + "nederpop", + "neo-acoustic", + "nyū myūjikku", + "operatic pop", + "opm", + "orthodox pop", + "palingsound", + "persian pop", + "pop / afro / latin", + "pop / rock", + "pop ghazal", + "pop kreatif", + "pop minang", + "pop rock", + "pop soul", + "pop/rock", + "power pop", + "praise & worship", + "progressive pop", + "psychedelic pop", + "q-pop", + "rock / indie", + "rom kbach", + "romanian popcorn", + "russia", + "russian chanson", + "russian music", + "schlager", + "shibuya-kei", + "sitarsploitation", + "sophisti-pop", + "space age pop", + "stimmungsmusik", + "sundanese pop", + "sunshine pop", + "synth-pop", + "t-pop", + "tallava", + "tecnorumba", + "teen pop", + "tin pan alley", + "tontipop", + "township bubblegum", + "toytown pop", + "traditional pop", + "tropical rock", + "tropipop", + "turbo-folk", + "turkey", + "turkish music", + "turkish pop", + "twee pop", + "v-pop", + "volksmusik", + "volkstümliche musik", + "wong shadow", + "yé-yé" + ] + }, + { + "genre": "psychedelic", + "translation_key": "psychedelic", + "aliases": [ + "neo-psychedelia", + "paisley underground", + "psychploitation", + "space rock revival" + ] + }, + { + "genre": "punk", + "translation_key": "punk", + "aliases": [ + "alternative / rock", + "alternative punk", + "anarcho-punk", + "art punk", + "beatdown hardcore", + "blackened crust", + "burning spirits", + "celtic punk", + "christian hardcore", + "cowpunk", + "crack rock steady", + "crossover thrash", + "crunkcore", + "crust punk", + "cybergrind", + "d-beat", + "deathcore", + "deathgrind", + "deathrock", + "digital hardcore", + "downtempo deathcore", + "easycore", + "electronicore", + "electropunk", + "emo", + "emo pop", + "emo rap", + "emocore", + "emoviolence", + "folk punk", + "garage punk", + "goregrind", + "gorenoise", + "grindcore", + "gypsy punk", + "hardcore punk", + "horror punk", + "indie & alternative", + "könsrock", + "mathcore", + "melodic hardcore", + "melodic metalcore", + "metalcore", + "midwest emo", + "mincecore", + "neocrust", + "neon pop punk", + "new wave", + "nintendocore", + "noisecore", + "noisegrind", + "oi", + "pop punk", + "post-hardcore", + "powerviolence", + "progressive metalcore", + "psychobilly", + "punk / new wave", + "punk rock", + "queercore", + "rapcore", + "raw punk", + "riot grrrl", + "rock", + "rock / indie", + "sasscore", + "screamo", + "seishun punk", + "ska punk", + "skacore", + "skate punk", + "stenchcore", + "street punk", + "surf punk", + "swancore", + "thall", + "thrashcore", + "uk82", + "viking rock" + ] + }, + { + "genre": "r&b", + "translation_key": "r_b", + "aliases": [ + "alternative r&b", + "blue-eyed soul", + "contemporary r&b", + "doo-wop", + "funk", + "funk & disco", + "hip hop soul", + "jazz / r&b and soul", + "new jack swing", + "quiet storm", + "r&b / soul", + "r&b / soul/funk", + "r&b and soul", + "soul", + "soul & funk", + "soul / r&b", + "soul/funk", + "soul/funk/r&b", + "trap soul", + "uk street soul" + ] + }, + { + "genre": "ragtime", + "translation_key": "ragtime", + "aliases": [ + "classic ragtime", + "ragtime song" + ] + }, + { + "genre": "raï", + "translation_key": "rai", + "aliases": [ + "african", + "afro", + "arabic", + "chaabi", + "maghreb" + ] + }, + { + "genre": "reggae", + "translation_key": "reggae", + "aliases": [ + "ambient dub", + "dancehall", + "dub", + "jawaiian", + "lovers rock", + "novo dub", + "pacific reggae", + "reggae / dancehall", + "reggae and caribbean", + "reggae-pop", + "skinhead reggae" + ] + }, + { + "genre": "reggaeton", + "translation_key": "reggaeton", + "aliases": [ + "bachatón", + "cubatón", + "cumbiatón", + "doble paso", + "latin", + "latin music", + "latin urban", + "neoperreo", + "rkt", + "romantic flow", + "urbano latino" + ] + }, + { + "genre": "rock", + "translation_key": "rock", + "aliases": [ + "acid rock", + "acoustic rock", + "afro rock", + "alternative & indie", + "alternative / indie", + "alternative / rock", + "alternative dance", + "alternative rock", + "anatolian rock", + "aor", + "arena rock", + "art rock", + "avant-prog", + "beat music", + "blackgaze", + "blues rock", + "boogie rock", + "british folk rock", + "britpop", + "brutal prog", + "burmese stereo", + "canterbury scene", + "celtic rock", + "christian rock", + "classic rock", + "coldwave", + "comedy rock", + "cosmic country", + "country rock", + "crossover prog", + "dance-punk", + "dance-punk revival", + "dance-rock", + "desert blues", + "desert rock", + "dream pop", + "dunedin sound", + "electronic rock", + "eleki", + "emo", + "emo pop", + "emo rap", + "emocore", + "experimental rock", + "folk rock", + "frat rock", + "freakbeat", + "french rock", + "funk metal", + "funk rock", + "garage psych", + "garage punk", + "garage rock", + "garage rock revival", + "geek rock", + "glam metal", + "glam punk", + "glam rock", + "gothic rock", + "grebo", + "grunge", + "hamburger schule", + "hard rock", + "heartland rock", + "heavy psych", + "hot rod music", + "indie & alternative", + "indie and alternative", + "indie rock", + "indie surf", + "industrial rock", + "instrumental rock", + "j-rock", + "jam band", + "jangle pop", + "jazz / rock", + "jazz fusion & jazz rock", + "jazz rock", + "krautrock", + "latin rock", + "livetronica", + "lo-fi", + "madchester", + "mainstream rock", + "mangue beat", + "manila sound", + "math pop", + "math rock", + "medieval rock", + "midwest emo", + "miejski folk", + "mod", + "neo-progressive rock", + "neo-rockabilly", + "neue deutsche welle", + "new rave", + "new romantic", + "new wave", + "no wave", + "noise pop", + "noise rock", + "occult rock", + "phleng phuea chiwit", + "piano rock", + "pop / rock", + "pop rock", + "pop yeh-yeh", + "pop/rock", + "post-britpop", + "post-grunge", + "post-punk", + "post-punk revival", + "post-rock", + "power pop", + "progressive rock", + "proto-punk", + "psychedelic rock", + "psychobilly", + "pub rock", + "punk", + "punk / new wave", + "punk blues", + "raga rock", + "rap rock", + "rautalanka", + "reggae rock", + "rock / indie", + "rock and roll", + "rock andaluz", + "rock andino (andean rock)", + "rock opera", + "rock rural", + "rock urbano mexicano", + "rockabilly", + "roots rock", + "shoegaze", + "slacker rock", + "sleaze rock", + "slowcore", + "soft rock", + "southern rock", + "space rock", + "space rock revival", + "stoner rock", + "sufi rock", + "surf", + "surf rock", + "swamp rock", + "symphonic prog", + "symphonic rock", + "tex-mex", + "tropical rock", + "visual kei", + "vocal surf", + "xian psych", + "yacht rock", + "zamrock", + "zeuhl", + "zolo" + ] + }, + { + "genre": "salsa", + "translation_key": "salsa", + "aliases": [ + "latin", + "salsa choke", + "salsa dura", + "salsa romántica", + "timba" + ] + }, + { + "genre": "singer-songwriter", + "translation_key": "singer_songwriter", + "aliases": [ + "avtorskaya pesnya", + "euskal kantagintza berria", + "kleinkunst", + "liedermacher", + "música de intervenção", + "nova cançó", + "nueva canción", + "nueva canción chilena", + "nueva canción española", + "nuevo cancionero" + ] + }, + { + "genre": "ska", + "translation_key": "ska", + "aliases": [ + "2 tone", + "crack rock steady", + "reggae", + "reggae / dancehall", + "reggae and caribbean", + "rocksteady", + "ska & rocksteady", + "ska punk", + "skacore", + "third wave ska" + ] + }, + { + "genre": "soul", + "translation_key": "soul", + "aliases": [ + "acid jazz", + "country soul", + "funk", + "funk & disco", + "jazz / r&b and soul", + "latin soul", + "motown", + "neo soul", + "northern soul", + "pop soul", + "progressive soul", + "psychedelic soul", + "r&b", + "r&b / soul", + "r&b / soul/funk", + "r&b and soul", + "soul & funk", + "soul / r&b", + "soul/funk", + "soul/funk/r&b" + ] + }, + { + "genre": "sound effects", + "translation_key": "sound_effects", + "aliases": [ + "binaural beats", + "broadband noise" + ] + }, + { + "genre": "soundtrack", + "translation_key": "soundtrack", + "aliases": [ + "cinema music", + "film score", + "film soundtracks", + "film, tv & stage", + "movies & series", + "soundtracks", + "soundtracks and musicals", + "tv & films", + "tv series" + ] + }, + { + "genre": "spoken word", + "translation_key": "spoken_word", + "aliases": [ + "audio documentary", + "educational", + "fairy tale", + "guided meditation", + "historical documents", + "interview", + "lecture", + "literature", + "poetry", + "sermon", + "speech" + ] + }, + { + "genre": "swing", + "translation_key": "swing", + "aliases": [ + "electro swing", + "swing revival" + ] + }, + { + "genre": "tango", + "translation_key": "tango", + "aliases": [ + "latin", + "latin music" + ] + }, + { + "genre": "trap", + "translation_key": "trap", + "aliases": [ + "ambient plugg", + "asian rock (pluggnb subgenre - not rock from Asia)", + "dark plugg", + "new jazz (trap subgenre)", + "plugg", + "pluggnb", + "rage", + "regalia", + "sigilkore", + "terror plugg", + "trap latino (latin trap)", + "trap metal", + "trap soul", + "tread" + ] + }, + { + "genre": "waltz", + "translation_key": "waltz", + "aliases": [ + "slow waltz", + "vals venezolano", + "valsa brasileira" + ] + }, + { + "genre": "wellness", + "translation_key": "wellness", + "aliases": [ + "healing", + "meditation", + "relaxation", + "sleep", + "sleep / sound therapy", + "sleep / wellness", + "soundscape", + "wellness / meditation" + ] + } +] diff --git a/music_assistant/helpers/resources/genres/gospel.svg b/music_assistant/helpers/resources/genres/gospel.svg new file mode 100644 index 00000000..52cbd896 --- /dev/null +++ b/music_assistant/helpers/resources/genres/gospel.svg @@ -0,0 +1,155 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/hip_hop.svg b/music_assistant/helpers/resources/genres/hip_hop.svg new file mode 100644 index 00000000..8eee8eaf --- /dev/null +++ b/music_assistant/helpers/resources/genres/hip_hop.svg @@ -0,0 +1,175 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/indian_classical.svg b/music_assistant/helpers/resources/genres/indian_classical.svg new file mode 100644 index 00000000..9a32d71e --- /dev/null +++ b/music_assistant/helpers/resources/genres/indian_classical.svg @@ -0,0 +1,389 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/industrial.svg b/music_assistant/helpers/resources/genres/industrial.svg new file mode 100644 index 00000000..33fc4254 --- /dev/null +++ b/music_assistant/helpers/resources/genres/industrial.svg @@ -0,0 +1,157 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/jazz.svg b/music_assistant/helpers/resources/genres/jazz.svg new file mode 100644 index 00000000..e321a634 --- /dev/null +++ b/music_assistant/helpers/resources/genres/jazz.svg @@ -0,0 +1,157 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/klezmer.svg b/music_assistant/helpers/resources/genres/klezmer.svg new file mode 100644 index 00000000..2d1333fe --- /dev/null +++ b/music_assistant/helpers/resources/genres/klezmer.svg @@ -0,0 +1,172 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/latin.svg b/music_assistant/helpers/resources/genres/latin.svg new file mode 100644 index 00000000..c1889329 --- /dev/null +++ b/music_assistant/helpers/resources/genres/latin.svg @@ -0,0 +1,190 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/marching_band.svg b/music_assistant/helpers/resources/genres/marching_band.svg new file mode 100644 index 00000000..90216758 --- /dev/null +++ b/music_assistant/helpers/resources/genres/marching_band.svg @@ -0,0 +1,137 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/metal.svg b/music_assistant/helpers/resources/genres/metal.svg new file mode 100644 index 00000000..1ba6cf37 --- /dev/null +++ b/music_assistant/helpers/resources/genres/metal.svg @@ -0,0 +1,180 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/middle_eastern_music.svg b/music_assistant/helpers/resources/genres/middle_eastern_music.svg new file mode 100644 index 00000000..7e18ceaf --- /dev/null +++ b/music_assistant/helpers/resources/genres/middle_eastern_music.svg @@ -0,0 +1,203 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/musical.svg b/music_assistant/helpers/resources/genres/musical.svg new file mode 100644 index 00000000..1d9cf7c3 --- /dev/null +++ b/music_assistant/helpers/resources/genres/musical.svg @@ -0,0 +1,171 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/new_age.svg b/music_assistant/helpers/resources/genres/new_age.svg new file mode 100644 index 00000000..3384d9d2 --- /dev/null +++ b/music_assistant/helpers/resources/genres/new_age.svg @@ -0,0 +1,138 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/poetry.svg b/music_assistant/helpers/resources/genres/poetry.svg new file mode 100644 index 00000000..7d1f5293 --- /dev/null +++ b/music_assistant/helpers/resources/genres/poetry.svg @@ -0,0 +1,87 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/polka.svg b/music_assistant/helpers/resources/genres/polka.svg new file mode 100644 index 00000000..6dcb891b --- /dev/null +++ b/music_assistant/helpers/resources/genres/polka.svg @@ -0,0 +1,188 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/pop.svg b/music_assistant/helpers/resources/genres/pop.svg new file mode 100644 index 00000000..be4a4ab7 --- /dev/null +++ b/music_assistant/helpers/resources/genres/pop.svg @@ -0,0 +1,175 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/psychedelic.svg b/music_assistant/helpers/resources/genres/psychedelic.svg new file mode 100644 index 00000000..2b4463ee --- /dev/null +++ b/music_assistant/helpers/resources/genres/psychedelic.svg @@ -0,0 +1,286 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/punk.svg b/music_assistant/helpers/resources/genres/punk.svg new file mode 100644 index 00000000..1a1188dd --- /dev/null +++ b/music_assistant/helpers/resources/genres/punk.svg @@ -0,0 +1,196 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/r_b.svg b/music_assistant/helpers/resources/genres/r_b.svg new file mode 100644 index 00000000..2eb4d91d --- /dev/null +++ b/music_assistant/helpers/resources/genres/r_b.svg @@ -0,0 +1,101 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/ragtime.svg b/music_assistant/helpers/resources/genres/ragtime.svg new file mode 100644 index 00000000..bcea2c5c --- /dev/null +++ b/music_assistant/helpers/resources/genres/ragtime.svg @@ -0,0 +1,96 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/rai.svg b/music_assistant/helpers/resources/genres/rai.svg new file mode 100644 index 00000000..49e47e9c --- /dev/null +++ b/music_assistant/helpers/resources/genres/rai.svg @@ -0,0 +1,105 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/reggae.svg b/music_assistant/helpers/resources/genres/reggae.svg new file mode 100644 index 00000000..01bfb2d8 --- /dev/null +++ b/music_assistant/helpers/resources/genres/reggae.svg @@ -0,0 +1,141 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/reggaeton.svg b/music_assistant/helpers/resources/genres/reggaeton.svg new file mode 100644 index 00000000..e70afa34 --- /dev/null +++ b/music_assistant/helpers/resources/genres/reggaeton.svg @@ -0,0 +1,160 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/rock.svg b/music_assistant/helpers/resources/genres/rock.svg new file mode 100644 index 00000000..20169a05 --- /dev/null +++ b/music_assistant/helpers/resources/genres/rock.svg @@ -0,0 +1,95 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/salsa.svg b/music_assistant/helpers/resources/genres/salsa.svg new file mode 100644 index 00000000..2426ddfc --- /dev/null +++ b/music_assistant/helpers/resources/genres/salsa.svg @@ -0,0 +1,209 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/singer_songwriter.svg b/music_assistant/helpers/resources/genres/singer_songwriter.svg new file mode 100644 index 00000000..c70d0059 --- /dev/null +++ b/music_assistant/helpers/resources/genres/singer_songwriter.svg @@ -0,0 +1,103 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/ska.svg b/music_assistant/helpers/resources/genres/ska.svg new file mode 100644 index 00000000..112e9abd --- /dev/null +++ b/music_assistant/helpers/resources/genres/ska.svg @@ -0,0 +1,187 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/soul.svg b/music_assistant/helpers/resources/genres/soul.svg new file mode 100644 index 00000000..1cfabf0e --- /dev/null +++ b/music_assistant/helpers/resources/genres/soul.svg @@ -0,0 +1,109 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/sound_effects.svg b/music_assistant/helpers/resources/genres/sound_effects.svg new file mode 100644 index 00000000..60e10866 --- /dev/null +++ b/music_assistant/helpers/resources/genres/sound_effects.svg @@ -0,0 +1,95 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/soundtrack.svg b/music_assistant/helpers/resources/genres/soundtrack.svg new file mode 100644 index 00000000..4487d22d --- /dev/null +++ b/music_assistant/helpers/resources/genres/soundtrack.svg @@ -0,0 +1,193 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/spoken_word.svg b/music_assistant/helpers/resources/genres/spoken_word.svg new file mode 100644 index 00000000..8d13ef2d --- /dev/null +++ b/music_assistant/helpers/resources/genres/spoken_word.svg @@ -0,0 +1,114 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/swing.svg b/music_assistant/helpers/resources/genres/swing.svg new file mode 100644 index 00000000..afd715ea --- /dev/null +++ b/music_assistant/helpers/resources/genres/swing.svg @@ -0,0 +1,152 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/tango.svg b/music_assistant/helpers/resources/genres/tango.svg new file mode 100644 index 00000000..a2b54414 --- /dev/null +++ b/music_assistant/helpers/resources/genres/tango.svg @@ -0,0 +1,189 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/trap.svg b/music_assistant/helpers/resources/genres/trap.svg new file mode 100644 index 00000000..910220bc --- /dev/null +++ b/music_assistant/helpers/resources/genres/trap.svg @@ -0,0 +1,221 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/waltz.svg b/music_assistant/helpers/resources/genres/waltz.svg new file mode 100644 index 00000000..bf3c36a2 --- /dev/null +++ b/music_assistant/helpers/resources/genres/waltz.svg @@ -0,0 +1,169 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + + + + diff --git a/music_assistant/helpers/resources/genres/wellness.svg b/music_assistant/helpers/resources/genres/wellness.svg new file mode 100644 index 00000000..9710ef24 --- /dev/null +++ b/music_assistant/helpers/resources/genres/wellness.svg @@ -0,0 +1,86 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + diff --git a/pyproject.toml b/pyproject.toml index 36a9b160..199f159f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -75,7 +75,7 @@ mass = "music_assistant.__main__:main" ignore-words-list = "provid,hass,followings,childs,explict,additionals,commitish,nam," skip = """*.js,*.svg,\ music_assistant/providers/itunes_podcasts/itunes_country_codes.json,\ -music_assistant/helpers/resources/genre_mapping.json,\ +music_assistant/helpers/resources/genres/genre_mapping.json,\ """ [tool.setuptools]