From 94fc5d0022876a5b9ea55ce11d349b6e791406ee Mon Sep 17 00:00:00 2001 From: jaskaranSM Date: Thu, 26 Sep 2019 12:59:59 -0400 Subject: [PATCH] Added G-Drive List Feature --- bot/__main__.py | 2 +- bot/helper/gdriveTools.py | 21 +++++++++++++++++++++ bot/list.py | 24 ++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 bot/list.py diff --git a/bot/__main__.py b/bot/__main__.py index 5ae23d9..4478eec 100644 --- a/bot/__main__.py +++ b/bot/__main__.py @@ -1,6 +1,6 @@ from telegram.ext import CommandHandler, run_async from bot import dispatcher, LOGGER, updater, aria2 -import bot.mirror +import bot.mirror,bot.list from bot.helper import fs_utils import signal diff --git a/bot/helper/gdriveTools.py b/bot/helper/gdriveTools.py index 9b57286..1b8d526 100644 --- a/bot/helper/gdriveTools.py +++ b/bot/helper/gdriveTools.py @@ -143,3 +143,24 @@ class GoogleDriveHelper: with open(self.__G_DRIVE_TOKEN_FILE, 'wb') as token: pickle.dump(credentials, token) return build('drive', 'v3', credentials=credentials, cache_discovery=False) + + def drive_list(self,fileName): + msg = "" + #Create Search Query for API request. + query = "'{}' in parents and (name contains '{}')".format(parent_id,fileName) + page_token = None + while True: + response = self.__service.files().list(q=query, + spaces='drive', + fields='nextPageToken, files(id, name, mimeType)', + pageToken=page_token).execute() + for file in response.get('files',[]): + if file.get('mimeType') == "application/vnd.google-apps.folder": + msg +='⁍ {} (folder)'.format(file.get('id'),file.get('name'))+"\n" + # Detect Whether Current Entity is a Folder or File. + else: + msg += '⁍ {}'.format(file.get('id'),file.get('name'))+"\n" + page_token = response.get('nextPageToken', None) + if page_token is None: + break + return msg \ No newline at end of file diff --git a/bot/list.py b/bot/list.py new file mode 100644 index 0000000..3b6079d --- /dev/null +++ b/bot/list.py @@ -0,0 +1,24 @@ +from telegram.ext import CommandHandler, run_async +from telegram.error import BadRequest +from bot.helper.gdriveTools import GoogleDriveHelper +from bot import LOGGER,dispatcher + +LOGGER.info('list.py') + + +@run_async +def list_drive(update, context): + message = update.message.text + search = message.replace('/list ', '') + LOGGER.info("Searching: "+search) + gdrive = GoogleDriveHelper(None) + msg = gdrive.drive_list(search) + if msg: + context.bot.send_message(chat_id=update.message.chat_id, reply_to_message_id=update.message.message_id, + text=msg,parse_mode='HTML') + else: + context.bot.send_message(chat_id=update.message.chat_id, reply_to_message_id=update.message.message_id, + text="No Results Found.") + +list_handler = CommandHandler('list', list_drive) +dispatcher.add_handler(list_handler) \ No newline at end of file