|
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 1m47s
- Remove get_cookies.sh (targets a container without yt-dlp, already broken), get_cookies_local.sh, start_all.sh/stop_all.sh — these implement the old per-service-compose startup that now conflicts with the unified root docker-compose.yml. - Add cookies-cron/ — a reference copy of the scripts actually running via cron on the separate browser-equipped machine, with setup requirements and instructions for standing up a new cron host. - Update README.md/ARCHITECTURE.md to describe the current unified docker-compose + CI/CD deploy flow and host-mounted cookies instead of the old per-folder workflow. |
||
|---|---|---|
| .. | ||
| get_instagram_cookies.sh | ||
| get_youtube_cookies.sh | ||
| README.md | ||
| update_cookies.sh | ||
cookies-cron
Скрипты для регулярного обновления youtube_cookies.txt/instagram_cookies.txt из реального авторизованного браузера и доставки их по scp на прод и тестовые стенды.
Это точная копия скриптов, которые сейчас реально работают по крону на отдельной машине (не на проде — на проде GUI/браузера нет в принципе). Здесь они лежат для справки и на случай, если cron-машину придётся поднимать заново. Ничего в этом репозитории/CI их не запускает и не использует автоматически.
Где это должно стоять и работать
- Машина с графическим окружением и реальным браузером (используется Firefox, см.
BROWSER="firefox"в обоих скриптах) — обычный десктоп/ноутбук, не сервер. - В этом браузере должны быть активные авторизованные сессии на youtube.com и на instagram.com — скрипты не логинятся сами, они просто экспортируют куки из уже залогиненного браузера через
yt-dlp --cookies-from-browser. Если сессии нет (вышел из аккаунта/куки протухли) — экспортируется пустой/неполный набор куков, и видео с этими доменами перестают скачиваться (в Instagram это проявляется какlogin requiredбез всякой ошибки в самом cron-скрипте). - На машине должен быть установлен
yt-dlpи доступен вPATHдля cron-окружения (не только для интерактивного шелла — у cron urezанныйPATH). Скрипты исторически не проверяют, чтоyt-dlpреально нашёлся и отработал — при отсутствииyt-dlpони тихо «успешно завершаются», просто переиспользуя старый файл cookies. Если куки на проде не обновляются неделями без видимых ошибок — первым делом проверьтеwhich yt-dlpна cron-машине.
Файлы
-
get_instagram_cookies.sh/get_youtube_cookies.sh— извлекают куки из Firefox в локальныеinstagram_cookies.txt/youtube_cookies.txtрядом со скриптом. -
update_cookies.sh— оркестратор: гоняет оба скрипта выше, затем разливает результат поscpна:- прод (
REMOTE_HOST/REMOTE_INSTAGRAM_PATH/REMOTE_YOUTUBE_PATH) — обязательный шаг, при ошибке скрипт падает сerror_exit; - тестовый стенд (
DEV_HOST/DEV_INSTAGRAM_PATH/DEV_YOUTUBE_PATH) — необязательный, при недоступности стенда просто пишет warning и продолжает.
Значения этих переменных сейчас захардкожены под текущую инфраструктуру (SSH-алиасы
germany/hermesDevиз~/.ssh/configтой машины, где крон запущен) — при разворачивании на новой cron-машине их нужно поправить под актуальные хосты/пути. - прод (
Установка на новую cron-машину
# 1. yt-dlp должен быть в PATH (включая cron-окружение)
sudo dnf install -y yt-dlp # или: pip install --user yt-dlp / pipx install yt-dlp
# 2. Залогиниться в Firefox на youtube.com и instagram.com
# 3. Прописать актуальные REMOTE_HOST/DEV_HOST и пути в update_cookies.sh
# 4. Добавить в crontab
*/20 * * * * /bin/bash -c '/path/to/cookies-cron/update_cookies.sh' >> /path/to/cookies-cron/cron_error.log 2>&1
На принимающей стороне (прод и тестовый стенд) cookies монтируются в контейнеры с хоста — см. docker-compose.prod.yml/docker-compose.yml и раздел «Cookies на проде» в корневом README.md. Перезапуск контейнеров после доставки не требуется — yt-dlp читает файл с диска при каждом запросе.