Как скачать ютуб шортс на python?
Я написал скрипт для скачивания ютуб шортс, вроде бы и работает, но скачал одно видео нормально, а второе уже не получается. Подумал может быть нужно использовать прокси, но с ними ютуб требует авторизироваться на проверку того, что я не бот. Я могу предположить, что проблема в том, что я пытаюсь скачать видео, находясь в России. Подскажите пожалуйста, кто с таким сталкивался.
import yt_dlp
def download_youtube_shorts(video_url, output_file='output.mp4'):
ydl_opts = {
'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4',
'outtmpl': output_file,
# 'cookies': 'cookies.txt',
'user-agent': 'Mozilla/5.0 (Linux; Android 10; Mobile; rv:83.0) Gecko/83.0 Firefox/83.0',
'nocheckcertificate': True,
'socket_timeout': 60,
'retries': 10,
'no-mtime': True,
'hls_use_mpegts': True,
'hls_prefer_native': True,
'merge_output_format': 'mp4',
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
try:
info = ydl.extract_info(video_url, download=True)
print(f"Видео успешно скачано! Название: {info['title']}")
except Exception as e:
print(f"Произошла ошибка при загрузке видео: {e}")
if __name__ == "__main__":
youtube_shorts_url = '' # ссылка
download_youtube_shorts(youtube_shorts_url)
В логах получаю следующее:
[youtube] Extracting URL: https://www.youtube.com/shorts/awbv4Yf9rZQ
[youtube] awbv4Yf9rZQ: Downloading webpage
[youtube] awbv4Yf9rZQ: Downloading ios player API JSON
[youtube] awbv4Yf9rZQ: Downloading mweb player API JSON
[youtube] awbv4Yf9rZQ: Downloading m3u8 information
[info] awbv4Yf9rZQ: Downloading 1 format(s): 614+140
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 10
[download] Destination: output.f614.mp4
[download] Got error: HTTPSConnectionPool(host='rr6---sn-gvnuxaxjvh-304s.googlevideo.com', port=443): Read timed out. (read timeout=60.0). Retrying (1/10)...
Также проверял скрипт на другом интернет соединении и результат тот же.
Ответы (1 шт):
Автор решения: Fox Fox
→ Ссылка
Ваш код выдаёт такую ошибку:
[youtube] Extracting URL: https://youtu.be/opEHHiF3_KM
[youtube] opEHHiF3_KM: Downloading webpage
[youtube] opEHHiF3_KM: Downloading ios player API JSON
[youtube] opEHHiF3_KM: Downloading mweb player API JSON
[youtube] opEHHiF3_KM: Downloading player 2f238d39
[youtube] opEHHiF3_KM: Downloading m3u8 information
[info] Testing format 609
[info] opEHHiF3_KM: Downloading 1 format(s): 609+140
ERROR: You have requested merging of multiple formats but ffmpeg is not installed. Aborting due to --abort-on-error
Произошла ошибка при загрузке видео: ERROR: You have requested merging of multiple formats but ffmpeg is not installed. Aborting due to --abort-on-error
Press any key to continue . . .
Вы перемудрили с опциями. Мой код работает:
import yt_dlp
import os
# URL видео YouTube Shorts
url = 'https://youtu.be/opEHHiF3_KM'
# Настройки для загрузки
ydl_opts = {
'format': 'best', # Выбор лучшего качества
'outtmpl': '%(title)s.%(ext)s', # Шаблон имени файла
}
# Скачивание видео
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([url])
os.system("pause")