Pytube uygulama hatası

Merhabalar,
ben pytube kullanarak şöyle bir program yazdım:


from pytube import YouTube

yt = 0

while True:
    val = input('>>>')
    if val == "video --input --url":
        yts = input("url >>>")
        yt = YouTube(yts)
    if val == "video --title":
        if yt != 0:
            print(f"Video Title: {yt.title}")

    if val == "video --author":
        if yt != 0:
            print(f"Video Author: {yt.author}")

    if val == "video --thumbnail":
        if yt != 0:
            print(f"Thumbnail Picture: {yt.thumbnail_url}")

    if val == "video --length":
        if yt != 0:
            print(f"Video length: {yt.length}")

    if val == "video --rating":
        if yt != 0:
            print(f"Video Rating: {yt.rating}")

    if val == "video --views":
        if yt != 0:
            print(f"Video Views: {yt.views}")

    if val == "video --title":
        if yt != 0:
            print(f"""Video Description: 
{yt.description}""")
    
    if val == "video --download":
        if yt != 0:
            stream = yt.streams.filter(progressive=True).first()
            stream.download()
    if val == "video --subtitle":
        if yt != 0:
            for i in yt.captions:
                print(i)
            lg = input("language >>>")
            caption = yt.captions[lg]
            cc = caption.generate_srt_captions()

            print(cc)


Fakat şöyle bir hata verdi


>>>video --input --url
url >>>https://www.youtube.com/watch?v=DyDfgMOUjCI
Traceback (most recent call last):
  File "C:\Users\****\Desktop\*****\yazılım\py\uygulama\yt\yt.py", line 9, in 
    yt = YouTube(yts)
  File "C:\Users\****\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\__main__.py", line 91, in __init__
    self.prefetch()
  File "C:\Users\****\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\__main__.py", line 183, in prefetch
    self.js_url = extract.js_url(self.watch_html)
  File "C:\Users\****\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\extract.py", line 143, in js_url
    base_js = get_ytplayer_config(html)["assets"]["js"]
  File "C:\Users\****\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\extract.py", line 202, in get_ytplayer_config
    raise RegexMatchError(caller="get_ytplayer_config", pattern="config_patterns")
pytube.exceptions.RegexMatchError: get_ytplayer_config: could not find match for config_patterns

Hata ayıklama yaptım düzgün ama bbu hatayı verdi sebebi nedir ? (pip ile pytube yi içe aktardım).

bence bu kod hata vermez sonsuz döngüde kalır.
if yapısı ve döngü yapınız hatalı olmuş

Programın sürekli çalışması için yapılmış bir döngü.

Bu kısmın görevi nedir ?
Hata büyük ihtimal burdan kaynaklı.

1 Beğeni

O kısım youtube videosunun url sinin uygulamaya verildiği kısım.

Bu hatayı bende alıyorum bunun yüzünden konu açmıştım. Neyse ki böyle bir konu varmış siliyorum.
Arkadaşlar yarımlarınızı bekliyoruz

Bende çalışıyor şunlar, sizde çalışıyor mu

>>> from pytube import YouTube

>>> url = "https://www.youtube.com/watch?v=PCicKydX5GE"
>>> vid = YouTube(url)

>>> vid.title
'3 Second Video'

Versiyonunuz nedir

import pytube
print(pytube.__version__)

10.1.0 bendeki

evet dediğin şekilde yazdığımda bende de sorunsuz çalıştı şimdi tkinter ile denicem. Ona göre dönüş yaparım

versiyon:
10.7.2

from tkinter import *
from pytube import YouTube

