# (c) Asm Safone # A Part of MegaDL-Bot import os import time import math from config import Config from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton async def progress_for_pyrogram( current, total, ud_type, message, start ): now = time.time() diff = now - start if round(diff % 10.00) == 0 or current == total: # if round(current / total * 100, 0) % 5 == 0: percentage = current * 100 / total speed = current / diff elapsed_time = round(diff) * 1000 time_to_completion = round((total - current) / speed) * 1000 estimated_total_time = elapsed_time + time_to_completion elapsed_time = TimeFormatter(milliseconds=elapsed_time) estimated_total_time = TimeFormatter(milliseconds=estimated_total_time) progress = "`[{0}{1}]` \n".format( ''.join(["●" for i in range(math.floor(percentage / 5))]), ''.join(["○" for i in range(20 - math.floor(percentage / 5))]) ) ok = "`{0}%` \n".format( round(percentage, 2) ) tmp = ok + progress + "\n➩ **Done:** `{0}` \n➩ **Total:** `{1}` \n➩ **Speed:** `{2}/s` \n➩ **Time Left:** `{3}`".format( humanbytes(current), humanbytes(total), humanbytes(speed), estimated_total_time if estimated_total_time != '' else "0 s" ) try: await message.edit( text="**{}** {} \n\n**@imseldtith | @url_upload_bots**".format( ud_type, tmp ), reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton("Cancel Upload", callback_data="cancel_up") ] ] ) ) except: pass def humanbytes(size): # https://stackoverflow.com/a/49361727/4723940 # 2**10 = 1024 if not size: return "" power = 2**10 n = 0 Dic_powerN = {0: ' ', 1: 'Ki', 2: 'Mi', 3: 'Gi', 4: 'Ti'} while size > power: size /= power n += 1 return str(round(size, 2)) + " " + Dic_powerN[n] + 'B' def TimeFormatter(milliseconds: int) -> str: seconds, milliseconds = divmod(int(milliseconds), 1000) minutes, seconds = divmod(seconds, 60) hours, minutes = divmod(minutes, 60) days, hours = divmod(hours, 24) tmp = ((str(days) + "d, ") if days else "") + \ ((str(hours) + "h, ") if hours else "") + \ ((str(minutes) + "m, ") if minutes else "") + \ ((str(seconds) + "s, ") if seconds else "") + \ ((str(milliseconds) + "ms, ") if milliseconds else "") return tmp[:-2]