добавили куки для ютуба
This commit is contained in:
parent
c8feb4b78b
commit
1a54f10ea2
4 changed files with 146 additions and 3 deletions
|
|
@ -33,13 +33,20 @@ def _safe_filename(title: str) -> str:
|
|||
|
||||
|
||||
def download_youtube_video(url: str, max_retries: int = 3) -> Path:
|
||||
"""Скачивает видео с YouTube"""
|
||||
"""Скачивает видео с YouTube - используем cookies для обхода блокировок"""
|
||||
cookies_file = os.getenv('YOUTUBE_COOKIES_FILE', 'youtube_cookies.txt')
|
||||
cookies_file_path = Path(cookies_file)
|
||||
|
||||
if not cookies_file_path.exists():
|
||||
logger.info(f"YouTube: файл cookies не найден ({cookies_file_path}). Работаем без cookies. "
|
||||
f"Для лучшей работы рекомендуется добавить cookies через скрипт get_youtube_cookies_local.sh")
|
||||
|
||||
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
|
||||
|
||||
last_error = None
|
||||
for attempt in range(max_retries):
|
||||
try:
|
||||
# Получаем информацию о видео
|
||||
# Базовые настройки для получения информации
|
||||
ydl_opts_info = {
|
||||
'quiet': False,
|
||||
'no_warnings': False,
|
||||
|
|
@ -60,12 +67,17 @@ def download_youtube_video(url: str, max_retries: int = 3) -> Path:
|
|||
},
|
||||
}
|
||||
|
||||
# Если есть файл с cookies, используем его
|
||||
if cookies_file_path.exists():
|
||||
ydl_opts_info['cookiefile'] = str(cookies_file_path.absolute())
|
||||
logger.info(f"YouTube: используем cookies из {cookies_file_path}")
|
||||
|
||||
with yt_dlp.YoutubeDL(ydl_opts_info) as ydl:
|
||||
info = ydl.extract_info(url, download=False)
|
||||
video_title = info.get('title', 'video')
|
||||
logger.info(f"YouTube: получена информация о видео: {video_title}")
|
||||
|
||||
# Скачиваем видео
|
||||
# Настройки для скачивания
|
||||
ydl_opts_download = {
|
||||
'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best',
|
||||
'outtmpl': _safe_filename(video_title),
|
||||
|
|
@ -88,6 +100,10 @@ def download_youtube_video(url: str, max_retries: int = 3) -> Path:
|
|||
},
|
||||
}
|
||||
|
||||
# Если есть файл с cookies, используем его для скачивания
|
||||
if cookies_file_path.exists():
|
||||
ydl_opts_download['cookiefile'] = str(cookies_file_path.absolute())
|
||||
|
||||
logger.info(f"YouTube: начинаем скачивание (попытка {attempt + 1}/{max_retries})")
|
||||
with yt_dlp.YoutubeDL(ydl_opts_download) as ydl:
|
||||
ydl.download([url])
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ services:
|
|||
- "5557:5000"
|
||||
volumes:
|
||||
- ./downloads:/app/downloads
|
||||
- ./youtube_cookies.txt:/app/youtube_cookies.txt:ro
|
||||
environment:
|
||||
- YOUTUBE_COOKIES_FILE=/app/youtube_cookies.txt
|
||||
networks:
|
||||
- downloader_network
|
||||
|
||||
|
|
|
|||
64
youtube-downloader/get_youtube_cookies.sh
Executable file
64
youtube-downloader/get_youtube_cookies.sh
Executable file
|
|
@ -0,0 +1,64 @@
|
|||
#!/bin/bash
|
||||
# Скрипт для получения cookies YouTube через yt-dlp
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
COOKIES_FILE="$SCRIPT_DIR/youtube_cookies.txt"
|
||||
|
||||
echo "Получение cookies YouTube из браузера..."
|
||||
echo ""
|
||||
echo "Выберите браузер:"
|
||||
echo "1) Chrome"
|
||||
echo "2) Firefox"
|
||||
echo "3) Edge"
|
||||
echo "4) Opera"
|
||||
read -p "Введите номер (1-4): " browser
|
||||
|
||||
case "$browser" in
|
||||
1) BROWSER="chrome" ;;
|
||||
2) BROWSER="firefox" ;;
|
||||
3) BROWSER="edge" ;;
|
||||
4) BROWSER="opera" ;;
|
||||
*)
|
||||
echo "Неверный выбор"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Получаю cookies из $BROWSER..."
|
||||
echo "Файл cookies будет сохранен в: $COOKIES_FILE"
|
||||
|
||||
# Проверяем наличие yt-dlp
|
||||
if ! command -v yt-dlp &> /dev/null; then
|
||||
echo ""
|
||||
echo "❌ yt-dlp не найден в системе"
|
||||
echo ""
|
||||
echo "Установите yt-dlp одним из способов:"
|
||||
echo ""
|
||||
echo "1. Через pacman (Arch Linux):"
|
||||
echo " sudo pacman -S yt-dlp"
|
||||
echo ""
|
||||
echo "2. Через pip:"
|
||||
echo " pip install yt-dlp"
|
||||
echo " или"
|
||||
echo " pip3 install yt-dlp"
|
||||
echo ""
|
||||
echo "3. Через pipx (рекомендуется):"
|
||||
echo " pipx install yt-dlp"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
yt-dlp --cookies-from-browser "$BROWSER" --cookies "$COOKIES_FILE" --no-download https://www.youtube.com 2>&1 | head -10
|
||||
|
||||
if [ -f "$COOKIES_FILE" ]; then
|
||||
echo ""
|
||||
echo "✅ Cookies успешно сохранены в $COOKIES_FILE"
|
||||
echo ""
|
||||
echo "Теперь перезапустите youtube-downloader:"
|
||||
echo " docker compose -f youtube-downloader/docker-compose.yml restart"
|
||||
else
|
||||
echo ""
|
||||
echo "❌ Ошибка: файл cookies не был создан"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
60
youtube-downloader/youtube_cookies.txt
Normal file
60
youtube-downloader/youtube_cookies.txt
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# Netscape HTTP Cookie File
|
||||
# This file is generated by yt-dlp. Do not edit.
|
||||
|
||||
.mozilla.org TRUE / FALSE 1800428098 _ga GA1.2.1059148659.1765868099
|
||||
.mozilla.org TRUE / FALSE 1765954498 _gid GA1.2.11181365.1765868099
|
||||
.mozilla.org TRUE / FALSE 1800428141 _ga_B9CY1C9VBC GS2.1.s1765868098$o1$g1$t1765868141$j17$l0$h0
|
||||
accounts.google.com FALSE / TRUE 1800428289 __Host-GAPS 1:GX0qJvjoq2VkhwLgwUwQRh8K_9lJb9X9xS3Q2X9TEwsVcJKsZcCGnc09WOwhkTEL5bQ_YHHHKRENpHmhJGtp2DXRlvrPMw:NAkI88McEhpj3Om9
|
||||
accounts.google.com FALSE / TRUE 1768460204 OTZ 8392737_44_44_123780_40_436260
|
||||
accounts.google.com FALSE / TRUE 1800428289 SMSV ADHTe-BOGIHUbWLb1xV5SpJkrD0OCZc9SUg1l1NlpSwrkbzF00NI0BoL76tO03_6oJfLajEH9Adz6GZIx3rk7QoYj-JkjDpU22O1L0NeNgK3h8QsvJuvUQU
|
||||
accounts.google.com FALSE / TRUE 1800428290 LSID s.LT|s.youtube:g.a0004ghwIKs78n_bzjNLimJc5UnPtzUZAErv7oCTp8eMNt6AMHT-IdnwRSfLnmWJck4e1A-6rAACgYKARYSARISFQHGX2Mi7db2XkoUfWS8om91k9BO1hoVAUF8yKojQvIzUVhwYlMvTnjfVVEH0076
|
||||
accounts.google.com FALSE / TRUE 1800428290 __Host-1PLSID s.LT|s.youtube:g.a0004ghwIKs78n_bzjNLimJc5UnPtzUZAErv7oCTp8eMNt6AMHT-bXgp_W22J-vPmt6T3lC1-QACgYKAeMSARISFQHGX2Miw_L35bRMCXD_HRN9fwjaCxoVAUF8yKqg07rxnDQ-2lp9SYn2U2Lp0076
|
||||
accounts.google.com FALSE / TRUE 1800428290 __Host-3PLSID s.LT|s.youtube:g.a0004ghwIKs78n_bzjNLimJc5UnPtzUZAErv7oCTp8eMNt6AMHT-b33hWDK6ysBTIcKEVLaauAACgYKAWgSARISFQHGX2Miy9lM1s2rgeyuCPBaGjM2DRoVAUF8yKq29xDX-ZE8pK94lqiTDrCz0076
|
||||
accounts.google.com FALSE / TRUE 1800428290 ACCOUNT_CHOOSER AFx_qI6WkAmGmm4dPb-ykKfNUDjVwjTrq5YnImstK6Fk403UQDFdTCY657rWXrkF8DHKhc0C4x6pCZMks_iTKDeOp1toPo8995bCmo4lhTqrW_TGbsO4yrUy1HpHnzN1O7SqltBG1Evx0YyL91gDZezVKZrT9A4kRA
|
||||
.youtube.com TRUE / TRUE 1799996174 SOCS CAISEwgDEgk4NDQ0OTQ3NTUaAmVuIAEaBgiAwoLKBg
|
||||
.youtube.com TRUE / TRUE 1781420173 __Secure-YNID 14.YT=e1-nN08hCOTsPq2pxw3tysfAavEyLrarb18Z0HTcRJG0dLSXSyNc4kkr7KXdnzWgUM5b0KUXkYr_kkgR_XcL7t4MD2DNIszNyKkvwyphMz44mQyir5tQegoENcDb0GV75KE2lQ0kbZjdA8_NVI9T8Q4Hy4m1PCF1woGqNmSY21TOsnAS8fZjwEiX9use4ySPY3xlCvEl_cjCO9cJwtAM01XGws7rn1hQcODU2-VhEod4w5KdGTbgJrKC8cDRr7WEFw-C_yoeKoQEE4pCzCC-CGq7M0AfZvihjLRZIlLZmJka8c5XYaJXzv9LlN5bmBvPr7KxXXXjD8Tdq0l_2jmzBA
|
||||
.youtube.com TRUE / TRUE 1765869974 GPS 1
|
||||
.youtube.com TRUE / TRUE 1781420174 __Secure-ROLLOUT_TOKEN CPaYy5K_jL2M2wEQ2tfiycPBkQMYiLH4ycPBkQM%3D
|
||||
.youtube.com TRUE / TRUE 1797404290 __Secure-1PSIDTS sidts-CjQBflaCdY9P2hx09guHFh9JeFinZ8q9ziOhCHTS0Cv5t0JxOzfSyLDmlEiOl8mQgnEEtHg2EAA
|
||||
.youtube.com TRUE / TRUE 1797404290 __Secure-3PSIDTS sidts-CjQBflaCdY9P2hx09guHFh9JeFinZ8q9ziOhCHTS0Cv5t0JxOzfSyLDmlEiOl8mQgnEEtHg2EAA
|
||||
.youtube.com TRUE / FALSE 1800428290 HSID AViy3sAm-kAkV5yxA
|
||||
.youtube.com TRUE / TRUE 1800428290 SSID A48-JbqJWpI4sRMiJ
|
||||
.youtube.com TRUE / FALSE 1800428290 APISID nD084UIvXV9qxJ5h/AQKqwx0KTQ-WWNXhx
|
||||
.youtube.com TRUE / TRUE 1800428290 SAPISID P9syumcmR8_Kjwte/ArSm-AS2Ua1iKJFXk
|
||||
.youtube.com TRUE / TRUE 1800428290 __Secure-1PAPISID P9syumcmR8_Kjwte/ArSm-AS2Ua1iKJFXk
|
||||
.youtube.com TRUE / TRUE 1800428290 __Secure-3PAPISID P9syumcmR8_Kjwte/ArSm-AS2Ua1iKJFXk
|
||||
.youtube.com TRUE / FALSE 1800428290 SID g.a0004ghwIKh1vp4oRjv6kAff63ifG-fPNqXRf9eCxufzgqRuPuKoSUnso2-Jei4kXyw3vkPVTAACgYKAagSARISFQHGX2MiJHYUPmXWdwkZK2XDf_GwXBoVAUF8yKp3C62xZbir_l9l1iGemSh10076
|
||||
.youtube.com TRUE / TRUE 1800428290 __Secure-1PSID g.a0004ghwIKh1vp4oRjv6kAff63ifG-fPNqXRf9eCxufzgqRuPuKoIHNh95eTgwe5PCvjXO7RiwACgYKAXgSARISFQHGX2MiUCLxKGvQdCaO3RIMX3pL8xoVAUF8yKp99ruUBspbJcI5Nlbxmkms0076
|
||||
.youtube.com TRUE / TRUE 1800428290 __Secure-3PSID g.a0004ghwIKh1vp4oRjv6kAff63ifG-fPNqXRf9eCxufzgqRuPuKo0L0_94050qSrrWclMZiQ2QACgYKAekSARISFQHGX2MiSux17infkXbLeh2VgtHwcBoVAUF8yKru_5zpEhsffYGdv6LoQIzD0076
|
||||
.youtube.com TRUE / TRUE 1800428291 LOGIN_INFO AFmmF2swRQIhANY-zMnxTQqYQsr13UQJWwcj2NDujqhai0vRZFDdm_iwAiAOwWbA3U56uTwfdIt9nN1ebor_-BLoFmvYuNH5scnVkA:QUQ3MjNmeVJYWkFuMUFkNmFvdzlON1RRb2NCWmpyZk1BUTNMV0xmSEhnQW11S3c4Z0JxQzI0U3BvYm1NUGo2aURCSDFFb2gyZFdoelBTSG1GRjY4VGI2bklTYUxfd2l4T280UERrQmgzQ2ZVMHJjeHl6cTJwYWlfMFFlZjJ3SWIydGpPclZMblZHS1prVW1iYUZScUhreTlIb3dYemJacGxR
|
||||
.youtube.com TRUE / TRUE 1781420460 VISITOR_INFO1_LIVE DU93dBmqi5k
|
||||
.youtube.com TRUE / TRUE 1781420460 VISITOR_PRIVACY_METADATA CgJMVBIhEh0SGwsMDg8QERITFBUWFxgZGhscHR4fICEiIyQlJiAU
|
||||
.youtube.com TRUE / TRUE 1765868898 CONSISTENCY APeVyi8Rp-CMt_vID2CrrZ5KU1CfOUeLDDMIUGGggmHQ8xVFB5rTAjaYgrYU8gE67cbUx7ywnrEftaAbqpAT91rbJxgKveFRh6RvRmtRsTVj7J1qqK0W1O2gkqw
|
||||
.youtube.com TRUE / FALSE 0 PREF f4=4000000&f6=40000000&tz=UTC&f7=100&hl=en
|
||||
.youtube.com TRUE / TRUE 1797404460 __Secure-3PSIDCC AKEyXzVmmxSc1uWl8DacYBMKoZhlGACKY7dP3FxnRUlKTH9pJHTEgE9f4ji35jyfJ8UlnrT0
|
||||
.youtube.com TRUE / FALSE 1797404460 SIDCC AKEyXzVoynnHCnUrqsY5HF8hVVuB_poBN3scczpj3nrv6hlsJG9MHhOK9Ey1mpjmFiT14sYsEw
|
||||
.youtube.com TRUE / TRUE 0 YSC MuPoXaDSjP8
|
||||
.youtube.com TRUE / TRUE 1797404460 __Secure-1PSIDCC AKEyXzUA4AckPBzAog0OgLkPC-JvGdZ_00BNWHmCEGpFozFwQ0jKnCDRwoK9wPYR86txxL-Y
|
||||
.google.com TRUE / TRUE 1800054911 __Secure-ENID 30.SE=BnxuDLi-inu4Gzy1Q-BkRVPbU34if3B1m5F4iG4QTAR0QMHcvZanZn3EaUvwpf39pcQxypJXNwUSYd69ukPZ3E05Sndobkz9uB5hn2GpwgR4n9UHnnIZbsBl3lDPHgOrJMXKXkXEzvqTqRnqmFqGUpGJPdFvMr_CTJjsfJSsJM7X3SRMtLYQr-QkFYRPyf6HCaafVaMV4lm4LxHo0ifDoOV9yG58_-sys2NDd5_VQyadNkCwwGEdTA
|
||||
.google.com TRUE / FALSE 1800428289 SID g.a0004ghwIKh1vp4oRjv6kAff63ifG-fPNqXRf9eCxufzgqRuPuKoSUnso2-Jei4kXyw3vkPVTAACgYKAagSARISFQHGX2MiJHYUPmXWdwkZK2XDf_GwXBoVAUF8yKp3C62xZbir_l9l1iGemSh10076
|
||||
.google.com TRUE / TRUE 1800428289 __Secure-1PSID g.a0004ghwIKh1vp4oRjv6kAff63ifG-fPNqXRf9eCxufzgqRuPuKoIHNh95eTgwe5PCvjXO7RiwACgYKAXgSARISFQHGX2MiUCLxKGvQdCaO3RIMX3pL8xoVAUF8yKp99ruUBspbJcI5Nlbxmkms0076
|
||||
.google.com TRUE / TRUE 1800428289 __Secure-3PSID g.a0004ghwIKh1vp4oRjv6kAff63ifG-fPNqXRf9eCxufzgqRuPuKo0L0_94050qSrrWclMZiQ2QACgYKAekSARISFQHGX2MiSux17infkXbLeh2VgtHwcBoVAUF8yKru_5zpEhsffYGdv6LoQIzD0076
|
||||
.google.com TRUE / FALSE 1800428289 HSID AGq0xGqG60Tt9F_ou
|
||||
.google.com TRUE / TRUE 1800428289 SSID AJk48knMOGJvmVvT2
|
||||
.google.com TRUE / FALSE 1800428289 APISID nD084UIvXV9qxJ5h/AQKqwx0KTQ-WWNXhx
|
||||
.google.com TRUE / TRUE 1800428289 SAPISID P9syumcmR8_Kjwte/ArSm-AS2Ua1iKJFXk
|
||||
.google.com TRUE / TRUE 1800428289 __Secure-1PAPISID P9syumcmR8_Kjwte/ArSm-AS2Ua1iKJFXk
|
||||
.google.com TRUE / TRUE 1800428289 __Secure-3PAPISID P9syumcmR8_Kjwte/ArSm-AS2Ua1iKJFXk
|
||||
.google.com TRUE / FALSE 1797404291 SIDCC AKEyXzX0IimESXDfX7AChToljvV0GXJZCtiiZP6Uv1VAfqB7_LaFd2QPBuwU2YGBV775HQcU2Q
|
||||
.google.com TRUE / TRUE 1797404291 __Secure-1PSIDCC AKEyXzUwELfBY2KLxMsTaq9nyWZ1FQR_UowkU88BOI1LsXPuDDOZZfcXavvulpZGRXChSjuo
|
||||
.google.com TRUE / TRUE 1797404291 __Secure-3PSIDCC AKEyXzVLriwJp89DOj0C9lhqB35criD-Y1D8OkuApHuAmuBJrH9ktI4GWAUNp3R3WfBmq6PjtA
|
||||
.google.lt TRUE / FALSE 1800428290 HSID AViy3sAm-kAkV5yxA
|
||||
.google.lt TRUE / TRUE 1800428290 SSID A48-JbqJWpI4sRMiJ
|
||||
.google.lt TRUE / FALSE 1800428290 APISID nD084UIvXV9qxJ5h/AQKqwx0KTQ-WWNXhx
|
||||
.google.lt TRUE / TRUE 1800428290 SAPISID P9syumcmR8_Kjwte/ArSm-AS2Ua1iKJFXk
|
||||
.google.lt TRUE / TRUE 1800428290 __Secure-1PAPISID P9syumcmR8_Kjwte/ArSm-AS2Ua1iKJFXk
|
||||
.google.lt TRUE / TRUE 1800428290 __Secure-3PAPISID P9syumcmR8_Kjwte/ArSm-AS2Ua1iKJFXk
|
||||
.google.lt TRUE / TRUE 1781679490 NID 527=WBELqflYlK2IZwz9JufJ6NunKA9itkSzHo3efHbWzUxeBPRptGY08vzZ_EO6saP-hUvjJFQB2bS9rgiYuEVgOT0pCdY1Kb-iuxS63R9jWbrlwy4pvSOi7vpuh2aKhFYHRFUPZ8SfzFlBseCqTIRaoam6s9mdskPDxJCn2pwO4f0zC3pUYmFlMMLzCeztKNeqcxyC3U2yKbgP5ACeuCc-wgNcS660V_Td9lUzI1nTfpWbouE8aN3XrhBF5Zq5eKoK
|
||||
.google.lt TRUE / FALSE 1800428290 SID g.a0004ghwIKh1vp4oRjv6kAff63ifG-fPNqXRf9eCxufzgqRuPuKoSUnso2-Jei4kXyw3vkPVTAACgYKAagSARISFQHGX2MiJHYUPmXWdwkZK2XDf_GwXBoVAUF8yKp3C62xZbir_l9l1iGemSh10076
|
||||
.google.lt TRUE / TRUE 1800428290 __Secure-1PSID g.a0004ghwIKh1vp4oRjv6kAff63ifG-fPNqXRf9eCxufzgqRuPuKoIHNh95eTgwe5PCvjXO7RiwACgYKAXgSARISFQHGX2MiUCLxKGvQdCaO3RIMX3pL8xoVAUF8yKp99ruUBspbJcI5Nlbxmkms0076
|
||||
.google.lt TRUE / TRUE 1800428290 __Secure-3PSID g.a0004ghwIKh1vp4oRjv6kAff63ifG-fPNqXRf9eCxufzgqRuPuKo0L0_94050qSrrWclMZiQ2QACgYKAekSARISFQHGX2MiSux17infkXbLeh2VgtHwcBoVAUF8yKru_5zpEhsffYGdv6LoQIzD0076
|
||||
Loading…
Add table
Add a link
Reference in a new issue