Commit Graph

  • e1bceb8bd1 feat(privacy): страница политики конфиденциальности на /privacy main nk 2026-06-08 13:55:44 +03:00
  • 0dd52ddc3b ops: вернуть в compose конфиг авто-обновления (bind-mount appdist + env) nk 2026-06-07 19:27:23 +03:00
  • 791156f814 feat(shazam): глобальный лимит распознаваний (защита баланса коинов) nk 2026-06-07 18:47:25 +03:00
  • 059ebc9c45 feat(shazam): реальный двухстадийный флоу shazam-api.com (recognize → poll) nk 2026-06-07 18:45:00 +03:00
  • 1616c231b7 feat(shazam): распознавание трека через Shazam API для станций без метаданных nk 2026-06-07 18:37:53 +03:00
  • 05e3796b85 feat(app-version): эндпоинт /app-version + хостинг APK для авто-обновления nk 2026-06-06 20:21:54 +03:00
  • 4aa3b55b5e perf(backend): ретенция track_plays, прун сирот-треков, проекция now-playing, пул БД nk 2026-06-06 17:08:36 +03:00
  • 944ec63df0 refactor(now-playing): единый IcyReader + реестр dedicated-источников nk 2026-06-06 16:54:02 +03:00
  • a3434ed894 perf(backend): индексы, кэш чартов, пропуск upsert, фикс N+1 обогащения nk 2026-06-06 16:20:25 +03:00
  • 924a4a0ab1 fix(charts): отсев заглушек Online-Radio и джинглов FX-NN nk 2026-06-06 15:52:41 +03:00
  • 0084177d15 fix(charts): отсев мусора и разговорных/шуточных станций из чарта nk 2026-06-06 15:49:17 +03:00
  • 38e380a59f fix(now-playing): Radio 7 главные каналы — slug не съедает '7' nk 2026-06-06 09:50:18 +03:00
  • cc30422d8d feat(now-playing): 101.ru (Comedy Radio + Радио Energy) и Radio 7 через EMG nk 2026-06-06 09:29:41 +03:00
  • c4c475544a feat(now-playing): Радио Ваня + Русская Волна; Питер объединён в SpbRadio nk 2026-06-06 09:18:23 +03:00
  • 3c4f349f71 fix(now-playing): Орфей — чиним кодировку (двойная мойибейк cp1251) + режем хекс-хвосты nk 2026-06-06 09:01:03 +03:00
  • c87a0caa5c feat(now-playing): Питер ФМ и Орфей nk 2026-06-06 08:34:32 +03:00
  • 426fd0e197 feat(now-playing): Новое Радио BY — now-playing с правильной кодировкой + Wake Up nk 2026-06-05 21:20:06 +03:00
  • d5f30cd05d fix(now-playing): ГУСЬ — не использовать битый art AzuraCast, обложки через обогащение nk 2026-06-05 20:36:45 +03:00
  • d8b6a6024f fix(now-playing): ГУСЬ Технорейв — алиас slug harddance→technorave nk 2026-06-05 20:27:01 +03:00
  • cb0e401854 feat(now-playing): ГУСЬ (radiogoose) — now-playing + обложки, починка потоков nk 2026-06-05 20:22:28 +03:00
  • fd26e4df57 chore(stations): удалены мёртвые каналы Зайцева New year/Hvilya nk 2026-06-05 20:07:20 +03:00
  • a06a9b2a2b feat(now-playing): now-playing + обложки для Зайцев ФМ nk 2026-06-05 19:52:37 +03:00
  • 4d9fd24074 feat(now-playing): now-playing + обложки для каналов Unistar nk 2026-06-05 19:37:17 +03:00
  • 1f67e01ac8 feat(covers): POST /covers/submit — приём обложки, найденной клиентом nk 2026-06-04 16:59:36 +03:00
  • 52c8c3f69f fix(enrich): быстрый now-playing проход — только Deezer (без затыка iTunes) nk 2026-06-04 16:40:06 +03:00
  • 28487a7911 fix(enrich): iTunes/Deezer через DE-прокси + троттлинг (RU-IP забанен) nk 2026-06-04 16:30:06 +03:00
  • 59aa23ff77 fix(enrich): coverFast — очищенный iTunes + Deezer (не множить лимит) nk 2026-06-04 16:06:43 +03:00
  • ba9b4054e8 feat(enrich): больше обложек — очистка запроса iTunes + фолбэк Deezer nk 2026-06-04 15:50:20 +03:00
  • 35f9a2b7cc chore(stations): Royal Radio — https вместо http (301-редирект) nk 2026-06-04 15:31:13 +03:00
  • c2e941f1c3 chore(stations): Romantika (711) — рабочий HLS вместо мёртвого srv21 nk 2026-06-04 15:18:25 +03:00
  • 326bbbc0ee chore(stations): Like FM (718) — рабочий HLS, группа Like FM nk 2026-06-04 15:05:09 +03:00
  • 87cc67072c chore(scripts): пробер битрейт-вариантов потоков станций nk 2026-06-04 12:37:11 +03:00
  • 3c6dbed659 feat(now-playing): Radio ROKS через TavR Media API (трек + обложки) nk 2026-06-04 11:44:30 +03:00
  • 51576f7198 feat(now-playing): Радио Монте-Карло через Крутой Медиа API nk 2026-06-04 10:55:09 +03:00
  • d6b8be124e perf(enrich): 3-й IP Discogs (token3 через форс-IPv4 RU) + concurrency 12 nk 2026-06-04 10:21:37 +03:00
  • 7457498f5b perf(enrich): concurrency 8 — задействовать оба IP Discogs (RU+DE) nk 2026-06-04 10:10:39 +03:00
  • e982fde730 feat(enrich): 2-й токен Discogs через DE-прокси (2 IP → ~108/мин жанров) nk 2026-06-04 10:01:37 +03:00
  • dfdfb7e4ab fix(enrich): Discogs троттлит по IP — общий лимит ~54/мин (стоп 429-шторм) nk 2026-06-04 09:52:39 +03:00
  • 94e7f46b39 perf(enrich): ротация двух токенов Discogs (~108/мин жанров) nk 2026-06-04 09:45:35 +03:00
  • ed94bd73d7 perf(enrich): cover-проход эфира 8 параллельно + защита от наложения nk 2026-06-03 21:02:33 +03:00
  • 36043c32b0 perf(enrich): быстрый cover-only проход эфира через iTunes (без Discogs-гейта) nk 2026-06-03 20:56:50 +03:00
  • 5164843824 perf(enrich): rate-limiter на Discogs + concurrency 5 (обложки быстрее) nk 2026-06-03 20:51:28 +03:00
  • 588857a73e feat(now-playing): MAXIMUM через тот же Крутой-API (dfm.ru/api/n/current) nk 2026-06-03 20:36:48 +03:00
  • d46020bd37 chore(stations): Love Radio -> потоки n340 (синхр. с клиентом) nk 2026-06-03 20:14:26 +03:00
  • bd2cd36f1e fix(now-playing): Love Radio — ICY авторизованных n340-потоков (per-channel) nk 2026-06-03 20:09:01 +03:00
  • 68c919c8ba fix(now-playing): Love Radio — online?musicStreamId (per-channel), не history nk 2026-06-03 18:23:56 +03:00
  • fa7742d06e feat(now-playing): Love Radio через api.loveradio.ru (ICY шлёт мусор onlinestop56k) nk 2026-06-03 18:19:12 +03:00
  • 338f189f33 fix(enrich): не помечать done при сбое запроса iTunes (промах не застывает) nk 2026-06-03 18:09:54 +03:00
  • 40a9f3968f feat(stations): корректный health-check + эндпоинт offline-ids nk 2026-06-03 17:56:59 +03:00
  • c2f638e1a1 chore(stations): синхр. — отключены 67 мёртвых станций nk 2026-06-03 17:48:45 +03:00
  • 7ff48fff29 fix(now-playing): EMG-фолбэк slug europaplus-{x} (Fresh застрял) nk 2026-06-03 17:26:51 +03:00
  • 8f0ec8a5b8 perf(enrich): снизить параллельность 3->2 (уложиться в лимит Discogs 60/мин) nk 2026-06-03 17:17:12 +03:00
  • db09274060 fix(enrich): нормализовать пунктуацию в поиске iTunes (St.Thomas → St Thomas) nk 2026-06-03 17:08:25 +03:00
  • 982c42cdf2 chore(stations): синхр. — отключены мёртвые EP-каналы Acoustic/ResiDance nk 2026-06-03 17:05:15 +03:00
  • 7e6b0c8dc6 feat(now-playing): DFM/Крутой Медиа через dfm.ru/api/n/current nk 2026-06-03 16:24:33 +03:00
  • 3215dd5a4e fix(now-playing): отсекать JSON-статус в ICY StreamTitle (101.ru) nk 2026-06-03 16:11:26 +03:00
  • 3049b1ec89 chore(stations): актуальные emgsound HLS-потоки для 8 каналов Европы Плюс nk 2026-06-03 15:47:27 +03:00
  • 499863744f fix(now-playing): EMG-поллер не фильтрует по isOnline + чинит ошибочный offline nk 2026-06-03 15:34:05 +03:00
  • 38b2aee26d feat(now-playing): EMG (Европа Плюс и др.) now-playing через meta.hostingradio nk 2026-06-03 15:28:06 +03:00
  • dcc2f599f9 fix(enrich): непрерывный бэкафилл (пополнять очередь когда почти пуста) nk 2026-06-03 15:05:51 +03:00
  • 5bd7bfb923 feat(enrich): iTunes-фолбэк для жанра/альбома/года (гибрид с Discogs) nk 2026-06-03 15:00:02 +03:00
  • 554c1730a3 perf(enrich): параллельная обработка очереди (3 трека) — быстрее покрывать живой набор nk 2026-06-03 14:49:25 +03:00
  • bb74d631c1 feat(enrich): крон — гарантировать обложку играющим сейчас трекам nk 2026-06-03 14:39:13 +03:00
  • 916fc301e4 feat(enrich): обложки через iTunes Search + приоритет играющим трекам nk 2026-06-03 14:33:52 +03:00
  • 96fabac7f5 fix(now-playing): резолвить обложку трека на чтении /now-playing nk 2026-06-03 14:20:41 +03:00
  • f379110975 feat(now-playing): DFM и др. ICY-станции — обложки + чарты + ротация nk 2026-06-03 14:08:07 +03:00
  • 149421740f perf(enrich): ускорить бэкафилл (батч 240 каждые 5 мин, ~50 треков/мин) nk 2026-06-03 13:43:19 +03:00
  • 0efba7c691 feat(enrich): обогащение треков через Discogs + самохостинг обложек (WebP) nk 2026-06-03 13:28:08 +03:00
  • 24ed44e8ab feat(now-playing): добавить name станции в ответ (для матча обложек на клиенте) nk 2026-06-03 12:10:04 +03:00
  • df20e0fac6 feat(now-playing): REST GET /now-playing (ключ — id станции каталога) nk 2026-06-03 10:51:49 +03:00
  • e0990540b9 fix(charts): отсекать джинглы/шоу/названия станций из сбора чартов nk 2026-06-03 10:38:05 +03:00
  • 38fe92d695 feat(charts): сбор статистики проигрываний и API чартов feat/charts nk 2026-06-02 23:40:13 +03:00
  • bbfec76a7b fix: use Node.js http module for reliable ICY parsing nk 2026-06-02 20:19:21 +03:00
  • d0874ae9db fix: parallel ICY polling with batch size 10 and 5s timeout nk 2026-06-02 20:15:15 +03:00
  • 6b2e02f6c0 chore: warn on ICY errors for debugging nk 2026-06-02 20:11:35 +03:00
  • 0dee9d56b7 chore: add ICY poll logs nk 2026-06-02 20:08:17 +03:00
  • 1b0c59264f feat: ICY metadata fallback for non-Record stations nk 2026-06-02 20:03:25 +03:00
  • 09211dceb5 fix: broadcast stationId as int for Android mapping nk 2026-06-02 19:52:33 +03:00
  • d082a1ce07 chore: add debug logs to now-playing polling nk 2026-06-02 19:40:19 +03:00
  • 7823b17d55 feat: now-playing polling from Record API with station mapping and WebSocket broadcast nk 2026-06-02 19:31:48 +03:00
  • 2ae682fb68 fix: use LOGIN auth method for SMTP (mailcow compatibility) nk 2026-06-02 14:15:39 +03:00
  • 8aadd62e3c feat: bootstrap NestJS backend with auth, stations, users, health-check, now-playing nk 2026-06-02 13:54:00 +03:00