Ошибка Pytube в Python для загрузки видео с Youtube

avatar
Sumant Dusane
8 августа 2021 в 15:39
1596
2
-1

Я столкнулся с этой ошибкой при создании программы для загрузки видео с YouTube с помощью графического интерфейса (Tkinter ttk) Пожалуйста, помогите мне кто-нибудь :( Я пробовал так много запросов coderhelper, но мне ничего не помогло, и даже я скопировал исходный код из Github, но ошибка сохраняется в моей системе, однако код работал правильно у референса. Может быть, это ошибка подключения или что-то еще, и у меня есть 2 расширения Chrome: 1. Коснитесь Впн 2. Мета-маска

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
  File "f:\Sumant\Python\YouTube Downloader\yt.py", line 25, in download
    yt = YouTube(url)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\site-packages\pytube\__main__.py", line 91, in __init__
    self.prefetch()
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\site-packages\pytube\__main__.py", line 181, in prefetch
    self.vid_info_raw = request.get(self.vid_info_url)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\site-packages\pytube\request.py", line 36, in get
    return _execute_request(url).read().decode("utf-8")
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\site-packages\pytube\request.py", line 24, in _execute_request
    return urlopen(request)  # nosec
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 214, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 523, in open
    response = meth(req, response)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 632, in http_response
    response = self.parent.error(
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 555, in error
    result = self._call_chain(*args)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 494, in _call_chain
    result = func(*args)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 747, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 523, in open
    response = meth(req, response)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 632, in http_response
    response = self.parent.error(
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 561, in error
    return self._call_chain(*args)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 494, in _call_chain
    result = func(*args)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 641, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 410: Gone

Код

def download():
    url = ent_link.get()
    res = var.get()

    if len(url) < 1:
        messagebox.showerror("Error", "URL cannot be Empty")
 
    yt = YouTube(url)
    try:
        if var.get() == 0:
             reso_select = yt.streams.get_highest_resolution()
        elif var.get() == 1:
            reso_select = yt.streams.get_lowest_resolution()
        elif var.get() == 2:
            reso_select = yt.streams.filter(only_audio=True).first()
        else:
            reso_select = yt.streams.get_highest_resolution()
        try:
            reso_select.download(path1)
            messagebox.showinfo("Sucess", "Video Downloaded!")
        except:
            messagebox.showerror("Error", "Download Failed")
    except:
        messagebox.showerror("Error","Please try again")

Возможно, есть ошибка в строке yt = YouTube(url)

Полный код Репозиторий GitHub

Источник
Carcigenicate
8 августа 2021 в 15:44
1

«Ошибка HTTP 410: нет» означает, что этот ресурс был удален с их сервера. Если они не отправляют это, чтобы возиться со скребками, это означает, что это не проблема с вашим кодом. Вы пытаетесь получить несуществующее видео.

TheLizzard
8 августа 2021 в 15:45
0

Также это не RuntimeError. Это urllib.error.HTTPError. Поэтому, пожалуйста, удалите тег runtime-error в вопросе.

Carcigenicate
8 августа 2021 в 15:45
0

А также не используйте except:. Похоже, это не ваша проблема прямо сейчас, но голые except случаи, подобные этому, в какой-то момент укусят вас. Всегда указывайте исключение, которое хотите поймать.

Sumant Dusane
8 августа 2021 в 16:48
0

@Carcigenicate youtube.com/watch?v=Lynx3vZz5Ao&t=1s есть видео проверки, пожалуйста, используйте ссылку GitHub и используйте код для загрузки чего-либо с YT

acw1668
10 августа 2021 в 05:07
0

Код отлично работает со ссылкой на YouTube, используя pytube 11.0.0 и Python 3.8.10.

Sumant Dusane
11 августа 2021 в 16:45
0

@acw1668 acw1668 Вы пробовали мой код?

acw1668
12 августа 2021 в 04:22
0

Да, я пробовал ваш код с pytube 11.0.0 и Python 3.8.10, как я сказал в своем прошлом комментарии.

acw1668
12 августа 2021 в 04:28
0

Отвечает ли это на ваш вопрос? Как загрузить видео с YouTube с помощью Python?

Sumant Dusane
12 августа 2021 в 06:22
0

@acw1668 Большое спасибо 🙏. Это означает, что мой код загружает материалы YouTube 😍

Ответы (2)

avatar
Akash Sharma
14 августа 2021 в 20:57
0

Это ошибка с pytube, она случалась ранее и была исправлена, но похоже, что она могла быть повторно введена. Вы всегда можете заглянуть в другую библиотеку, например. youtube_dl или ytpy

avatar
Sumant Dusane
12 августа 2021 в 07:21
0

Моя ошибка устранена, ошибка возникла из-за модуля pytube Если кто-нибудь увидит ошибку HTTP с любым кодом, используйте 2 теста:

  1. Правильно проверьте ссылку
  2. переустановите pytube (если pytube не работает, установите pytube3, но после удаления pytube)

Спасибо всем!