Compare commits
2 commits
62510bb074
...
685038279e
Author | SHA1 | Date | |
---|---|---|---|
685038279e | |||
06d8885c33 |
32 changed files with 56520 additions and 12635 deletions
|
@ -1,6 +1,7 @@
|
|||
"""
|
||||
Store the fetched genre info (everynoise_genres.json) in the metadata files.
|
||||
"""
|
||||
import asyncio
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
|
@ -10,17 +11,15 @@ import dataclasses
|
|||
from pathlib import Path
|
||||
from typing import Dict
|
||||
|
||||
import aiohttp
|
||||
from aiostream import stream, pipe
|
||||
from bs4 import BeautifulSoup
|
||||
from dotenv import load_dotenv
|
||||
import spotify
|
||||
import yaml
|
||||
|
||||
import model
|
||||
|
||||
GENRE_DIR = Path(os.path.dirname(os.path.abspath(__file__)))
|
||||
GENRE_FILE = GENRE_DIR / "everynoise_genres.json"
|
||||
METADATA_DIR = GENRE_DIR / ".." / "metadata"
|
||||
TRANSLATION_DIR = GENRE_DIR / ".." / "translations"
|
||||
TRANSLATION_FILE = TRANSLATION_DIR / "_main.json"
|
||||
TRANSLATION_FILE_EN = TRANSLATION_DIR / "en.json"
|
||||
import util
|
||||
|
||||
|
||||
def genre_letter(id: str) -> str:
|
||||
|
@ -30,8 +29,9 @@ def genre_letter(id: str) -> str:
|
|||
return "0"
|
||||
|
||||
|
||||
def group_genres(genre_data: Dict[str, model.GenreMetadata]) -> Dict[
|
||||
str, Dict[str, model.GenreMetadata]]:
|
||||
def group_genres(
|
||||
genre_data: Dict[str, model.GenreMetadata]
|
||||
) -> Dict[str, Dict[str, model.GenreMetadata]]:
|
||||
"""Group genres by their first letter"""
|
||||
grouped_genres = dict()
|
||||
for genre_id, genre in genre_data.items():
|
||||
|
@ -43,7 +43,7 @@ def group_genres(genre_data: Dict[str, model.GenreMetadata]) -> Dict[
|
|||
|
||||
|
||||
def genres_to_meta():
|
||||
with open(GENRE_FILE) as f:
|
||||
with open(util.GENRE_FILE) as f:
|
||||
genre_dict = json.load(f)
|
||||
genre_data = model.load_genre_dict(genre_dict)
|
||||
|
||||
|
@ -51,7 +51,7 @@ def genres_to_meta():
|
|||
|
||||
for lt, lt_genres in grouped_genres.items():
|
||||
# Load stored metadata
|
||||
md_path = METADATA_DIR / f"{lt}.yaml"
|
||||
md_path = util.METADATA_DIR / f"{lt}.yaml"
|
||||
stored_genres = dict()
|
||||
if md_path.is_file():
|
||||
with md_path.open() as f:
|
||||
|
@ -78,29 +78,15 @@ def genres_to_meta():
|
|||
model.store_genres_yaml(md_path, stored_genres)
|
||||
|
||||
|
||||
def read_meta() -> Dict[str, model.GenreMetadata]:
|
||||
metadata = dict()
|
||||
|
||||
for filename in os.listdir(METADATA_DIR):
|
||||
md_path = METADATA_DIR / filename
|
||||
with md_path.open("r") as f:
|
||||
data = yaml.safe_load(f)
|
||||
stored_genres = model.load_genre_dict(data)
|
||||
metadata.update(stored_genres)
|
||||
|
||||
print(f"{len(metadata)} genres loaded", file=sys.stderr)
|
||||
return metadata
|
||||
|
||||
|
||||
def write_meta(metadata: Dict[str, model.GenreMetadata]):
|
||||
grouped_metadata = group_genres(metadata)
|
||||
for lt, genres in grouped_metadata.items():
|
||||
md_path = METADATA_DIR / f"{lt}.yaml"
|
||||
md_path = util.METADATA_DIR / f"{lt}.yaml"
|
||||
model.store_genres_yaml(md_path, genres)
|
||||
|
||||
|
||||
def migrate_meta():
|
||||
metadata = read_meta()
|
||||
metadata = util.read_meta()
|
||||
mig_metadata = dict()
|
||||
unknown_refs = set()
|
||||
|
||||
|
@ -132,7 +118,7 @@ def migrate_meta():
|
|||
|
||||
|
||||
def remove_deprecated():
|
||||
metadata = read_meta()
|
||||
metadata = util.read_meta()
|
||||
|
||||
def flt(itm):
|
||||
genre = itm[1]
|
||||
|
@ -146,7 +132,7 @@ def remove_deprecated():
|
|||
|
||||
|
||||
def validate():
|
||||
metadata = read_meta()
|
||||
metadata = util.read_meta()
|
||||
|
||||
n_err = 0
|
||||
unknown_refs = set()
|
||||
|
@ -159,7 +145,9 @@ def validate():
|
|||
g = metadata.get(ref)
|
||||
if g:
|
||||
if g.alias:
|
||||
print(f"ERR: '{own}' links to alias '{ref}', should be '{g.alias}'")
|
||||
print(
|
||||
f"ERR: '{own}' links to alias '{ref}', should be '{g.alias}'"
|
||||
)
|
||||
return False
|
||||
return True
|
||||
else:
|
||||
|
@ -185,16 +173,23 @@ def validate():
|
|||
|
||||
|
||||
def make_translations():
|
||||
metadata = read_meta()
|
||||
translations = {genre_id: genre.name for genre_id, genre in metadata.items() if not genre.alias}
|
||||
with open(TRANSLATION_FILE, "w") as f:
|
||||
json.dump(translations, f, ensure_ascii=False, sort_keys=True, indent=2)
|
||||
metadata = util.read_meta()
|
||||
translations = {
|
||||
genre_id: genre.name
|
||||
for genre_id, genre in metadata.items() if not genre.alias
|
||||
}
|
||||
with open(util.TRANSLATION_FILE, "w") as f:
|
||||
json.dump(translations,
|
||||
f,
|
||||
ensure_ascii=False,
|
||||
sort_keys=True,
|
||||
indent=2)
|
||||
f.write("\n")
|
||||
|
||||
for filename in os.listdir(TRANSLATION_DIR):
|
||||
if filename == "_meta.yaml":
|
||||
for filename in os.listdir(util.TRANSLATION_DIR):
|
||||
if filename == "_main.json":
|
||||
continue
|
||||
tl_path = TRANSLATION_DIR / filename
|
||||
tl_path = util.TRANSLATION_DIR / filename
|
||||
with open(tl_path) as f:
|
||||
tl = json.load(f)
|
||||
modified = False
|
||||
|
@ -209,9 +204,9 @@ def make_translations():
|
|||
|
||||
|
||||
def list_genres(limit=None):
|
||||
metadata = read_meta()
|
||||
metadata = util.read_meta()
|
||||
|
||||
with open(TRANSLATION_FILE_EN) as f:#
|
||||
with open(util.TRANSLATION_FILE_EN) as f: #
|
||||
translation = json.load(f)
|
||||
|
||||
roots = []
|
||||
|
@ -232,7 +227,7 @@ def list_genres(limit=None):
|
|||
# children = [genre_id for genre_id, genre in metadata.items() if genre.parent == p]
|
||||
for genre_id, genre in metadata.items():
|
||||
if genre.parent == p:
|
||||
subtree[translation[genre_id]] = mkt(genre_id, lvl+1)
|
||||
subtree[translation[genre_id]] = mkt(genre_id, lvl + 1)
|
||||
return subtree
|
||||
|
||||
for r in roots:
|
||||
|
@ -243,7 +238,7 @@ def list_genres(limit=None):
|
|||
|
||||
|
||||
def find_missing_lang():
|
||||
metadata = read_meta()
|
||||
metadata = util.read_meta()
|
||||
|
||||
# English/multilingual countries
|
||||
skip_countries = {
|
||||
|
@ -253,7 +248,7 @@ def find_missing_lang():
|
|||
"GM", "DM", "BW", "BI", "GD", "ML", "TT", "BB"
|
||||
}
|
||||
|
||||
skip_parents = { "instrument", "indigenous" }
|
||||
skip_parents = {"instrument", "indigenous"}
|
||||
|
||||
for genre_id, genre in metadata.items():
|
||||
if genre.country and not genre.country in skip_countries and not genre.parent in skip_parents:
|
||||
|
@ -268,7 +263,7 @@ def find_missing_lang():
|
|||
|
||||
|
||||
def check_localized_name():
|
||||
metadata = read_meta()
|
||||
metadata = util.read_meta()
|
||||
|
||||
for genre_id, genre in metadata.items():
|
||||
lang = genre.language
|
||||
|
@ -286,37 +281,145 @@ def new_translation(new_file: Path, capitalize: bool):
|
|||
Create a new translation file with the untranslatable items
|
||||
already filled in
|
||||
"""
|
||||
metadata = read_meta()
|
||||
with open(TRANSLATION_FILE_EN) as f:
|
||||
with open(util.TRANSLATION_FILE_EN) as f:
|
||||
en_tl: Dict[str, str] = json.load(f)
|
||||
with open(util.TRANSLATION_DIR / "de.json") as f:
|
||||
de_tl: Dict[str, str] = json.load(f)
|
||||
|
||||
new_tl = dict()
|
||||
|
||||
upper_pattern = re.compile(r"(?<=[ \-])[a-z](?=[a-z])")
|
||||
|
||||
for key, te in en_tl.items():
|
||||
genre = metadata[key]
|
||||
|
||||
if not genre.localized_name and not "(" in te and not "traditional" in te.lower():
|
||||
nval = te
|
||||
if capitalize:
|
||||
for m in upper_pattern.finditer(nval):
|
||||
for key, english in en_tl.items():
|
||||
german = de_tl[key]
|
||||
english_upper = english
|
||||
for m in upper_pattern.finditer(english_upper):
|
||||
s = m.start(0)
|
||||
nval = nval[:s] + nval[s].upper() + nval[s+1:]
|
||||
new_tl[key] = nval
|
||||
english_upper = english_upper[:s] + english_upper[s].upper(
|
||||
) + english_upper[s + 1:]
|
||||
|
||||
if english_upper == german:
|
||||
if capitalize:
|
||||
new_tl[key] = english_upper
|
||||
else:
|
||||
new_tl[key] = english
|
||||
|
||||
with open(new_file, "w") as f:
|
||||
json.dump(new_tl, f, ensure_ascii=False, sort_keys=True, indent=2)
|
||||
f.write("\n")
|
||||
|
||||
|
||||
async def scrape_playlists():
|
||||
"""Scrape playlist IDs from everynoise.com"""
|
||||
spid_pattern = re.compile("/([A-z0-9]{22})$")
|
||||
|
||||
for i in range(27):
|
||||
metadata = util.read_meta_n(i)
|
||||
|
||||
async def scrape_playlist(g_id: str):
|
||||
genre = metadata[g_id]
|
||||
if genre.metagenre or genre.deprecated or genre.playlists:
|
||||
return
|
||||
|
||||
urlid = re.sub(r"[^A-Za-z0-9]+", '', g_id)
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(
|
||||
f"https://everynoise.com/engenremap-{urlid}.html"
|
||||
) as response:
|
||||
html_text = await response.text()
|
||||
html = BeautifulSoup(html_text, features="lxml")
|
||||
|
||||
pl_links = {
|
||||
"sound": f"listen to The Sound of {genre.name} on Spotify",
|
||||
"intro": "listen to a shorter introduction to this genre",
|
||||
"pulse": "listen to this genre's fans' current favorites",
|
||||
"edge": "listen to this genre's fans' new discoveries",
|
||||
"2023": "listen to this genre's fans' favorites of 2023",
|
||||
}
|
||||
|
||||
for key, title in pl_links.items():
|
||||
pl_link = html.find("a", {"title": title})
|
||||
if pl_link is None:
|
||||
if key == "sound":
|
||||
print(html_text)
|
||||
raise Exception(
|
||||
f"could not find {key} link for {genre.name}")
|
||||
else:
|
||||
continue
|
||||
|
||||
pl_id = spid_pattern.search(pl_link["href"]).group(1)
|
||||
if not genre.playlists:
|
||||
metadata[g_id].playlists = dict()
|
||||
metadata[g_id].playlists[key] = pl_id
|
||||
|
||||
# Remove legacy playlist id
|
||||
if genre.playlist_id:
|
||||
assert genre.playlist_id == genre.playlists["sound"]
|
||||
metadata[g_id].playlist_id = None
|
||||
|
||||
print("scraped playlists for", g_id)
|
||||
|
||||
sx = stream.iterate(metadata.keys()) | pipe.map(scrape_playlist,
|
||||
task_limit=5)
|
||||
await sx
|
||||
|
||||
write_meta(metadata)
|
||||
|
||||
|
||||
async def scrape_playlists_year(year: int):
|
||||
"""Scrape yearly playlists of previous years from Spotify users"""
|
||||
username = f"particledetector{year}"
|
||||
prefix = f"{year} in "
|
||||
offset = 0
|
||||
|
||||
metadata = util.read_meta()
|
||||
|
||||
name_map = {v.name: k for k, v in metadata.items()}
|
||||
|
||||
while True:
|
||||
async with spotify.Client(os.getenv("SPOTIFY_CLIENT_ID"),
|
||||
os.getenv("SPOTIFY_CLIENT_SECRET")) as client:
|
||||
playlists = await client.http.get_playlists(username, limit=50, offset=offset)
|
||||
items = playlists["items"]
|
||||
|
||||
for item in items:
|
||||
name: str = item["name"]
|
||||
if not name.startswith(prefix):
|
||||
continue
|
||||
genre_name = name.removeprefix(prefix)
|
||||
if genre_name in name_map:
|
||||
g_id = name_map[genre_name]
|
||||
metadata[g_id].playlists[str(year)] = item["id"]
|
||||
print("found ", genre_name)
|
||||
|
||||
if len(items) < 50:
|
||||
break
|
||||
offset += len(items)
|
||||
|
||||
write_meta(metadata)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
load_dotenv()
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("op", type=str, help="Operation")
|
||||
parser.add_argument("--limit", type=int, help="Limit", default=None, required=False)
|
||||
parser.add_argument("--file", type=Path, help="Limit", default=None, required=False)
|
||||
parser.add_argument("--limit",
|
||||
type=int,
|
||||
help="Limit",
|
||||
default=None,
|
||||
required=False)
|
||||
parser.add_argument("--year",
|
||||
type=int,
|
||||
help="Year",
|
||||
default=None,
|
||||
required=False)
|
||||
parser.add_argument("--file",
|
||||
type=Path,
|
||||
help="Limit",
|
||||
default=None,
|
||||
required=False)
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.op == "genres2meta":
|
||||
|
@ -333,5 +436,9 @@ if __name__ == "__main__":
|
|||
new_translation(args.file, True)
|
||||
elif args.op == "checkln":
|
||||
check_localized_name()
|
||||
elif args.op == "scrapePlaylists":
|
||||
asyncio.get_event_loop().run_until_complete(scrape_playlists())
|
||||
elif args.op == "scrapePlaylistsYear":
|
||||
asyncio.get_event_loop().run_until_complete(scrape_playlists_year(args.year))
|
||||
else:
|
||||
sys.exit(2)
|
||||
|
|
|
@ -16,18 +16,12 @@ import aiohttp
|
|||
from aiostream import stream, pipe
|
||||
|
||||
import model
|
||||
import util
|
||||
|
||||
EVERYNOISE_URL = "https://everynoise.com/everynoise1d.cgi?vector=popularity&scope=all"
|
||||
GENRE_FILE = "everynoise_genres.json"
|
||||
|
||||
|
||||
def remove_prefix(s, prefix):
|
||||
if s.startswith(prefix):
|
||||
return s[len(prefix):]
|
||||
else:
|
||||
raise Exception(f"{s} does not start with {prefix}")
|
||||
|
||||
|
||||
async def get_genres():
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(EVERYNOISE_URL) as response:
|
||||
|
@ -49,7 +43,7 @@ async def get_genres():
|
|||
popularity = int(row.find("td").string)
|
||||
|
||||
pl_link = row.find("a", {"target": "spotify"})
|
||||
pl_id = remove_prefix(pl_link["href"],
|
||||
pl_id = util.remove_prefix(pl_link["href"],
|
||||
"https://embed.spotify.com/?uri=spotify:playlist:")
|
||||
genre_link = row.find("a",
|
||||
{
|
||||
|
@ -63,7 +57,7 @@ async def get_genres():
|
|||
|
||||
# Fetch genre name from Spotify
|
||||
pl_data = await client.http.get_playlist(pl_id, fields=["name"])
|
||||
genre_name = remove_prefix(pl_data["name"], "The Sound of ")
|
||||
genre_name = util.remove_prefix(pl_data["name"], "The Sound of ")
|
||||
|
||||
genre_data[genre_id] = model.GenreMetadata(genre_name,
|
||||
playlist_id=pl_id,
|
||||
|
|
|
@ -32,8 +32,9 @@ class GenreMetadata:
|
|||
localized_name: Optional[bool] = None
|
||||
wikipedia_url: Optional[str] = None
|
||||
wikidata_id: Optional[int] = None
|
||||
popularity: Optional[int] = None
|
||||
rank: Optional[int] = None
|
||||
playlist_id: Optional[str] = None
|
||||
playlists: Optional[Dict[str, str]] = None
|
||||
alias: Optional[str] = None
|
||||
deprecated: Optional[bool] = None
|
||||
metagenre: Optional[bool] = None
|
||||
|
|
47
genres/util.py
Normal file
47
genres/util.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
import os
|
||||
import sys
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
from typing import Dict
|
||||
|
||||
import model
|
||||
|
||||
GENRE_DIR = Path(os.path.dirname(os.path.abspath(__file__)))
|
||||
GENRE_FILE = GENRE_DIR / "everynoise_genres.json"
|
||||
METADATA_DIR = GENRE_DIR / ".." / "metadata"
|
||||
TRANSLATION_DIR = GENRE_DIR / ".." / "translations"
|
||||
TRANSLATION_FILE = TRANSLATION_DIR / "_main.json"
|
||||
TRANSLATION_FILE_EN = TRANSLATION_DIR / "en.json"
|
||||
|
||||
|
||||
def remove_prefix(s: str, prefix: str) -> str:
|
||||
if s.startswith(prefix):
|
||||
return s[len(prefix):]
|
||||
else:
|
||||
raise Exception(f"{s} does not start with {prefix}")
|
||||
|
||||
|
||||
def read_meta() -> Dict[str, model.GenreMetadata]:
|
||||
metadata = dict()
|
||||
|
||||
for filename in os.listdir(METADATA_DIR):
|
||||
md_path = METADATA_DIR / filename
|
||||
with md_path.open("r") as f:
|
||||
data = yaml.safe_load(f)
|
||||
stored_genres = model.load_genre_dict(data)
|
||||
metadata.update(stored_genres)
|
||||
|
||||
print(f"{len(metadata)} genres loaded", file=sys.stderr)
|
||||
return metadata
|
||||
|
||||
|
||||
def read_meta_n(n: int) -> Dict[str, model.GenreMetadata]:
|
||||
"""Read metadata from a specific file (numbers 0-26)"""
|
||||
if n == 0:
|
||||
md_path = METADATA_DIR / "0.yaml"
|
||||
else:
|
||||
md_path = METADATA_DIR / f"{chr(96 + n)}.yaml"
|
||||
|
||||
with md_path.open("r") as f:
|
||||
data = yaml.safe_load(f)
|
||||
return model.load_genre_dict(data)
|
|
@ -8,8 +8,13 @@
|
|||
parent: uk garage
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/2-step_garage
|
||||
wikidata_id: 1751409
|
||||
popularity: 3715
|
||||
playlist_id: 3YOSwaEFJsA3fbYH8lArkR
|
||||
rank: 3715
|
||||
playlists:
|
||||
"2023": 4O242UZweUZ7S9wmDvxiEp
|
||||
edge: 7xqAm3evGeotzSNWqgpgbU
|
||||
intro: 7hqqWzw23Hmbw67hp8BPKN
|
||||
pulse: 3JSwdgeMJJoD0Y0z3AwczS
|
||||
sound: 3YOSwaEFJsA3fbYH8lArkR
|
||||
21st century classical:
|
||||
name: 21st Century Classical
|
||||
description:
|
||||
|
@ -21,8 +26,17 @@
|
|||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/21st-century_classical_music
|
||||
wikidata_id: 4631020
|
||||
popularity: 2437
|
||||
playlist_id: 2HUpNZLoYHe0Sa9dglqQOg
|
||||
rank: 2437
|
||||
playlists:
|
||||
"2019": 70FdGcqZAMGnQ8cIE4OQZq
|
||||
"2020": 6vWyCmjP0OY2nBSK7kSTXo
|
||||
"2021": 4rEFotvPMureiXTfgQJajM
|
||||
"2022": 0ZA8FJ3NZGtsQu4zZ6MFUC
|
||||
"2023": 2hSUx0szcSZHdeIqmHCgNK
|
||||
edge: 6vXmXiiR3ATnrC3P0opPx5
|
||||
intro: 7wdDcoVCJoZYoUGZ8yBJ4w
|
||||
pulse: 7cVjeKbwzoQOnbn0Zd3t8B
|
||||
sound: 2HUpNZLoYHe0Sa9dglqQOg
|
||||
432hz:
|
||||
name: 432Hz
|
||||
description:
|
||||
|
@ -34,8 +48,16 @@
|
|||
parent: meditation
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Scientific_pitch
|
||||
wikidata_id: 17087764
|
||||
popularity: 3209
|
||||
playlist_id: 5qQLE1iuD3CKOEXIb0fi7Z
|
||||
rank: 3209
|
||||
playlists:
|
||||
"2020": 0AqosdJ3M7pMv52okCF0Rh
|
||||
"2021": 3B60gl1JExbz2Uu7aIxwPJ
|
||||
"2022": 6JvAila6APnRtJnCAyS6CO
|
||||
"2023": 4DcFGzPanZDbICFl5bV2ps
|
||||
edge: 4JPWXlNL2douhtdT9KSdtL
|
||||
intro: 5f4DZVPGQBMiCVNuIuaBmu
|
||||
pulse: 03JB7KqVuC3sFTIrSCI21V
|
||||
sound: 5qQLE1iuD3CKOEXIb0fi7Z
|
||||
48g:
|
||||
name: 48G
|
||||
description:
|
||||
|
@ -47,8 +69,16 @@
|
|||
parent: j-pop girl group
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/AKB48_Group
|
||||
wikidata_id: 42742220
|
||||
popularity: 3128
|
||||
playlist_id: 4GhzIuuhKmoxP4WMDukGhR
|
||||
rank: 3128
|
||||
playlists:
|
||||
"2020": 0LukbPqHCglGwvAkMp5CmA
|
||||
"2021": 5eHaQCbu6wHNVrQE9h9XEw
|
||||
"2022": 6IWUwj1fUTp8d2kXIhC9cC
|
||||
"2023": 4IYTur8JekCowXPoSpfxOo
|
||||
edge: 1UR3oO9MjQqfehLXnPNn1j
|
||||
intro: 0hBM02jeH0mVo9pTTNr8zl
|
||||
pulse: 2QgbGoFxHmIxBktq59GzP2
|
||||
sound: 4GhzIuuhKmoxP4WMDukGhR
|
||||
528hz:
|
||||
name: 528Hz
|
||||
description:
|
||||
|
@ -57,8 +87,12 @@
|
|||
promote feelings of love, peace, and harmony. This genre of music is often used in
|
||||
meditation, yoga, and other spiritual practices.
|
||||
parent: meditation
|
||||
popularity: 2778
|
||||
playlist_id: 3qHTGXTTyexCin7nO1Wbv1
|
||||
rank: 2778
|
||||
playlists:
|
||||
"2023": 1NgpILwgAgDBfAMktnaRM3
|
||||
intro: 3DocbbFaCFUjba3GL6hKPm
|
||||
pulse: 55RKxcLS4yqFwTIfgXPcBA
|
||||
sound: 3qHTGXTTyexCin7nO1Wbv1
|
||||
5th wave emo:
|
||||
name: 5th Wave Emo
|
||||
description:
|
||||
|
@ -69,12 +103,22 @@
|
|||
lyrics. Bands like The Hotelier, Modern Baseball, and Sorority Noise are considered
|
||||
pioneers of the genre.
|
||||
parent: emo
|
||||
popularity: 1914
|
||||
playlist_id: 5jJRdxN4pD29Uhj0ZIRFPf
|
||||
rank: 1914
|
||||
playlists:
|
||||
"2021": 0KJUxaUMw2UPNq5spdhrOs
|
||||
"2022": 40kVQJTPp0LFnacQYSEI3H
|
||||
"2023": 5yMdRzeiDRm2txwRFE4BFJ
|
||||
edge: 4ylDR9xvKqps8q2JmE2uAr
|
||||
intro: 5ZsM9HKe1QLdqvmPxRu5Ol
|
||||
pulse: 3kZS5scnM4wZJRQelCiGNO
|
||||
sound: 5jJRdxN4pD29Uhj0ZIRFPf
|
||||
8-bit:
|
||||
name: 8-Bit
|
||||
popularity: 4225
|
||||
playlist_id: 0ORjwYMeNv9v441v6aHPa1
|
||||
rank: 4225
|
||||
playlists:
|
||||
intro: 0uGCjwYca99ZTenVlJIGhl
|
||||
pulse: 0d3bkro50wPqNTkybpysz8
|
||||
sound: 0ORjwYMeNv9v441v6aHPa1
|
||||
alias: chiptune
|
||||
8d:
|
||||
name: 8D
|
||||
|
@ -83,5 +127,12 @@
|
|||
experience for the listener. It uses binaural recording techniques to create the
|
||||
illusion of sound coming from different directions and distances, giving the
|
||||
parent: meditation
|
||||
popularity: 1922
|
||||
playlist_id: 2vLez030U00PBsuE2ug926
|
||||
rank: 1922
|
||||
playlists:
|
||||
"2020": 0dpxcFSfWTAvPppDWqOEKR
|
||||
"2021": 7yGrSTjXbmqhEiaJBOEeXV
|
||||
"2022": 4tyL0n6UZwag6d8BNb1dzu
|
||||
"2023": 701PL0EJO5snKtSWhflfbc
|
||||
intro: 16ye0dzYr7sQJp7Iiqe6Og
|
||||
pulse: 29g0yeNuHIFagRnWhZ0D2L
|
||||
sound: 2vLez030U00PBsuE2ug926
|
||||
|
|
3824
metadata/a.yaml
3824
metadata/a.yaml
File diff suppressed because it is too large
Load diff
4612
metadata/b.yaml
4612
metadata/b.yaml
File diff suppressed because it is too large
Load diff
6965
metadata/c.yaml
6965
metadata/c.yaml
File diff suppressed because it is too large
Load diff
4085
metadata/d.yaml
4085
metadata/d.yaml
File diff suppressed because it is too large
Load diff
1780
metadata/e.yaml
1780
metadata/e.yaml
File diff suppressed because it is too large
Load diff
2723
metadata/f.yaml
2723
metadata/f.yaml
File diff suppressed because it is too large
Load diff
2922
metadata/g.yaml
2922
metadata/g.yaml
File diff suppressed because it is too large
Load diff
1925
metadata/h.yaml
1925
metadata/h.yaml
File diff suppressed because it is too large
Load diff
3446
metadata/i.yaml
3446
metadata/i.yaml
File diff suppressed because it is too large
Load diff
2071
metadata/j.yaml
2071
metadata/j.yaml
File diff suppressed because it is too large
Load diff
1655
metadata/k.yaml
1655
metadata/k.yaml
File diff suppressed because it is too large
Load diff
1754
metadata/l.yaml
1754
metadata/l.yaml
File diff suppressed because it is too large
Load diff
5566
metadata/m.yaml
5566
metadata/m.yaml
File diff suppressed because it is too large
Load diff
3159
metadata/n.yaml
3159
metadata/n.yaml
File diff suppressed because it is too large
Load diff
924
metadata/o.yaml
924
metadata/o.yaml
File diff suppressed because it is too large
Load diff
4194
metadata/p.yaml
4194
metadata/p.yaml
File diff suppressed because it is too large
Load diff
150
metadata/q.yaml
150
metadata/q.yaml
|
@ -10,8 +10,13 @@ qanun:
|
|||
region: ME
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Qanun_(instrument)
|
||||
popularity: 5288
|
||||
playlist_id: 2F5lFpyiAqk9JmhCnA5DHr
|
||||
rank: 5288
|
||||
playlists:
|
||||
"2022": 68xdEmw2n8qdBwYnljGy4o
|
||||
"2023": 387E6HvYjYjGg4cLkSuHx1
|
||||
intro: 4hPPdbxJxPufdJEpkPO4lH
|
||||
pulse: 2wkPdJW6atmvsLJGDkh8Kx
|
||||
sound: 2F5lFpyiAqk9JmhCnA5DHr
|
||||
qawwali:
|
||||
name: Qawwali
|
||||
description:
|
||||
|
@ -23,8 +28,16 @@ qawwali:
|
|||
region: DS
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Qawwali
|
||||
popularity: 1271
|
||||
playlist_id: 6DEKx1zncvF5WovQK13IIk
|
||||
rank: 1271
|
||||
playlists:
|
||||
"2020": 0ZDJm0Meen25AMeHXlsmXV
|
||||
"2021": 5II5dwobTza9tULQmDxZoJ
|
||||
"2022": 5gCsdUZADbiopbtDcs2uxk
|
||||
"2023": 2hCSA7T50O4usB1fCCprCq
|
||||
edge: 0zMONOrY99EodipvUSq6kA
|
||||
intro: 38WcQvLjSaJ0VcfQDgxR7q
|
||||
pulse: 3nJSGOaSfFExlCwhRRWcQd
|
||||
sound: 6DEKx1zncvF5WovQK13IIk
|
||||
quartetto d'archi:
|
||||
name: Quartetto d'archi
|
||||
description:
|
||||
|
@ -38,8 +51,9 @@ quartetto d'archi:
|
|||
language: ita
|
||||
country: IT
|
||||
localized_name: true
|
||||
popularity: 6277
|
||||
playlist_id: 1kps7K1T21QuwQUHaotbmj
|
||||
rank: 6277
|
||||
playlists:
|
||||
sound: 1kps7K1T21QuwQUHaotbmj
|
||||
quatuor a cordes:
|
||||
name: Quatuor à cordes
|
||||
description:
|
||||
|
@ -50,8 +64,11 @@ quatuor a cordes:
|
|||
parent: string quartet
|
||||
language: fra
|
||||
localized_name: true
|
||||
popularity: 6257
|
||||
playlist_id: 2LxiSYEJRCTiv0TE0K3ljN
|
||||
rank: 6257
|
||||
playlists:
|
||||
"2022": 2nlWOJcP7DWdOvOJyqatsW
|
||||
"2023": 3ANWOLevdvupZlIyRfzHK5
|
||||
sound: 2LxiSYEJRCTiv0TE0K3ljN
|
||||
quebec death metal:
|
||||
name: Québec Death Metal
|
||||
description:
|
||||
|
@ -62,8 +79,15 @@ quebec death metal:
|
|||
parent: canadian death metal
|
||||
language: fra
|
||||
localized_name: true
|
||||
popularity: 3762
|
||||
playlist_id: 3ozgCnrW1PNZxpkVkazhtT
|
||||
rank: 3762
|
||||
playlists:
|
||||
"2020": 4w8SWyhZ31Nfhy9ndELRRY
|
||||
"2021": 1SN6lnPKhqLsryJhus6z0D
|
||||
"2022": 08B92glfzvVSt5MfZPpTgi
|
||||
"2023": 4UOn7RFYiNDfsSLTo9krQX
|
||||
intro: 1JlrADIcVfm8pRceGrDIG0
|
||||
pulse: 1f3PVdDADO6CK6ta8Ifj1U
|
||||
sound: 3ozgCnrW1PNZxpkVkazhtT
|
||||
quebec hardcore:
|
||||
name: Québec Hardcore
|
||||
description:
|
||||
|
@ -74,8 +98,13 @@ quebec hardcore:
|
|||
parent: canadian hardcore
|
||||
language: fra
|
||||
localized_name: true
|
||||
popularity: 5303
|
||||
playlist_id: 5QfnA78JvJkwlV0IHJSYrA
|
||||
rank: 5303
|
||||
playlists:
|
||||
"2023": 4CvAZw19vgcKHYWE9jATsH
|
||||
edge: 0IzeF4ujxyeyucI29RY3SA
|
||||
intro: 2wj1Lvm7LkK3XCkRy72kHk
|
||||
pulse: 7LPX29QMyibTotpAmfvUtj
|
||||
sound: 5QfnA78JvJkwlV0IHJSYrA
|
||||
quebec indie:
|
||||
name: Québec Indie
|
||||
description:
|
||||
|
@ -87,8 +116,17 @@ quebec indie:
|
|||
parent: canadian indie
|
||||
language: fra
|
||||
localized_name: true
|
||||
popularity: 1464
|
||||
playlist_id: 4uRfUMUWYXOtFiSD4pFfbn
|
||||
rank: 1464
|
||||
playlists:
|
||||
"2019": 2FguZNfTdLECN6pCZehZTy
|
||||
"2020": 6WsmFe1oDR0rUjDA7S15lL
|
||||
"2021": 78A7pZZ7Dc3pcIF8xjYbb2
|
||||
"2022": 1oPrxSWZmN3OSzAIMDDVVn
|
||||
"2023": 5ovosGU5UaLlpGVwBiV9Pi
|
||||
edge: 4I7eRwKpSGGU4q6kI5rJup
|
||||
intro: 6kEpbXb3r2nNDPYpbRHpPC
|
||||
pulse: 5bJ1r3BzsvlAGOUAJ0q0ho
|
||||
sound: 4uRfUMUWYXOtFiSD4pFfbn
|
||||
quebec metal:
|
||||
name: Québec Metal
|
||||
description:
|
||||
|
@ -99,8 +137,13 @@ quebec metal:
|
|||
parent: canadian metal
|
||||
language: fra
|
||||
localized_name: true
|
||||
popularity: 5697
|
||||
playlist_id: 2t7PKO3CCmlch3IaqxUiKz
|
||||
rank: 5697
|
||||
playlists:
|
||||
"2023": 2efIzroABFpxRfxP2BlyYF
|
||||
edge: 0NpI7tSPo3jbpVEYQxA1WM
|
||||
intro: 18dYExuUvGmeTP76lD7FRy
|
||||
pulse: 6rGo3BObNlgMAMHXW1NnY4
|
||||
sound: 2t7PKO3CCmlch3IaqxUiKz
|
||||
quebec punk:
|
||||
name: Québec Punk
|
||||
description:
|
||||
|
@ -112,8 +155,16 @@ quebec punk:
|
|||
parent: canadian punk
|
||||
language: fra
|
||||
localized_name: true
|
||||
popularity: 3613
|
||||
playlist_id: 5vd5RRHykVvzcnZDXnRt2H
|
||||
rank: 3613
|
||||
playlists:
|
||||
"2020": 2W6KJ5wkaAhoNu2aI1BdUc
|
||||
"2021": 3T2N1KoMPnhMzN4jf3gENw
|
||||
"2022": 6gDhU92V25ckHMUp8iazAl
|
||||
"2023": 1XrAXOT5bldwjOyEmSHggC
|
||||
edge: 1gZHyn1F5ISyjKen0FXq7O
|
||||
intro: 2xBmMaPYjwzxhEBrIXf7sx
|
||||
pulse: 34EEKsS3GsglwCxkYBTMR9
|
||||
sound: 5vd5RRHykVvzcnZDXnRt2H
|
||||
queens hip hop:
|
||||
name: Queens Hip Hop
|
||||
description:
|
||||
|
@ -124,8 +175,17 @@ queens hip hop:
|
|||
today.
|
||||
parent: hip hop
|
||||
country: US
|
||||
popularity: 212
|
||||
playlist_id: 0AxeQveEqk8X42sovBCls8
|
||||
rank: 212
|
||||
playlists:
|
||||
"2019": 0Q8edy5uKGQp7LPN6ojo6V
|
||||
"2020": 7a6XHTbjXOSPkwbwG6n6P3
|
||||
"2021": 2uXQlvgIzLHZMI2eCbJb3e
|
||||
"2022": 6jPXH68YGMLeUtGpzTLSfT
|
||||
"2023": 2zrFr5IM5IE3EGyDWsHlHo
|
||||
edge: 7qMDUuIEJACoFd1TMGIXjf
|
||||
intro: 78WED6iWCoildza89ZSEOT
|
||||
pulse: 6fyjVFmRVdAWJZ9AgoN5e3
|
||||
sound: 0AxeQveEqk8X42sovBCls8
|
||||
queer country:
|
||||
name: Queer Country
|
||||
description:
|
||||
|
@ -134,8 +194,16 @@ queer country:
|
|||
gender roles in the genre. This genre has gained popularity in recent years as more
|
||||
queer artists have emerged in the country music scene.
|
||||
parent: country
|
||||
popularity: 2771
|
||||
playlist_id: 5lAp13nSaA7eHafwqV5ilp
|
||||
rank: 2771
|
||||
playlists:
|
||||
"2020": 54h9847CRl8q7wIsrICIZV
|
||||
"2021": 3EgcL43P4KUrkGB0CwniXT
|
||||
"2022": 35ONLV5ctIkyKMqHhIwwQE
|
||||
"2023": 6ycklRfayyDECyAPymNY54
|
||||
edge: 0wC0jygftE6hjdcASMaoJT
|
||||
intro: 1zpT4LLOpEEIr16bRKcdwU
|
||||
pulse: 7egFXiz7QCP1MaVd5YXYxF
|
||||
sound: 5lAp13nSaA7eHafwqV5ilp
|
||||
queercore:
|
||||
name: Queercore
|
||||
description:
|
||||
|
@ -147,8 +215,16 @@ queercore:
|
|||
include Pansy Division, Team Dresch, and The Butchies.
|
||||
parent: punk
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Queercore
|
||||
popularity: 2625
|
||||
playlist_id: 7msivIljALwqTDOrrdJk9K
|
||||
rank: 2625
|
||||
playlists:
|
||||
"2020": 07AF4ny6jhZBRFvGizW48F
|
||||
"2021": 5O2MnqaDsZId2yZKrtaK1C
|
||||
"2022": 2pc6ORKiI7AfFbmnKn2vIR
|
||||
"2023": 6K9CNhPoNIjtyXgLQeEw7X
|
||||
edge: 223XD0hgKVDumSG4UT74wM
|
||||
intro: 6WGF9AkrKIgEgRXIdWW8tq
|
||||
pulse: 6A2ENrWv6lVVQ5YspbppXs
|
||||
sound: 7msivIljALwqTDOrrdJk9K
|
||||
quiet storm:
|
||||
name: Quiet Storm
|
||||
description:
|
||||
|
@ -158,8 +234,18 @@ quiet storm:
|
|||
music to help listeners relax and unwind.
|
||||
parent: r&b
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Quiet_storm
|
||||
popularity: 220
|
||||
playlist_id: 66k6nBXFo6of5ckPWCuCSi
|
||||
rank: 220
|
||||
playlists:
|
||||
"2018": 4AevCxg42j7bZE3hwbsEZU
|
||||
"2019": 2fr3a7e33WmrXEcdroyTWo
|
||||
"2020": 1mQw7taFxQl5H4zv6Rwgcs
|
||||
"2021": 2zf4AOdSN92IoJadjQW9uc
|
||||
"2022": 1jOWn7Nm6FoiCfpQ6L7ip7
|
||||
"2023": 6rKYbaTMR6dzbMjR4S1uKc
|
||||
edge: 7jUlnzUBP5jzSpu6YFDWwU
|
||||
intro: 2OGzevPKBSbHVMlO0XZqaX
|
||||
pulse: 1aFspLgNzl6hP62RCtVafi
|
||||
sound: 66k6nBXFo6of5ckPWCuCSi
|
||||
quran:
|
||||
name: Quran
|
||||
description:
|
||||
|
@ -170,5 +256,13 @@ quran:
|
|||
emotional experience for listeners.
|
||||
parent: islamic recitation
|
||||
localized_name: true
|
||||
popularity: 1509
|
||||
playlist_id: 2fGISxSz9tC1fkRX2qZdDW
|
||||
rank: 1509
|
||||
playlists:
|
||||
"2020": 7Jru7itsnVdPU0VLb8ejjp
|
||||
"2021": 4hEemc87qRur2ZucMKAjH2
|
||||
"2022": 1kIiIL6k5wvWNCOYgGybxI
|
||||
"2023": 0VYE7BwHM1ixFWVwNIOEJJ
|
||||
edge: 0q0N5NqtpVF8aWsyHdckQN
|
||||
intro: 42DWet00h5oV0O0xZtpFbV
|
||||
pulse: 5YILSNwgCQXpZq7v0okuiP
|
||||
sound: 2fGISxSz9tC1fkRX2qZdDW
|
||||
|
|
3903
metadata/r.yaml
3903
metadata/r.yaml
File diff suppressed because it is too large
Load diff
6024
metadata/s.yaml
6024
metadata/s.yaml
File diff suppressed because it is too large
Load diff
3279
metadata/t.yaml
3279
metadata/t.yaml
File diff suppressed because it is too large
Load diff
1156
metadata/u.yaml
1156
metadata/u.yaml
File diff suppressed because it is too large
Load diff
1363
metadata/v.yaml
1363
metadata/v.yaml
File diff suppressed because it is too large
Load diff
682
metadata/w.yaml
682
metadata/w.yaml
File diff suppressed because it is too large
Load diff
|
@ -9,8 +9,13 @@ xenharmonic:
|
|||
it.
|
||||
parent: experimental
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Xenharmonic_music
|
||||
popularity: 5492
|
||||
playlist_id: 31vMSXGJYkMnYVfP4MVUMB
|
||||
rank: 5492
|
||||
playlists:
|
||||
"2022": 7tRARyR2ZLAeihpONatBoN
|
||||
"2023": 2ldiXZjjllFXQeKjrHMdyG
|
||||
intro: 5wCvsZiNjsOWEQkZG8wsNq
|
||||
pulse: 60AQpTHEvzYVUgcY7hFbUl
|
||||
sound: 31vMSXGJYkMnYVfP4MVUMB
|
||||
xhosa:
|
||||
name: Xhosa
|
||||
description:
|
||||
|
@ -21,8 +26,15 @@ xhosa:
|
|||
parent: folk
|
||||
language: xho
|
||||
country: SA
|
||||
popularity: 4115
|
||||
playlist_id: 1SPR7yk4kwmz09NovuUzKN
|
||||
rank: 4115
|
||||
playlists:
|
||||
"2020": 6NVL0NXx4cXdt900sh1Wwj
|
||||
"2021": 37r8CZM1HtGiijJwmfmQbR
|
||||
"2022": 0SxhZYAzpgCQoldqdobLQb
|
||||
"2023": 2QH1f5W59QI76MFABvrjKL
|
||||
intro: 09cnl6NIPxut0M9HFootj3
|
||||
pulse: 0eRxUT4PEy4XbGZ2OINWfx
|
||||
sound: 1SPR7yk4kwmz09NovuUzKN
|
||||
xhosa hip hop:
|
||||
name: Xhosa Hip Hop
|
||||
description:
|
||||
|
@ -34,8 +46,14 @@ xhosa hip hop:
|
|||
parent: hip hop
|
||||
language: xho
|
||||
country: SA
|
||||
popularity: 4833
|
||||
playlist_id: 03gnvuMqmf0w2E5qv4bHsy
|
||||
rank: 4833
|
||||
playlists:
|
||||
"2022": 7D6AsEkwQbn31Tb9Y0bEQZ
|
||||
"2023": 1zqKja0PnwEeyT1QjdXTOX
|
||||
edge: 5tLwS19hN5EFzIPcsToPcI
|
||||
intro: 4yVSCJtn4RJJjjE2dcWNDA
|
||||
pulse: 1YSzamhHpNsXrOxZb3X64w
|
||||
sound: 03gnvuMqmf0w2E5qv4bHsy
|
||||
xinyao:
|
||||
name: Xinyao
|
||||
description:
|
||||
|
@ -47,8 +65,14 @@ xinyao:
|
|||
parent: folk-pop
|
||||
language: zho
|
||||
country: SG
|
||||
popularity: 4575
|
||||
playlist_id: 3OdedP3CjT68YpId2B1BFk
|
||||
rank: 4575
|
||||
playlists:
|
||||
"2021": 5p1iS2JVwZJAjB5gReHuzD
|
||||
"2022": 16YAihQQxgwCNHqJYHjx7v
|
||||
"2023": 4zNtkXC6mgLSP2d6Qbqlrs
|
||||
intro: 6z4B3se4fJq99PeDIpkqbu
|
||||
pulse: 0CcD4wWiXWOdY4l9QdRDf0
|
||||
sound: 3OdedP3CjT68YpId2B1BFk
|
||||
xitsonga pop:
|
||||
name: Xitsonga Pop
|
||||
description:
|
||||
|
@ -59,8 +83,15 @@ xitsonga pop:
|
|||
parent: pop
|
||||
language: tso
|
||||
country: SA
|
||||
popularity: 3844
|
||||
playlist_id: 23MUSPH44uYB10onXR9mRe
|
||||
rank: 3844
|
||||
playlists:
|
||||
"2021": 2agrFCVcNupsWWZqTlWI8h
|
||||
"2022": 5mQf0OWNjaj3OYCP3m2LEb
|
||||
"2023": 5IpbN9zmjnNZCHIAMh091g
|
||||
edge: 77XVX9oGQINOocRelyY6lF
|
||||
intro: 2oYo8r7glZ2vAPxmI9iCsR
|
||||
pulse: 3uaWclhjwq3SnkdLmcGx4I
|
||||
sound: 23MUSPH44uYB10onXR9mRe
|
||||
xtra raw:
|
||||
name: Xtra Raw
|
||||
description:
|
||||
|
@ -69,5 +100,13 @@ xtra raw:
|
|||
use of bass and percussion. The music is often played at high speeds and can be
|
||||
quite intense, making it popular among fans of hardcore and gabber music.
|
||||
parent: hardcore techno
|
||||
popularity: 1828
|
||||
playlist_id: 7oe7qiYLUxsfhZXlT6AIiS
|
||||
rank: 1828
|
||||
playlists:
|
||||
"2020": 74eYgpbsLjnlLUUjqIAEm2
|
||||
"2021": 4gbYwBQMnW8J2B48hPnK3n
|
||||
"2022": 1XMRwF812En9UAiRUXzww8
|
||||
"2023": 4NIRWVtaM5wXzU4teD6jlu
|
||||
edge: 4U1Ipy0nizjpKMQm8xOHVY
|
||||
intro: 5idjHsS2J3gzXPDS2WgTFJ
|
||||
pulse: 3QcW4u0QrCwKQAn2dj6jIT
|
||||
sound: 7oe7qiYLUxsfhZXlT6AIiS
|
||||
|
|
207
metadata/y.yaml
207
metadata/y.yaml
|
@ -8,8 +8,17 @@ yacht rock:
|
|||
who grew up during this era.
|
||||
parent: soft rock
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Yacht_rock
|
||||
popularity: 156
|
||||
playlist_id: 1imbMwZYgwB2NCAVPkq5sZ
|
||||
rank: 156
|
||||
playlists:
|
||||
"2019": 0efuIF55Ao2ZdlEgPr0FRa
|
||||
"2020": 4F1Ag8T12ouQ9eeiAR5y8v
|
||||
"2021": 6LqsY3t1cj3nCGh1bgkuht
|
||||
"2022": 2MTvk8S6wcRcoFv6CGX1DW
|
||||
"2023": 6qFEC1WBQRPxS9r2m2Q7f4
|
||||
edge: 0ksniO425Yn64qiNI1iXPS
|
||||
intro: 5ldcVmWjkKoyLy6nRsABr3
|
||||
pulse: 5zgLnWhHxDqGFf267udixC
|
||||
sound: 1imbMwZYgwB2NCAVPkq5sZ
|
||||
yakut pop:
|
||||
name: Yakut Pop
|
||||
description:
|
||||
|
@ -20,8 +29,14 @@ yakut pop:
|
|||
language: sah
|
||||
country: RU
|
||||
localized_name: true
|
||||
popularity: 5270
|
||||
playlist_id: 3H2aC6nJR4L39KCCI0Pcg8
|
||||
rank: 5270
|
||||
playlists:
|
||||
"2021": 7bMDIhX1izesJkgCOwBmC6
|
||||
"2022": 1krcxmhPQgTUge79FUU3PY
|
||||
"2023": 0kaVz5eAf2HNkiMLh3iCfr
|
||||
intro: 1Zxfy3fthRe0VzETGODPNT
|
||||
pulse: 5TxAWVyWEOzjEXwzZtbulY
|
||||
sound: 3H2aC6nJR4L39KCCI0Pcg8
|
||||
yaoi:
|
||||
name: Yaoi
|
||||
description:
|
||||
|
@ -30,8 +45,15 @@ yaoi:
|
|||
emotional connection between two male characters. Yaoi music is popular among fans
|
||||
of the genre and is often performed by male vocalists with high-pitched voices.
|
||||
parent: anime
|
||||
popularity: 2946
|
||||
playlist_id: 1eWtvA0Byu9Wu7LENK35Dp
|
||||
rank: 2946
|
||||
playlists:
|
||||
"2021": 3Vq3hn458ZXhXwOwiOw1eH
|
||||
"2022": 6CIGAFoAUMuuDetfSHA8Ru
|
||||
"2023": 3Sp6axFKvNCoFm0BgA1LNn
|
||||
edge: 3GYVFufk4G4my872lAlH9a
|
||||
intro: 4b6r1gI7ITYe5BWzIZVIUm
|
||||
pulse: 2JlBKPG5mWiwtt1ZyF8WkP
|
||||
sound: 1eWtvA0Byu9Wu7LENK35Dp
|
||||
ye ye:
|
||||
name: Ye Ye
|
||||
description:
|
||||
|
@ -42,8 +64,18 @@ ye ye:
|
|||
Dutronc, and had a significant impact on French and European pop music.
|
||||
parent: french rock-and-roll
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Y%C3%A9-y%C3%A9
|
||||
popularity: 1091
|
||||
playlist_id: 0HjnliL7S56u2t2sFW8gG7
|
||||
rank: 1091
|
||||
playlists:
|
||||
"2018": 2V1xg1glwzwjcspf00oN83
|
||||
"2019": 3bTKme8Ajp48144eN4PMkZ
|
||||
"2020": 4dlM2wC9xobcIU4cs6gxKB
|
||||
"2021": 0HoTrw8HJPsHUpe8ODrV72
|
||||
"2022": 1ti4vV7IkUtnJMazPQg2Qd
|
||||
"2023": 5GEEmH9dLo9KJ950mW16N6
|
||||
edge: 2jchAUDj0rYaWHVIpwGDx0
|
||||
intro: 6BBjHLbX9A5BHI2LBVwHx3
|
||||
pulse: 0Sjq8W3hK7h9Ooh9wtNPcS
|
||||
sound: 0HjnliL7S56u2t2sFW8gG7
|
||||
yemeni pop:
|
||||
name: Yemeni Pop
|
||||
description:
|
||||
|
@ -55,8 +87,16 @@ yemeni pop:
|
|||
language: ara
|
||||
country: YE
|
||||
localized_name: true
|
||||
popularity: 4561
|
||||
playlist_id: 5YFUtJgAy2Xfly9whFZrz2
|
||||
rank: 4561
|
||||
playlists:
|
||||
"2020": 0WEwWphiLMQZWYQSU0ZTEo
|
||||
"2021": 5JzFPMPqLYlKw87Sty0lHV
|
||||
"2022": 6dAud5OfUVWcCnVpXR934V
|
||||
"2023": 0ps8aiyDzRVQWyKLJDsFeS
|
||||
edge: 1x6aj99GxYzjFBsDSfFHfI
|
||||
intro: 4ztKSleHkDZHPswqTmTa48
|
||||
pulse: 5kydFGIAX9ym3UoTki3Glm
|
||||
sound: 5YFUtJgAy2Xfly9whFZrz2
|
||||
yemeni traditional:
|
||||
name: Yemeni Traditional
|
||||
description:
|
||||
|
@ -70,8 +110,9 @@ yemeni traditional:
|
|||
country: YE
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Yemen
|
||||
popularity: 6262
|
||||
playlist_id: 1DWET41vcTWLJFAnYJHUp0
|
||||
rank: 6262
|
||||
playlists:
|
||||
sound: 1DWET41vcTWLJFAnYJHUp0
|
||||
yiddish folk:
|
||||
name: Yiddish Folk
|
||||
description:
|
||||
|
@ -82,8 +123,11 @@ yiddish folk:
|
|||
parent: folk
|
||||
language: yid
|
||||
localized_name: true
|
||||
popularity: 6085
|
||||
playlist_id: 5vKOWKIkiwTjrRpRrM96qw
|
||||
rank: 6085
|
||||
playlists:
|
||||
intro: 30X3mIra3t9D66TIrz4Cpt
|
||||
pulse: 6BXsh0EdOGzPUchnAk6MzH
|
||||
sound: 5vKOWKIkiwTjrRpRrM96qw
|
||||
yodeling:
|
||||
name: Yodeling
|
||||
description:
|
||||
|
@ -95,8 +139,15 @@ yodeling:
|
|||
parent: vocal
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Yodeling
|
||||
popularity: 2563
|
||||
playlist_id: 2SMDVBkKqnZL9AoUWaZ2qs
|
||||
rank: 2563
|
||||
playlists:
|
||||
"2020": 3rBQ13NN8DeLKbGwp99HsC
|
||||
"2021": 3eIR1nLuFSnDXJwX7x4rKe
|
||||
"2022": 2yjK86RaxVrsOVRhJ4Xk20
|
||||
"2023": 4OWAGffPUg98Ft87iJDhkw
|
||||
intro: 1Fja6pWav4eg3LPQBd7s9i
|
||||
pulse: 1Jbqb1kKq9WXSzlAtmcijt
|
||||
sound: 2SMDVBkKqnZL9AoUWaZ2qs
|
||||
yoga:
|
||||
name: Yoga
|
||||
description:
|
||||
|
@ -106,8 +157,17 @@ yoga:
|
|||
connect with their breath and body. It is often used in yoga classes, meditation
|
||||
practices, and other wellness activities.
|
||||
parent: meditation
|
||||
popularity: 4268
|
||||
playlist_id: 5cZJI7DrZ3NIWWcbPIZeWt
|
||||
rank: 4268
|
||||
playlists:
|
||||
"2019": 1Xdl0mLKCifBLiTByLIdzH
|
||||
"2020": 3ZSKcOUAcgZOoAlBGwFMPI
|
||||
"2021": 2DX8wGFe1gfQsJ2ZOX50q6
|
||||
"2022": 7jdGJBAkeCHAb90zwCgh26
|
||||
"2023": 0ssFWJ8Bp3uCrxmMll11rA
|
||||
edge: 2OtZ82HLJ7gJxeLlSD7ksE
|
||||
intro: 5AkypVsBycocK6YxbKBw0q
|
||||
pulse: 4jPPbSI3FzdcNTVYRvhnqV
|
||||
sound: 5cZJI7DrZ3NIWWcbPIZeWt
|
||||
yogyakarta indie:
|
||||
name: Yogyakarta Indie
|
||||
description:
|
||||
|
@ -117,8 +177,15 @@ yogyakarta indie:
|
|||
Yogyakarta indie artists often explore themes of social and cultural issues, making
|
||||
it a unique and thought-provoking listening experience.
|
||||
parent: indonesian indie rock
|
||||
popularity: 2132
|
||||
playlist_id: 4rIqIjgskuOmJnaX2Z8Fzx
|
||||
rank: 2132
|
||||
playlists:
|
||||
"2021": 1P4fokXxzJfhQJCcAaiuy7
|
||||
"2022": 0NjGZQkv2khLISYTQ1FewS
|
||||
"2023": 1B1yDtja9NLNS6nXJV7hDo
|
||||
edge: 2ZG0ajyzhlsQQN8ZZ2q8x9
|
||||
intro: 4WqMImNGvoTn74kclXp3lg
|
||||
pulse: 4plq6vvDZALe3GR2tGGNrB
|
||||
sound: 4rIqIjgskuOmJnaX2Z8Fzx
|
||||
yoik:
|
||||
name: Yoik
|
||||
description:
|
||||
|
@ -130,8 +197,18 @@ yoik:
|
|||
parent: folk
|
||||
region: ND
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Joik
|
||||
popularity: 5268
|
||||
playlist_id: 53pmQn6lXF6m5WViERilQF
|
||||
rank: 5268
|
||||
playlists:
|
||||
"2018": 1OISQsSZIOkrA7mwMbSpL4
|
||||
"2019": 72qasWzfdXtxpU8ofNh2RP
|
||||
"2020": 2PDnq0D3ZMmScsnWr3QS77
|
||||
"2021": 5rlucO1gj2aAVKD0wev48t
|
||||
"2022": 7wscgaVPCfYvSnN44RKqcw
|
||||
"2023": 4CVKEndDl1RYnycW9WeiBj
|
||||
edge: 4lfbSHAzy8Mf4ntfCDTmG4
|
||||
intro: 1eAEv4wZONXg1wSS3pzHRd
|
||||
pulse: 3BUJ3Cki67B0Ie3npVpiMV
|
||||
sound: 53pmQn6lXF6m5WViERilQF
|
||||
york indie:
|
||||
name: York Indie
|
||||
description:
|
||||
|
@ -142,8 +219,12 @@ york indie:
|
|||
alternative rock into their music. York indie is a vibrant and exciting genre that
|
||||
continues to evolve and push boundaries.
|
||||
parent: english indie rock
|
||||
popularity: 3625
|
||||
playlist_id: 02NPFyGAScohVgMt3JN00H
|
||||
rank: 3625
|
||||
playlists:
|
||||
"2020": 1j4WYbLpVvuygopfS4WRjl
|
||||
"2021": 4JsW3XZdZ20FkEWNIhm02v
|
||||
"2022": 5xk2QwXOPpj9jT0BRsyiYS
|
||||
sound: 02NPFyGAScohVgMt3JN00H
|
||||
yorkshire folk:
|
||||
name: Yorkshire Folk
|
||||
description:
|
||||
|
@ -153,8 +234,14 @@ yorkshire folk:
|
|||
local history and folklore, and the music has a strong sense of community and
|
||||
identity.
|
||||
parent: traditional english folk
|
||||
popularity: 5030
|
||||
playlist_id: 2mVv3SQVPJ38r4zEHm68Jy
|
||||
rank: 5030
|
||||
playlists:
|
||||
"2021": 3mPv7sebt9B9YRGBvKTRhA
|
||||
"2022": 3cdB89QJFeJCh4fH9zZTpA
|
||||
"2023": 00y9GIDRW83fRtr1mi8GYo
|
||||
intro: 1GOb8AWMBLXqXui1xgo8Je
|
||||
pulse: 3USKfe9w0mgoof0ez7F74r
|
||||
sound: 2mVv3SQVPJ38r4zEHm68Jy
|
||||
yoruba worship:
|
||||
name: Yoruba Worship
|
||||
description:
|
||||
|
@ -167,8 +254,15 @@ yoruba worship:
|
|||
language: yor
|
||||
region: WF
|
||||
localized_name: true
|
||||
popularity: 4278
|
||||
playlist_id: 4QTwi9BhTVG9Nbjo65HwZh
|
||||
rank: 4278
|
||||
playlists:
|
||||
"2021": 45WU82RpOszs3HL3hxrjkc
|
||||
"2022": 6NkVDDuuyFd5i4FYEi8QB6
|
||||
"2023": 0PCwv4PlIZBuw7jIZEsJDd
|
||||
edge: 4IxaYJRlNbHAQODNL0Amxz
|
||||
intro: 1TN27Ng0BjrFpPn3lddyS4
|
||||
pulse: 2CcqXzI6A3vqrmXLtJKPvE
|
||||
sound: 4QTwi9BhTVG9Nbjo65HwZh
|
||||
youth orchestra:
|
||||
name: Youth Orchestra
|
||||
description:
|
||||
|
@ -181,8 +275,9 @@ youth orchestra:
|
|||
parent: orchestra
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Youth_orchestra
|
||||
popularity: 6280
|
||||
playlist_id: 4SNnzqfxrI1Uh1HpOctFTT
|
||||
rank: 6280
|
||||
playlists:
|
||||
sound: 4SNnzqfxrI1Uh1HpOctFTT
|
||||
yu-mex:
|
||||
name: Yu-Mex
|
||||
description:
|
||||
|
@ -193,8 +288,15 @@ yu-mex:
|
|||
parent: world
|
||||
region: EE
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Yu-Mex
|
||||
popularity: 5071
|
||||
playlist_id: 1Frk27X8mA30Oc4wxwHDT8
|
||||
rank: 5071
|
||||
playlists:
|
||||
"2021": 1yuajYGruI16S21IntbFGr
|
||||
"2022": 7zvoKSEcFJ6gYkwPUrlliH
|
||||
"2023": 6MRTPEiewUzM028RuFLzVy
|
||||
edge: 6Q7mvDfiXdnu1HDOrqe40w
|
||||
intro: 2OlnkQAj8Z4HpFP9XDlefj
|
||||
pulse: 1aihsJ0vRzCjv3Zsyy93W0
|
||||
sound: 1Frk27X8mA30Oc4wxwHDT8
|
||||
yugoslav new wave:
|
||||
name: Yugoslav New Wave
|
||||
description:
|
||||
|
@ -207,8 +309,16 @@ yugoslav new wave:
|
|||
region: EE
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/New_wave_music_in_Yugoslavia
|
||||
popularity: 3779
|
||||
playlist_id: 5jaGOpLsE7tSbE060h8U6C
|
||||
rank: 3779
|
||||
playlists:
|
||||
"2020": 4ve4Sr2ny8GzHvygGJh4Yh
|
||||
"2021": 6zbT6y6I8IfhR3I0W6xHA4
|
||||
"2022": 45d8i80uoJNWYTssHAmPUC
|
||||
"2023": 1Wcon4NYuxNfpjzxHfyQD8
|
||||
edge: 7pyb8K0sdn25WKaGyPE6TZ
|
||||
intro: 1vrPlYzda0XzG1sLb5fmm3
|
||||
pulse: 2waa2QtXWkQZhJ4Erp11Bu
|
||||
sound: 5jaGOpLsE7tSbE060h8U6C
|
||||
yugoslav rock:
|
||||
name: Yugoslav Rock
|
||||
description:
|
||||
|
@ -221,8 +331,18 @@ yugoslav rock:
|
|||
parent: rock
|
||||
region: EE
|
||||
localized_name: true
|
||||
popularity: 1577
|
||||
playlist_id: 7KuZSebZlQto9drDc7l5tE
|
||||
rank: 1577
|
||||
playlists:
|
||||
"2018": 675BY81TbwNuBJmzvpgasg
|
||||
"2019": 1MZ6t7G7eXh9H6Un8Atcce
|
||||
"2020": 0ALQksDJxjR3ygje3qeEHj
|
||||
"2021": 743Ip6JePWjBAWjed4z7k2
|
||||
"2022": 1iVHqVOeOFNSSGWG44UdHR
|
||||
"2023": 0h054lbY8skxKoE0Sbxmiu
|
||||
edge: 7xrGpxzSEzIiOkIiITOQKL
|
||||
intro: 5pNs35CSG9fy3QxU59UThq
|
||||
pulse: 3NRqXFKe4rY1fEEbX01kKt
|
||||
sound: 7KuZSebZlQto9drDc7l5tE
|
||||
yunnan traditional:
|
||||
name: Yunnan Traditional
|
||||
description:
|
||||
|
@ -232,8 +352,9 @@ yunnan traditional:
|
|||
intricate rhythms, and haunting melodies. It is often performed during festivals and
|
||||
celebrations.
|
||||
parent: chinese folk
|
||||
popularity: 6279
|
||||
playlist_id: 19q2gA3eWnQO5eTOD6aTYv
|
||||
rank: 6279
|
||||
playlists:
|
||||
sound: 19q2gA3eWnQO5eTOD6aTYv
|
||||
yuri:
|
||||
name: Yuri
|
||||
description:
|
||||
|
@ -245,5 +366,11 @@ yuri:
|
|||
remains a defining feature.
|
||||
parent: anime
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Yuri_(genre)
|
||||
popularity: 5504
|
||||
playlist_id: 0BYoEJVB9xZjjsKMNnujN7
|
||||
rank: 5504
|
||||
playlists:
|
||||
"2021": 7ApX5Nw7sfu8tyLKYFKNvJ
|
||||
"2022": 58VXvl5nQAdEUZtfSmAPDQ
|
||||
"2023": 7zRAhWdlTR4bqtt4JEK9DY
|
||||
intro: 0FSiq4Pxv91W6UB8mJsbA9
|
||||
pulse: 6ZaiceZSPmbze1bctCSw7o
|
||||
sound: 0BYoEJVB9xZjjsKMNnujN7
|
||||
|
|
332
metadata/z.yaml
332
metadata/z.yaml
|
@ -6,8 +6,15 @@ zamba:
|
|||
the use of traditional instruments such as the guitar, bombo, and violin.
|
||||
parent: folklore argentino
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zamba_(artform)
|
||||
popularity: 2883
|
||||
playlist_id: 4BLHWGRsNFy6C64njAPdJ2
|
||||
rank: 2883
|
||||
playlists:
|
||||
"2021": 2Rvk3LDQ4Bm2jwMcfIOkGS
|
||||
"2022": 20TSjVAlQhFilRQpRRnxWG
|
||||
"2023": 6zDYNreYkYI2LsugEkbhAz
|
||||
edge: 35w7paShlAZX6uZ28lmDnZ
|
||||
intro: 47qoB5onjeSlbpOnCepwa4
|
||||
pulse: 7ofLDrEqsoxDH6VY8LBvJ6
|
||||
sound: 4BLHWGRsNFy6C64njAPdJ2
|
||||
zambian gospel:
|
||||
name: Zambian Gospel
|
||||
description:
|
||||
|
@ -19,8 +26,14 @@ zambian gospel:
|
|||
country: ZM
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zambia#Christian_Music
|
||||
popularity: 4737
|
||||
playlist_id: 2KMOd9KmWLeUbbRySGHN5j
|
||||
rank: 4737
|
||||
playlists:
|
||||
"2022": 3iOu7CmaWRRB2PKS5QUad6
|
||||
"2023": 5zus1RC2ujSYR2XDiSeWgt
|
||||
edge: 2ruCJy3NHDwxJgjzOPWAhY
|
||||
intro: 3HLqajXuWDaej9Cp5IU6OJ
|
||||
pulse: 6nP1xvV1NHMsXurvHEAJAV
|
||||
sound: 2KMOd9KmWLeUbbRySGHN5j
|
||||
zambian hip hop:
|
||||
name: Zambian Hip Hop
|
||||
description:
|
||||
|
@ -31,8 +44,16 @@ zambian hip hop:
|
|||
parent: hip hop
|
||||
country: ZM
|
||||
localized_name: true
|
||||
popularity: 3540
|
||||
playlist_id: 5ZDuKkHD8vQMIINeFsTTyu
|
||||
rank: 3540
|
||||
playlists:
|
||||
"2020": 3UbX3fwKLn0G91ZnlNQk7m
|
||||
"2021": 3XuSRcKS2EKbtojMakcb3F
|
||||
"2022": 6Croqt7C4Kgz5dnhM49XON
|
||||
"2023": 7qzsnzj0AVs3ogGXTsf56t
|
||||
edge: 4hKJh9c7N1iNsefNLcdY7K
|
||||
intro: 7z0I0DxyxXfIJ89LlLHBst
|
||||
pulse: 4FnkK0e2PC1pG3E55q7OkZ
|
||||
sound: 5ZDuKkHD8vQMIINeFsTTyu
|
||||
zambian pop:
|
||||
name: Zambian Pop
|
||||
description:
|
||||
|
@ -44,8 +65,17 @@ zambian pop:
|
|||
country: ZM
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zambia#Popular_Music
|
||||
popularity: 3620
|
||||
playlist_id: 3AxsN9foojNcuPI9OXnVIB
|
||||
rank: 3620
|
||||
playlists:
|
||||
"2019": 57YoQJKYuPTfPBrpVOE6Rr
|
||||
"2020": 4LLlhzDIE9ckZN47IVmB3m
|
||||
"2021": 5cNUrryxZTU51A6ZEhRtck
|
||||
"2022": 5vf3yYGKOGnIL95xGBYZju
|
||||
"2023": 4fIzut5yyxRDUxmv41EROZ
|
||||
edge: 0wVnk3rDL9nS6IxZFJbFKx
|
||||
intro: 2kgYmOI5UGocqb4shcALcV
|
||||
pulse: 0exQFJ6ItSWw5EigRWRdzF
|
||||
sound: 3AxsN9foojNcuPI9OXnVIB
|
||||
zampogna:
|
||||
name: Zampogna
|
||||
description:
|
||||
|
@ -58,8 +88,9 @@ zampogna:
|
|||
parent: italian folk
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zampogna
|
||||
popularity: 6260
|
||||
playlist_id: 6egS6vpB5c6raIlw1v0Nx2
|
||||
rank: 6260
|
||||
playlists:
|
||||
sound: 6egS6vpB5c6raIlw1v0Nx2
|
||||
zarzuela:
|
||||
name: Zarzuela
|
||||
description:
|
||||
|
@ -73,8 +104,12 @@ zarzuela:
|
|||
country: ES
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zarzuela
|
||||
popularity: 5535
|
||||
playlist_id: 0pMsLV9uQUZtDGyPYVIeAt
|
||||
rank: 5535
|
||||
playlists:
|
||||
"2023": 0VnwJ1lHtFODSxNS8i7383
|
||||
intro: 487GPsF0rNw71bVB15TCAB
|
||||
pulse: 6sMjpZKNFTVjngUXbbquxO
|
||||
sound: 0pMsLV9uQUZtDGyPYVIeAt
|
||||
zcc:
|
||||
name: ZCC
|
||||
description:
|
||||
|
@ -87,8 +122,15 @@ zcc:
|
|||
parent: south african gospel
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zion_Christian_Church
|
||||
popularity: 3593
|
||||
playlist_id: 4rohSjUJ1bDLU1JLCi6n7y
|
||||
rank: 3593
|
||||
playlists:
|
||||
"2021": 3X8rYAUlO77om0sxjzdlJc
|
||||
"2022": 2yX45Ke8T96o89LVmgG4Dv
|
||||
"2023": 4vkX5frnqZHYRD6FpHPYYP
|
||||
edge: 0eBwbIifUAAu40WBjSRvxi
|
||||
intro: 4WH8z60xovUbfdFMmmGAPD
|
||||
pulse: 3UaUMUEzfShRFPOn5Dxk92
|
||||
sound: 4rohSjUJ1bDLU1JLCi6n7y
|
||||
zen:
|
||||
name: Zen
|
||||
description:
|
||||
|
@ -96,8 +138,17 @@ zen:
|
|||
Japanese music, ambient sounds, and natural sounds like waterfalls and birds. Zen
|
||||
music is perfect for relaxation, yoga, and meditation.
|
||||
parent: meditation
|
||||
popularity: 2995
|
||||
playlist_id: 7y2Av5WgZgD7jSuQZu6M7n
|
||||
rank: 2995
|
||||
playlists:
|
||||
"2019": 2l0VoqIvjuZuVkLCeBoPEP
|
||||
"2020": 0wUnoAJw3KRc7HHFkantle
|
||||
"2021": 3x8QnQlcH5qJORKkF4xDNB
|
||||
"2022": 50WbGfr58fBW6mxXFshMPv
|
||||
"2023": 2nsvWEwvoYl2WZbjVZPWth
|
||||
edge: 3vuv8UPBFdo3EggX2C0okq
|
||||
intro: 11tUZm4YxxppZ7EAvrZo1n
|
||||
pulse: 5dvRDWB92mMAq54KDPLsRS
|
||||
sound: 7y2Av5WgZgD7jSuQZu6M7n
|
||||
zenonesque:
|
||||
name: Zenonesque
|
||||
description:
|
||||
|
@ -105,8 +156,15 @@ zenonesque:
|
|||
calming and meditative qualities of Zen music. Zenonesque music is characterized by
|
||||
its slow and hypnotic beats, intricate melodies, and atmospheric soundscapes.
|
||||
parent: psychedelic trance
|
||||
popularity: 4698
|
||||
playlist_id: 1RbpXfjqUTf9iKExXjr2jp
|
||||
rank: 4698
|
||||
playlists:
|
||||
"2021": 720pwhb3p5EeaY3o1WRnWS
|
||||
"2022": 1qHUpBueHrlwwwqC7f9Fh2
|
||||
"2023": 2k6BPE0D0ZUPg6cfkwTSV6
|
||||
edge: 1KaH8nzzfXjj2yUVEZxhFH
|
||||
intro: 2ajoGJJHd5zySHK8aXdCCn
|
||||
pulse: 1b2042iJe3pIuYv5ueHIow
|
||||
sound: 1RbpXfjqUTf9iKExXjr2jp
|
||||
zespol dzieciecy:
|
||||
name: Zespol Dziecięcy
|
||||
description:
|
||||
|
@ -119,8 +177,15 @@ zespol dzieciecy:
|
|||
language: pol
|
||||
country: PL
|
||||
localized_name: true
|
||||
popularity: 2634
|
||||
playlist_id: 66IvXQyzUNEalJnbyvSb6d
|
||||
rank: 2634
|
||||
playlists:
|
||||
"2020": 5cBNyYf78FFoWf2dIFlDpU
|
||||
"2021": 1wYhvFsDVbJoIrMo4s3s98
|
||||
"2023": 4iUjVjqCFboU8LCjcFdpAj
|
||||
edge: 75JfKyqPVO2pUJvMzywKfh
|
||||
intro: 5GAFL1KNAcy82IOpzPCTgV
|
||||
pulse: 6k4bTEUvma1MqH1tR0AuWL
|
||||
sound: 66IvXQyzUNEalJnbyvSb6d
|
||||
zeuhl:
|
||||
name: Zeuhl
|
||||
description:
|
||||
|
@ -132,8 +197,12 @@ zeuhl:
|
|||
language: fra
|
||||
country: FR
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zeuhl
|
||||
popularity: 5627
|
||||
playlist_id: 2PvNMMgIu3xbKLuMBU8RlE
|
||||
rank: 5627
|
||||
playlists:
|
||||
"2023": 6XBWUpUMUH6VxFfHGigFXt
|
||||
intro: 2NyVgNk2UuJlOPNTSaqRUb
|
||||
pulse: 5sc0zJyYQn5ZS5U57uSnrF
|
||||
sound: 2PvNMMgIu3xbKLuMBU8RlE
|
||||
zhenskiy rep:
|
||||
name: Zhenskiy Rep
|
||||
description:
|
||||
|
@ -144,8 +213,14 @@ zhenskiy rep:
|
|||
music and uses a mix of Russian and English lyrics.
|
||||
parent: russian hip hop
|
||||
localized_name: true
|
||||
popularity: 1453
|
||||
playlist_id: 4lCP4GdpJDW6u6vgUu3aGd
|
||||
rank: 1453
|
||||
playlists:
|
||||
"2022": 5xGOpH3IE89pQH3NHEL66z
|
||||
"2023": 2D9xYURZIZmCiULfDKPHVF
|
||||
edge: 6i8m8Edo5TbVFFusCOc0hQ
|
||||
intro: 2xYJNvLLLtK7pvh68pwo46
|
||||
pulse: 2gokIQZ5rA1w2aELLO0fxT
|
||||
sound: 4lCP4GdpJDW6u6vgUu3aGd
|
||||
zhongguo feng:
|
||||
name: Zhongguo Feng
|
||||
description:
|
||||
|
@ -156,8 +231,16 @@ zhongguo feng:
|
|||
genre has become increasingly popular in recent years and has produced many
|
||||
successful artists in China.
|
||||
parent: c-pop
|
||||
popularity: 1048
|
||||
playlist_id: 7f7A3WaMDLcAHyTwxT5hK8
|
||||
rank: 1048
|
||||
playlists:
|
||||
"2020": 7ufqtvKQahEObK1hyoCywQ
|
||||
"2021": 6KZvo6aNkvJM57QeV1dEdl
|
||||
"2022": 6nky7fwmdkGLvus1Z1GG9H
|
||||
"2023": 3rZ5vAiPOcnV6xgTXmMrs5
|
||||
edge: 35CpSgxpTZYA8tT0cLr2iF
|
||||
intro: 63c1MUz8cwOvwqcH7jLy4z
|
||||
pulse: 4zwGynt6z1yQaPst1EbmD8
|
||||
sound: 7f7A3WaMDLcAHyTwxT5hK8
|
||||
zikir:
|
||||
name: Zikir
|
||||
description:
|
||||
|
@ -167,8 +250,16 @@ zikir:
|
|||
participants.
|
||||
parent: islamic
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Dhikr
|
||||
popularity: 2648
|
||||
playlist_id: 2QusAPixVAakbqYcK087KN
|
||||
rank: 2648
|
||||
playlists:
|
||||
"2020": 6JMKDG7musLNXNUaweF0mB
|
||||
"2021": 3tU92vD3DMFHfJ90hdPn2R
|
||||
"2022": 7d2ou7lr9Wt1k39KAI8tEU
|
||||
"2023": 4WJZaqnBx5sBoe9TrTBQjJ
|
||||
edge: 66ut1Xwgj2keW72rzMOHhM
|
||||
intro: 4hlv1e1lv0rIVaP0OPUYGr
|
||||
pulse: 1IHi9ftWEV1oEKlq62oYvW
|
||||
sound: 2QusAPixVAakbqYcK087KN
|
||||
zilizopendwa:
|
||||
name: Zilizopendwa
|
||||
description:
|
||||
|
@ -178,8 +269,14 @@ zilizopendwa:
|
|||
melodies, relatable lyrics, and danceable beats that still resonate with audiences
|
||||
today.
|
||||
parent: afropop
|
||||
popularity: 3270
|
||||
playlist_id: 6ZjTAVi7EIot1EPgaxoyO5
|
||||
rank: 3270
|
||||
playlists:
|
||||
"2022": 7a2R9u6R8NfvDlbmAcai2v
|
||||
"2023": 4xpPnkC3Xku1JAucNTeYn9
|
||||
edge: 57sUXlvp2wKvTIe1du6Mpq
|
||||
intro: 7nnQpO1z3Z800P0Kt9u1LR
|
||||
pulse: 67kgGxLGxHS0VsEd6VtgGK
|
||||
sound: 6ZjTAVi7EIot1EPgaxoyO5
|
||||
zillertal:
|
||||
name: Zillertal
|
||||
description:
|
||||
|
@ -192,8 +289,18 @@ zillertal:
|
|||
language: deu
|
||||
country: AT
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zillertal#Culture
|
||||
popularity: 3075
|
||||
playlist_id: 1fzcR3U9cUpJm92J14ThFS
|
||||
rank: 3075
|
||||
playlists:
|
||||
"2018": 3Zz6BY5tE5rdDTknAXnkp5
|
||||
"2019": 5ItywednyP3E78pIOaa62C
|
||||
"2020": 6ivJQtHAyX9kF1IFZTNtjY
|
||||
"2021": 3C6jQHUmooxToZ7tKuxaag
|
||||
"2022": 6cZTfkGzHV0JhNbSNzKvQ3
|
||||
"2023": 3CcjO11Bc5lXM9h6Jam7AE
|
||||
edge: 042ILS5629PdI1mZV9UChV
|
||||
intro: 08FFaeJdASSvPBHQjmKEmd
|
||||
pulse: 4Eu3wk3VL09qRr1izf7ZHI
|
||||
sound: 1fzcR3U9cUpJm92J14ThFS
|
||||
zim gospel:
|
||||
name: Zim Gospel
|
||||
description:
|
||||
|
@ -206,8 +313,16 @@ zim gospel:
|
|||
country: ZW
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zimbabwe#Gospel
|
||||
popularity: 4538
|
||||
playlist_id: 1EfJDym7urLaa1hpi6TFwr
|
||||
rank: 4538
|
||||
playlists:
|
||||
"2020": 3hYQsZwU4BI5z8Sy8vdTki
|
||||
"2021": 4bIhaI6Sm1zShiIkdtp9J5
|
||||
"2022": 6k0RtBHM3Owu1CrXrBrZTY
|
||||
"2023": 2aNwIz6RVLVhxqO6p9cqV8
|
||||
edge: 1XVpDNtEFAfCB6GTHybvqk
|
||||
intro: 56zpApJqmeWrfgShohTAey
|
||||
pulse: 7fu5FIXkVy5rCtm2IUOuHN
|
||||
sound: 1EfJDym7urLaa1hpi6TFwr
|
||||
zim hip hop:
|
||||
name: Zim Hip Hop
|
||||
description:
|
||||
|
@ -220,8 +335,16 @@ zim hip hop:
|
|||
country: ZW
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zimbabwean_hip_hop
|
||||
popularity: 3834
|
||||
playlist_id: 25zL0DjNC6mr6qB3F5iSWK
|
||||
rank: 3834
|
||||
playlists:
|
||||
"2020": 24b8mg5vsBHQ2eGXZOcOUn
|
||||
"2021": 6VHbP8KZjpa2GWRwbo1zsV
|
||||
"2022": 1pdA6Dy27QccMkkgQ1yhbZ
|
||||
"2023": 71UaS6t1PQmRe5YSNbdvVU
|
||||
edge: 69hDKr8sCkhrXYDZG1ZWC3
|
||||
intro: 02547sBomc5SVzoJFH2aa2
|
||||
pulse: 6z82ryN1gkKz2x2VGBzSvq
|
||||
sound: 25zL0DjNC6mr6qB3F5iSWK
|
||||
zim urban groove:
|
||||
name: Zim Urban Groove
|
||||
description:
|
||||
|
@ -233,8 +356,16 @@ zim urban groove:
|
|||
country: ZW
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zimbabwe#Urban_Grooves
|
||||
popularity: 3710
|
||||
playlist_id: 54WupWz7dqaSAZvIv91ksb
|
||||
rank: 3710
|
||||
playlists:
|
||||
"2020": 64922zKn4Jscvry7SJiQ06
|
||||
"2021": 69uVwpL5GeOSvsCdE2Hmu2
|
||||
"2022": 5u4HQQ316JsDq8PJQuxNcZ
|
||||
"2023": 4Jps0bn9KewVijyCOQk3LS
|
||||
edge: 2LF8S6bOaYsuIQQZWftFjX
|
||||
intro: 1S7IzlN0LuZEAJwspC8eWA
|
||||
pulse: 1mqSJ5mkbkvixlEqEuEqoh
|
||||
sound: 54WupWz7dqaSAZvIv91ksb
|
||||
zimdancehall:
|
||||
name: Zimdancehall
|
||||
description:
|
||||
|
@ -245,8 +376,18 @@ zimdancehall:
|
|||
parent: dancehall
|
||||
country: ZW
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zimdancehall
|
||||
popularity: 3162
|
||||
playlist_id: 2K3BDsbnwwsJClbZqOQztK
|
||||
rank: 3162
|
||||
playlists:
|
||||
"2018": 0rK39a5IGanOK9c8lJINoq
|
||||
"2019": 6p3Hrbjiv4tFE8iY8LpXyr
|
||||
"2020": 31yG4G1Upt1cuKkeO6lEn1
|
||||
"2021": 6PwXgUYpnQ6RWdi9z5X6NO
|
||||
"2022": 2vJqmoZfR26RneS32ImuZe
|
||||
"2023": 4N5dmpdxW7Mucz5OYhykFN
|
||||
edge: 4MhGYYmqYhLYzyxq9Sdnki
|
||||
intro: 3TpEglsUsYM5IsM27aNEJJ
|
||||
pulse: 5CagSlELd59f52LTLwMMz0
|
||||
sound: 2K3BDsbnwwsJClbZqOQztK
|
||||
zither:
|
||||
name: Zither
|
||||
description:
|
||||
|
@ -258,8 +399,12 @@ zither:
|
|||
parent: instrument
|
||||
localized_name: true
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zither
|
||||
popularity: 5754
|
||||
playlist_id: 6bpwGHlRRLkVqfmOpqfmvx
|
||||
rank: 5754
|
||||
playlists:
|
||||
"2022": 6xy9uDTfq44ivFRhQcrJH3
|
||||
intro: 4V0ZPlaG9nxM3JiKGbkl6n
|
||||
pulse: 2OU1OJADxPsF5iiBuJVx7n
|
||||
sound: 6bpwGHlRRLkVqfmOpqfmvx
|
||||
zohioliin duu:
|
||||
name: Zohioliin Duu
|
||||
description:
|
||||
|
@ -269,14 +414,28 @@ zohioliin duu:
|
|||
(two-stringed lute). The lyrics of zohioliin duu songs are typically focused on
|
||||
themes of love, nature, and the beauty of the Mongolian landscape.
|
||||
parent: mongolian folk
|
||||
popularity: 5946
|
||||
playlist_id: 7HNLEMjbJjqPCGK6AXxAqa
|
||||
rank: 5946
|
||||
playlists:
|
||||
"2022": 1dpgPyHehxIWlIjdBcqy6m
|
||||
"2023": 58Kuv7GpNKCN1E1gE9CHtF
|
||||
intro: 1SGagj87XH8ExbnlJM0SYW
|
||||
pulse: 6QvVhD2WBnuX2td2VAP3ZV
|
||||
sound: 7HNLEMjbJjqPCGK6AXxAqa
|
||||
zolo:
|
||||
name: Zolo
|
||||
description: ""
|
||||
parent: experimental
|
||||
popularity: 811
|
||||
playlist_id: 1HDK9LHAXjMQEbEhh9Lbfa
|
||||
rank: 811
|
||||
playlists:
|
||||
"2019": 3PDHEexZuRc6fq5XvGedRV
|
||||
"2020": 686Whkq0YH2IRPecz75V5L
|
||||
"2021": 4GIJE0z1QE4pchaTEnTlsx
|
||||
"2022": 6JFnEO06HdsJa4t2veYwrx
|
||||
"2023": 5c9C1OBA8xjWsixxrlKJQb
|
||||
edge: 3UzMRlqF46hXh7XAapxmOD
|
||||
intro: 5ePODnANEVIrPu0NNLu8sF
|
||||
pulse: 17eVQDI3bYXdCxcX697iPB
|
||||
sound: 1HDK9LHAXjMQEbEhh9Lbfa
|
||||
zomi pop:
|
||||
name: Zomi Pop
|
||||
description:
|
||||
|
@ -286,8 +445,13 @@ zomi pop:
|
|||
throughout Southeast Asia.
|
||||
parent: pop
|
||||
country: MM
|
||||
popularity: 6003
|
||||
playlist_id: 6OIvf4qxX3DEeobwlpRBHq
|
||||
rank: 6003
|
||||
playlists:
|
||||
"2023": 6EXSWHGXwLM2Y18USSYX39
|
||||
edge: 5PMaKavtXKwpM1MsnAhfso
|
||||
intro: 60raCdyp8P4kq5hkglgzj7
|
||||
pulse: 6UIBQPVBz1gbDbJt0SfoE7
|
||||
sound: 6OIvf4qxX3DEeobwlpRBHq
|
||||
zouglou:
|
||||
name: Zouglou
|
||||
description:
|
||||
|
@ -299,8 +463,18 @@ zouglou:
|
|||
language: fra
|
||||
country: CI
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zouglou
|
||||
popularity: 2500
|
||||
playlist_id: 7kGA6YnBYlU3HplyYp9buA
|
||||
rank: 2500
|
||||
playlists:
|
||||
"2018": 5FsUOhIk6QVRg0CBtEXPq2
|
||||
"2019": 70oLdRAIIn0pZkYmwPC6rQ
|
||||
"2020": 6CNEU3ejJsduYZgTNSShIa
|
||||
"2021": 5pfE821otW9ICjpx2ghEcu
|
||||
"2022": 11aB5VVtLFBIrlm3MVnLoC
|
||||
"2023": 4ELJec1VjGG2eWIn7CXorL
|
||||
edge: 54MJVo9n1D7I5IeY5R0R95
|
||||
intro: 68LPqL3IGQ4yauemWERGWK
|
||||
pulse: 1CYBaeISwXShTdVDWcFGcy
|
||||
sound: 7kGA6YnBYlU3HplyYp9buA
|
||||
zouk:
|
||||
name: Zouk
|
||||
description:
|
||||
|
@ -310,8 +484,18 @@ zouk:
|
|||
elements of other genres like reggae and salsa.
|
||||
parent: musique guadeloupe
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zouk
|
||||
popularity: 1958
|
||||
playlist_id: 7mNGeqFpLOFebS0QrGXU2N
|
||||
rank: 1958
|
||||
playlists:
|
||||
"2018": 5DU4EXai3fpwYHihwh0y0P
|
||||
"2019": 53RjCxMQo1hWWaKfNtHPD6
|
||||
"2020": 2esOhj56bgf2dMA3l8Va8N
|
||||
"2021": 0SnEWSuCsRCFlqrca3YCfg
|
||||
"2022": 7jhFPhSLwMUV4ZXmu3TgD2
|
||||
"2023": 0Sp7KYyTUrsYcIFnIVQmBr
|
||||
edge: 5WaiDRbwkjd02KCZy0H2wR
|
||||
intro: 0uvJdpoV7slyBgaOvXh5d4
|
||||
pulse: 2vLRmflO4amJkZB4lRVMSv
|
||||
sound: 7mNGeqFpLOFebS0QrGXU2N
|
||||
zouk riddim:
|
||||
name: Zouk Riddim
|
||||
description:
|
||||
|
@ -321,8 +505,18 @@ zouk riddim:
|
|||
dancing.
|
||||
parent: zouk
|
||||
country: JM
|
||||
popularity: 1980
|
||||
playlist_id: 6vkcfCa0G2qHz5CogrViSl
|
||||
rank: 1980
|
||||
playlists:
|
||||
"2018": 2SoAWd2BYOOkRp9g7wwVLM
|
||||
"2019": 7MeYNDMYrUPm5Hy3ITczLu
|
||||
"2020": 3yrC9d9pnijjZ0bLSG4W4q
|
||||
"2021": 6CH7izBLCWI9n3KVywf1HV
|
||||
"2022": 1dvnLAn964SgQu8bA8Cr5G
|
||||
"2023": 4a2vTmwipDZDsmGMZe0Axh
|
||||
edge: 30S8Kvds1Te0JkjPRRrJKR
|
||||
intro: 1CNCH5VugAdNhPOMvVlJGm
|
||||
pulse: 76gyWS1NrryGTvpwruvo1I
|
||||
sound: 6vkcfCa0G2qHz5CogrViSl
|
||||
zurich indie:
|
||||
name: Zürich Indie
|
||||
description:
|
||||
|
@ -334,8 +528,9 @@ zurich indie:
|
|||
recognition.
|
||||
parent: swiss indie
|
||||
localized_name: true
|
||||
popularity: 4285
|
||||
playlist_id: 0jNHdwA4dCJkYmPBHlt4r2
|
||||
rank: 4285
|
||||
playlists:
|
||||
sound: 0jNHdwA4dCJkYmPBHlt4r2
|
||||
zxc:
|
||||
name: ZXC
|
||||
description:
|
||||
|
@ -344,8 +539,15 @@ zxc:
|
|||
forceful drum beats. The genre is frequently linked to video game soundtracks and
|
||||
has been featured in numerous popular video games.
|
||||
parent: electropop
|
||||
popularity: 2039
|
||||
playlist_id: 3mOVijfpf6hU4gDCabCU5G
|
||||
rank: 2039
|
||||
playlists:
|
||||
"2021": 3xOmLd3J8BSwVfYbSmDeyD
|
||||
"2022": 5YAkW4WPyeOPU9fItmRfJp
|
||||
"2023": 1OcUB3XMJufkkv9P9k0zMz
|
||||
edge: 2iVdQGDx9mO3nYGTtGBQhg
|
||||
intro: 1DXgXe8y7Nn5K83pD15Wjj
|
||||
pulse: 4q3n9ocSYCUoOsz6fu5xZM
|
||||
sound: 3mOVijfpf6hU4gDCabCU5G
|
||||
zydeco:
|
||||
name: Zydeco
|
||||
description:
|
||||
|
@ -359,5 +561,15 @@ zydeco:
|
|||
language: lou
|
||||
country: US
|
||||
wikipedia_url: https://en.wikipedia.org/wiki/Zydeco
|
||||
popularity: 4215
|
||||
playlist_id: 1BsskTfK2Sfg5mJI1o4MGr
|
||||
rank: 4215
|
||||
playlists:
|
||||
"2018": 7m6MCXApdlaQAXpe83k5rR
|
||||
"2019": 0HDIO7iTO3TbyFkVxCa8L3
|
||||
"2020": 7CphmAIzRkBS3TwZWZm5Pb
|
||||
"2021": 6nnU5IihvSaCUkeNMvfxKM
|
||||
"2022": 4ih0fWzVDugG5rpa1qN5dp
|
||||
"2023": 3Ac1ZDn50hwrdH8kFWzm5r
|
||||
edge: 2sF6CWRdg9nWSryFtGgn8B
|
||||
intro: 7wd1Omc54DAQOZ4e0yminR
|
||||
pulse: 4Bwa4ju96NQmXOQMw3gPVN
|
||||
sound: 1BsskTfK2Sfg5mJI1o4MGr
|
||||
|
|
|
@ -79,15 +79,34 @@
|
|||
"description": "Wikidata entity ID of the genre",
|
||||
"type": "integer"
|
||||
},
|
||||
"popularity": {
|
||||
"rank": {
|
||||
"description": "Position in the popularity ranking (1: most popular)",
|
||||
"type": "number",
|
||||
"minimum": 1
|
||||
},
|
||||
"playlist_id": {
|
||||
"description": "Spotify genre playlist ID",
|
||||
"playlists": {
|
||||
"description": "Spotify playlist IDs",
|
||||
"propertyNames": {
|
||||
"description": "Playlist kind",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"sound",
|
||||
"intro",
|
||||
"pulse",
|
||||
"edge",
|
||||
"2018",
|
||||
"2019",
|
||||
"2020",
|
||||
"2021",
|
||||
"2022",
|
||||
"2023"
|
||||
]
|
||||
},
|
||||
"additionalProperties": {
|
||||
"description": "Spotify playlist ID",
|
||||
"type": "string",
|
||||
"pattern": "^[A-z0-9]{22}$"
|
||||
}
|
||||
},
|
||||
"alias": {
|
||||
"description": "Genre ID this genre is an alias of",
|
||||
|
|
Loading…
Reference in a new issue