Document YouTube cookie auth and warn when the file is unusable
Cookies were already wired up but only mentioned in passing, and the non-obvious parts were undocumented: yt-dlp has no username/password support for YouTube, it rewrites the cookie file to persist rotated cookies (so a read-only file expires early), and the export has to happen in a private window that is logged out before closing. Startup now reports whether the cookie file is usable, missing, or read-only, and YTDLP_EXTRACTOR_ARGS is passed through for the cases where YouTube blocks a server IP outright. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
1ac99b4a10
commit
2b999bf2a0
@@ -164,7 +164,35 @@ cd /opt/stoat-mbot && docker compose up -d --build && docker compose logs -f
|
||||
- `IDLE_TIMEOUT_SECONDS` — через сколько секунд простоя (или пустого канала) бот выходит из войса.
|
||||
- `LOCAL_MEDIA_DIR` — примонтируйте том с музыкой и укажите путь внутри контейнера,
|
||||
тогда заработают `local:` и поиск по медиатеке.
|
||||
- `YTDLP_COOKIES` — путь к `cookies.txt`, если YouTube просит подтверждения возраста или логина.
|
||||
- `YTDLP_COOKIES` — путь к `cookies.txt`, см. раздел ниже.
|
||||
- `YTDLP_EXTRACTOR_ARGS` — дополнительные `--extractor-args` через `;`.
|
||||
|
||||
## Учётка YouTube (cookies)
|
||||
|
||||
Логин и пароль для YouTube yt-dlp не поддерживает — единственный рабочий способ авторизоваться
|
||||
это `cookies.txt`. С ним открываются видео с возрастным ограничением, приватные и «только для
|
||||
участников», а также снимается `Sign in to confirm you're not a bot`, которое YouTube любит
|
||||
показывать серверным IP.
|
||||
|
||||
**Заводить лучше отдельный (одноразовый) аккаунт** — за автоматизацию YouTube может его
|
||||
заблокировать, терять основной незачем.
|
||||
|
||||
1. Откройте **приватное окно** браузера и войдите в YouTube этим аккаунтом.
|
||||
2. Экспортируйте куки для `youtube.com` расширением в формате Netscape (`Get cookies.txt LOCALLY`
|
||||
и аналоги) — либо, если yt-dlp стоит локально: `yt-dlp --cookies-from-browser chrome --cookies cookies.txt`.
|
||||
3. **Не закрывая приватное окно, выйдите из аккаунта в нём** (Log out) и только потом закройте
|
||||
окно. Так YouTube не отзовёт сессию, к которой привязаны выгруженные куки.
|
||||
4. Положите файл в `/opt/stoat-mbot/data/cookies.txt` и убедитесь, что он писабельный для uid 1000:
|
||||
yt-dlp перезаписывает файл после каждого запуска, сохраняя обновлённые куки. Без права на запись
|
||||
сессия быстро протухнет.
|
||||
5. В `.env`: `YTDLP_COOKIES=/data/cookies.txt`, затем `docker compose up -d`.
|
||||
|
||||
В логах при старте появится `using YouTube cookies`; если файла нет или он только на чтение —
|
||||
будет предупреждение с указанием причины.
|
||||
|
||||
Куки живут не вечно (обычно недели): когда в логах снова полезут ошибки авторизации, повторите
|
||||
экспорт. Если YouTube упирается именно в бот-детект, попробуйте дополнительно
|
||||
`YTDLP_EXTRACTOR_ARGS=youtube:player_client=default,web_safari`.
|
||||
|
||||
## Разработка
|
||||
|
||||
|
||||
Reference in New Issue
Block a user