Compare commits

...

2 commits

Author SHA1 Message Date
685038279e add playlist IDs from previous years 2023-11-13 00:01:48 +01:00
06d8885c33 feat: add playlist IDs of different types 2023-11-12 23:25:41 +01:00
32 changed files with 56520 additions and 12635 deletions

View file

@ -1,6 +1,7 @@
""" """
Store the fetched genre info (everynoise_genres.json) in the metadata files. Store the fetched genre info (everynoise_genres.json) in the metadata files.
""" """
import asyncio
import argparse import argparse
import os import os
import sys import sys
@ -10,17 +11,15 @@ import dataclasses
from pathlib import Path from pathlib import Path
from typing import Dict from typing import Dict
import aiohttp
from aiostream import stream, pipe
from bs4 import BeautifulSoup
from dotenv import load_dotenv from dotenv import load_dotenv
import spotify
import yaml import yaml
import model import model
import util
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 genre_letter(id: str) -> str: def genre_letter(id: str) -> str:
@ -30,8 +29,9 @@ def genre_letter(id: str) -> str:
return "0" return "0"
def group_genres(genre_data: Dict[str, model.GenreMetadata]) -> Dict[ def group_genres(
str, Dict[str, model.GenreMetadata]]: genre_data: Dict[str, model.GenreMetadata]
) -> Dict[str, Dict[str, model.GenreMetadata]]:
"""Group genres by their first letter""" """Group genres by their first letter"""
grouped_genres = dict() grouped_genres = dict()
for genre_id, genre in genre_data.items(): 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(): def genres_to_meta():
with open(GENRE_FILE) as f: with open(util.GENRE_FILE) as f:
genre_dict = json.load(f) genre_dict = json.load(f)
genre_data = model.load_genre_dict(genre_dict) genre_data = model.load_genre_dict(genre_dict)
@ -51,7 +51,7 @@ def genres_to_meta():
for lt, lt_genres in grouped_genres.items(): for lt, lt_genres in grouped_genres.items():
# Load stored metadata # Load stored metadata
md_path = METADATA_DIR / f"{lt}.yaml" md_path = util.METADATA_DIR / f"{lt}.yaml"
stored_genres = dict() stored_genres = dict()
if md_path.is_file(): if md_path.is_file():
with md_path.open() as f: with md_path.open() as f:
@ -78,29 +78,15 @@ def genres_to_meta():
model.store_genres_yaml(md_path, stored_genres) 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]): def write_meta(metadata: Dict[str, model.GenreMetadata]):
grouped_metadata = group_genres(metadata) grouped_metadata = group_genres(metadata)
for lt, genres in grouped_metadata.items(): 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) model.store_genres_yaml(md_path, genres)
def migrate_meta(): def migrate_meta():
metadata = read_meta() metadata = util.read_meta()
mig_metadata = dict() mig_metadata = dict()
unknown_refs = set() unknown_refs = set()
@ -132,7 +118,7 @@ def migrate_meta():
def remove_deprecated(): def remove_deprecated():
metadata = read_meta() metadata = util.read_meta()
def flt(itm): def flt(itm):
genre = itm[1] genre = itm[1]
@ -146,7 +132,7 @@ def remove_deprecated():
def validate(): def validate():
metadata = read_meta() metadata = util.read_meta()
n_err = 0 n_err = 0
unknown_refs = set() unknown_refs = set()
@ -159,7 +145,9 @@ def validate():
g = metadata.get(ref) g = metadata.get(ref)
if g: if g:
if g.alias: 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 False
return True return True
else: else:
@ -185,16 +173,23 @@ def validate():
def make_translations(): def make_translations():
metadata = read_meta() metadata = util.read_meta()
translations = {genre_id: genre.name for genre_id, genre in metadata.items() if not genre.alias} translations = {
with open(TRANSLATION_FILE, "w") as f: genre_id: genre.name
json.dump(translations, f, ensure_ascii=False, sort_keys=True, indent=2) 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") f.write("\n")
for filename in os.listdir(TRANSLATION_DIR): for filename in os.listdir(util.TRANSLATION_DIR):
if filename == "_meta.yaml": if filename == "_main.json":
continue continue
tl_path = TRANSLATION_DIR / filename tl_path = util.TRANSLATION_DIR / filename
with open(tl_path) as f: with open(tl_path) as f:
tl = json.load(f) tl = json.load(f)
modified = False modified = False
@ -209,9 +204,9 @@ def make_translations():
def list_genres(limit=None): 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) translation = json.load(f)
roots = [] roots = []
@ -232,7 +227,7 @@ def list_genres(limit=None):
# children = [genre_id for genre_id, genre in metadata.items() if genre.parent == p] # children = [genre_id for genre_id, genre in metadata.items() if genre.parent == p]
for genre_id, genre in metadata.items(): for genre_id, genre in metadata.items():
if genre.parent == p: if genre.parent == p:
subtree[translation[genre_id]] = mkt(genre_id, lvl+1) subtree[translation[genre_id]] = mkt(genre_id, lvl + 1)
return subtree return subtree
for r in roots: for r in roots:
@ -243,7 +238,7 @@ def list_genres(limit=None):
def find_missing_lang(): def find_missing_lang():
metadata = read_meta() metadata = util.read_meta()
# English/multilingual countries # English/multilingual countries
skip_countries = { skip_countries = {
@ -253,7 +248,7 @@ def find_missing_lang():
"GM", "DM", "BW", "BI", "GD", "ML", "TT", "BB" "GM", "DM", "BW", "BI", "GD", "ML", "TT", "BB"
} }
skip_parents = { "instrument", "indigenous" } skip_parents = {"instrument", "indigenous"}
for genre_id, genre in metadata.items(): for genre_id, genre in metadata.items():
if genre.country and not genre.country in skip_countries and not genre.parent in skip_parents: 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(): def check_localized_name():
metadata = read_meta() metadata = util.read_meta()
for genre_id, genre in metadata.items(): for genre_id, genre in metadata.items():
lang = genre.language lang = genre.language
@ -286,37 +281,145 @@ def new_translation(new_file: Path, capitalize: bool):
Create a new translation file with the untranslatable items Create a new translation file with the untranslatable items
already filled in already filled in
""" """
metadata = read_meta() with open(util.TRANSLATION_FILE_EN) as f:
with open(TRANSLATION_FILE_EN) as f:
en_tl: Dict[str, str] = json.load(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() new_tl = dict()
upper_pattern = re.compile(r"(?<=[ \-])[a-z](?=[a-z])") upper_pattern = re.compile(r"(?<=[ \-])[a-z](?=[a-z])")
for key, te in en_tl.items(): for key, english in en_tl.items():
genre = metadata[key] german = de_tl[key]
english_upper = english
if not genre.localized_name and not "(" in te and not "traditional" in te.lower(): for m in upper_pattern.finditer(english_upper):
nval = te
if capitalize:
for m in upper_pattern.finditer(nval):
s = m.start(0) s = m.start(0)
nval = nval[:s] + nval[s].upper() + nval[s+1:] english_upper = english_upper[:s] + english_upper[s].upper(
new_tl[key] = nval ) + 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: with open(new_file, "w") as f:
json.dump(new_tl, f, ensure_ascii=False, sort_keys=True, indent=2) json.dump(new_tl, f, ensure_ascii=False, sort_keys=True, indent=2)
f.write("\n") 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__": if __name__ == "__main__":
load_dotenv() load_dotenv()
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("op", type=str, help="Operation") parser.add_argument("op", type=str, help="Operation")
parser.add_argument("--limit", type=int, help="Limit", default=None, required=False) parser.add_argument("--limit",
parser.add_argument("--file", type=Path, help="Limit", default=None, required=False) 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() args = parser.parse_args()
if args.op == "genres2meta": if args.op == "genres2meta":
@ -333,5 +436,9 @@ if __name__ == "__main__":
new_translation(args.file, True) new_translation(args.file, True)
elif args.op == "checkln": elif args.op == "checkln":
check_localized_name() 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: else:
sys.exit(2) sys.exit(2)

View file

@ -16,18 +16,12 @@ import aiohttp
from aiostream import stream, pipe from aiostream import stream, pipe
import model import model
import util
EVERYNOISE_URL = "https://everynoise.com/everynoise1d.cgi?vector=popularity&scope=all" EVERYNOISE_URL = "https://everynoise.com/everynoise1d.cgi?vector=popularity&scope=all"
GENRE_FILE = "everynoise_genres.json" 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 def get_genres():
async with aiohttp.ClientSession() as session: async with aiohttp.ClientSession() as session:
async with session.get(EVERYNOISE_URL) as response: async with session.get(EVERYNOISE_URL) as response:
@ -49,7 +43,7 @@ async def get_genres():
popularity = int(row.find("td").string) popularity = int(row.find("td").string)
pl_link = row.find("a", {"target": "spotify"}) 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:") "https://embed.spotify.com/?uri=spotify:playlist:")
genre_link = row.find("a", genre_link = row.find("a",
{ {
@ -63,7 +57,7 @@ async def get_genres():
# Fetch genre name from Spotify # Fetch genre name from Spotify
pl_data = await client.http.get_playlist(pl_id, fields=["name"]) 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, genre_data[genre_id] = model.GenreMetadata(genre_name,
playlist_id=pl_id, playlist_id=pl_id,

View file

@ -32,8 +32,9 @@ class GenreMetadata:
localized_name: Optional[bool] = None localized_name: Optional[bool] = None
wikipedia_url: Optional[str] = None wikipedia_url: Optional[str] = None
wikidata_id: Optional[int] = None wikidata_id: Optional[int] = None
popularity: Optional[int] = None rank: Optional[int] = None
playlist_id: Optional[str] = None playlist_id: Optional[str] = None
playlists: Optional[Dict[str, str]] = None
alias: Optional[str] = None alias: Optional[str] = None
deprecated: Optional[bool] = None deprecated: Optional[bool] = None
metagenre: Optional[bool] = None metagenre: Optional[bool] = None

47
genres/util.py Normal file
View 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)

View file

@ -8,8 +8,13 @@
parent: uk garage parent: uk garage
wikipedia_url: https://en.wikipedia.org/wiki/2-step_garage wikipedia_url: https://en.wikipedia.org/wiki/2-step_garage
wikidata_id: 1751409 wikidata_id: 1751409
popularity: 3715 rank: 3715
playlist_id: 3YOSwaEFJsA3fbYH8lArkR playlists:
"2023": 4O242UZweUZ7S9wmDvxiEp
edge: 7xqAm3evGeotzSNWqgpgbU
intro: 7hqqWzw23Hmbw67hp8BPKN
pulse: 3JSwdgeMJJoD0Y0z3AwczS
sound: 3YOSwaEFJsA3fbYH8lArkR
21st century classical: 21st century classical:
name: 21st Century Classical name: 21st Century Classical
description: description:
@ -21,8 +26,17 @@
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/21st-century_classical_music wikipedia_url: https://en.wikipedia.org/wiki/21st-century_classical_music
wikidata_id: 4631020 wikidata_id: 4631020
popularity: 2437 rank: 2437
playlist_id: 2HUpNZLoYHe0Sa9dglqQOg playlists:
"2019": 70FdGcqZAMGnQ8cIE4OQZq
"2020": 6vWyCmjP0OY2nBSK7kSTXo
"2021": 4rEFotvPMureiXTfgQJajM
"2022": 0ZA8FJ3NZGtsQu4zZ6MFUC
"2023": 2hSUx0szcSZHdeIqmHCgNK
edge: 6vXmXiiR3ATnrC3P0opPx5
intro: 7wdDcoVCJoZYoUGZ8yBJ4w
pulse: 7cVjeKbwzoQOnbn0Zd3t8B
sound: 2HUpNZLoYHe0Sa9dglqQOg
432hz: 432hz:
name: 432Hz name: 432Hz
description: description:
@ -34,8 +48,16 @@
parent: meditation parent: meditation
wikipedia_url: https://en.wikipedia.org/wiki/Scientific_pitch wikipedia_url: https://en.wikipedia.org/wiki/Scientific_pitch
wikidata_id: 17087764 wikidata_id: 17087764
popularity: 3209 rank: 3209
playlist_id: 5qQLE1iuD3CKOEXIb0fi7Z playlists:
"2020": 0AqosdJ3M7pMv52okCF0Rh
"2021": 3B60gl1JExbz2Uu7aIxwPJ
"2022": 6JvAila6APnRtJnCAyS6CO
"2023": 4DcFGzPanZDbICFl5bV2ps
edge: 4JPWXlNL2douhtdT9KSdtL
intro: 5f4DZVPGQBMiCVNuIuaBmu
pulse: 03JB7KqVuC3sFTIrSCI21V
sound: 5qQLE1iuD3CKOEXIb0fi7Z
48g: 48g:
name: 48G name: 48G
description: description:
@ -47,8 +69,16 @@
parent: j-pop girl group parent: j-pop girl group
wikipedia_url: https://en.wikipedia.org/wiki/AKB48_Group wikipedia_url: https://en.wikipedia.org/wiki/AKB48_Group
wikidata_id: 42742220 wikidata_id: 42742220
popularity: 3128 rank: 3128
playlist_id: 4GhzIuuhKmoxP4WMDukGhR playlists:
"2020": 0LukbPqHCglGwvAkMp5CmA
"2021": 5eHaQCbu6wHNVrQE9h9XEw
"2022": 6IWUwj1fUTp8d2kXIhC9cC
"2023": 4IYTur8JekCowXPoSpfxOo
edge: 1UR3oO9MjQqfehLXnPNn1j
intro: 0hBM02jeH0mVo9pTTNr8zl
pulse: 2QgbGoFxHmIxBktq59GzP2
sound: 4GhzIuuhKmoxP4WMDukGhR
528hz: 528hz:
name: 528Hz name: 528Hz
description: description:
@ -57,8 +87,12 @@
promote feelings of love, peace, and harmony. This genre of music is often used in promote feelings of love, peace, and harmony. This genre of music is often used in
meditation, yoga, and other spiritual practices. meditation, yoga, and other spiritual practices.
parent: meditation parent: meditation
popularity: 2778 rank: 2778
playlist_id: 3qHTGXTTyexCin7nO1Wbv1 playlists:
"2023": 1NgpILwgAgDBfAMktnaRM3
intro: 3DocbbFaCFUjba3GL6hKPm
pulse: 55RKxcLS4yqFwTIfgXPcBA
sound: 3qHTGXTTyexCin7nO1Wbv1
5th wave emo: 5th wave emo:
name: 5th Wave Emo name: 5th Wave Emo
description: description:
@ -69,12 +103,22 @@
lyrics. Bands like The Hotelier, Modern Baseball, and Sorority Noise are considered lyrics. Bands like The Hotelier, Modern Baseball, and Sorority Noise are considered
pioneers of the genre. pioneers of the genre.
parent: emo parent: emo
popularity: 1914 rank: 1914
playlist_id: 5jJRdxN4pD29Uhj0ZIRFPf playlists:
"2021": 0KJUxaUMw2UPNq5spdhrOs
"2022": 40kVQJTPp0LFnacQYSEI3H
"2023": 5yMdRzeiDRm2txwRFE4BFJ
edge: 4ylDR9xvKqps8q2JmE2uAr
intro: 5ZsM9HKe1QLdqvmPxRu5Ol
pulse: 3kZS5scnM4wZJRQelCiGNO
sound: 5jJRdxN4pD29Uhj0ZIRFPf
8-bit: 8-bit:
name: 8-Bit name: 8-Bit
popularity: 4225 rank: 4225
playlist_id: 0ORjwYMeNv9v441v6aHPa1 playlists:
intro: 0uGCjwYca99ZTenVlJIGhl
pulse: 0d3bkro50wPqNTkybpysz8
sound: 0ORjwYMeNv9v441v6aHPa1
alias: chiptune alias: chiptune
8d: 8d:
name: 8D name: 8D
@ -83,5 +127,12 @@
experience for the listener. It uses binaural recording techniques to create the experience for the listener. It uses binaural recording techniques to create the
illusion of sound coming from different directions and distances, giving the illusion of sound coming from different directions and distances, giving the
parent: meditation parent: meditation
popularity: 1922 rank: 1922
playlist_id: 2vLez030U00PBsuE2ug926 playlists:
"2020": 0dpxcFSfWTAvPppDWqOEKR
"2021": 7yGrSTjXbmqhEiaJBOEeXV
"2022": 4tyL0n6UZwag6d8BNb1dzu
"2023": 701PL0EJO5snKtSWhflfbc
intro: 16ye0dzYr7sQJp7Iiqe6Og
pulse: 29g0yeNuHIFagRnWhZ0D2L
sound: 2vLez030U00PBsuE2ug926

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -10,8 +10,13 @@ qanun:
region: ME region: ME
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Qanun_(instrument) wikipedia_url: https://en.wikipedia.org/wiki/Qanun_(instrument)
popularity: 5288 rank: 5288
playlist_id: 2F5lFpyiAqk9JmhCnA5DHr playlists:
"2022": 68xdEmw2n8qdBwYnljGy4o
"2023": 387E6HvYjYjGg4cLkSuHx1
intro: 4hPPdbxJxPufdJEpkPO4lH
pulse: 2wkPdJW6atmvsLJGDkh8Kx
sound: 2F5lFpyiAqk9JmhCnA5DHr
qawwali: qawwali:
name: Qawwali name: Qawwali
description: description:
@ -23,8 +28,16 @@ qawwali:
region: DS region: DS
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Qawwali wikipedia_url: https://en.wikipedia.org/wiki/Qawwali
popularity: 1271 rank: 1271
playlist_id: 6DEKx1zncvF5WovQK13IIk playlists:
"2020": 0ZDJm0Meen25AMeHXlsmXV
"2021": 5II5dwobTza9tULQmDxZoJ
"2022": 5gCsdUZADbiopbtDcs2uxk
"2023": 2hCSA7T50O4usB1fCCprCq
edge: 0zMONOrY99EodipvUSq6kA
intro: 38WcQvLjSaJ0VcfQDgxR7q
pulse: 3nJSGOaSfFExlCwhRRWcQd
sound: 6DEKx1zncvF5WovQK13IIk
quartetto d'archi: quartetto d'archi:
name: Quartetto d'archi name: Quartetto d'archi
description: description:
@ -38,8 +51,9 @@ quartetto d'archi:
language: ita language: ita
country: IT country: IT
localized_name: true localized_name: true
popularity: 6277 rank: 6277
playlist_id: 1kps7K1T21QuwQUHaotbmj playlists:
sound: 1kps7K1T21QuwQUHaotbmj
quatuor a cordes: quatuor a cordes:
name: Quatuor à cordes name: Quatuor à cordes
description: description:
@ -50,8 +64,11 @@ quatuor a cordes:
parent: string quartet parent: string quartet
language: fra language: fra
localized_name: true localized_name: true
popularity: 6257 rank: 6257
playlist_id: 2LxiSYEJRCTiv0TE0K3ljN playlists:
"2022": 2nlWOJcP7DWdOvOJyqatsW
"2023": 3ANWOLevdvupZlIyRfzHK5
sound: 2LxiSYEJRCTiv0TE0K3ljN
quebec death metal: quebec death metal:
name: Québec Death Metal name: Québec Death Metal
description: description:
@ -62,8 +79,15 @@ quebec death metal:
parent: canadian death metal parent: canadian death metal
language: fra language: fra
localized_name: true localized_name: true
popularity: 3762 rank: 3762
playlist_id: 3ozgCnrW1PNZxpkVkazhtT playlists:
"2020": 4w8SWyhZ31Nfhy9ndELRRY
"2021": 1SN6lnPKhqLsryJhus6z0D
"2022": 08B92glfzvVSt5MfZPpTgi
"2023": 4UOn7RFYiNDfsSLTo9krQX
intro: 1JlrADIcVfm8pRceGrDIG0
pulse: 1f3PVdDADO6CK6ta8Ifj1U
sound: 3ozgCnrW1PNZxpkVkazhtT
quebec hardcore: quebec hardcore:
name: Québec Hardcore name: Québec Hardcore
description: description:
@ -74,8 +98,13 @@ quebec hardcore:
parent: canadian hardcore parent: canadian hardcore
language: fra language: fra
localized_name: true localized_name: true
popularity: 5303 rank: 5303
playlist_id: 5QfnA78JvJkwlV0IHJSYrA playlists:
"2023": 4CvAZw19vgcKHYWE9jATsH
edge: 0IzeF4ujxyeyucI29RY3SA
intro: 2wj1Lvm7LkK3XCkRy72kHk
pulse: 7LPX29QMyibTotpAmfvUtj
sound: 5QfnA78JvJkwlV0IHJSYrA
quebec indie: quebec indie:
name: Québec Indie name: Québec Indie
description: description:
@ -87,8 +116,17 @@ quebec indie:
parent: canadian indie parent: canadian indie
language: fra language: fra
localized_name: true localized_name: true
popularity: 1464 rank: 1464
playlist_id: 4uRfUMUWYXOtFiSD4pFfbn playlists:
"2019": 2FguZNfTdLECN6pCZehZTy
"2020": 6WsmFe1oDR0rUjDA7S15lL
"2021": 78A7pZZ7Dc3pcIF8xjYbb2
"2022": 1oPrxSWZmN3OSzAIMDDVVn
"2023": 5ovosGU5UaLlpGVwBiV9Pi
edge: 4I7eRwKpSGGU4q6kI5rJup
intro: 6kEpbXb3r2nNDPYpbRHpPC
pulse: 5bJ1r3BzsvlAGOUAJ0q0ho
sound: 4uRfUMUWYXOtFiSD4pFfbn
quebec metal: quebec metal:
name: Québec Metal name: Québec Metal
description: description:
@ -99,8 +137,13 @@ quebec metal:
parent: canadian metal parent: canadian metal
language: fra language: fra
localized_name: true localized_name: true
popularity: 5697 rank: 5697
playlist_id: 2t7PKO3CCmlch3IaqxUiKz playlists:
"2023": 2efIzroABFpxRfxP2BlyYF
edge: 0NpI7tSPo3jbpVEYQxA1WM
intro: 18dYExuUvGmeTP76lD7FRy
pulse: 6rGo3BObNlgMAMHXW1NnY4
sound: 2t7PKO3CCmlch3IaqxUiKz
quebec punk: quebec punk:
name: Québec Punk name: Québec Punk
description: description:
@ -112,8 +155,16 @@ quebec punk:
parent: canadian punk parent: canadian punk
language: fra language: fra
localized_name: true localized_name: true
popularity: 3613 rank: 3613
playlist_id: 5vd5RRHykVvzcnZDXnRt2H playlists:
"2020": 2W6KJ5wkaAhoNu2aI1BdUc
"2021": 3T2N1KoMPnhMzN4jf3gENw
"2022": 6gDhU92V25ckHMUp8iazAl
"2023": 1XrAXOT5bldwjOyEmSHggC
edge: 1gZHyn1F5ISyjKen0FXq7O
intro: 2xBmMaPYjwzxhEBrIXf7sx
pulse: 34EEKsS3GsglwCxkYBTMR9
sound: 5vd5RRHykVvzcnZDXnRt2H
queens hip hop: queens hip hop:
name: Queens Hip Hop name: Queens Hip Hop
description: description:
@ -124,8 +175,17 @@ queens hip hop:
today. today.
parent: hip hop parent: hip hop
country: US country: US
popularity: 212 rank: 212
playlist_id: 0AxeQveEqk8X42sovBCls8 playlists:
"2019": 0Q8edy5uKGQp7LPN6ojo6V
"2020": 7a6XHTbjXOSPkwbwG6n6P3
"2021": 2uXQlvgIzLHZMI2eCbJb3e
"2022": 6jPXH68YGMLeUtGpzTLSfT
"2023": 2zrFr5IM5IE3EGyDWsHlHo
edge: 7qMDUuIEJACoFd1TMGIXjf
intro: 78WED6iWCoildza89ZSEOT
pulse: 6fyjVFmRVdAWJZ9AgoN5e3
sound: 0AxeQveEqk8X42sovBCls8
queer country: queer country:
name: Queer Country name: Queer Country
description: description:
@ -134,8 +194,16 @@ queer country:
gender roles in the genre. This genre has gained popularity in recent years as more gender roles in the genre. This genre has gained popularity in recent years as more
queer artists have emerged in the country music scene. queer artists have emerged in the country music scene.
parent: country parent: country
popularity: 2771 rank: 2771
playlist_id: 5lAp13nSaA7eHafwqV5ilp playlists:
"2020": 54h9847CRl8q7wIsrICIZV
"2021": 3EgcL43P4KUrkGB0CwniXT
"2022": 35ONLV5ctIkyKMqHhIwwQE
"2023": 6ycklRfayyDECyAPymNY54
edge: 0wC0jygftE6hjdcASMaoJT
intro: 1zpT4LLOpEEIr16bRKcdwU
pulse: 7egFXiz7QCP1MaVd5YXYxF
sound: 5lAp13nSaA7eHafwqV5ilp
queercore: queercore:
name: Queercore name: Queercore
description: description:
@ -147,8 +215,16 @@ queercore:
include Pansy Division, Team Dresch, and The Butchies. include Pansy Division, Team Dresch, and The Butchies.
parent: punk parent: punk
wikipedia_url: https://en.wikipedia.org/wiki/Queercore wikipedia_url: https://en.wikipedia.org/wiki/Queercore
popularity: 2625 rank: 2625
playlist_id: 7msivIljALwqTDOrrdJk9K playlists:
"2020": 07AF4ny6jhZBRFvGizW48F
"2021": 5O2MnqaDsZId2yZKrtaK1C
"2022": 2pc6ORKiI7AfFbmnKn2vIR
"2023": 6K9CNhPoNIjtyXgLQeEw7X
edge: 223XD0hgKVDumSG4UT74wM
intro: 6WGF9AkrKIgEgRXIdWW8tq
pulse: 6A2ENrWv6lVVQ5YspbppXs
sound: 7msivIljALwqTDOrrdJk9K
quiet storm: quiet storm:
name: Quiet Storm name: Quiet Storm
description: description:
@ -158,8 +234,18 @@ quiet storm:
music to help listeners relax and unwind. music to help listeners relax and unwind.
parent: r&b parent: r&b
wikipedia_url: https://en.wikipedia.org/wiki/Quiet_storm wikipedia_url: https://en.wikipedia.org/wiki/Quiet_storm
popularity: 220 rank: 220
playlist_id: 66k6nBXFo6of5ckPWCuCSi playlists:
"2018": 4AevCxg42j7bZE3hwbsEZU
"2019": 2fr3a7e33WmrXEcdroyTWo
"2020": 1mQw7taFxQl5H4zv6Rwgcs
"2021": 2zf4AOdSN92IoJadjQW9uc
"2022": 1jOWn7Nm6FoiCfpQ6L7ip7
"2023": 6rKYbaTMR6dzbMjR4S1uKc
edge: 7jUlnzUBP5jzSpu6YFDWwU
intro: 2OGzevPKBSbHVMlO0XZqaX
pulse: 1aFspLgNzl6hP62RCtVafi
sound: 66k6nBXFo6of5ckPWCuCSi
quran: quran:
name: Quran name: Quran
description: description:
@ -170,5 +256,13 @@ quran:
emotional experience for listeners. emotional experience for listeners.
parent: islamic recitation parent: islamic recitation
localized_name: true localized_name: true
popularity: 1509 rank: 1509
playlist_id: 2fGISxSz9tC1fkRX2qZdDW playlists:
"2020": 7Jru7itsnVdPU0VLb8ejjp
"2021": 4hEemc87qRur2ZucMKAjH2
"2022": 1kIiIL6k5wvWNCOYgGybxI
"2023": 0VYE7BwHM1ixFWVwNIOEJJ
edge: 0q0N5NqtpVF8aWsyHdckQN
intro: 42DWet00h5oV0O0xZtpFbV
pulse: 5YILSNwgCQXpZq7v0okuiP
sound: 2fGISxSz9tC1fkRX2qZdDW

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -9,8 +9,13 @@ xenharmonic:
it. it.
parent: experimental parent: experimental
wikipedia_url: https://en.wikipedia.org/wiki/Xenharmonic_music wikipedia_url: https://en.wikipedia.org/wiki/Xenharmonic_music
popularity: 5492 rank: 5492
playlist_id: 31vMSXGJYkMnYVfP4MVUMB playlists:
"2022": 7tRARyR2ZLAeihpONatBoN
"2023": 2ldiXZjjllFXQeKjrHMdyG
intro: 5wCvsZiNjsOWEQkZG8wsNq
pulse: 60AQpTHEvzYVUgcY7hFbUl
sound: 31vMSXGJYkMnYVfP4MVUMB
xhosa: xhosa:
name: Xhosa name: Xhosa
description: description:
@ -21,8 +26,15 @@ xhosa:
parent: folk parent: folk
language: xho language: xho
country: SA country: SA
popularity: 4115 rank: 4115
playlist_id: 1SPR7yk4kwmz09NovuUzKN playlists:
"2020": 6NVL0NXx4cXdt900sh1Wwj
"2021": 37r8CZM1HtGiijJwmfmQbR
"2022": 0SxhZYAzpgCQoldqdobLQb
"2023": 2QH1f5W59QI76MFABvrjKL
intro: 09cnl6NIPxut0M9HFootj3
pulse: 0eRxUT4PEy4XbGZ2OINWfx
sound: 1SPR7yk4kwmz09NovuUzKN
xhosa hip hop: xhosa hip hop:
name: Xhosa Hip Hop name: Xhosa Hip Hop
description: description:
@ -34,8 +46,14 @@ xhosa hip hop:
parent: hip hop parent: hip hop
language: xho language: xho
country: SA country: SA
popularity: 4833 rank: 4833
playlist_id: 03gnvuMqmf0w2E5qv4bHsy playlists:
"2022": 7D6AsEkwQbn31Tb9Y0bEQZ
"2023": 1zqKja0PnwEeyT1QjdXTOX
edge: 5tLwS19hN5EFzIPcsToPcI
intro: 4yVSCJtn4RJJjjE2dcWNDA
pulse: 1YSzamhHpNsXrOxZb3X64w
sound: 03gnvuMqmf0w2E5qv4bHsy
xinyao: xinyao:
name: Xinyao name: Xinyao
description: description:
@ -47,8 +65,14 @@ xinyao:
parent: folk-pop parent: folk-pop
language: zho language: zho
country: SG country: SG
popularity: 4575 rank: 4575
playlist_id: 3OdedP3CjT68YpId2B1BFk playlists:
"2021": 5p1iS2JVwZJAjB5gReHuzD
"2022": 16YAihQQxgwCNHqJYHjx7v
"2023": 4zNtkXC6mgLSP2d6Qbqlrs
intro: 6z4B3se4fJq99PeDIpkqbu
pulse: 0CcD4wWiXWOdY4l9QdRDf0
sound: 3OdedP3CjT68YpId2B1BFk
xitsonga pop: xitsonga pop:
name: Xitsonga Pop name: Xitsonga Pop
description: description:
@ -59,8 +83,15 @@ xitsonga pop:
parent: pop parent: pop
language: tso language: tso
country: SA country: SA
popularity: 3844 rank: 3844
playlist_id: 23MUSPH44uYB10onXR9mRe playlists:
"2021": 2agrFCVcNupsWWZqTlWI8h
"2022": 5mQf0OWNjaj3OYCP3m2LEb
"2023": 5IpbN9zmjnNZCHIAMh091g
edge: 77XVX9oGQINOocRelyY6lF
intro: 2oYo8r7glZ2vAPxmI9iCsR
pulse: 3uaWclhjwq3SnkdLmcGx4I
sound: 23MUSPH44uYB10onXR9mRe
xtra raw: xtra raw:
name: Xtra Raw name: Xtra Raw
description: description:
@ -69,5 +100,13 @@ xtra raw:
use of bass and percussion. The music is often played at high speeds and can be 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. quite intense, making it popular among fans of hardcore and gabber music.
parent: hardcore techno parent: hardcore techno
popularity: 1828 rank: 1828
playlist_id: 7oe7qiYLUxsfhZXlT6AIiS playlists:
"2020": 74eYgpbsLjnlLUUjqIAEm2
"2021": 4gbYwBQMnW8J2B48hPnK3n
"2022": 1XMRwF812En9UAiRUXzww8
"2023": 4NIRWVtaM5wXzU4teD6jlu
edge: 4U1Ipy0nizjpKMQm8xOHVY
intro: 5idjHsS2J3gzXPDS2WgTFJ
pulse: 3QcW4u0QrCwKQAn2dj6jIT
sound: 7oe7qiYLUxsfhZXlT6AIiS

View file

@ -8,8 +8,17 @@ yacht rock:
who grew up during this era. who grew up during this era.
parent: soft rock parent: soft rock
wikipedia_url: https://en.wikipedia.org/wiki/Yacht_rock wikipedia_url: https://en.wikipedia.org/wiki/Yacht_rock
popularity: 156 rank: 156
playlist_id: 1imbMwZYgwB2NCAVPkq5sZ playlists:
"2019": 0efuIF55Ao2ZdlEgPr0FRa
"2020": 4F1Ag8T12ouQ9eeiAR5y8v
"2021": 6LqsY3t1cj3nCGh1bgkuht
"2022": 2MTvk8S6wcRcoFv6CGX1DW
"2023": 6qFEC1WBQRPxS9r2m2Q7f4
edge: 0ksniO425Yn64qiNI1iXPS
intro: 5ldcVmWjkKoyLy6nRsABr3
pulse: 5zgLnWhHxDqGFf267udixC
sound: 1imbMwZYgwB2NCAVPkq5sZ
yakut pop: yakut pop:
name: Yakut Pop name: Yakut Pop
description: description:
@ -20,8 +29,14 @@ yakut pop:
language: sah language: sah
country: RU country: RU
localized_name: true localized_name: true
popularity: 5270 rank: 5270
playlist_id: 3H2aC6nJR4L39KCCI0Pcg8 playlists:
"2021": 7bMDIhX1izesJkgCOwBmC6
"2022": 1krcxmhPQgTUge79FUU3PY
"2023": 0kaVz5eAf2HNkiMLh3iCfr
intro: 1Zxfy3fthRe0VzETGODPNT
pulse: 5TxAWVyWEOzjEXwzZtbulY
sound: 3H2aC6nJR4L39KCCI0Pcg8
yaoi: yaoi:
name: Yaoi name: Yaoi
description: description:
@ -30,8 +45,15 @@ yaoi:
emotional connection between two male characters. Yaoi music is popular among fans 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. of the genre and is often performed by male vocalists with high-pitched voices.
parent: anime parent: anime
popularity: 2946 rank: 2946
playlist_id: 1eWtvA0Byu9Wu7LENK35Dp playlists:
"2021": 3Vq3hn458ZXhXwOwiOw1eH
"2022": 6CIGAFoAUMuuDetfSHA8Ru
"2023": 3Sp6axFKvNCoFm0BgA1LNn
edge: 3GYVFufk4G4my872lAlH9a
intro: 4b6r1gI7ITYe5BWzIZVIUm
pulse: 2JlBKPG5mWiwtt1ZyF8WkP
sound: 1eWtvA0Byu9Wu7LENK35Dp
ye ye: ye ye:
name: Ye Ye name: Ye Ye
description: description:
@ -42,8 +64,18 @@ ye ye:
Dutronc, and had a significant impact on French and European pop music. Dutronc, and had a significant impact on French and European pop music.
parent: french rock-and-roll parent: french rock-and-roll
wikipedia_url: https://en.wikipedia.org/wiki/Y%C3%A9-y%C3%A9 wikipedia_url: https://en.wikipedia.org/wiki/Y%C3%A9-y%C3%A9
popularity: 1091 rank: 1091
playlist_id: 0HjnliL7S56u2t2sFW8gG7 playlists:
"2018": 2V1xg1glwzwjcspf00oN83
"2019": 3bTKme8Ajp48144eN4PMkZ
"2020": 4dlM2wC9xobcIU4cs6gxKB
"2021": 0HoTrw8HJPsHUpe8ODrV72
"2022": 1ti4vV7IkUtnJMazPQg2Qd
"2023": 5GEEmH9dLo9KJ950mW16N6
edge: 2jchAUDj0rYaWHVIpwGDx0
intro: 6BBjHLbX9A5BHI2LBVwHx3
pulse: 0Sjq8W3hK7h9Ooh9wtNPcS
sound: 0HjnliL7S56u2t2sFW8gG7
yemeni pop: yemeni pop:
name: Yemeni Pop name: Yemeni Pop
description: description:
@ -55,8 +87,16 @@ yemeni pop:
language: ara language: ara
country: YE country: YE
localized_name: true localized_name: true
popularity: 4561 rank: 4561
playlist_id: 5YFUtJgAy2Xfly9whFZrz2 playlists:
"2020": 0WEwWphiLMQZWYQSU0ZTEo
"2021": 5JzFPMPqLYlKw87Sty0lHV
"2022": 6dAud5OfUVWcCnVpXR934V
"2023": 0ps8aiyDzRVQWyKLJDsFeS
edge: 1x6aj99GxYzjFBsDSfFHfI
intro: 4ztKSleHkDZHPswqTmTa48
pulse: 5kydFGIAX9ym3UoTki3Glm
sound: 5YFUtJgAy2Xfly9whFZrz2
yemeni traditional: yemeni traditional:
name: Yemeni Traditional name: Yemeni Traditional
description: description:
@ -70,8 +110,9 @@ yemeni traditional:
country: YE country: YE
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Yemen wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Yemen
popularity: 6262 rank: 6262
playlist_id: 1DWET41vcTWLJFAnYJHUp0 playlists:
sound: 1DWET41vcTWLJFAnYJHUp0
yiddish folk: yiddish folk:
name: Yiddish Folk name: Yiddish Folk
description: description:
@ -82,8 +123,11 @@ yiddish folk:
parent: folk parent: folk
language: yid language: yid
localized_name: true localized_name: true
popularity: 6085 rank: 6085
playlist_id: 5vKOWKIkiwTjrRpRrM96qw playlists:
intro: 30X3mIra3t9D66TIrz4Cpt
pulse: 6BXsh0EdOGzPUchnAk6MzH
sound: 5vKOWKIkiwTjrRpRrM96qw
yodeling: yodeling:
name: Yodeling name: Yodeling
description: description:
@ -95,8 +139,15 @@ yodeling:
parent: vocal parent: vocal
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Yodeling wikipedia_url: https://en.wikipedia.org/wiki/Yodeling
popularity: 2563 rank: 2563
playlist_id: 2SMDVBkKqnZL9AoUWaZ2qs playlists:
"2020": 3rBQ13NN8DeLKbGwp99HsC
"2021": 3eIR1nLuFSnDXJwX7x4rKe
"2022": 2yjK86RaxVrsOVRhJ4Xk20
"2023": 4OWAGffPUg98Ft87iJDhkw
intro: 1Fja6pWav4eg3LPQBd7s9i
pulse: 1Jbqb1kKq9WXSzlAtmcijt
sound: 2SMDVBkKqnZL9AoUWaZ2qs
yoga: yoga:
name: Yoga name: Yoga
description: description:
@ -106,8 +157,17 @@ yoga:
connect with their breath and body. It is often used in yoga classes, meditation connect with their breath and body. It is often used in yoga classes, meditation
practices, and other wellness activities. practices, and other wellness activities.
parent: meditation parent: meditation
popularity: 4268 rank: 4268
playlist_id: 5cZJI7DrZ3NIWWcbPIZeWt playlists:
"2019": 1Xdl0mLKCifBLiTByLIdzH
"2020": 3ZSKcOUAcgZOoAlBGwFMPI
"2021": 2DX8wGFe1gfQsJ2ZOX50q6
"2022": 7jdGJBAkeCHAb90zwCgh26
"2023": 0ssFWJ8Bp3uCrxmMll11rA
edge: 2OtZ82HLJ7gJxeLlSD7ksE
intro: 5AkypVsBycocK6YxbKBw0q
pulse: 4jPPbSI3FzdcNTVYRvhnqV
sound: 5cZJI7DrZ3NIWWcbPIZeWt
yogyakarta indie: yogyakarta indie:
name: Yogyakarta Indie name: Yogyakarta Indie
description: description:
@ -117,8 +177,15 @@ yogyakarta indie:
Yogyakarta indie artists often explore themes of social and cultural issues, making Yogyakarta indie artists often explore themes of social and cultural issues, making
it a unique and thought-provoking listening experience. it a unique and thought-provoking listening experience.
parent: indonesian indie rock parent: indonesian indie rock
popularity: 2132 rank: 2132
playlist_id: 4rIqIjgskuOmJnaX2Z8Fzx playlists:
"2021": 1P4fokXxzJfhQJCcAaiuy7
"2022": 0NjGZQkv2khLISYTQ1FewS
"2023": 1B1yDtja9NLNS6nXJV7hDo
edge: 2ZG0ajyzhlsQQN8ZZ2q8x9
intro: 4WqMImNGvoTn74kclXp3lg
pulse: 4plq6vvDZALe3GR2tGGNrB
sound: 4rIqIjgskuOmJnaX2Z8Fzx
yoik: yoik:
name: Yoik name: Yoik
description: description:
@ -130,8 +197,18 @@ yoik:
parent: folk parent: folk
region: ND region: ND
wikipedia_url: https://en.wikipedia.org/wiki/Joik wikipedia_url: https://en.wikipedia.org/wiki/Joik
popularity: 5268 rank: 5268
playlist_id: 53pmQn6lXF6m5WViERilQF playlists:
"2018": 1OISQsSZIOkrA7mwMbSpL4
"2019": 72qasWzfdXtxpU8ofNh2RP
"2020": 2PDnq0D3ZMmScsnWr3QS77
"2021": 5rlucO1gj2aAVKD0wev48t
"2022": 7wscgaVPCfYvSnN44RKqcw
"2023": 4CVKEndDl1RYnycW9WeiBj
edge: 4lfbSHAzy8Mf4ntfCDTmG4
intro: 1eAEv4wZONXg1wSS3pzHRd
pulse: 3BUJ3Cki67B0Ie3npVpiMV
sound: 53pmQn6lXF6m5WViERilQF
york indie: york indie:
name: York Indie name: York Indie
description: description:
@ -142,8 +219,12 @@ york indie:
alternative rock into their music. York indie is a vibrant and exciting genre that alternative rock into their music. York indie is a vibrant and exciting genre that
continues to evolve and push boundaries. continues to evolve and push boundaries.
parent: english indie rock parent: english indie rock
popularity: 3625 rank: 3625
playlist_id: 02NPFyGAScohVgMt3JN00H playlists:
"2020": 1j4WYbLpVvuygopfS4WRjl
"2021": 4JsW3XZdZ20FkEWNIhm02v
"2022": 5xk2QwXOPpj9jT0BRsyiYS
sound: 02NPFyGAScohVgMt3JN00H
yorkshire folk: yorkshire folk:
name: Yorkshire Folk name: Yorkshire Folk
description: description:
@ -153,8 +234,14 @@ yorkshire folk:
local history and folklore, and the music has a strong sense of community and local history and folklore, and the music has a strong sense of community and
identity. identity.
parent: traditional english folk parent: traditional english folk
popularity: 5030 rank: 5030
playlist_id: 2mVv3SQVPJ38r4zEHm68Jy playlists:
"2021": 3mPv7sebt9B9YRGBvKTRhA
"2022": 3cdB89QJFeJCh4fH9zZTpA
"2023": 00y9GIDRW83fRtr1mi8GYo
intro: 1GOb8AWMBLXqXui1xgo8Je
pulse: 3USKfe9w0mgoof0ez7F74r
sound: 2mVv3SQVPJ38r4zEHm68Jy
yoruba worship: yoruba worship:
name: Yoruba Worship name: Yoruba Worship
description: description:
@ -167,8 +254,15 @@ yoruba worship:
language: yor language: yor
region: WF region: WF
localized_name: true localized_name: true
popularity: 4278 rank: 4278
playlist_id: 4QTwi9BhTVG9Nbjo65HwZh playlists:
"2021": 45WU82RpOszs3HL3hxrjkc
"2022": 6NkVDDuuyFd5i4FYEi8QB6
"2023": 0PCwv4PlIZBuw7jIZEsJDd
edge: 4IxaYJRlNbHAQODNL0Amxz
intro: 1TN27Ng0BjrFpPn3lddyS4
pulse: 2CcqXzI6A3vqrmXLtJKPvE
sound: 4QTwi9BhTVG9Nbjo65HwZh
youth orchestra: youth orchestra:
name: Youth Orchestra name: Youth Orchestra
description: description:
@ -181,8 +275,9 @@ youth orchestra:
parent: orchestra parent: orchestra
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Youth_orchestra wikipedia_url: https://en.wikipedia.org/wiki/Youth_orchestra
popularity: 6280 rank: 6280
playlist_id: 4SNnzqfxrI1Uh1HpOctFTT playlists:
sound: 4SNnzqfxrI1Uh1HpOctFTT
yu-mex: yu-mex:
name: Yu-Mex name: Yu-Mex
description: description:
@ -193,8 +288,15 @@ yu-mex:
parent: world parent: world
region: EE region: EE
wikipedia_url: https://en.wikipedia.org/wiki/Yu-Mex wikipedia_url: https://en.wikipedia.org/wiki/Yu-Mex
popularity: 5071 rank: 5071
playlist_id: 1Frk27X8mA30Oc4wxwHDT8 playlists:
"2021": 1yuajYGruI16S21IntbFGr
"2022": 7zvoKSEcFJ6gYkwPUrlliH
"2023": 6MRTPEiewUzM028RuFLzVy
edge: 6Q7mvDfiXdnu1HDOrqe40w
intro: 2OlnkQAj8Z4HpFP9XDlefj
pulse: 1aihsJ0vRzCjv3Zsyy93W0
sound: 1Frk27X8mA30Oc4wxwHDT8
yugoslav new wave: yugoslav new wave:
name: Yugoslav New Wave name: Yugoslav New Wave
description: description:
@ -207,8 +309,16 @@ yugoslav new wave:
region: EE region: EE
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/New_wave_music_in_Yugoslavia wikipedia_url: https://en.wikipedia.org/wiki/New_wave_music_in_Yugoslavia
popularity: 3779 rank: 3779
playlist_id: 5jaGOpLsE7tSbE060h8U6C playlists:
"2020": 4ve4Sr2ny8GzHvygGJh4Yh
"2021": 6zbT6y6I8IfhR3I0W6xHA4
"2022": 45d8i80uoJNWYTssHAmPUC
"2023": 1Wcon4NYuxNfpjzxHfyQD8
edge: 7pyb8K0sdn25WKaGyPE6TZ
intro: 1vrPlYzda0XzG1sLb5fmm3
pulse: 2waa2QtXWkQZhJ4Erp11Bu
sound: 5jaGOpLsE7tSbE060h8U6C
yugoslav rock: yugoslav rock:
name: Yugoslav Rock name: Yugoslav Rock
description: description:
@ -221,8 +331,18 @@ yugoslav rock:
parent: rock parent: rock
region: EE region: EE
localized_name: true localized_name: true
popularity: 1577 rank: 1577
playlist_id: 7KuZSebZlQto9drDc7l5tE playlists:
"2018": 675BY81TbwNuBJmzvpgasg
"2019": 1MZ6t7G7eXh9H6Un8Atcce
"2020": 0ALQksDJxjR3ygje3qeEHj
"2021": 743Ip6JePWjBAWjed4z7k2
"2022": 1iVHqVOeOFNSSGWG44UdHR
"2023": 0h054lbY8skxKoE0Sbxmiu
edge: 7xrGpxzSEzIiOkIiITOQKL
intro: 5pNs35CSG9fy3QxU59UThq
pulse: 3NRqXFKe4rY1fEEbX01kKt
sound: 7KuZSebZlQto9drDc7l5tE
yunnan traditional: yunnan traditional:
name: Yunnan Traditional name: Yunnan Traditional
description: description:
@ -232,8 +352,9 @@ yunnan traditional:
intricate rhythms, and haunting melodies. It is often performed during festivals and intricate rhythms, and haunting melodies. It is often performed during festivals and
celebrations. celebrations.
parent: chinese folk parent: chinese folk
popularity: 6279 rank: 6279
playlist_id: 19q2gA3eWnQO5eTOD6aTYv playlists:
sound: 19q2gA3eWnQO5eTOD6aTYv
yuri: yuri:
name: Yuri name: Yuri
description: description:
@ -245,5 +366,11 @@ yuri:
remains a defining feature. remains a defining feature.
parent: anime parent: anime
wikipedia_url: https://en.wikipedia.org/wiki/Yuri_(genre) wikipedia_url: https://en.wikipedia.org/wiki/Yuri_(genre)
popularity: 5504 rank: 5504
playlist_id: 0BYoEJVB9xZjjsKMNnujN7 playlists:
"2021": 7ApX5Nw7sfu8tyLKYFKNvJ
"2022": 58VXvl5nQAdEUZtfSmAPDQ
"2023": 7zRAhWdlTR4bqtt4JEK9DY
intro: 0FSiq4Pxv91W6UB8mJsbA9
pulse: 6ZaiceZSPmbze1bctCSw7o
sound: 0BYoEJVB9xZjjsKMNnujN7

View file

@ -6,8 +6,15 @@ zamba:
the use of traditional instruments such as the guitar, bombo, and violin. the use of traditional instruments such as the guitar, bombo, and violin.
parent: folklore argentino parent: folklore argentino
wikipedia_url: https://en.wikipedia.org/wiki/Zamba_(artform) wikipedia_url: https://en.wikipedia.org/wiki/Zamba_(artform)
popularity: 2883 rank: 2883
playlist_id: 4BLHWGRsNFy6C64njAPdJ2 playlists:
"2021": 2Rvk3LDQ4Bm2jwMcfIOkGS
"2022": 20TSjVAlQhFilRQpRRnxWG
"2023": 6zDYNreYkYI2LsugEkbhAz
edge: 35w7paShlAZX6uZ28lmDnZ
intro: 47qoB5onjeSlbpOnCepwa4
pulse: 7ofLDrEqsoxDH6VY8LBvJ6
sound: 4BLHWGRsNFy6C64njAPdJ2
zambian gospel: zambian gospel:
name: Zambian Gospel name: Zambian Gospel
description: description:
@ -19,8 +26,14 @@ zambian gospel:
country: ZM country: ZM
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zambia#Christian_Music wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zambia#Christian_Music
popularity: 4737 rank: 4737
playlist_id: 2KMOd9KmWLeUbbRySGHN5j playlists:
"2022": 3iOu7CmaWRRB2PKS5QUad6
"2023": 5zus1RC2ujSYR2XDiSeWgt
edge: 2ruCJy3NHDwxJgjzOPWAhY
intro: 3HLqajXuWDaej9Cp5IU6OJ
pulse: 6nP1xvV1NHMsXurvHEAJAV
sound: 2KMOd9KmWLeUbbRySGHN5j
zambian hip hop: zambian hip hop:
name: Zambian Hip Hop name: Zambian Hip Hop
description: description:
@ -31,8 +44,16 @@ zambian hip hop:
parent: hip hop parent: hip hop
country: ZM country: ZM
localized_name: true localized_name: true
popularity: 3540 rank: 3540
playlist_id: 5ZDuKkHD8vQMIINeFsTTyu playlists:
"2020": 3UbX3fwKLn0G91ZnlNQk7m
"2021": 3XuSRcKS2EKbtojMakcb3F
"2022": 6Croqt7C4Kgz5dnhM49XON
"2023": 7qzsnzj0AVs3ogGXTsf56t
edge: 4hKJh9c7N1iNsefNLcdY7K
intro: 7z0I0DxyxXfIJ89LlLHBst
pulse: 4FnkK0e2PC1pG3E55q7OkZ
sound: 5ZDuKkHD8vQMIINeFsTTyu
zambian pop: zambian pop:
name: Zambian Pop name: Zambian Pop
description: description:
@ -44,8 +65,17 @@ zambian pop:
country: ZM country: ZM
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zambia#Popular_Music wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zambia#Popular_Music
popularity: 3620 rank: 3620
playlist_id: 3AxsN9foojNcuPI9OXnVIB playlists:
"2019": 57YoQJKYuPTfPBrpVOE6Rr
"2020": 4LLlhzDIE9ckZN47IVmB3m
"2021": 5cNUrryxZTU51A6ZEhRtck
"2022": 5vf3yYGKOGnIL95xGBYZju
"2023": 4fIzut5yyxRDUxmv41EROZ
edge: 0wVnk3rDL9nS6IxZFJbFKx
intro: 2kgYmOI5UGocqb4shcALcV
pulse: 0exQFJ6ItSWw5EigRWRdzF
sound: 3AxsN9foojNcuPI9OXnVIB
zampogna: zampogna:
name: Zampogna name: Zampogna
description: description:
@ -58,8 +88,9 @@ zampogna:
parent: italian folk parent: italian folk
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Zampogna wikipedia_url: https://en.wikipedia.org/wiki/Zampogna
popularity: 6260 rank: 6260
playlist_id: 6egS6vpB5c6raIlw1v0Nx2 playlists:
sound: 6egS6vpB5c6raIlw1v0Nx2
zarzuela: zarzuela:
name: Zarzuela name: Zarzuela
description: description:
@ -73,8 +104,12 @@ zarzuela:
country: ES country: ES
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Zarzuela wikipedia_url: https://en.wikipedia.org/wiki/Zarzuela
popularity: 5535 rank: 5535
playlist_id: 0pMsLV9uQUZtDGyPYVIeAt playlists:
"2023": 0VnwJ1lHtFODSxNS8i7383
intro: 487GPsF0rNw71bVB15TCAB
pulse: 6sMjpZKNFTVjngUXbbquxO
sound: 0pMsLV9uQUZtDGyPYVIeAt
zcc: zcc:
name: ZCC name: ZCC
description: description:
@ -87,8 +122,15 @@ zcc:
parent: south african gospel parent: south african gospel
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Zion_Christian_Church wikipedia_url: https://en.wikipedia.org/wiki/Zion_Christian_Church
popularity: 3593 rank: 3593
playlist_id: 4rohSjUJ1bDLU1JLCi6n7y playlists:
"2021": 3X8rYAUlO77om0sxjzdlJc
"2022": 2yX45Ke8T96o89LVmgG4Dv
"2023": 4vkX5frnqZHYRD6FpHPYYP
edge: 0eBwbIifUAAu40WBjSRvxi
intro: 4WH8z60xovUbfdFMmmGAPD
pulse: 3UaUMUEzfShRFPOn5Dxk92
sound: 4rohSjUJ1bDLU1JLCi6n7y
zen: zen:
name: Zen name: Zen
description: description:
@ -96,8 +138,17 @@ zen:
Japanese music, ambient sounds, and natural sounds like waterfalls and birds. Zen Japanese music, ambient sounds, and natural sounds like waterfalls and birds. Zen
music is perfect for relaxation, yoga, and meditation. music is perfect for relaxation, yoga, and meditation.
parent: meditation parent: meditation
popularity: 2995 rank: 2995
playlist_id: 7y2Av5WgZgD7jSuQZu6M7n playlists:
"2019": 2l0VoqIvjuZuVkLCeBoPEP
"2020": 0wUnoAJw3KRc7HHFkantle
"2021": 3x8QnQlcH5qJORKkF4xDNB
"2022": 50WbGfr58fBW6mxXFshMPv
"2023": 2nsvWEwvoYl2WZbjVZPWth
edge: 3vuv8UPBFdo3EggX2C0okq
intro: 11tUZm4YxxppZ7EAvrZo1n
pulse: 5dvRDWB92mMAq54KDPLsRS
sound: 7y2Av5WgZgD7jSuQZu6M7n
zenonesque: zenonesque:
name: Zenonesque name: Zenonesque
description: description:
@ -105,8 +156,15 @@ zenonesque:
calming and meditative qualities of Zen music. Zenonesque music is characterized by calming and meditative qualities of Zen music. Zenonesque music is characterized by
its slow and hypnotic beats, intricate melodies, and atmospheric soundscapes. its slow and hypnotic beats, intricate melodies, and atmospheric soundscapes.
parent: psychedelic trance parent: psychedelic trance
popularity: 4698 rank: 4698
playlist_id: 1RbpXfjqUTf9iKExXjr2jp playlists:
"2021": 720pwhb3p5EeaY3o1WRnWS
"2022": 1qHUpBueHrlwwwqC7f9Fh2
"2023": 2k6BPE0D0ZUPg6cfkwTSV6
edge: 1KaH8nzzfXjj2yUVEZxhFH
intro: 2ajoGJJHd5zySHK8aXdCCn
pulse: 1b2042iJe3pIuYv5ueHIow
sound: 1RbpXfjqUTf9iKExXjr2jp
zespol dzieciecy: zespol dzieciecy:
name: Zespol Dziecięcy name: Zespol Dziecięcy
description: description:
@ -119,8 +177,15 @@ zespol dzieciecy:
language: pol language: pol
country: PL country: PL
localized_name: true localized_name: true
popularity: 2634 rank: 2634
playlist_id: 66IvXQyzUNEalJnbyvSb6d playlists:
"2020": 5cBNyYf78FFoWf2dIFlDpU
"2021": 1wYhvFsDVbJoIrMo4s3s98
"2023": 4iUjVjqCFboU8LCjcFdpAj
edge: 75JfKyqPVO2pUJvMzywKfh
intro: 5GAFL1KNAcy82IOpzPCTgV
pulse: 6k4bTEUvma1MqH1tR0AuWL
sound: 66IvXQyzUNEalJnbyvSb6d
zeuhl: zeuhl:
name: Zeuhl name: Zeuhl
description: description:
@ -132,8 +197,12 @@ zeuhl:
language: fra language: fra
country: FR country: FR
wikipedia_url: https://en.wikipedia.org/wiki/Zeuhl wikipedia_url: https://en.wikipedia.org/wiki/Zeuhl
popularity: 5627 rank: 5627
playlist_id: 2PvNMMgIu3xbKLuMBU8RlE playlists:
"2023": 6XBWUpUMUH6VxFfHGigFXt
intro: 2NyVgNk2UuJlOPNTSaqRUb
pulse: 5sc0zJyYQn5ZS5U57uSnrF
sound: 2PvNMMgIu3xbKLuMBU8RlE
zhenskiy rep: zhenskiy rep:
name: Zhenskiy Rep name: Zhenskiy Rep
description: description:
@ -144,8 +213,14 @@ zhenskiy rep:
music and uses a mix of Russian and English lyrics. music and uses a mix of Russian and English lyrics.
parent: russian hip hop parent: russian hip hop
localized_name: true localized_name: true
popularity: 1453 rank: 1453
playlist_id: 4lCP4GdpJDW6u6vgUu3aGd playlists:
"2022": 5xGOpH3IE89pQH3NHEL66z
"2023": 2D9xYURZIZmCiULfDKPHVF
edge: 6i8m8Edo5TbVFFusCOc0hQ
intro: 2xYJNvLLLtK7pvh68pwo46
pulse: 2gokIQZ5rA1w2aELLO0fxT
sound: 4lCP4GdpJDW6u6vgUu3aGd
zhongguo feng: zhongguo feng:
name: Zhongguo Feng name: Zhongguo Feng
description: description:
@ -156,8 +231,16 @@ zhongguo feng:
genre has become increasingly popular in recent years and has produced many genre has become increasingly popular in recent years and has produced many
successful artists in China. successful artists in China.
parent: c-pop parent: c-pop
popularity: 1048 rank: 1048
playlist_id: 7f7A3WaMDLcAHyTwxT5hK8 playlists:
"2020": 7ufqtvKQahEObK1hyoCywQ
"2021": 6KZvo6aNkvJM57QeV1dEdl
"2022": 6nky7fwmdkGLvus1Z1GG9H
"2023": 3rZ5vAiPOcnV6xgTXmMrs5
edge: 35CpSgxpTZYA8tT0cLr2iF
intro: 63c1MUz8cwOvwqcH7jLy4z
pulse: 4zwGynt6z1yQaPst1EbmD8
sound: 7f7A3WaMDLcAHyTwxT5hK8
zikir: zikir:
name: Zikir name: Zikir
description: description:
@ -167,8 +250,16 @@ zikir:
participants. participants.
parent: islamic parent: islamic
wikipedia_url: https://en.wikipedia.org/wiki/Dhikr wikipedia_url: https://en.wikipedia.org/wiki/Dhikr
popularity: 2648 rank: 2648
playlist_id: 2QusAPixVAakbqYcK087KN playlists:
"2020": 6JMKDG7musLNXNUaweF0mB
"2021": 3tU92vD3DMFHfJ90hdPn2R
"2022": 7d2ou7lr9Wt1k39KAI8tEU
"2023": 4WJZaqnBx5sBoe9TrTBQjJ
edge: 66ut1Xwgj2keW72rzMOHhM
intro: 4hlv1e1lv0rIVaP0OPUYGr
pulse: 1IHi9ftWEV1oEKlq62oYvW
sound: 2QusAPixVAakbqYcK087KN
zilizopendwa: zilizopendwa:
name: Zilizopendwa name: Zilizopendwa
description: description:
@ -178,8 +269,14 @@ zilizopendwa:
melodies, relatable lyrics, and danceable beats that still resonate with audiences melodies, relatable lyrics, and danceable beats that still resonate with audiences
today. today.
parent: afropop parent: afropop
popularity: 3270 rank: 3270
playlist_id: 6ZjTAVi7EIot1EPgaxoyO5 playlists:
"2022": 7a2R9u6R8NfvDlbmAcai2v
"2023": 4xpPnkC3Xku1JAucNTeYn9
edge: 57sUXlvp2wKvTIe1du6Mpq
intro: 7nnQpO1z3Z800P0Kt9u1LR
pulse: 67kgGxLGxHS0VsEd6VtgGK
sound: 6ZjTAVi7EIot1EPgaxoyO5
zillertal: zillertal:
name: Zillertal name: Zillertal
description: description:
@ -192,8 +289,18 @@ zillertal:
language: deu language: deu
country: AT country: AT
wikipedia_url: https://en.wikipedia.org/wiki/Zillertal#Culture wikipedia_url: https://en.wikipedia.org/wiki/Zillertal#Culture
popularity: 3075 rank: 3075
playlist_id: 1fzcR3U9cUpJm92J14ThFS playlists:
"2018": 3Zz6BY5tE5rdDTknAXnkp5
"2019": 5ItywednyP3E78pIOaa62C
"2020": 6ivJQtHAyX9kF1IFZTNtjY
"2021": 3C6jQHUmooxToZ7tKuxaag
"2022": 6cZTfkGzHV0JhNbSNzKvQ3
"2023": 3CcjO11Bc5lXM9h6Jam7AE
edge: 042ILS5629PdI1mZV9UChV
intro: 08FFaeJdASSvPBHQjmKEmd
pulse: 4Eu3wk3VL09qRr1izf7ZHI
sound: 1fzcR3U9cUpJm92J14ThFS
zim gospel: zim gospel:
name: Zim Gospel name: Zim Gospel
description: description:
@ -206,8 +313,16 @@ zim gospel:
country: ZW country: ZW
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zimbabwe#Gospel wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zimbabwe#Gospel
popularity: 4538 rank: 4538
playlist_id: 1EfJDym7urLaa1hpi6TFwr playlists:
"2020": 3hYQsZwU4BI5z8Sy8vdTki
"2021": 4bIhaI6Sm1zShiIkdtp9J5
"2022": 6k0RtBHM3Owu1CrXrBrZTY
"2023": 2aNwIz6RVLVhxqO6p9cqV8
edge: 1XVpDNtEFAfCB6GTHybvqk
intro: 56zpApJqmeWrfgShohTAey
pulse: 7fu5FIXkVy5rCtm2IUOuHN
sound: 1EfJDym7urLaa1hpi6TFwr
zim hip hop: zim hip hop:
name: Zim Hip Hop name: Zim Hip Hop
description: description:
@ -220,8 +335,16 @@ zim hip hop:
country: ZW country: ZW
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Zimbabwean_hip_hop wikipedia_url: https://en.wikipedia.org/wiki/Zimbabwean_hip_hop
popularity: 3834 rank: 3834
playlist_id: 25zL0DjNC6mr6qB3F5iSWK playlists:
"2020": 24b8mg5vsBHQ2eGXZOcOUn
"2021": 6VHbP8KZjpa2GWRwbo1zsV
"2022": 1pdA6Dy27QccMkkgQ1yhbZ
"2023": 71UaS6t1PQmRe5YSNbdvVU
edge: 69hDKr8sCkhrXYDZG1ZWC3
intro: 02547sBomc5SVzoJFH2aa2
pulse: 6z82ryN1gkKz2x2VGBzSvq
sound: 25zL0DjNC6mr6qB3F5iSWK
zim urban groove: zim urban groove:
name: Zim Urban Groove name: Zim Urban Groove
description: description:
@ -233,8 +356,16 @@ zim urban groove:
country: ZW country: ZW
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zimbabwe#Urban_Grooves wikipedia_url: https://en.wikipedia.org/wiki/Music_of_Zimbabwe#Urban_Grooves
popularity: 3710 rank: 3710
playlist_id: 54WupWz7dqaSAZvIv91ksb playlists:
"2020": 64922zKn4Jscvry7SJiQ06
"2021": 69uVwpL5GeOSvsCdE2Hmu2
"2022": 5u4HQQ316JsDq8PJQuxNcZ
"2023": 4Jps0bn9KewVijyCOQk3LS
edge: 2LF8S6bOaYsuIQQZWftFjX
intro: 1S7IzlN0LuZEAJwspC8eWA
pulse: 1mqSJ5mkbkvixlEqEuEqoh
sound: 54WupWz7dqaSAZvIv91ksb
zimdancehall: zimdancehall:
name: Zimdancehall name: Zimdancehall
description: description:
@ -245,8 +376,18 @@ zimdancehall:
parent: dancehall parent: dancehall
country: ZW country: ZW
wikipedia_url: https://en.wikipedia.org/wiki/Zimdancehall wikipedia_url: https://en.wikipedia.org/wiki/Zimdancehall
popularity: 3162 rank: 3162
playlist_id: 2K3BDsbnwwsJClbZqOQztK playlists:
"2018": 0rK39a5IGanOK9c8lJINoq
"2019": 6p3Hrbjiv4tFE8iY8LpXyr
"2020": 31yG4G1Upt1cuKkeO6lEn1
"2021": 6PwXgUYpnQ6RWdi9z5X6NO
"2022": 2vJqmoZfR26RneS32ImuZe
"2023": 4N5dmpdxW7Mucz5OYhykFN
edge: 4MhGYYmqYhLYzyxq9Sdnki
intro: 3TpEglsUsYM5IsM27aNEJJ
pulse: 5CagSlELd59f52LTLwMMz0
sound: 2K3BDsbnwwsJClbZqOQztK
zither: zither:
name: Zither name: Zither
description: description:
@ -258,8 +399,12 @@ zither:
parent: instrument parent: instrument
localized_name: true localized_name: true
wikipedia_url: https://en.wikipedia.org/wiki/Zither wikipedia_url: https://en.wikipedia.org/wiki/Zither
popularity: 5754 rank: 5754
playlist_id: 6bpwGHlRRLkVqfmOpqfmvx playlists:
"2022": 6xy9uDTfq44ivFRhQcrJH3
intro: 4V0ZPlaG9nxM3JiKGbkl6n
pulse: 2OU1OJADxPsF5iiBuJVx7n
sound: 6bpwGHlRRLkVqfmOpqfmvx
zohioliin duu: zohioliin duu:
name: Zohioliin Duu name: Zohioliin Duu
description: description:
@ -269,14 +414,28 @@ zohioliin duu:
(two-stringed lute). The lyrics of zohioliin duu songs are typically focused on (two-stringed lute). The lyrics of zohioliin duu songs are typically focused on
themes of love, nature, and the beauty of the Mongolian landscape. themes of love, nature, and the beauty of the Mongolian landscape.
parent: mongolian folk parent: mongolian folk
popularity: 5946 rank: 5946
playlist_id: 7HNLEMjbJjqPCGK6AXxAqa playlists:
"2022": 1dpgPyHehxIWlIjdBcqy6m
"2023": 58Kuv7GpNKCN1E1gE9CHtF
intro: 1SGagj87XH8ExbnlJM0SYW
pulse: 6QvVhD2WBnuX2td2VAP3ZV
sound: 7HNLEMjbJjqPCGK6AXxAqa
zolo: zolo:
name: Zolo name: Zolo
description: "" description: ""
parent: experimental parent: experimental
popularity: 811 rank: 811
playlist_id: 1HDK9LHAXjMQEbEhh9Lbfa playlists:
"2019": 3PDHEexZuRc6fq5XvGedRV
"2020": 686Whkq0YH2IRPecz75V5L
"2021": 4GIJE0z1QE4pchaTEnTlsx
"2022": 6JFnEO06HdsJa4t2veYwrx
"2023": 5c9C1OBA8xjWsixxrlKJQb
edge: 3UzMRlqF46hXh7XAapxmOD
intro: 5ePODnANEVIrPu0NNLu8sF
pulse: 17eVQDI3bYXdCxcX697iPB
sound: 1HDK9LHAXjMQEbEhh9Lbfa
zomi pop: zomi pop:
name: Zomi Pop name: Zomi Pop
description: description:
@ -286,8 +445,13 @@ zomi pop:
throughout Southeast Asia. throughout Southeast Asia.
parent: pop parent: pop
country: MM country: MM
popularity: 6003 rank: 6003
playlist_id: 6OIvf4qxX3DEeobwlpRBHq playlists:
"2023": 6EXSWHGXwLM2Y18USSYX39
edge: 5PMaKavtXKwpM1MsnAhfso
intro: 60raCdyp8P4kq5hkglgzj7
pulse: 6UIBQPVBz1gbDbJt0SfoE7
sound: 6OIvf4qxX3DEeobwlpRBHq
zouglou: zouglou:
name: Zouglou name: Zouglou
description: description:
@ -299,8 +463,18 @@ zouglou:
language: fra language: fra
country: CI country: CI
wikipedia_url: https://en.wikipedia.org/wiki/Zouglou wikipedia_url: https://en.wikipedia.org/wiki/Zouglou
popularity: 2500 rank: 2500
playlist_id: 7kGA6YnBYlU3HplyYp9buA playlists:
"2018": 5FsUOhIk6QVRg0CBtEXPq2
"2019": 70oLdRAIIn0pZkYmwPC6rQ
"2020": 6CNEU3ejJsduYZgTNSShIa
"2021": 5pfE821otW9ICjpx2ghEcu
"2022": 11aB5VVtLFBIrlm3MVnLoC
"2023": 4ELJec1VjGG2eWIn7CXorL
edge: 54MJVo9n1D7I5IeY5R0R95
intro: 68LPqL3IGQ4yauemWERGWK
pulse: 1CYBaeISwXShTdVDWcFGcy
sound: 7kGA6YnBYlU3HplyYp9buA
zouk: zouk:
name: Zouk name: Zouk
description: description:
@ -310,8 +484,18 @@ zouk:
elements of other genres like reggae and salsa. elements of other genres like reggae and salsa.
parent: musique guadeloupe parent: musique guadeloupe
wikipedia_url: https://en.wikipedia.org/wiki/Zouk wikipedia_url: https://en.wikipedia.org/wiki/Zouk
popularity: 1958 rank: 1958
playlist_id: 7mNGeqFpLOFebS0QrGXU2N playlists:
"2018": 5DU4EXai3fpwYHihwh0y0P
"2019": 53RjCxMQo1hWWaKfNtHPD6
"2020": 2esOhj56bgf2dMA3l8Va8N
"2021": 0SnEWSuCsRCFlqrca3YCfg
"2022": 7jhFPhSLwMUV4ZXmu3TgD2
"2023": 0Sp7KYyTUrsYcIFnIVQmBr
edge: 5WaiDRbwkjd02KCZy0H2wR
intro: 0uvJdpoV7slyBgaOvXh5d4
pulse: 2vLRmflO4amJkZB4lRVMSv
sound: 7mNGeqFpLOFebS0QrGXU2N
zouk riddim: zouk riddim:
name: Zouk Riddim name: Zouk Riddim
description: description:
@ -321,8 +505,18 @@ zouk riddim:
dancing. dancing.
parent: zouk parent: zouk
country: JM country: JM
popularity: 1980 rank: 1980
playlist_id: 6vkcfCa0G2qHz5CogrViSl playlists:
"2018": 2SoAWd2BYOOkRp9g7wwVLM
"2019": 7MeYNDMYrUPm5Hy3ITczLu
"2020": 3yrC9d9pnijjZ0bLSG4W4q
"2021": 6CH7izBLCWI9n3KVywf1HV
"2022": 1dvnLAn964SgQu8bA8Cr5G
"2023": 4a2vTmwipDZDsmGMZe0Axh
edge: 30S8Kvds1Te0JkjPRRrJKR
intro: 1CNCH5VugAdNhPOMvVlJGm
pulse: 76gyWS1NrryGTvpwruvo1I
sound: 6vkcfCa0G2qHz5CogrViSl
zurich indie: zurich indie:
name: Zürich Indie name: Zürich Indie
description: description:
@ -334,8 +528,9 @@ zurich indie:
recognition. recognition.
parent: swiss indie parent: swiss indie
localized_name: true localized_name: true
popularity: 4285 rank: 4285
playlist_id: 0jNHdwA4dCJkYmPBHlt4r2 playlists:
sound: 0jNHdwA4dCJkYmPBHlt4r2
zxc: zxc:
name: ZXC name: ZXC
description: description:
@ -344,8 +539,15 @@ zxc:
forceful drum beats. The genre is frequently linked to video game soundtracks and forceful drum beats. The genre is frequently linked to video game soundtracks and
has been featured in numerous popular video games. has been featured in numerous popular video games.
parent: electropop parent: electropop
popularity: 2039 rank: 2039
playlist_id: 3mOVijfpf6hU4gDCabCU5G playlists:
"2021": 3xOmLd3J8BSwVfYbSmDeyD
"2022": 5YAkW4WPyeOPU9fItmRfJp
"2023": 1OcUB3XMJufkkv9P9k0zMz
edge: 2iVdQGDx9mO3nYGTtGBQhg
intro: 1DXgXe8y7Nn5K83pD15Wjj
pulse: 4q3n9ocSYCUoOsz6fu5xZM
sound: 3mOVijfpf6hU4gDCabCU5G
zydeco: zydeco:
name: Zydeco name: Zydeco
description: description:
@ -359,5 +561,15 @@ zydeco:
language: lou language: lou
country: US country: US
wikipedia_url: https://en.wikipedia.org/wiki/Zydeco wikipedia_url: https://en.wikipedia.org/wiki/Zydeco
popularity: 4215 rank: 4215
playlist_id: 1BsskTfK2Sfg5mJI1o4MGr playlists:
"2018": 7m6MCXApdlaQAXpe83k5rR
"2019": 0HDIO7iTO3TbyFkVxCa8L3
"2020": 7CphmAIzRkBS3TwZWZm5Pb
"2021": 6nnU5IihvSaCUkeNMvfxKM
"2022": 4ih0fWzVDugG5rpa1qN5dp
"2023": 3Ac1ZDn50hwrdH8kFWzm5r
edge: 2sF6CWRdg9nWSryFtGgn8B
intro: 7wd1Omc54DAQOZ4e0yminR
pulse: 4Bwa4ju96NQmXOQMw3gPVN
sound: 1BsskTfK2Sfg5mJI1o4MGr

View file

@ -79,15 +79,34 @@
"description": "Wikidata entity ID of the genre", "description": "Wikidata entity ID of the genre",
"type": "integer" "type": "integer"
}, },
"popularity": { "rank": {
"description": "Position in the popularity ranking (1: most popular)", "description": "Position in the popularity ranking (1: most popular)",
"type": "number", "type": "number",
"minimum": 1 "minimum": 1
}, },
"playlist_id": { "playlists": {
"description": "Spotify genre playlist ID", "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", "type": "string",
"pattern": "^[A-z0-9]{22}$" "pattern": "^[A-z0-9]{22}$"
}
}, },
"alias": { "alias": {
"description": "Genre ID this genre is an alias of", "description": "Genre ID this genre is an alias of",