Sort_YM/config.toml
Andrew Pimenov 0902d86bcd classify tracks by combined track + artist genre signals
Раньше жанр брался только с альбома (одна строка, часто общая:
rock/alternative/pop) - разные по звучанию артисты сваливались в одну
крупную корзину. Теперь classify_track сводит жанр трека и жанры
артиста (client.artists(), несколько тегов на артиста) на уровне
под-жанра: при согласии сигналов или отсутствии одного из них берём
имеющийся; при конфликте - если альбомный тег зонтичный (GENERIC_SLUGS)
доверяем артисту, если точный - треку (вероятный осознанный эксперимент
артиста в другом жанре). Один и тот же артист с разными по духу треками
теперь раскладывается по разным плейлистам.

Под-жанровые группы меньше config.small_group_min схлопываются в
родительскую крупную корзину (report.build_rows, двухпроходно,
без циклов - coarse_of детерминирована от fine).

Попутно: artist_ids трека может быть None (артист без привязки к
каталогу Яндекса, встречается у стороннего/пиратского аплоада) - раньше
это улетало в client.artists() как строка "None" и валилось
BadRequestError на батче; теперь такие id отфильтровываются на записи
и дополнительно на чтении кэша.
2026-07-06 14:26:49 +03:00

21 lines
872 B
TOML

[throttle]
# Пауза между запросами к API, секунды
fetch_batch_delay = 0.4
lyrics_request_delay = 0.25
apply_request_delay = 0.3
# Таймаут одного запроса, секунды (библиотека по умолчанию ставит 5 - мало при медленной сети)
request_timeout = 20
[fetch]
# Сколько id треков в одном батч-запросе client.tracks(...) / client.artists(...)
batch_size = 100
[classify]
# Минимальный размер под-жанровой группы (fine, lang), чтобы получить отдельный плейлист.
# Меньшие группы схлопываются в родительскую крупную корзину (rock/indie-alt/...).
small_group_min = 12
[paths]
token_file = ".token"
cache_dir = "cache"
out_dir = "out"