From efa3cd7992d338a3c0ffe794fe834039c9147060 Mon Sep 17 00:00:00 2001 From: Fedor Sevrugin Date: Thu, 6 Feb 2025 05:11:46 +0300 Subject: [PATCH] V1.1 -- windows support, flags added: --proxy --no-ffmpeg --- README.md | 15 ++++++++++----- fedordowntube.py | 27 ++++++++++++++++++++------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 6f8a887..58cd01d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -FedorDownTube — программа для скачивания видео с ютуба с учётом блокировок. Для доступа к видео, необходимо иметь запущенный fedordpi. На данный момент работает только под Linux. +FedorDownTube — программа для скачивания видео с ютуба. Зависимости: 1)pytubefix: pip install pytubefix @@ -6,9 +6,14 @@ FedorDownTube — программа для скачивания видео с 3)fedordpi Использование: -Запуск: python3 fedordowntube.py [URL] # URL опционален, если его не указать, его всё равно спросит -После запуска будут предложенны возможные варианты качества, указать нужный пункт можно номером в списке или написать 1080 или 1080p. Будут скачаны отдельно фаил видео и звука, а затем перекодированны в mp4 при помощи ffmpeg. +Запуск: python3 fedordowntube.py [flags] -На первом запуске и раз в какоето время будет спрашивать PoToken и visitorData. Это нужно для обхода антиботсистемы ютуба. Гайд как получить эти значения вот: https://github.com/JuanBindez/pytubefix/pull/209 +После запуска будет запрошен url видео, которое нужно скачать. Поле обработки запроса будут предложенны возможные варианты качества, указать нужный пункт можно номером в списке или например написать 1080 или 1080p. Будут скачаны отдельно фаил видео и звука, а затем перекодированны в mp4 при помощи ffmpeg. -Известные проблемы: Иногда зависает на этапе скачивания видео или видео, помогает перезапуск или выбор другого качества. +На первом запуске и раз в какоето время будет спрашивать PoToken и visitorData. Это нужно для обхода антибот-системы ютуба. Гайд как получить эти значения вот: https://github.com/JuanBindez/pytubefix/pull/209 + +Дополнительные флаги: +--proxy (-p) Использовать прокси (по стандарту 127.0.0.1:8881) +--no-ffmpeg Не использовать ffmpeg, следовательно видео и звук не будут объеденины + +Известные проблемы: Иногда зависает на этапе скачивания видео или звука, помогает перезапуск или выбор другого качества. diff --git a/fedordowntube.py b/fedordowntube.py index 05f94f8..2524952 100644 --- a/fedordowntube.py +++ b/fedordowntube.py @@ -17,6 +17,8 @@ def combine(audio: str, video: str, output: str) -> None: def download(yt, choice): + global ffmpeg + video_stream = yt.streams.\ filter(type='video', mime_type="video/webm", progressive=False).\ order_by('resolution').\ @@ -43,14 +45,16 @@ def download(yt, choice): print('\nDownload audio...') audio_stream.download() - combine(audio_stream.default_filename, video_stream.default_filename, f'{yt.title}.mp4') + if ffmpeg: + combine(audio_stream.default_filename, video_stream.default_filename, f'{yt.title}.mp4') def menu(url: str): + + global proxies yt = YouTube( - proxies={"http": "http://127.0.0.1:8881", - "https": "http://127.0.0.1:8881"}, + proxies=proxies, url=url, on_progress_callback=on_progress, use_po_token=True, @@ -86,8 +90,17 @@ def menu(url: str): download(yt, res) -if len(argv) == 2: - url = argv[1] -else: - url = input("url: ") + +proxies = {} +if ('-p' in argv) or ('--proxy' in argv): + proxies = {"http": "http://127.0.0.1:8881", + "https": "http://127.0.0.1:8881"} + print('proxy:', proxies["http"]) + +ffmpeg = True +if '--no-ffmpeg' in argv: + ffmpeg = False + + +url = input("url: ") menu(url) -- 2.30.2