import yt_dlp
import os

class VoltylDownloader:
    def __init__(self, cookies_folder="volty"):
        """
        تحميل فيديوهات من يوتيوب باستخدام ملف كوكيز تلقائيًا من مجلد 'volty'
        :param cookies_folder: اسم المجلد الذي يحتوي على ملف الكوكيز (افتراضي: 'volty')
        """
        self.cookies_path = self._get_cookies_path(cookies_folder)

    def _get_cookies_path(self, cookies_folder):
        """ التحقق من وجود ملف الكوكيز داخل المجلد المحدد """
        cookies_path = os.path.join(cookies_folder, "cookies.txt")
        if os.path.exists(cookies_path):
            return cookies_path
        else:
            print(f"⚠️ ملف الكوكيز غير موجود في: {cookies_path}")
            return None

    def download_video(self, url, output_path="downloads/%(title)s.%(ext)s", format="best"):
        """
        تحميل فيديو من يوتيوب باستخدام ملف الكوكيز (إذا وجد)
        :param url: رابط الفيديو
        :param output_path: مكان حفظ الفيديو (افتراضي: مجلد downloads)
        :param format: جودة الفيديو (افتراضي: الأفضل)
        """
        os.makedirs("downloads", exist_ok=True)
        ydl_opts = {
            "format": format,
            "outtmpl": output_path,
            "cookies": self.cookies_path,
            "quiet": False
        }

        with yt_dlp.YoutubeDL(ydl_opts) as ydl:
            ydl.download([url])

    def get_video_info(self, url):
        """
        جلب معلومات الفيديو
        :param url: رابط الفيديو
        :return: بيانات الفيديو (العنوان، المدة، القناة، إلخ)
        """
        with yt_dlp.YoutubeDL() as ydl:
            info = ydl.extract_info(url, download=False)
        return {
            "title": info.get("title"),
            "duration": info.get("duration"),
            "uploader": info.get("uploader"),
            "views": info.get("view_count"),
            "likes": info.get("like_count"),
            "upload_date": info.get("upload_date"),
        }