async def progress(current, total, event, start, type_of_ps, file_name=None): """Generic progress_callback for uploads and downloads.""" now = time.time() diff = now - start out_folder = Config.TMP_DOWNLOAD_DIRECTORY + "youtubedl/" thumb_image_path = Config.TMP_DOWNLOAD_DIRECTORY + "/thumb_image.jpg" if not os.path.isdir(out_folder): os.makedirs(out_folder) if round(diff % 10.00) == 0 or current == total: 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 progress_str = "{0}{1} {2}%\n".format( ''.join(["█" for i in range(math.floor(percentage / 10))]), ''.join(["░" for i in range(10 - math.floor(percentage / 10))]), round(percentage, 2)) tmp = progress_str + \ "{0} of {1}\nETA: {2}".format( humanbytes(current), humanbytes(total), time_formatter(estimated_total_time) ) if file_name: await event.edit("{}\nFile Name: `{}`\n{}".format( type_of_ps, file_name, tmp)) else: await event.edit("{}\n{}".format(type_of_ps, tmp))
async def progress(current, total, event, start, type_of_ps, file_name=None): """Generic progress_callback for uploads and downloads.""" now = time.time() diff = now - start if round(diff % 10.00) == 0 or current == total: 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 progress_str = "{0}{1} {2}%\n".format( ''.join(["â–ˆ" for i in range(math.floor(percentage / 10))]), ''.join(["â–‘" for i in range(10 - math.floor(percentage / 10))]), round(percentage, 2)) tmp = progress_str + \ "{0} of {1}\nETA: {2}".format( humanbytes(current), humanbytes(total), time_formatter(estimated_total_time) ) if file_name: await event.edit("{}\nFile Name: `{}`\n{}".format( type_of_ps, file_name, tmp)) else: await event.edit("{}\n{}".format(type_of_ps, tmp))
async def download_coroutine(session, url, file_name, event, start): CHUNK_SIZE = 2341 downloaded = 0 display_message = "" async with session.get(url) as response: total_length = int(response.headers["Content-Length"]) content_type = response.headers["Content-Type"] if "text" in content_type and total_length < 500: return await response.release() await event.edit("""Initiating Download URL: {} File Name: {} File Size: {}""".format(url, file_name, humanbytes(total_length))) with open(file_name, "wb") as f_handle: while True: chunk = await response.content.read(CHUNK_SIZE) if not chunk: break f_handle.write(chunk) downloaded += CHUNK_SIZE now = time.time() diff = now - start if round(diff % 5.00) == 0 or downloaded == total_length: percentage = downloaded * 100 / total_length speed = downloaded / diff elapsed_time = round(diff) * 1000 time_to_completion = round( (total_length - downloaded) / speed) * 1000 estimated_total_time = elapsed_time + time_to_completion try: current_message = """**Download Status** URL: {} File Name: {} File Size: {} Downloaded: {} ETA: {}""".format( url, file_name, humanbytes(total_length), humanbytes(downloaded), time_formatter(estimated_total_time) ) if current_message != display_message: await event.edit(current_message) display_message = current_message except Exception as e: logger.info(str(e)) pass return await response.release()
async def _(event): if event.fwd_from: return splugin_name = event.pattern_match.group(1) if splugin_name in borg._plugins: s_help_string = borg._plugins[splugin_name].__doc__ else: s_help_string = "" _, check_sgnirts = check_data_base_heal_th() current_run_time = time_formatter((time.time() - BOT_START_TIME)) total, used, free = shutil.disk_usage("/") total = humanbytes(total) used = humanbytes(used) free = humanbytes(free) help_string = """@UniBorg ✅ <b>UpTime</b> <code>{}</code> ✅ <b>Python</b> <code>{}</code> ✅ <b>Telethon</b> <code>{}</code> {} <b>Database</b> <b>Total Disk Space</b>: <code>{}</code> <b>Used Disk Space</b>: <code>{}</code> <b>Free Disk Space</b>: <code>{}</code> UserBot Forked from https://github.com/udf/uniborg""".format( current_run_time, sys.version, __version__, check_sgnirts, total, used, free) borg._iiqsixfourstore[str(event.chat_id)] = {} borg._iiqsixfourstore[str(event.chat_id)][str( event.id)] = help_string + "\n\n" + s_help_string tgbotusername = Config.TG_BOT_USER_NAME_BF_HER # pylint:disable=E0602 if tgbotusername is not None: results = await borg.inline_query( # pylint:disable=E0602 tgbotusername, f"@UniBorg {event.chat_id} {event.id}") await results[0].click(event.chat_id, reply_to=event.reply_to_msg_id, hide_via=True) else: await event.reply(help_string + "\n\n" + s_help_string, parse_mode="html") await event.delete()
async def _(event): if event.fwd_from: return splugin_name = event.pattern_match.group(1) if splugin_name in borg._plugins: s_help_string = borg._plugins[splugin_name].__doc__ else: s_help_string = "" _, check_sgnirts = check_data_base_heal_th() current_run_time = time_formatter((time.time() - BOT_START_TIME)) total, used, free = shutil.disk_usage("/") total = humanbytes(total) used = humanbytes(used) free = humanbytes(free) help_string = "@UniBorg\n" help_string += f"✅ <b>UpTime</b> <code>{current_run_time}</code>\n" help_string += f"✅ <b>Python</b> <code>{sys.version}</code>\n" help_string += f"✅ <b>Telethon</b> <code>{__version__}</code>\n" help_string += f"{check_sgnirts} <b>Database</b>\n" help_string += f"<b>Total Disk Space</b>: <code>{total}</code>\n" help_string += f"<b>Used Disk Space</b>: <code>{used}</code>\n" help_string += f"<b>Free Disk Space</b>: <code>{free}</code>\n\n" help_string += f"<b>Custom Repo</b>: https://github.com/prono69/PepeBot" borg._iiqsixfourstore[str(event.chat_id)] = {} borg._iiqsixfourstore[str(event.chat_id)][str( event.id)] = (help_string + "\n\n" + s_help_string) tgbotusername = Config.TG_BOT_USER_NAME_BF_HER if tgbotusername is not None: results = await borg.inline_query( tgbotusername, f"@UniBorg {event.chat_id} {event.id}") await results[0].click(event.chat_id, reply_to=event.reply_to_msg_id, hide_via=True) else: await event.reply(help_string + "\n\n" + s_help_string, parse_mode="html") await event.delete()