diff --git a/bot/helper/bot_utils.py b/bot/helper/bot_utils.py index aaefc25..b6cf8cd 100644 --- a/bot/helper/bot_utils.py +++ b/bot/helper/bot_utils.py @@ -17,8 +17,8 @@ def get_download_index(_list, gid): index += 1 -def get_download_str_list(): - str_list = [] +def get_download_str(): + result = "" for status in list(download_list.values()): - str_list.append(status.progress() + status.speed() + status.status()) - return str_list + result += (status.progress() + status.speed() + status.status()) + return result diff --git a/bot/helper/download_tools.py b/bot/helper/download_tools.py index 3776831..78b669c 100644 --- a/bot/helper/download_tools.py +++ b/bot/helper/download_tools.py @@ -61,17 +61,18 @@ class DownloadHelper: # Start tracking the actual download previous = None - while not self.__get_download().is_complete: + download = self.__get_download() + while not download.is_complete: + status_list = get_download_status_list() if self.__get_download().has_failed: self.__listener.onDownloadError(self.__get_download().error_message) break # TODO: Find a better way - progress_str_list = get_download_str_list() + progress_str_list = get_download_str() if progress_str_list != previous: - self.__listener.onDownloadProgress(status_list, - get_download_index(status_list, self.__get_download().gid)) + self.__listener.onDownloadProgress(status_list, index) previous = progress_str_list - + download = self.__get_download() sleep(DOWNLOAD_STATUS_UPDATE_INTERVAL) - self.__listener.onDownloadComplete(status_list, get_download_index(status_list, self.__get_download().gid)) + self.__listener.onDownloadComplete(status_list, index) diff --git a/bot/mirror.py b/bot/mirror.py index c0b49cd..ca5904b 100644 --- a/bot/mirror.py +++ b/bot/mirror.py @@ -1,12 +1,14 @@ from telegram.ext import CommandHandler, run_async +from telegram.error import BadRequest from bot.helper import download_tools, gdriveTools, listeners -from bot import config, LOGGER, dispatcher +from bot import LOGGER, dispatcher LOGGER.info('mirror.py') def get_readable_message(progress_list: list): msg = "" + LOGGER.info(progress_list) for status in progress_list: msg += "Name: {}\n" \ "status: {}\n" \ @@ -15,7 +17,7 @@ def get_readable_message(progress_list: list): "ETA: {}\n\n".format(status.name(), status.status(), status.progress(), status.size(), status.speed(), status.eta()) - return msg + return msg class MirrorListener(listeners.MirrorListeners): @@ -26,18 +28,23 @@ class MirrorListener(listeners.MirrorListeners): LOGGER.info("Adding link: " + link) def onDownloadProgress(self, progress_status_list: list, index: int): - LOGGER.info("Editing message") msg = get_readable_message(progress_status_list) - self.context.bot.edit_message_text(text=msg, message_id=self.reply_message.message_id, - chat_id=self.reply_message.chat.id, - parse_mode='HTMl') + if self.reply_message.text != msg: + LOGGER.info("Editing message") + self.context.bot.edit_message_text(text=msg, message_id=self.reply_message.message_id, + chat_id=self.reply_message.chat.id, + parse_mode='HTMl') def onDownloadComplete(self, progress_status_list, index: int): msg = get_readable_message(progress_status_list) LOGGER.info("Download completed") - self.context.bot.edit_message_text(text=msg, message_id=self.reply_message.message_id, - chat_id=self.reply_message.chat.id, - parse_mode='HTMl') + try: + LOGGER.info("Editing message") + self.context.bot.edit_message_text(text=msg, message_id=self.reply_message.message_id, + chat_id=self.reply_message.chat.id, + parse_mode='HTMl') + except BadRequest: + pass gdrive = gdriveTools.GoogleDriveHelper(self) gdrive.upload(progress_status_list[index].name()) @@ -48,11 +55,13 @@ class MirrorListener(listeners.MirrorListeners): parse_mode='HTMl') def onUploadStarted(self, progress_status_list: list, index: int): - msg = get_readable_message(progress_status_list) - if not msg != self.update.message.text: + try: + msg = get_readable_message(progress_status_list) self.context.bot.edit_message_text(text=msg, message_id=self.reply_message.message_id, chat_id=self.reply_message.chat.id, parse_mode='HTMl') + except BadRequest: + pass def onUploadComplete(self, link: str, progress_status_list: list, index: int): msg = '{}'.format(link, progress_status_list[index].name())