Added G-Drive List Feature

This commit is contained in:
jaskaranSM 2019-09-26 12:59:59 -04:00 committed by lzzy12
parent 53fb5bda2e
commit 94fc5d0022
3 changed files with 46 additions and 1 deletions

View File

@ -1,6 +1,6 @@
from telegram.ext import CommandHandler, run_async from telegram.ext import CommandHandler, run_async
from bot import dispatcher, LOGGER, updater, aria2 from bot import dispatcher, LOGGER, updater, aria2
import bot.mirror import bot.mirror,bot.list
from bot.helper import fs_utils from bot.helper import fs_utils
import signal import signal

View File

@ -143,3 +143,24 @@ class GoogleDriveHelper:
with open(self.__G_DRIVE_TOKEN_FILE, 'wb') as token: with open(self.__G_DRIVE_TOKEN_FILE, 'wb') as token:
pickle.dump(credentials, token) pickle.dump(credentials, token)
return build('drive', 'v3', credentials=credentials, cache_discovery=False) 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 +='⁍ <a href="https://drive.google.com/drive/folders/{}">{}</a> (folder)'.format(file.get('id'),file.get('name'))+"\n"
# Detect Whether Current Entity is a Folder or File.
else:
msg += '⁍ <a href="https://drive.google.com/uc?id={}&export=download">{}</a>'.format(file.get('id'),file.get('name'))+"\n"
page_token = response.get('nextPageToken', None)
if page_token is None:
break
return msg

24
bot/list.py Normal file
View File

@ -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)