import pysrt
from pyrogram import Client
from base.utils.database import Database
from pyrogram.types import (InlineQuery,InlineQueryResultVideo,InlineQueryResultPhoto,InlineQueryResultArticle,InlineQueryResult, InputTextMessageContent,InlineKeyboardMarkup, InlineKeyboardButton)
from base import ADMINS, Bot, MOVIEO_CLI, DOWNLOAD_DIR, SUBTITLE_DIR
from base import LOGGER, SUDO, Bot

@Bot.on_inline_query(group=1)
async def subtitles(_: Client, InlineQuery):
    try:
        query = InlineQuery.query
        command = query.split(',')[0]
        file_name = query.split(',')[1]
        try:
            task_id = int(query.split(',')[2])
            with Database() as db:
                media_task_db = db.get_media_task(task_id,'id','package_id')
            package_id = media_task_db[0][0]
            with Database() as db:
                media_task_db = db.get_package(package_id,'id','type')
            task_type = media_task_db[0][0]
            task_type = f',{task_type}'
        except:
            task_type = str()
        if command == 'show_first_50_sublines':
            subtitles = pysrt.open(f"{SUBTITLE_DIR}mvo_{file_name}")
            results = list()
            i = 0
            for sub in subtitles:
                results.append(
                    InlineQueryResultArticle(
                        title=str(sub.index),
                        input_message_content=InputTextMessageContent(
                            f'delete,mvo_{file_name},{sub.index}{task_type}'
                        ),
                        description=sub.text
                    )
                )
                i += 1
                if i == 50:
                    break
            await InlineQuery.answer(
                results=results,
                cache_time=0
            )
        elif command == 'show_last_50_sublines':
            subtitles = pysrt.open(f"{SUBTITLE_DIR}mvo_{file_name}")
            results = list()
            i = 0
            for sub in reversed(subtitles):
                results.append(
                    InlineQueryResultArticle(
                        title=str(sub.index),
                        input_message_content=InputTextMessageContent(
                            f'delete,mvo_{file_name},{sub.index}{task_type}'
                        ),
                        description=sub.text
                    )
                )
                i += 1
                if i == 50:
                    break
            await InlineQuery.answer(
                results=results,
                cache_time=0
            )
        elif command == 'deleted_sublines':
            subtitles = pysrt.open(f"{SUBTITLE_DIR}deleted_{file_name}")
            results = list()
            i = 0
            for sub in subtitles:
                results.append(
                    InlineQueryResultArticle(
                        title=str(sub.index),
                        input_message_content=InputTextMessageContent(
                            f'recover,deleted_{file_name},{sub.index}{task_type}'
                        ),
                        description=sub.text
                    )
                )
                i += 1
                if i == 50:
                    break
            await InlineQuery.answer(
                results=results,
                cache_time=0
            )
    except:
        pass