diff --git a/family/index.md b/family/index.md index 1cc4a703..014acf01 100755 --- a/family/index.md +++ b/family/index.md @@ -48,6 +48,7 @@ Hub: [[family/how-to/truenas-infrastructure|TrueNAS Infrastructure]] - [[family/projects/media-toolbox-taiga|Media Toolbox (Taiga)]] — *arr стек на TrueNAS - [[family/how-to/arr-stack-taiga|Arr Stack — Taiga]] - [[family/plans/lidarr-taiga-deploy|Lidarr на Taiga]] — 🟡 в работе, прокси-обход +- [[family/plans/lidarr-artist-watchlist|Lidarr — список артистов]] — 🟡 анализ Spotify+Яндекс, 207 кандидатов, 🔴 SkyHook 403 - [[family/how-to/jellyfin-config|Jellyfin Config]] — живой инстанс на Taiga - [[family/documents/google-books-api-key|Google Books API Key]] — ключ для library-app - [[family/documents/home-access-codes|Коды доступа]] — коды замков, ключи активации, PIN-коды diff --git a/family/plans/lidarr-artist-watchlist.md b/family/plans/lidarr-artist-watchlist.md new file mode 100644 index 00000000..d5a62e1f --- /dev/null +++ b/family/plans/lidarr-artist-watchlist.md @@ -0,0 +1,192 @@ +# Lidarr — список артистов на отслеживание (анализ Spotify + Яндекс Музыка) + +**Дата:** 2026-09-28 +**Статус:** 🟡 **АНАЛИЗ ГОТОВ, ВАЛИДАЦИЯ В LIDARR ЗАБЛОКИРОВАНА** +**Namespace:** family +**Задача Alex:** «Анализ моей библиотеки Яндекс/Spotify — каких артистов стоит добавить в Lidarr для отслеживания/автозакачки, возможно что-то из "похожего" но отсутствующего тоже. Минимум 50 позиций.» + +--- + +## 🔴 БЛОКЕР: SkyHook в Lidarr снова отдаёт 403 — валидация имён невозможна + +Прогнать 50+ имён через `artist/lookup` **не удалось** — Lidarr не ходит в SkyHook. + +**Симптом:** +``` +GET /api/v1/artist/lookup?term=Astrix + → {"message":"...Unable to communicate with LidarrAPI. + HTTP request failed: [403:Forbidden] [GET] at + [https://api.lidarr.audio/api/v0.4/search?type=artist&query=astrix]"} +``` + +**Диагностика (проверено 2026-09-28, тот же класс проблемы, что закрывался 28 сен):** + +| Проверка | Результат | +|---|---| +| `GET /api/v1/config/host` | `proxyEnabled=true`, `proxyType=http`, `proxyHostname=vless-proxy`, `proxyPort=1081`, `proxyBypassFilter` расширен ✅ | +| `curl -x http://vless-proxy:1081 https://api.ipify.org` из контейнера | **`104.28.211.192`** (VPS) ✅ | +| `curl https://api.ipify.org` **без** прокси | **`90.189.160.148`** = **ДОМАШНИЙ IP** ❌ | +| `docker exec lidarr env \| grep -i proxy` | `NO_PROXY_VARS` — env-вариант откачен, ок | +| `curl https://api.ipify.org` **с самого хоста Тайги** | **`90.189.160.148`** — вся сеть NAS идёт через домашний аплинк | +| `docker logs lidarr \| grep -i proxy` | 🔴 **`[Error] ProxyCheck: Proxy Health Check failed`** | +| Cloudflare-ответ в теле 403 | `Your IP: 90.189.160.148` — подтверждает, что запрос ушёл **напрямую** | +| `GET /api/v1/health` | `[]` — **пусто**, хотя лог пишет `ProxyCheck failed` (кэш health врёт) | +| `docker restart lidarr` | **выполнен**, lookup → **всё тот же 403** | + +**Корень (в одну строку):** встроенный прокси-конфиг Lidarr **записан, но не применяется** — +собственный `ProxyCheck` Lidarr репортит `failed`, запросы уходят напрямую, и Cloudflare +режет их по гео-IP дома (`90.189.160.148`). + +⚠️ **Поправка к записи от 2026-09-28:** тогда было зафиксировано «фикс применён, `docker restart +lidarr` выполнен → работает». Факт 2026-09-28 (вечер, повторная проверка): **блокер вернулся**. +То есть либо фикс не персистится, либо `ProxyCheck` — отдельный механизм, который надо +разбирать отдельно. Проверять `docker logs lidarr | grep -i proxy` при каждом рецидиве. + +**Что НЕ помогло:** +- `docker restart lidarr` (сделан, не помог). +- Проверка env-переменных — вариант откачен ранее, их нет. + +**Следующая гипотеза (не проверена, апрув истёк):** `ProxyCheck` в Lidarr 3.x имеет +**отдельную настройку проверки прокси** (`Settings → General → Proxy`) либо требует +`proxyBypassLocalAddresses=false`. Также возможно, что `proxyPort=1081` (HTTP-CONNECT) не +поддерживается .NET-клиентом так же, как SOCKS5 — тогда нужен `proxyType: socks5` + порт **1080**. + +**Скрипт диагностики (готов):** `/tmp/mus/verify.sh` — пакетная проверка имён через lookup. + +--- + +## Что сделано в анализе + +### 1. Извлечение артистов + +| Источник | Файл | Строк-треков | Уникальных артистов | +|---|---|---|---| +| Spotify | `personal/spotify-library.md` | 259 | 233 | +| Яндекс Музыка | `personal/yandex-music-library.md` | 1 056 | 765 | +| **Итого (объединение)** | — | **1 315** | **967** | + +Парсились ВСЕ секции (лайки **и** плейлисты), художник разбивался по `,` `&` `/` `feat.` `ft.` +`vs.` и ` x `. Веса: лайк = 3, плейлист = 2 (позволяет отличать «сильно любимое» от «попавшего в плейлист»). + +### 2. Сверка с текущим владением + +Проверено **владение** через Navidrome (читает теги, а не папки): + +```bash +docker exec navidrome sqlite3 'file:/data/navidrome.db?mode=ro' "SELECT name FROM artist;" +``` + +| Метрика | Значение | +|---|---| +| Артистов в Navidrome | **1 207** | +| Альбомов | 551 | +| Треков | 7 791 | +| Артистов в Lidarr | **1** (только `Radiohead`) | + +⚠️ `Music/` на NAS — **плоская** структура (`!Rock&Folk`, `!Рэп`…), артистов по папкам НЕ смотреть. +Единственный источник правды по владению — **Navidrome DB** (теги). + +### 3. Кандидаты + +Артистов из Spotify+Яндекс, которых **нет** ни в Lidarr, ни в Navidrome: **838** (после +нормализации имён: lower, `ё→е`, снятие ведущего `the`, unicode-нормализация, substring-матч). + +⚠️ **Питфолл:** разбиение по `,` плодит мусор — `Polo & Pan` → `Polo` + `Pan`; +`Atomic Heart` (это игра-саундтрек); `KSHMR` ок, но `BOBI`/`BOBA` — половина имени. +Хардкод-blocklist мусора ведётся в `/tmp/mus/build_final.py` (переменная `NOISE`). + +### 4. Артефакты анализа (на локальной машине) + +| Файл | Что | +|---|---| +| `/tmp/mus/analyze.py` | извлечение артистов из обоих md-экспортов + подсчёт | +| `/tmp/mus/crosscheck.py` | сверка с Navidrome, генерация списка кандидатов | +| `/tmp/mus/build_final.py` | сборка финального списка (библиотека + веб-ресёрч), blocklist | +| `/tmp/mus/verify.sh` | пакетная валидация имён через Lidarr `artist/lookup` | +| `/tmp/mus/final_list.tsv` | **207 строк**: rank / artist / genre / why / tier / score | +| `/tmp/mus/artists_whole.tsv` | все 967 артистов с весами | +| `/tmp/mus/navidrome_artists.txt` | 1 207 артистов-владельцев из БД | + +⚠️ `/tmp` сбрасывается при перезагрузке — при необходимости перегенерировать скриптами. +Сами скрипты пока НЕ скопированы в vault (были во временном каталоге). + +--- + +## Черновик списка (без валидации в Lidarr) + +### Tier A — уже слушаете, но нет ни в Lidarr, ни на NAS (из библиотек, score = вес лайков) + +Топ-30 из 838 кандидатов: + +| # | Артист | Score | # | Артист | Score | +|---|---|---|---|---|---| +| 1 | СтимфониЯ | 42 | 16 | Set It Off | 17 | +| 2 | KSHMR | 30 | 17 | Mother Mother | 15 | +| 3 | Diablo Swing Orchestra | 28 | 18 | Intelligency | 15 | +| 4 | Rodrigo y Gabriela | 26 | 19 | OVERWERK | 15 | +| 5 | Caravan Palace | 24 | 20 | Заточка | 14 | +| 6 | RichaadEB | 24 | 21 | Джин-Тоник | 13 | +| 7 | Apashe | 21 | 22 | Massive Attack | 12 | +| 8 | Polyphia | 21 | 23 | Asper / Bliss | 12 | +| 9 | Пневмослон | 18 | 24 | The Lost Fingers | 12 | +| 10 | Die Antwoord | 18 | 25 | The Living Tombstone | 12 | +| 11 | Oliver Tree | 18 | 26 | YOHIO | 12 | +| 12 | Worakls | 18 | 27 | Marnik | 12 | +| 13 | KONGOS | 18 | 28 | Gramatik | 12 | +| 14 | NTO | 18 | 29 | Нейромонах Феофан | 12 | +| 15 | Lindemann | 17 | 30 | Viza | 12 | + +### Tier B — «похожие», которых нет в библиотеках (веб-ресёрч, 119 шт., 16 направлений) + +| Направление | Кандидаты | +|---|---| +| **psy-trance** (Infected Mushroom, Skazi) | Astrix, Shpongle, Juno Reactor, Ace Ventura, Talamasca, Electric Universe, Vini Vici, Avalon, Ott, Vibrasphere, 1200 Micrograms, GMS | +| **electro-swing** (Caravan Palace) | Parov Stelar, Tape Five, Swingrowers, The Correspondents, Jamie Berry, Wolfgang Lohr | +| **melodic techno** (Worakls, NTO) | Joachim Pastor, Teho, Paul Kalkbrenner, Boris Brejcha, Kölsch, Moderat | +| **French touch / synthwave** | French 79, Rone, Fakear, Thylacine, Bon Entendeur, L'Impératrice, Carpenter Brut, Perturbator, Dance With The Dead, Gunship | +| **chiptune / VGM** (meganeko, Jake Kaufman, MBR) | Bossfight, Anamanaguchi, Camellia, Shirobon, Lena Raine, Christopher Larkin, Darren Korb | +| **bass / trap / DnB** (Apashe, KSHMR) | Black Tiger Sex Machine, Kai Wachi, Dabin, RL Grime, Noisia, Pendulum, Netsky, Sub Focus, Blasterjaxx, Vinai | +| **prog / инструментал** (Polyphia) | CHON, Plini, Animals as Leaders, Intervals, Ichika Nito, Thank You Scientist, Biffy Clyro, Placebo | +| **avant / swing-metal** (DSO) | Unexpect, Stolen Babies, Estradasphere, Igorrr | +| **акустика** (Rodrigo y Gabriela) | Hermanos Gutiérrez, Opal Ocean, Estas Tonne, Strunz & Farah | +| **psychobilly** (Mad Sin, Hillbilly Moon) | The Meteors, Nekromantix, Horrorpops, Tiger Army, Demented Are Go, Reverend Horton Heat | +| **NDH / industrial** (Rammstein, Lindemann) | Eisbrecher, Oomph!, Megaherz, Heldmaschine, Emigrate | +| **alt-pop** (Oliver Tree, Die Antwoord, Little Big) | Tommy Cash, Electric Callboy, Salvatore Ganacci, Sub Urban, Ashnikko, Will Wood, Ghost Town | +| **русский рок / панк / ска** | Сплин, Пикник, Крематорий, Алиса, Наутилус Помпилиус, Чайф, Би-2, АукцЫон, Тараканы!, Наив, Порнофильмы, Кукрыниксы, Сектор Газа, Distemper, Ляпис Трубецкой, Элизиум, Мельница, Пилот, Сурганова и Оркестр, Animal ДжаZ, Отава Ё, Дайте танк (!), Моя Мишель, Пошлая Молли | +| **русский рэп** | Anacondaz, Каспийский Груз, Хаски, Скриптонит, Баста, Многоточие, KREC, Рем Дигга, Гуф, Смоки Мо | + +**Итого в черновике: 207 строк** — требование «минимум 50» перекрыто с запасом. + +--- + +## Что осталось (для следующей сессии) + +1. 🔴 **Починить SkyHook в Lidarr** (см. блокер выше) — без этого списка в Lidarr не залить. +2. Пропустить все имена Tier A + Tier B через `artist/lookup` (`/tmp/mus/verify.sh`), + выкинуть те, что не находятся (главный фильтр от «придуманных» имён). +3. Отфильтровать то, что уже есть в Navidrome (проверка владения — там, не по папкам). +4. Собрать финальный doc-список ≥50 позиций. +5. Опционально: массовое добавление артистов в Lidarr через `POST /api/v1/artist` + (`foreignArtistId` из lookup, `qualityProfileId`, `metadataProfileId`, `rootFolderPath=/storage/Music`). + +--- + +## Ссылки + +- [[family/plans/lidarr-taiga-deploy]] — деплой Lidarr (там же основной разбор SkyHook-прокси) +- [[family/projects/media-toolbox-taiga]] — *arr стек на Taiga +- [[family/how-to/navidrome-truenas-android]] — Navidrome (источник правды по владению) +- [[personal/music-download-practices]] — где брать mp3 (hitmotop, mp3party) +- [[personal/spotify-library]] — экспорт Spotify +- [[personal/yandex-music-library]] — экспорт Яндекс Музыки + +--- + +## История + +- **2026-09-28** — Alex: «анализ библиотеки Яндекс/Spotify, каких артистов добавить в Lidarr, + минимум 50 позиций». Извлечено 967 уникальных артистов из 1 315 строк; сверено с 1 207 + артистами Navidrome → 838 кандидатов; веб-ресёрч дал 119 «похожих» по 16 направлениям; + черновик 207 строк. 🔴 **Валидация в Lidarr невозможна** — SkyHook 403, `ProxyCheck: failed`, + запросы уходят напрямую с домашнего IP `90.189.160.148` (вся сеть Тайги — за домашним аплинком, + VPS-выход даёт только `vless-proxy`). `docker restart lidarr` не помог. Блокер оставлен открытым. diff --git a/family/plans/lidarr-taiga-deploy.md b/family/plans/lidarr-taiga-deploy.md index 750fe393..9ebf6723 100755 --- a/family/plans/lidarr-taiga-deploy.md +++ b/family/plans/lidarr-taiga-deploy.md @@ -1,9 +1,20 @@ # Lidarr на Taiga — деплой в связке с arr-стеком и Navidrome **Дата:** 2026-09-28 -**Статус:** ✅ **РАБОЧИЙ — приёмка закрыта 2026-09-28 (вечер).** SkyHook-блокер снят, -проверено end-to-end: lookup → добавление артиста → поиск релизов. Бал: 0 артистов → 1, -0 релизов → 43. +**Статус:** 🔴 **ДЕФЕКТ ВОЗВРАТИЛСЯ (проверено 2026-09-28, поздний вечер) — SkyHook снова 403.** +Ранняя запись «SkyHook-блокер снят, lookup работает» **опровергнута повторной проверкой**. +**Факт:** `GET /api/v1/artist/lookup?term=Astrix` → **403 Cloudflare**; в логах +`[Error] ProxyCheck: Proxy Health Check failed`. Встроенный прокси-конфиг **записан, но не +применяется** — запросы уходят напрямую с **домашнего IP `90.189.160.148`** (вся сеть Тайги +выходит через домашний аплинк; VPS-выход даёт только `vless-proxy` → `104.28.211.192`). +`docker restart lidarr` **выполнен — не помог**. `GET /api/v1/health` при этом отдаёт `[]` +(кэш health врёт, ориентироваться по `docker logs lidarr | grep -i proxy`). +⚠️ **Поправка к записи ниже:** «фикс применён + `docker restart lidarr` → работает» — **НЕВЕРНО +на 2026-09-28 вечер**. Разбор и следующая гипотеза (`proxyBypassLocalAddresses`, `proxyType: socks5` ++ порт 1080) — в [[family/plans/lidarr-artist-watchlist]] §БЛОКЕР. +**Ранее заявленный статус (оставлен для истории):** ✅ РАБОЧИЙ — приёмка закрыта 2026-09-28 (вечер). +SkyHook-блокер снят, проверено end-to-end: lookup → добавление артиста → поиск релизов. +Бал: 0 артистов → 1, 0 релизов → 43. **Добивка (2026-09-28, поздний вечер):** Radarr и Sonarr вычищены до `health: []` (`docker restart` + снятие карантина в Prowlarr + `?forceSave=true`). Найден и исправлен последний дефект Lidarr — **`proxyBypassFilter` без внутренних docker-имён** (см. питфолл). diff --git a/personal/tech/flaresolverr-taiga.md b/personal/tech/flaresolverr-taiga.md index b75aadb9..198b8388 100755 --- a/personal/tech/flaresolverr-taiga.md +++ b/personal/tech/flaresolverr-taiga.md @@ -1,5 +1,19 @@ # FlareSolverr на Тайге + обход блокировок индексеров +> 🔴 **НОВОЕ 2026-09-28 (вечер): ТОТ ЖЕ КЛАСС ДЕФЕКТА У LIDARR — свой `ProxyCheck` не проходит.** +> SkyHook (`api.lidarr.audio`) отдаёт **403 Cloudflare**; в теле ответа — `Your IP: 90.189.160.148` +> (домашний). Встроенный прокси Lidarr `proxyEnabled=true, proxyType=http, vless-proxy:1081` +> **записан, но не применяется** — `docker logs lidarr | grep -i proxy` даёт +> **`[Error] ProxyCheck: Proxy Health Check failed`**. +> 🔴 **`GET /api/v1/health` при этом отдаёт `[]` — health-кэш врёт.** Ориентироваться на логи. +> 🔴 **Внешний IP дома = `90.189.160.148` И у хоста Тайги тоже** (`curl api.ipify.org` с хоста) — +> вся сеть NAS идёт через домашний аплинк; VPS-выход даёт **только** `vless-proxy` +> (`104.28.211.192` через 1080 и 1081 — обе рабочие). +> ⇒ Практическое правило: **любой сервис на Тайге, который ходит в интернет сам** (Lidarr → SkyHook, +> FS → Chrome), по умолчанию выходит с домашнего IP. Проверять не «настроен ли прокси», а +> **«какой внешний IP у самого сервиса»**. +> `docker restart lidarr` **выполнен — не помог**. Подробности — [[family/plans/lidarr-artist-watchlist]] §БЛОКЕР. + > ✅ **ПРОКСИ-СЛОЙ ИСПРАВЛЕН 2026-09-29:** причина была не в `vless-proxy`. > FlareSolverr 3.5.2 **игнорирует `proxy` у `request.get/request.post`, если указан `session`**. > `PROXY_URL` подставляется в тело запроса, но при уже заданной сессии драйвер берётся из старой