Alternatif olarak pip install yt-dlp ile ytdl python paketini kurduktan sonra şunu da kullanabilirsiniz,
best en iyi kaliteyi, worst en düşük dosya boyutunu veya diğer kaliteleri seçebilirsiniz.
import os
from yt_dlp import YoutubeDL
def get_user_inputs():
# Kullanıcıdan gerekli bilgileri al
txt_path = input("Lütfen YouTube linklerinin bulunduğu txt dosyasının yolunu girin: ")
download_path = input("Videoların kaydedileceği klasör yolunu girin: ")
quality = input("Video kalitesini seçin (best/worst/1080p/720p/480p/360p): ")
return txt_path, download_path, quality
def create_download_directory(path):
# İndirme klasörü yoksa oluştur
if not os.path.exists(path):
os.makedirs(path)
print(f"'{path}' klasörü oluşturuldu.")
def read_urls(file_path):
# txt dosyasından linkleri oku
try:
with open(file_path, 'r', encoding='utf-8') as file:
# Boş satırları ve whitespace'leri temizle
urls = [line.strip() for line in file if line.strip()]
return urls
except FileNotFoundError:
print(f"Hata: '{file_path}' dosyası bulunamadı.")
return []
except Exception as e:
print(f"Dosya okuma hatası: {str(e)}")
return []
def download_videos(urls, download_path, quality):
# Video kalitesi ayarlarını belirle
quality_settings = {
'best': 'bestvideo+bestaudio/best',
'worst': 'worstvideo+worstaudio/worst',
'1080p': 'bestvideo[height<=1080]+bestaudio/best[height<=1080]',
'720p': 'bestvideo[height<=720]+bestaudio/best[height<=720]',
'480p': 'bestvideo[height<=480]+bestaudio/best[height<=480]',
'360p': 'bestvideo[height<=360]+bestaudio/best[height<=360]'
}
format_spec = quality_settings.get(quality.lower(), 'best')
# yt-dlp ayarları
ydl_opts = {
'format': format_spec,
'outtmpl': os.path.join(download_path, '%(title)s.%(ext)s'),
'ignoreerrors': True, # Hatalı linklerden sonra devam et
'no_warnings': False,
'progress_hooks': [lambda d: print(f"İndiriliyor: {d['filename']}")],
}
# Videoları indir
with YoutubeDL(ydl_opts) as ydl:
for url in urls:
try:
print(f"\nVideo indiriliyor: {url}")
ydl.download([url])
except Exception as e:
print(f"Hata oluştu ({url}): {str(e)}")
def main():
print("YouTube Video İndirme Programı")
print("-" * 30)
# Kullanıcı girdilerini al
txt_path, download_path, quality = get_user_inputs()
# İndirme klasörünü oluştur
create_download_directory(download_path)
# Linkleri oku
urls = read_urls(txt_path)
if not urls:
print("İndirilecek link bulunamadı.")
return
print(f"\nToplam {len(urls)} video indirilecek.")
# İndirme işlemini başlat
download_videos(urls, download_path, quality)
print("\nİndirme işlemi tamamlandı!")
if __name__ == "__main__":
main()