mirror of
https://github.com/Horizontal42/Sort_YM.git
synced 2026-11-10 18:02:00 +03:00
fix ROOT_BUCKET to use verified genre roots instead of guessed slugs
Живой каталог client.genres() показал, что настоящий корень для рока - "allrock" (title "Рок"), а не "rock", как было угадано изначально. Из-за этого весь рок (559 из ~1900 треков, почти треть библиотеки) молча падал в "Разное". Таблица переписана по полному списку из 34 реальных корней (cache/genre_catalog.json), а не по предположениям об именах слагов.
This commit is contained in:
parent
f69d961064
commit
a8dd8d3bc8
2 changed files with 44 additions and 39 deletions
|
|
@ -10,57 +10,58 @@ from .ymclient import with_retries
|
||||||
GENRE_CATALOG_FILE = "genre_catalog.json"
|
GENRE_CATALOG_FILE = "genre_catalog.json"
|
||||||
|
|
||||||
# Корневые жанры каталога Яндекс.Музыки -> наши крупные корзины.
|
# Корневые жанры каталога Яндекс.Музыки -> наши крупные корзины.
|
||||||
# Список получен из реального дерева client.genres() и может дополняться:
|
# Таблица построена по реальному дереву client.genres() (все 34 актуальных корня на момент
|
||||||
# если жанр трека не находится ни в одном известном корне, он попадает в "other" —
|
# написания), а не по предположениям об именах слагов — проверено на живом каталоге
|
||||||
|
# (cache/genre_catalog.json). Если Яндекс добавит новый корневой жанр, он попадёт в "other" —
|
||||||
# смотрите разбивку "other" в выводе команды report, чтобы дополнить таблицу.
|
# смотрите разбивку "other" в выводе команды report, чтобы дополнить таблицу.
|
||||||
ROOT_BUCKET: dict[str, str] = {
|
ROOT_BUCKET: dict[str, str] = {
|
||||||
"pop": "pop",
|
# рок
|
||||||
"ruspop": "pop",
|
"allrock": "rock",
|
||||||
"estrada": "pop",
|
# инди / альтернатива / панк
|
||||||
"rnb": "pop",
|
|
||||||
"disco": "pop",
|
|
||||||
"rock": "rock",
|
|
||||||
"rusrock": "rock",
|
|
||||||
"hardrock": "rock",
|
|
||||||
"prog": "rock",
|
|
||||||
"alternative": "indie-alt",
|
"alternative": "indie-alt",
|
||||||
"indie": "indie-alt",
|
"indie": "indie-alt",
|
||||||
"punk": "indie-alt",
|
"punk": "indie-alt",
|
||||||
"postrock": "indie-alt",
|
# метал
|
||||||
"metal": "metal",
|
"metal": "metal",
|
||||||
"extreme": "metal",
|
# рэп
|
||||||
"industrial": "metal",
|
|
||||||
"rap": "rap",
|
"rap": "rap",
|
||||||
"rusrap": "rap",
|
# электроника / танцевальная
|
||||||
"hip": "rap",
|
|
||||||
"hiphop": "rap",
|
|
||||||
"trap": "rap",
|
|
||||||
"electronics": "electronic",
|
"electronics": "electronic",
|
||||||
"dance": "electronic",
|
"dance": "electronic",
|
||||||
"house": "electronic",
|
# джаз и блюз
|
||||||
"techno": "electronic",
|
|
||||||
"trance": "electronic",
|
|
||||||
"dnb": "electronic",
|
|
||||||
"dubstep": "electronic",
|
|
||||||
"jazz": "jazz-blues",
|
"jazz": "jazz-blues",
|
||||||
"blues": "jazz-blues",
|
"blues": "jazz-blues",
|
||||||
"soul": "jazz-blues",
|
# классика
|
||||||
"funk": "jazz-blues",
|
|
||||||
"classicalmusic": "classical",
|
"classicalmusic": "classical",
|
||||||
"classical": "classical",
|
# поп
|
||||||
"opera": "classical",
|
"pop": "pop",
|
||||||
|
"estrada": "pop",
|
||||||
|
"rnb": "pop",
|
||||||
|
# фолк и world
|
||||||
"folk": "folk-world",
|
"folk": "folk-world",
|
||||||
|
"folkgenre": "folk-world",
|
||||||
"bard": "folk-world",
|
"bard": "folk-world",
|
||||||
"author": "folk-world",
|
|
||||||
"avtorskaya": "folk-world",
|
|
||||||
"shanson": "folk-world",
|
"shanson": "folk-world",
|
||||||
"world": "folk-world",
|
|
||||||
"reggae": "folk-world",
|
|
||||||
"country": "folk-world",
|
"country": "folk-world",
|
||||||
"films": "soundtrack",
|
"reggae": "folk-world",
|
||||||
|
"ska": "folk-world",
|
||||||
|
"islamicgenre": "folk-world",
|
||||||
|
# саундтреки
|
||||||
"soundtrack": "soundtrack",
|
"soundtrack": "soundtrack",
|
||||||
"musical": "soundtrack",
|
# не музыка / нераспределяемое -> "other"
|
||||||
"cartoon": "soundtrack",
|
"all": "other",
|
||||||
|
"other": "other",
|
||||||
|
"relax": "other",
|
||||||
|
"children": "other",
|
||||||
|
"forchildren": "other",
|
||||||
|
"poemsforchildren": "other",
|
||||||
|
"fairytales": "other",
|
||||||
|
"audiobooks": "other",
|
||||||
|
"booksnotinrussian": "other",
|
||||||
|
"fiction": "other",
|
||||||
|
"nonfictionliterature": "other",
|
||||||
|
"podcasts": "other",
|
||||||
|
"naturesounds": "other",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,14 @@ from sort_ym import genres
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def catalog():
|
def catalog():
|
||||||
|
# Форма реального дерева client.genres(): "rock"/"rusrock" - подгенры, реальный
|
||||||
|
# корень называется "allrock", а не "rock" (проверено на живом каталоге).
|
||||||
return {
|
return {
|
||||||
"rock": {"title": "Рок", "root_id": "rock"},
|
"allrock": {"title": "Рок", "root_id": "allrock"},
|
||||||
"rusrock": {"title": "Русский рок", "root_id": "rock"},
|
"rock": {"title": "Иностранный рок", "root_id": "allrock"},
|
||||||
"postrock": {"title": "Пост-рок", "root_id": "postrock"},
|
"rusrock": {"title": "Русский рок", "root_id": "allrock"},
|
||||||
"rap": {"title": "Рэп", "root_id": "rap"},
|
"alternative": {"title": "Альтернатива", "root_id": "alternative"},
|
||||||
|
"rap": {"title": "Рэп и хип-хоп", "root_id": "rap"},
|
||||||
"trap": {"title": "Трэп", "root_id": "rap"},
|
"trap": {"title": "Трэп", "root_id": "rap"},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -17,9 +20,10 @@ def catalog():
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"genre_raw,expected",
|
"genre_raw,expected",
|
||||||
[
|
[
|
||||||
|
("allrock", "rock"),
|
||||||
("rock", "rock"),
|
("rock", "rock"),
|
||||||
("rusrock", "rock"),
|
("rusrock", "rock"),
|
||||||
("postrock", "indie-alt"),
|
("alternative", "indie-alt"),
|
||||||
("rap", "rap"),
|
("rap", "rap"),
|
||||||
("trap", "rap"),
|
("trap", "rap"),
|
||||||
(None, "other"),
|
(None, "other"),
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue