V1.1 -- windows support, flags added: --proxy --no-ffmpeg master
authorFedor Sevrugin <fedor.sevrugin@gmail.com>
Thu, 6 Feb 2025 02:11:46 +0000 (05:11 +0300)
committerFedor Sevrugin <fedor.sevrugin@gmail.com>
Thu, 6 Feb 2025 02:11:46 +0000 (05:11 +0300)
README.md
fedordowntube.py

index 6f8a887c4adbe4353879c0a45395672397599ee5..58cd01d582d9a9c9a03f57bf8f24e988802734b7 100644 (file)
--- 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]
 
\9dа Ð¿ÐµÑ\80вом Ð·Ð°Ð¿Ñ\83Ñ\81ке Ð¸ Ñ\80аз Ð² ÐºÐ°ÐºÐ¾ÐµÑ\82о Ð²Ñ\80емÑ\8f Ð±Ñ\83деÑ\82 Ñ\81пÑ\80аÑ\88иваÑ\82Ñ\8c PoToken Ð¸ visitorData. Ð­Ñ\82о Ð½Ñ\83жно Ð´Ð»Ñ\8f Ð¾Ð±Ñ\85ода Ð°Ð½Ñ\82ибоÑ\82Ñ\81иÑ\81Ñ\82емÑ\8b Ñ\8eÑ\82Ñ\83ба. Ð\93айд ÐºÐ°Ðº Ð¿Ð¾Ð»Ñ\83Ñ\87иÑ\82Ñ\8c Ñ\8dÑ\82и Ð·Ð½Ð°Ñ\87ениÑ\8f Ð²Ð¾Ñ\82: https://github.com/JuanBindez/pytubefix/pull/209
\9fоÑ\81ле Ð·Ð°Ð¿Ñ\83Ñ\81ка Ð±Ñ\83деÑ\82 Ð·Ð°Ð¿Ñ\80оÑ\88ен url Ð²Ð¸Ð´ÐµÐ¾, ÐºÐ¾Ñ\82оÑ\80ое Ð½Ñ\83жно Ñ\81каÑ\87аÑ\82Ñ\8c. Ð\9fоле Ð¾Ð±Ñ\80абоÑ\82ки Ð·Ð°Ð¿Ñ\80оÑ\81а Ð±Ñ\83дÑ\83Ñ\82 Ð¿Ñ\80едложеннÑ\8b Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ\8bе Ð²Ð°Ñ\80ианÑ\82Ñ\8b ÐºÐ°Ñ\87еÑ\81Ñ\82ва, Ñ\83казаÑ\82Ñ\8c Ð½Ñ\83жнÑ\8bй Ð¿Ñ\83нкÑ\82 Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð¾Ð¼ÐµÑ\80ом Ð² Ñ\81пиÑ\81ке Ð¸Ð»Ð¸ Ð½Ð°Ð¿Ñ\80имеÑ\80 Ð½Ð°Ð¿Ð¸Ñ\81аÑ\82Ñ\8c 1080 Ð¸Ð»Ð¸ 1080p. Ð\91Ñ\83дÑ\83Ñ\82 Ñ\81каÑ\87анÑ\8b Ð¾Ñ\82делÑ\8cно Ñ\84аил Ð²Ð¸Ð´ÐµÐ¾ Ð¸ Ð·Ð²Ñ\83ка, Ð° Ð·Ð°Ñ\82ем Ð¿ÐµÑ\80екодиÑ\80ованнÑ\8b Ð² mp4 Ð¿Ñ\80и Ð¿Ð¾Ð¼Ð¾Ñ\89и ffmpeg.
 
-Известные проблемы: Иногда зависает на этапе скачивания видео или видео, помогает перезапуск или выбор другого качества.
+На первом запуске и раз в какоето время будет спрашивать PoToken и visitorData. Это нужно для обхода антибот-системы ютуба. Гайд как получить эти значения вот: https://github.com/JuanBindez/pytubefix/pull/209
+
+Дополнительные флаги:
+--proxy (-p)    Использовать прокси (по стандарту 127.0.0.1:8881)
+--no-ffmpeg    Не использовать ffmpeg, следовательно видео и звук не будут объеденины
+
+Известные проблемы: Иногда зависает на этапе скачивания видео или звука, помогает перезапуск или выбор другого качества.
index 05f94f8e8e497920b86badacdd14ce6f07ac8a84..25249529ccef8e4aa95f6934d6666c4b3b235f35 100644 (file)
@@ -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)