Skip to content

Repository files navigation

Я.Д-Пылесос / YA.D-Pylesos

Я.Д-Пылесос — утилита для скачивания с Яндекс.Диска, YouTube и Boosty на Linux ARM64 (QNAP NAS) и AMD64 (Fedora WS). Код написан полностью с использованием AI-Assisted Development (LLM). В проекте автор выступает в роли Product Owner / Project Manager / System Architect / QA Engineer. @serbambr

Возможности

  • Модульная архитектура (Мультивендорность): Логика провайдеров вынесена в модули (apicloudyandex.py, apivideo.py, заглушка apicloudmail.py для Mail.ru). Ядро не знает устройства облака — только стандартный интерфейс провайдера. Диспетчеризация по домену ссылки; домены без спец-логики идут через универсальную yt-dlp-обёртку.
  • Яндекс-пайплайн (трёхступенчатый): Инкрементальное сканирование диска (Mark and Sweep) -> Сверка с API (кэш дерева в SQLite) -> Многопоточное скачивание.
  • YouTube-подсистема (yt-dlp): Каналы/плейлисты/одиночные видео; субтитры ru/en (включая автогенерацию) в .srt; вшивание обложки и метаданных; SponsorBlock (все категории); архив скачанного; антибан-паузы. JS-челленджи YouTube решаются через Node.js runtime, скрипт-решатель живёт в persistent-кэше на хосте (сеть для него не нужна).
  • Boosty (через yt-dlp): Посты авторов (boosty.to/<автор>/posts/<id>) по подписке — куки сессии в auth/boosty.to.txt; медиа-галереи постов (включая full_hd); антиколлизия имён ([id] в имени файла). Детали — в USAGE.
  • PO-токен (bgutil): Локальный провайдер Proof-of-Origin (Node, порт 4416) поднимается на время сессии и прогревается до старта yt-dlp. Защищает от bot-check; для age-gated контента форматы ограничены политикой SABR YouTube (актуальный потолок — 360p).
  • Изоляция БД (BL-DB-Split): Каждая ссылка — своя БД SQLite (db/<имя_контейнера>.db). Нет блокировок при параллельной работе; повреждённая БД уходит в карантин целиком (с -wal/-shm), процесс пересоздаёт её чистой.
  • VPN-слой (Xray-core, SSOT портов): При бане API/блокировке — туннель из vpn/link*.txt (VLESS/Trojan/Hysteria, Reality). Единый источник порта PROXY_PORT (SOCKS 10808 / HTTP 10809). Ротация серверов при бане, Watchdog процесса, аудит-лог смены IP.
  • Анти-бан (двухуровневый): Ядро — адаптивные гауссовы паузы (AIMD), Retry-After, ротация User-Agent, детекция тихого бана (HTML вместо JSON). YouTube — ступень А: серия 429 -> прерываемая пауза; паузы не помогают -> честная остановка сессии и уведомление.
  • Гомеостаз 3.0: Панель --trace-status (ЦП, частота, Load, RAM хоста, I/O Latency, иноды). Перегрузка диска/CPU -> автоматическое снижение потоков.
  • Телеметрия (Опыт): Глобальная db/telemetry.db: итоги сессий по провайдерам (запросы/баны/пики) + лента событий YouTube (429, age-gate). Автоочистка старше 30 дней.
  • Конфигурация через .env (SSOT): Лимиты, таймауты, DNS, сенсоры, Docker. Все переменные валидируются на старте (_int_env) — мусор в конфиге даёт человекочитаемую ошибку, а не traceback.
  • Бережливость HDD (RAID-friendly): Многопоточная запись в изолированные .part с атомарной склейкой (os.replace). Гомеостаз щадит массив; автоочистка обрывков старше часа.
  • Безопасность данных: MD5-проверка, Zero Trust к аргументам, карантин БД, .pid-защита от дублей, --user контейнера = пользователь NAS, auth/ 700, секреты не логируются (SecretFilter).
  • Менеджер ссылок + --batch: Интерактивный CLI (source_links.txt, rw-монтирование, Tab-автодополнение). Пакетный режим уходит в фон по Ctrl+C, ведёт лог и отчёт по оставшимся.
  • Умные уведомления Telegram: --notify-tg с переводом ошибок на человеческий язык и ретраями отправки.
  • Конвейер качества: ./check.sh — py_compile + ruff (CC<=9) + radon + vulture + shellcheck одним запуском.

Служебные команды

Команда Действие
--auth-status [ссылка] Проверка OAuth/куков (Яндекс), куков видео-провайдеров (YouTube, Boosty)
--db-stats Статистика всех БД + телеметрия (по блокам на провайдера)
--db-check integrity_check всех БД
--vacuum VACUUM всех БД
--vpn-test Тест всех VPN-серверов из пула (таблица с IP)
--batch / --batch-auto Менеджер ссылок / автоматический пакетный режим (cron)
--md5='имя' Проверка MD5 файла
--build-queue Построить очередь без скачивания
--refresh-cache Перестроить кэш дерева и выйти
--force Игнорировать архив скачанного (существующие файлы не перезаписываются)
--auth-enable/disable Включить/выключить OAuth для Яндекса
-h Полный список флагов

Быстрый старт

  1. Установка: ./install.sh (создаст структуру каталогов, шаблон .env, соберёт образ, создаст ярлык). Настройте .env (DNS_SERVERS, TZ и пр.).
  2. Сборка образа вручную: sudo docker build -t yadpylesos-slim -f Dockerfile.yadpylesos-slim .
  3. Яндекс — одиночная ссылка: ./yadpylesos.sh 'test' 'https://disk.yandex.ru/d/...' '/path/to/destination/' 100 -v --threads=4 --trace-status --notify-tg
  4. YouTube — канал или плейлист: ./yadpylesos.sh 'mychannel' 'https://www.youtube.com/@name/videos' '/share/downloads/yt' 0 -v --notify-tg
  5. Boosty — пост: ./yadpylesos.sh 'mypost' 'https://boosty.to/<автор>/posts/' '/share/downloads/boosty' 0 -v
  6. Пакетный режим: ./yadpylesos.sh --batch (менеджер) или --batch-auto (cron).
  7. Качество кода: ./check.sh.

Особенности сети

Сборочные артефакты (Xray, EJS-решатель) поставляются в build_assets/ — сборка образа не зависит от CDN, недоступных из некоторых сетей (Fastly и т.п.). apt-слои образа используют зеркало Debian. Решатель JS-челленджей и PO-провайдер живут внутри контейнера/хост-кэша — в сессии скачивания внешние CDN не участвуют.

Лицензия

MIT

About

Я.Д-Пылесос / YA.D-Pylesos - Скачивание с Яндекс.Диска, YouTube, Boosty на Linux ARM64 (BusyBox v1.33.1 + Python3 в Docker)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages