Hata alma sebebim nedir

Arkadaşlar merhaba. Kendim için bir tane youtube downloader yapmaya karar verdim fakat şöyle bir hata alıyorum. Örnek betik(Karışık olduğunu biliyorum fakat sizler için deneme yapalım diye hazırladım.):

import yt_dlp as youtube_dl
import os
from tkinter import *
pen = Tk()
pen.geometry("720x720")
desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop')
ydl = {
        'format': 'bestvideo+bestaudio/best',
        'postprocessors': [{
            'key': 'FFmpegVideoConvertor',
            'preferedformat': 'mp4'
        }],
        'outtmpl': desktop + '/%(title)s.%(ext)s',
        'noplaylist':True
}
ent = Entry(pen, width=40)
ent.place(x=4, y=5)
def a():
    global ent
    entryy = ent.get()
    global ydl
    with youtube_dl.YoutubeDL(ydl) as ydl:
        info = ydl.extract_info(entryy, download=False)
                          
def download():
    global ent
    global ydl
    entryy = ent.get()
    with youtube_dl.YoutubeDL(ydl) as ydl:
        ydl.download([entryy])            
button = Button(pen, command=a)
button.pack()
button1 = Button(pen, command=download, text="asdasdasdas")
button1.pack()
pen.mainloop()

amacımı da söyleyeyim. Entry bölümüne kullanıcı link girecek ve sonra uygulama video ile ilgili bilgi toplayıp ekrana label yazdıracak. Ardından kullanıcı download tuşuna basıp indirecek. Fakat altta hata çıkıyor ve neden olduğunu anlamadım.

bilgisayarında FFmpeg yüklü mü?

Download FFmpeg

import yt_dlp as youtube_dl
import os
from tkinter import *

# Tkinter pencere ayarları
pen = Tk()
pen.geometry("720x720")

# Masaüstü yolu
desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop')

# YouTube-DLP ayarları
ydl_opts = {
    'format': 'bestvideo+bestaudio/best',
    'postprocessors': [{
        'key': 'FFmpegVideoConvertor',
        'preferedformat': 'mp4'
    }],
    'outtmpl': os.path.join(desktop, '%(title)s.%(ext)s'),
    'noplaylist': True
}

# Giriş alanı
ent = Entry(pen, width=40)
ent.place(x=4, y=5)

def show_info():
    """Video bilgilerini göster."""
    entryy = ent.get()
    try:
        with youtube_dl.YoutubeDL(ydl_opts) as ydl:
            info = ydl.extract_info(entryy, download=False)
            title = info.get('title', 'Bilinmiyor')
            print(f"Video Başlığı: {title}")
    except Exception as e:
        print(f"Hata: {e}")

def download():
    """Video indir."""
    entryy = ent.get()
    try:
        with youtube_dl.YoutubeDL(ydl_opts) as ydl:
            ydl.download([entryy])
            print("İndirme tamamlandı!")
    except Exception as e:
        print(f"Hata: {e}")

# Butonlar
info_button = Button(pen, command=show_info, text="Bilgi Göster")
info_button.pack()

download_button = Button(pen, command=download, text="İndir")
download_button.pack()

pen.mainloop()

Kodda biraz düzenlemeler yaptım. Bu şekilde çalışıyor ancak yukarıdaki mesajımda söylediğim küpüthaneyi bilgisayarına kurman lazım.

Kurduktan sonra FFmpeg’in bin klasör yolunu ortam değişkenlerine ekle (örneğin: C:\ffmpeg\bin). restart çek pc ye tekrar dene.

Aldığın hatayı da buraya yaz lütfen.

1 Beğeni

Evet çalıştı ama benimkinin neden çalışmadığını anlamadım.

arkadaşlar neden hata aldığımı buldum. başta tanımlanan ydl’yi ardından şöyle kullanınca herhalde ydl ler birbirine karışmış.

with youtube_dl.YoutubeDL(ydl) as ydl:
        info = ydl.extract_info(entryy, download=False)

hocam sana da çok teşekkür ederim, var ol!

1 Beğeni

Bittikten sonra buraya at ta faydalanalım hocam :slight_smile:

2 Beğeni

rica ederim eyvallah kolay gelsin