class Root:
    def __init__(self):
        self.root = Tk()
        self.root.geometry("375x479")
        self.root.config(bg="#AA00FF")
        self.root.resizable(False,False)
        self.widgets()
        self.Youtube()

    def Youtube(self):
        self.url = self.entr_var.get()
        self.yt = YouTube(self.url)
        self.audio = self.yt.streams.filter(mime_type="audio/mp4")
        self.audio.first()
        self.download = Button(master=self.root,text="İndir")
        self.download.place(x=280,y=170)

    def widgets(self):
        self.heading = Label(master=self.root,text="Youtube Mp3",fg="#00D0FF",bg="#AA00FF",font=("Arial",15,"bold"))
        self.heading.place(x=130,y=20)
        self.subheading = Label(master=self.root,text="DONUSTURUCU",fg="#00D0FF",bg="#AA00FF",font=("Arial",20,"bold"))
        self.subheading.place(x=90,y=60)
        self.vidlink = Label(master=self.root,text="Video Link:",fg="#00D0FF",bg="#AA00FF",font=("MS Shell Dlg 2",13))
        self.vidlink.place(x=148,y=120)

        self.entr_var = StringVar()
        self.entry = Entry(master=self.root,textvar=self.entr_var,fg="#00D0FF", bg="#AA00FF", width=35,font=("MS Shell Dlg 2", 13, "italic"))
        self.entry.place(x=28, y=148)



if __name__ == '__main__':
    Root()
    mainloop()

Aynı hatayı halen veriyor hocam

Ama bunu çalıştırır çalıştırmaz veriyor hatayı, bir video URL’i girmeye fırsat vermiyor? None felan yolluyordur ondandır belki hata.

Şöyle değiştirdim programı:

from tkinter import *
from pytube import YouTube

class Root:
    def __init__(self):
        self.root = Tk()
        self.root.geometry("375x479")
        self.root.config(bg="#AA00FF")
        self.root.resizable(False,False)
        self.widgets()

    def Youtube(self):
        self.url = self.entr_var.get()
        self.yt = YouTube(self.url)
        self.audio = self.yt.streams.filter(mime_type="audio/mp4")
        self.audio.first()


    def widgets(self):
        self.heading = Label(master=self.root,text="Youtube Mp3",fg="#00D0FF",bg="#AA00FF",font=("Arial",15,"bold"))
        self.heading.place(x=130,y=20)
        self.subheading = Label(master=self.root,text="DONUSTURUCU",fg="#00D0FF",bg="#AA00FF",font=("Arial",20,"bold"))
        self.subheading.place(x=90,y=60)
        self.vidlink = Label(master=self.root,text="Video Link:",fg="#00D0FF",bg="#AA00FF",font=("MS Shell Dlg 2",13))
        self.vidlink.place(x=148,y=120)

        self.entr_var = StringVar()
        self.entry = Entry(master=self.root,textvar=self.entr_var,fg="#00D0FF", bg="#AA00FF", width=35,font=("MS Shell Dlg 2", 13, "italic"))
        self.entry.place(x=28, y=148)
        
        self.download = Button(master=self.root,text="İndir", command=self.Youtube)
        self.download.place(x=280,y=170)



if __name__ == '__main__':
    Root()
    mainloop()

Çalışıyor bir link girdiğimde ama ne yaptığını anlamadım :)

Bana kalırsa evvela tüm widget’ları bi yükleyin, sonra Youtube’a gitsin. Eğer indir butonunu sonra göstermek istiyorsanız belki başta görünmez başlatıp sonra aktif edebilirsiniz.

1 Beğeni

evet dediğiniz gibi
Entry'e birşey girildiğinde hata vermiyor bunu da başka fonksiyon oluşturup bu fonksiyonu da butonla çağırdığımda sorun çözüldü ben ikisinide bir olarak aynı fonksiyona yazmışım dikkatsizlikten ötürü

yeni hali:

    def url(self):
        self.url = self.entr_var.get()
        self.yt = YouTube(self.url)
        # self.audio = self.yt.streams.filter(mime_type="audio/mp4")
        # self.audio.first()
        print(self.yt.title) # denem amaçlı printle ifade ettim
    def Youtube(self):
        self.download = Button(master=self.root,text="İndir",command=self.url)
        self.download.place(x=280,y=170)
1 Beğeni

Yok öyle değil sorunu buldum nasıl çözeceğimi bilmiyorum.
sorun :

 yts = input("url >>>")
 yt = YouTube(yts)

kısmında olmalı.

Dediğin şekilde terminalde yapınca oluyor ama programda olmuyor benimki 10.7.2 sana güncelleme gerek :grin:.

Bende çalışıyor, siz hala aynı hatayı mı alıyorsunuz soruda belirttiğiniz? Şu programı denediniz mi

from pytube import YouTube

url = "https://www.youtube.com/watch?v=PCicKydX5GE"
yt = YouTube(url)

print(yt.title)