import os
import sys
import zipfile
import subprocess
from pyrogram import Client, filters
from pyrogram.types import Message
from base import ADMINS, Bot, DOWNLOAD_DIR, SUBTITLE_DIR

@Bot.on_message(filters.private & filters.user(ADMINS) & filters.document, group=2)
async def zips(_: Client, update: Message):
    user_id = update.from_user.id
    file_format = update.document.mime_type
    if file_format=='application/zip' or file_format=='application/x-rar-compressed':
        zip_file_path = await _.download_media(update)
        res = await update.reply('در حال استخراج فایل zip...')
        with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
            zip_ref.extractall(SUBTITLE_DIR)
            subtitles = zip_ref.namelist()
            for sub in subtitles:
                if sub[-3:] == 'ass':
                    command = [
                        "ffmpeg",
                        "-i", f'{SUBTITLE_DIR}{sub}',
                        f'{SUBTITLE_DIR}{sub[:-3]}srt'
                    ]
                    subprocess.run(command, check=True)
                    sub = f'{sub[:-3]}srt'
                await _.send_document(user_id, f'{SUBTITLE_DIR}{sub}')
                os.remove(f'{SUBTITLE_DIR}{sub}')
        os.remove(f'{zip_file_path}')
        await _.delete_messages(user_id, res.id)

