#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Script untuk menguji fungsi download dan konversi YouTube ke MP3
"""

import os
import sys
import yt_dlp
import time

def test_youtube_download(url, output_path="test_download"):
    """Menguji fungsi download dan konversi dari YouTube ke MP3."""
    print(f"Menguji download dari URL: {url}")
    
    # Konfigurasi yt-dlp
    ydl_opts = {
        'format': 'bestaudio/best',
        'outtmpl': output_path,
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
        'prefer_ffmpeg': True,
        'keepvideo': False,
        'noplaylist': True,
        'verbose': True,
    }
    
    start_time = time.time()
    
    try:
        with yt_dlp.YoutubeDL(ydl_opts) as ydl:
            info = ydl.extract_info(url, download=True)
            
            # Tampilkan informasi hasil
            print("\n--- Hasil Pengujian ---")
            print(f"Judul: {info.get('title', 'Unknown')}")
            print(f"Uploader: {info.get('uploader', 'Unknown')}")
            print(f"Durasi: {info.get('duration', 0)} detik")
            print(f"File output: {output_path}.mp3")
            print(f"Waktu proses: {time.time() - start_time:.2f} detik")
            
            # Periksa apakah file berhasil dibuat
            if os.path.exists(f"{output_path}.mp3"):
                file_size = os.path.getsize(f"{output_path}.mp3") / (1024 * 1024)  # Convert to MB
                print(f"Ukuran file: {file_size:.2f} MB")
                print("Status: BERHASIL ✅")
                return True
            else:
                print("Status: GAGAL ❌ - File tidak ditemukan")
                return False
                
    except Exception as e:
        print(f"\nStatus: GAGAL ❌")
        print(f"Error: {str(e)}")
        return False

if __name__ == "__main__":
    # URL YouTube untuk pengujian
    test_url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"  # Video YouTube populer untuk pengujian
    
    # Buat direktori untuk pengujian jika belum ada
    os.makedirs("test", exist_ok=True)
    
    # Jalankan pengujian
    success = test_youtube_download(test_url, "test/test_youtube")
    
    # Tampilkan hasil akhir
    print("\n--- Ringkasan Pengujian ---")
    if success:
        print("Pengujian konversi YouTube ke MP3: BERHASIL ✅")
        print("Bot siap digunakan untuk mengkonversi video YouTube ke MP3")
    else:
        print("Pengujian konversi YouTube ke MP3: GAGAL ❌")
        print("Perlu perbaikan sebelum bot dapat digunakan")
    
    sys.exit(0 if success else 1)
