Path: blob/master/bot/modules/gd_search.py
1630 views
from .. import LOGGER, user_data1from ..helper.ext_utils.bot_utils import (2sync_to_async,3get_telegraph_list,4new_task,5)6from ..helper.mirror_leech_utils.gdrive_utils.search import GoogleDriveSearch7from ..helper.telegram_helper.button_build import ButtonMaker8from ..helper.telegram_helper.message_utils import send_message, edit_message91011async def list_buttons(user_id, is_recursive=True, user_token=False):12buttons = ButtonMaker()13buttons.data_button(14"Folders", f"list_types {user_id} folders {is_recursive} {user_token}"15)16buttons.data_button(17"Files", f"list_types {user_id} files {is_recursive} {user_token}"18)19buttons.data_button(20"Both", f"list_types {user_id} both {is_recursive} {user_token}"21)22buttons.data_button(23f"Recursive: {is_recursive}",24f"list_types {user_id} rec {is_recursive} {user_token}",25)26buttons.data_button(27f"User Token: {user_token}",28f"list_types {user_id} ut {is_recursive} {user_token}",29)30buttons.data_button("Cancel", f"list_types {user_id} cancel")31return buttons.build_menu(2)323334async def _list_drive(key, message, item_type, is_recursive, user_token, user_id):35LOGGER.info(f"listing: {key}")36if user_token:37user_dict = user_data.get(user_id, {})38target_id = user_dict.get("gdrive_id", "") or ""39LOGGER.info(target_id)40else:41target_id = ""42telegraph_content, contents_no = await sync_to_async(43GoogleDriveSearch(is_recursive=is_recursive, item_type=item_type).drive_list,44key,45target_id,46user_id,47)48if telegraph_content:49try:50button = await get_telegraph_list(telegraph_content)51except Exception as e:52await edit_message(message, e)53return54msg = f"<b>Found {contents_no} result for <i>{key}</i></b>"55await edit_message(message, msg, button)56else:57await edit_message(message, f"No result found for <i>{key}</i>")585960@new_task61async def select_type(_, query):62user_id = query.from_user.id63message = query.message64key = message.reply_to_message.text.split(maxsplit=1)[1].strip()65data = query.data.split()66if user_id != int(data[1]):67return await query.answer(text="Not Yours!", show_alert=True)68elif data[2] == "rec":69await query.answer()70is_recursive = not bool(eval(data[3]))71buttons = await list_buttons(user_id, is_recursive, eval(data[4]))72return await edit_message(message, "Choose list options:", buttons)73elif data[2] == "ut":74await query.answer()75user_token = not bool(eval(data[4]))76buttons = await list_buttons(user_id, eval(data[3]), user_token)77return await edit_message(message, "Choose list options:", buttons)78elif data[2] == "cancel":79await query.answer()80return await edit_message(message, "list has been canceled!")81await query.answer()82item_type = data[2]83is_recursive = eval(data[3])84user_token = eval(data[4])85await edit_message(message, f"<b>Searching for <i>{key}</i></b>")86await _list_drive(key, message, item_type, is_recursive, user_token, user_id)878889@new_task90async def gdrive_search(_, message):91if len(message.text.split()) == 1:92return await send_message(message, "Send a search key along with command")93user_id = message.from_user.id94buttons = await list_buttons(user_id)95await send_message(message, "Choose list options:", buttons)96979899100101