Python yüklü olmalı.

Kütüphane kurulumu:
pip install -U yt-dlp
main.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.