Kütüphane kurulumu:
pip install -U yt-dlpmain.py:
import os
import yt_dlp
def baslik():
os.system("cls" if os.name == "nt" else "clear")
print("=" * 55)
print("YOUTUBE PLAYLIST MP3 INDIRICI")
print("=" * 55)
print()
def ilerleme(durum):
if durum["status"] == "downloading":
yuzde = durum.get("_percent_str", "").strip()
hiz = durum.get("_speed_str", "").strip()
kalan = durum.get("_eta_str", "").strip()
print(
f"\rIndiriliyor: {yuzde} | Hiz: {hiz} | Kalan: {kalan}",
end="",
flush=True
)
elif durum["status"] == "finished":
print("\nIndirme tamamlandi. MP3 donusturuluyor...")
def playlist_indir(link, klasor):
os.makedirs(klasor, exist_ok=True)
ayarlar = {
"format": "bestaudio/best",
"outtmpl": os.path.join(
klasor,
"%(playlist_index)03d - %(title)s.%(ext)s"
),
"ignoreerrors": True,
"windowsfilenames": True,
"progress_hooks": [ilerleme],
"postprocessors": [
{
"key": "FFmpegExtractAudio",
"preferredcodec": "mp3",
"preferredquality": "320",
}
],
}
try:
with yt_dlp.YoutubeDL(ayarlar) as indirici:
indirici.download([link])
print()
print("=" * 55)
print("PLAYLIST TAMAMLANDI")
print(f"Klasor: {os.path.abspath(klasor)}")
print("=" * 55)
except KeyboardInterrupt:
print("\nIslem kullanici tarafindan durduruldu.")
except Exception as hata:
print(f"\nHata: {hata}")
def main():
baslik()
link = input("YouTube playlist linki: ").strip()
if not link:
print("Playlist linki bos birakilamaz.")
return
klasor = input("Kayit klasoru [mp3]: ").strip()
if not klasor:
klasor = "mp3"
print()
print("Indirme baslatiliyor...")
print()
playlist_indir(link, klasor)
input("\nCikmak icin Enter...")
if __name__ == "__main__":
main()Eğitim amaçlı paylaşılmıştır. Sorumluluk kullanan kişiye aittir.