YouTube
YouTube в Al(co)pac состоит из двух частей:
- Поиск и воспроизведение — работает через
yt-dlp(обязательно) - Подписки и плейлисты — через Google OAuth Device Flow (опционально)
Установка с нуля
Установите yt-dlp
yt-dlp — утилита для извлечения видео-URL из YouTube. Обязательна для работы YouTube.
# Способ 1: бинарник (рекомендуется)
curl -sL -o /usr/local/bin/yt-dlp \
"https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux"
chmod +x /usr/local/bin/yt-dlp
# Способ 2: pip
pip install yt-dlpПроверка:
yt-dlp --versionyt-dlp. YouTube часто меняет API, и старые версии перестают работать. Обновление: yt-dlp -U или повторная установка.Добавьте cookies.txt (рекомендуется)
Без cookies YouTube может блокировать запросы (“Sign in to confirm you’re not a bot”).
# Экспортируйте cookies из браузера с залогиненным Google-аккаунтом.
# Используйте расширение "Get cookies.txt" или "EditThisCookie".
# Сохраните файл в директорию сервера:
cp cookies.txt /opt/lampac/cookies.txt
# или
cp cookies.txt /opt/lampac/youtube_cookies.txtСервер ищет файл cookies в нескольких местах:
/opt/lampac/cookies.txt/opt/lampac/youtube_cookies.txt- Рядом с бинарником yt-dlp
- В папке
bin/
Настройте прокси (если YouTube заблокирован)
Если YouTube недоступен напрямую (блокировка DPI в России), настройте один из вариантов:
Вариант A: AntiDPI (встроенный, без VPN)
[antidpi]
enable = true
listen = "127.0.0.1:9898"
strategy = "auto"
[youtube]
proxy = "antidpi" # или "auto" — автоматически выберет AntiDPIВариант B: VLESS прокси (внешний VPN)
[[proxy.vless.entries]]
uri = "vless://..."
balancers = ["youtube"]
label = "YT"
[youtube]
proxy = "vless" # или "auto"YouTube доступен напрямую:
[youtube]
proxy = "none"Установите плагины yt-dlp (рекомендуется)
YouTube использует защиту от ботов (nsig challenge, PO Token). Для её обхода нужны два плагина:
1. EJS Challenge Solver — решает JavaScript-challenge для расшифровки URL потоков:
pip install yt-dlp-ejsyt-dlp-ejs требует Node.js для выполнения JS-кода. Убедитесь что Node.js установлен:
node --version # должен быть v16+
# Если нет:
apt install -y nodejs2. PO Token Provider — генерирует Proof-of-Origin токены для обхода ботозащиты:
pip install bgutil-ytdlp-pot-providerСервер автоматически обнаруживает оба плагина и передаёт --plugin-dirs в yt-dlp.
Проверка что плагины установлены:
pip show yt-dlp-ejs bgutil-ytdlp-pot-providerПерезапустите сервер
systemctl restart alcopacВ логах должно появиться:
youtube: yt-dlp found at /usr/local/bin/yt-dlp
youtube: cookies file found (path: /opt/lampac/cookies.txt)
youtube: using AntiDPI SOCKS5 proxy (proxy: 127.0.0.1:9898)Конфигурация YouTube
[youtube]
proxy = "auto" # "auto" | "none" | "antidpi" | "vless"| Значение | Описание |
|---|---|
auto | Автоматически: AntiDPI (если включён) > VLESS (если настроен) > прямое подключение |
none | Не использовать прокси (YouTube доступен напрямую) |
antidpi | Принудительно AntiDPI |
vless | Принудительно VLESS |
OAuth (подписки и плейлисты)
Опциональная функция — добавляет в Lampa строку «Подписки» с видео из YouTube-аккаунта пользователя.
Как OAuth работает
sequenceDiagram
participant U as Пользователь
participant B as Telegram бот
participant S as Al(co)pac сервер
participant G as Google OAuth
U->>B: /youtube_auth
B->>S: Запрос кода
S->>G: Device Code Request
G->>S: Код + URL
S->>B: Код ABCD-EFGH
B->>U: "Перейдите на google.com/device"
U->>G: Вводит код, авторизуется
G->>S: Refresh Token (polling)
S->>B: Привязка успешна
B->>U: "✅ Канал: ..."
Возможности
- Лента подписок — последние видео из подписок пользователя
- Плейлисты — доступ ко всем плейлистам канала
- Интеграция в Lampa — строка «Подписки» в главной ленте
- Per-user — каждый пользователь привязывает свой аккаунт
Разделы
Быстрый старт
Создайте OAuth-клиент
В Google Cloud Console создайте OAuth Client ID типа TVs and Limited Input devices. Подробная инструкция → Настройка OAuth.
Добавьте в конфиг
[youtube_oauth]
client_id = "123456789-xxxxxxx.apps.googleusercontent.com"
client_secret = "GOCSPX-xxxxxxxxxxxxx"Перезапустите сервер
systemctl restart alcopacПривяжите аккаунт
Отправьте /youtube_auth в Telegram-бот и следуйте инструкциям.