Added G-Drive List Feature
This commit is contained in:
parent
53fb5bda2e
commit
94fc5d0022
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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)
|
||||||
Loading…
Reference in New Issue