Украинские источники

Украинские источники

В lampac-go идут 11 готовых JS-модулей украинских источников, портированные из внутренних Go-балансеров. Все находятся в modules/ и включаются через админку.

JS-модули перехватывают соответствующие Go-балансеры с тем же ID (starlight/lite/starlight идёт в JS). Выключите модуль в админке — и роут вернётся к встроенному Go-коду, если он есть.

Матрица источников

Модуль Тип Источник Особенности
uafilmme Фильмы + сериалы uafilm.me (REST API) Пагинация сезонов/эпизодов, matching по IMDB/TMDB
starlight Сериалы / TV teleportal.ua (tp-back.starlight.digital) Live-search + hash-based player-api
bamboo Аниме / дорама bambooua.com HTML-scrape, sub/dub треки
unimay Аниме api.unimay.media/v1 Чистый REST, HLS master
eneyida Фильмы + сериалы eneyida.tv DLE-поиск, iframe → Playerjs
animeon Аниме animeon.club REST, fundubs (озвучки), translations
mikai Аниме api.mikai.me/v1 Множественные озвучки (teams) + субтитры
klonfun Фильмы + сериалы klon.fun HTML + Playerjs tree
kinoukr Фильмы + сериалы kinoukr.tv xfsearch (Cloudflare-bypass), ashdi/tortuga iframe
ashdi Озвучка ashdi.vip Wormhole API (imdb_id, без токена)
uaflix Фильмы + сериалы uafix.net Упрощённая реализация, без DLE-auth и uTLS

Установка по умолчанию

Модули поставляются в папке modules/ вместе с сервером. После первого запуска появятся в админке → Модули.

modules/
  uafilmme/
    manifest.json
    index.js
  starlight/
    manifest.json
    index.js
  ...

Чтобы получить обновления — обновите сервер (git pull / новую версию бинаря) или стяните с репозитория отдельно:

cd modules
rm -rf starlight
curl -L https://github.com/<repo>/archive/refs/heads/main.zip -o tmp.zip
unzip -o tmp.zip '*/modules/starlight/*' -d .

Или через админку → Установить из URL.

Детали модулей

uafilmme

  • Репозиторий-референс: lampame/lampac-ukraine → LME.UafilmME
  • API-path: GET /api/v1/search/{query}, GET /api/v1/titles/{id}, GET /api/v1/titles/{id}/seasons, GET /api/v1/titles/{id}/seasons/{s}/episodes, GET /api/v1/watch/{videoId}
  • Особенности: paginated API (cursor next_page), best-match scoring, поддерживает movie и serial
  • Настройки: host, userAgent, timeout, три TTL для кэша, proxyStreams

starlight

  • API: GET /{lang}/live-search?q={query}GET {href} (project) → GET {playerAPI}/{hash}?referer=...&lang=ua
  • Формат: Hash-based episodes, мультивыбор сезонов через seasonsGallery
  • Ограничение: контент доступен только на украинских IP или через VPN

bamboo

  • Парсинг: HTML-scrape через regex (<li class="slide-item">, <span data-file="..." data-type="sub|dub">)
  • Два трека: субтитры и дубляж — переключение через ?t=sub|dub
  • Стримы: прямые ссылки на CDN с .m3u8

unimay

  • API: GET /v1/release/search?title={q}, GET /v1/release?code={slug}
  • Формат: playlist[].hls.master — HLS master manifest per episode
  • Скорость: один самых быстрых модулей — чистый JSON, без HTML

eneyida

  • Flow: POST /index.php?do=search → iframe из film page → iframe HTML → file: из Playerjs
  • Структура Playerjs: voice → seasons → episodes tree (JSON массив)
  • Fallback: если file: — одна строка (фильм), показывает single-stream

animeon

  • API: GET /api/anime/search?text=, GET /api/player/{id}/translations, GET /api/player/{id}/episodes?...
  • Особенности: фандабы (озвучки) → players → episodes, поля в camelCase (titleUa, episodeNum, videoUrl)
  • Серийность: один anime-ID обычно = один сезон; несколько результатов на поиск = разные сезоны

mikai

  • API: GET /v1/anime/search?name=, GET /v1/anime/{id}
  • Voices: anime.players[].team.name + isSubs → ключ озвучки/субтитров
  • Структура: несколько provider per voice, каждый — свой «сезон» (seasonCounter)

klonfun

  • Flow: POST /index.php?do=search → iframe из film page → Playerjs file:
  • Edge cases: multi-quality строка [720p]url1,[1080p]url2 → строит quality map
  • Нюанс: на сайте много редиректов, иногда нужны повторные попытки

kinoukr

  • Поиск: GET /xfsearch/{query}/ — обходит Cloudflare POST-challenge (работает с английскими названиями или %20-joined)
  • Iframe: ashdi/tortuga — приоритет ashdi
  • Playerjs: такое же дерево как у eneyida

ashdi

  • Wormhole API: GET {wormholeHost}/?imdb_id={id}{play: "https://ashdi.vip/vod/123"}
  • Без токена: полностью bypass через wormhole-прокси
  • Flow: play URL + ?multivoice → Playerjs → voices JSON array
  • CDN typo-fix: заменяет 0yql3tjoyql3tj в URL (знаменитая ашди-опечатка)

uaflix

  • Упрощённая реализация — полный Go-балансер умеет больше:
    • DLE-cookie auth (cookie можно вставить вручную в настройках модуля)
    • AMSP-bypass, pagination probes — не портированы
    • DDoS-Guard bypass через uTLS — не портирован, нужен Go
  • Когда переключаться на Go: если сайт возвращает 403/Cloudflare challenge — выключите JS-модуль, Go-версия подхватит

Как понять что сломано

Если какой-то источник перестал работать:

1. Проверьте роут руками

curl -s 'http://lampac:888/lite/starlight?checksearch=true' | jq
# {"rch":false}  ← источник недоступен
# {"rch":true,"type":"movie","quality":"FHD"}  ← работает

2. Посмотрите логи модуля

Админка → Модули → карточка → Логи. Все console.warn / console.error из модуля + runtime-ошибки.

3. Типичные проблемы

Проблема Диагностика Лечение
{"rch":false} у всех запросов Сайт-источник упал или изменил API Дождаться / обновить модуль
403 в логах Геоблок или Cloudflare VPN, или включить Go-балансер (uTLS)
JSON parse failed API вернул HTML-капчу Смотреть res.text.slice(0,300)
Воспроизводится, но с лагами CDN зарегулирован или нужен proxy Включить proxyStreams: true в настройках
Рассинхрон озвучка/эпизоды Кэш устарел Кнопка на карточке (или cache.clear() в коде)

4. Откат на Go-балансер

Если модуль критически сломан и нужна срочность:

  1. Админка → Модуливыключить toggle на карточке
  2. Роут /lite/<id> автоматически вернётся к встроенному Go-балансеру
  3. Чинить JS-модуль можно спокойно потом

Вклад в модули

Портированные модули живут в репозитории проекта в папке modules/. Если нашли баг или хотите добавить фичу:

  1. Отредактируйте index.js в админке → Сохранить и перезагрузить
  2. Если работает — сделайте PR с изменённым файлом
  3. Бонусы за: новые источники, паттерны анти-бота, оптимизации регэкспов

Идеи для новых модулей из lampac-ukraine:

  • LME.Makhno — wormhole-based, похож на ashdi
  • LME.NMoonAnime — MAL-based search + base64/JSON обфускация
  • LME.JackTor — Jackett indexer integration