Youtube Videolarını Python ile İndirmek
pip install yt-dlp
ile gerekli paketi kurduktan sonra aşağıdaki kodu kullanarak Youtube videolarını toplu halde istediğiniz kalitede indirebilirsiniz.
Eğer sisteminizde ffmpeg kurulu değilse ses ve görüntüyü ayrı ayrı kaydedecektir. Github dan indirerek kurabilir veya sadece ffmpeg.exe dosyasını kodla aynı dizine koyabilirsiniz. best en iyi kalite, worst en düşük dosya boyutu veya 360p, 480p, 720p, 1080p kalite seçeneklerinden birini kullanabilirsiniz.

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()