Fix some stuffs
Signed-off-by: lzzy12 <jhashivam2020@gmail.com>
This commit is contained in:
parent
ae16a8338d
commit
0fac78be49
6
aria.sh
6
aria.sh
|
|
@ -1 +1,5 @@
|
||||||
aria2c --enable-rpc --rpc-listen-all=false --rpc-listen-port 6800 --max-connection-per-server=10 --rpc-max-request-size=1024M --seed-time=0.01 --min-split-size=10M --follow-torrent=mem --split=10 --daemon=true --allow-overwrite=true
|
export MAX_DOWNLOAD_SPEED=0
|
||||||
|
aria2c --enable-rpc --rpc-listen-all=false --rpc-listen-port 6800 \
|
||||||
|
--max-connection-per-server=10 --rpc-max-request-size=1024M \
|
||||||
|
--seed-time=0.01 --min-split-size=10M --follow-torrent=mem --split=10 \
|
||||||
|
--daemon=true --allow-overwrite=true --max-overall-download-limit=$MAX_DOWNLOAD_SPEED
|
||||||
|
|
@ -54,6 +54,9 @@ class DownloadHelper:
|
||||||
# Waiting for the actual gid
|
# Waiting for the actual gid
|
||||||
new_gid = None
|
new_gid = None
|
||||||
while new_gid is None:
|
while new_gid is None:
|
||||||
|
if self.__get_download().has_failed:
|
||||||
|
self.__listener.onDownloadError(self.__get_download().error_message, status_list[index])
|
||||||
|
break
|
||||||
sleep(DOWNLOAD_STATUS_UPDATE_INTERVAL)
|
sleep(DOWNLOAD_STATUS_UPDATE_INTERVAL)
|
||||||
if should_update:
|
if should_update:
|
||||||
# Check every few seconds
|
# Check every few seconds
|
||||||
|
|
@ -68,12 +71,12 @@ class DownloadHelper:
|
||||||
previous = None
|
previous = None
|
||||||
download = self.__get_download()
|
download = self.__get_download()
|
||||||
while not download.is_complete:
|
while not download.is_complete:
|
||||||
|
if download.has_failed:
|
||||||
|
self.__listener.onDownloadError(self.__get_download().error_message, status_list[index])
|
||||||
|
return
|
||||||
if should_update:
|
if should_update:
|
||||||
status_list = get_download_status_list()
|
status_list = get_download_status_list()
|
||||||
index = get_download_index(status_list, self.__get_download().gid)
|
index = get_download_index(status_list, self.__get_download().gid)
|
||||||
if self.__get_download().has_failed:
|
|
||||||
self.__listener.onDownloadError(self.__get_download().error_message, status_list[index])
|
|
||||||
break
|
|
||||||
# TODO: Find a better way to differentiate between 2 list of objects
|
# TODO: Find a better way to differentiate between 2 list of objects
|
||||||
progress_str_list = get_download_str()
|
progress_str_list = get_download_str()
|
||||||
if progress_str_list != previous:
|
if progress_str_list != previous:
|
||||||
|
|
@ -82,6 +85,7 @@ class DownloadHelper:
|
||||||
except KillThreadException:
|
except KillThreadException:
|
||||||
should_update = False
|
should_update = False
|
||||||
previous = progress_str_list
|
previous = progress_str_list
|
||||||
download = self.__get_download()
|
download = self.__get_download()
|
||||||
sleep(DOWNLOAD_STATUS_UPDATE_INTERVAL)
|
sleep(DOWNLOAD_STATUS_UPDATE_INTERVAL)
|
||||||
|
|
||||||
self.__listener.onDownloadComplete(status_list, index)
|
self.__listener.onDownloadComplete(status_list, index)
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,10 @@ from .fs_utils import get_mime_type
|
||||||
from .bot_utils import *
|
from .bot_utils import *
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
logging.getLogger('googleapiclient.discovery').setLevel(logging.ERROR)
|
logging.getLogger('googleapiclient.discovery').setLevel(logging.ERROR)
|
||||||
|
|
||||||
|
|
||||||
class GoogleDriveHelper:
|
class GoogleDriveHelper:
|
||||||
|
|
||||||
def __init__(self, listener=None):
|
def __init__(self, listener=None):
|
||||||
|
|
@ -23,7 +26,7 @@ class GoogleDriveHelper:
|
||||||
self.__listener = listener
|
self.__listener = listener
|
||||||
self.__service = self.authorize()
|
self.__service = self.authorize()
|
||||||
|
|
||||||
def upload_file(self, file_path, file_name, mime_type,parent_id):
|
def upload_file(self, file_path, file_name, mime_type, parent_id):
|
||||||
# File body description
|
# File body description
|
||||||
media_body = MediaFileUpload(file_path,
|
media_body = MediaFileUpload(file_path,
|
||||||
mimetype=mime_type,
|
mimetype=mime_type,
|
||||||
|
|
@ -72,7 +75,7 @@ class GoogleDriveHelper:
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
dir_id = self.create_directory(os.path.basename(os.path.abspath(file_name)), parent_id)
|
dir_id = self.create_directory(os.path.basename(os.path.abspath(file_name)), parent_id)
|
||||||
self.upload_dir(file_path,dir_id)
|
self.upload_dir(file_path, dir_id)
|
||||||
LOGGER.info("Uploaded To G-Drive: " + file_name)
|
LOGGER.info("Uploaded To G-Drive: " + file_name)
|
||||||
link = "https://drive.google.com/folderview?id={}".format(dir_id)
|
link = "https://drive.google.com/folderview?id={}".format(dir_id)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
@ -83,7 +86,7 @@ class GoogleDriveHelper:
|
||||||
LOGGER.info("Deleting downloaded file/folder..")
|
LOGGER.info("Deleting downloaded file/folder..")
|
||||||
return link
|
return link
|
||||||
|
|
||||||
def create_directory(self, directory_name,parent_id):
|
def create_directory(self, directory_name, parent_id):
|
||||||
permissions = {
|
permissions = {
|
||||||
"role": "reader",
|
"role": "reader",
|
||||||
"type": "anyone",
|
"type": "anyone",
|
||||||
|
|
@ -140,23 +143,26 @@ class GoogleDriveHelper:
|
||||||
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):
|
def drive_list(self, fileName):
|
||||||
msg = ""
|
msg = ""
|
||||||
#Create Search Query for API request.
|
# Create Search Query for API request.
|
||||||
query = "'{}' in parents and (name contains '{}')".format(parent_id,fileName)
|
query = "'{}' in parents and (name contains '{}')".format(parent_id, fileName)
|
||||||
page_token = None
|
page_token = None
|
||||||
while True:
|
while True:
|
||||||
response = self.__service.files().list(q=query,
|
response = self.__service.files().list(q=query,
|
||||||
spaces='drive',
|
spaces='drive',
|
||||||
fields='nextPageToken, files(id, name, mimeType)',
|
fields='nextPageToken, files(id, name, mimeType)',
|
||||||
pageToken=page_token).execute()
|
pageToken=page_token).execute()
|
||||||
for file in response.get('files',[]):
|
for file in response.get('files', []):
|
||||||
if file.get('mimeType') == "application/vnd.google-apps.folder":
|
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"
|
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.
|
# Detect Whether Current Entity is a Folder or File.
|
||||||
else:
|
else:
|
||||||
msg += '⁍ <a href="https://drive.google.com/uc?id={}&export=download">{}</a>'.format(file.get('id'),file.get('name'))+"\n"
|
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)
|
page_token = response.get('nextPageToken', None)
|
||||||
if page_token is None:
|
if page_token is None:
|
||||||
break
|
break
|
||||||
return msg
|
return msg
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,8 @@ from telegram.ext import CommandHandler, run_async
|
||||||
from bot.helper import download_tools, gdriveTools, listeners
|
from bot.helper import download_tools, gdriveTools, listeners
|
||||||
from bot import LOGGER, dispatcher
|
from bot import LOGGER, dispatcher
|
||||||
from bot.helper import fs_utils
|
from bot.helper import fs_utils
|
||||||
from bot import download_dict, status_reply_dict, DOWNLOAD_STATUS_UPDATE_INTERVAL
|
from bot import download_dict, status_reply_dict
|
||||||
from bot.helper.message_utils import *
|
from bot.helper.message_utils import *
|
||||||
from time import sleep
|
|
||||||
from bot.helper.bot_utils import get_readable_message, KillThreadException
|
from bot.helper.bot_utils import get_readable_message, KillThreadException
|
||||||
LOGGER.info('mirror.py')
|
LOGGER.info('mirror.py')
|
||||||
|
|
||||||
|
|
@ -18,14 +17,14 @@ class MirrorListener(listeners.MirrorListeners):
|
||||||
|
|
||||||
def onDownloadProgress(self, progress_status_list: list, index: int):
|
def onDownloadProgress(self, progress_status_list: list, index: int):
|
||||||
msg = get_readable_message(progress_status_list)
|
msg = get_readable_message(progress_status_list)
|
||||||
LOGGER.info("Editing message")
|
# LOGGER.info("Editing message")
|
||||||
try:
|
try:
|
||||||
editMessage(msg, self.context, self.reply_message)
|
editMessage(msg, self.context, self.reply_message)
|
||||||
except BadRequest:
|
except BadRequest:
|
||||||
raise KillThreadException('Message deleted. Terminate thread')
|
raise KillThreadException('Message deleted. Terminate thread')
|
||||||
|
|
||||||
def onDownloadComplete(self, progress_status_list, index: int):
|
def onDownloadComplete(self, progress_status_list, index: int):
|
||||||
LOGGER.info("Download completed")
|
LOGGER.info("Download completed: {}".format(progress_status_list[index].name()))
|
||||||
gdrive = gdriveTools.GoogleDriveHelper(self)
|
gdrive = gdriveTools.GoogleDriveHelper(self)
|
||||||
gdrive.upload(progress_status_list[index].name())
|
gdrive.upload(progress_status_list[index].name())
|
||||||
|
|
||||||
|
|
@ -40,13 +39,16 @@ class MirrorListener(listeners.MirrorListeners):
|
||||||
|
|
||||||
def onUploadComplete(self, link: str, progress_status_list: list, index: int):
|
def onUploadComplete(self, link: str, progress_status_list: list, index: int):
|
||||||
msg = '<a href="{}">{}</a>'.format(link, progress_status_list[index].name())
|
msg = '<a href="{}">{}</a>'.format(link, progress_status_list[index].name())
|
||||||
|
del download_dict[self.update.update_id]
|
||||||
try:
|
try:
|
||||||
deleteMessage(self.context, self.reply_message)
|
deleteMessage(self.context, self.reply_message)
|
||||||
|
del status_reply_dict[self.update.effective_chat.id]
|
||||||
except BadRequest:
|
except BadRequest:
|
||||||
# This means that the message has been deleted because of a /status command
|
# This means that the message has been deleted because of a /status command
|
||||||
pass
|
pass
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
sendMessage(msg, self.context, self.update)
|
sendMessage(msg, self.context, self.update)
|
||||||
del download_dict[self.update.update_id]
|
|
||||||
fs_utils.clean_download(progress_status_list[index].path())
|
fs_utils.clean_download(progress_status_list[index].path())
|
||||||
|
|
||||||
def onUploadError(self, error: str, progress_status: list, index: int):
|
def onUploadError(self, error: str, progress_status: list, index: int):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue