import random import urllib3 import logging import asyncio import traceback import mimetypes import time, math from datetime import datetime from typing import Dict, Union from typing import Union, BinaryIO, List, Optional, Callable from pyrogram import raw from pyrogram import types from pyrogram import filters, Client from pyrogram import utils as pgutils from pyrogram import StopTransmission, enums from pyrogram import Client, utils, raw from pyrogram.file_id import FileType from pyrogram.session import Session, Auth from pyrogram.errors import FilePartMissing,AuthBytesInvalid,FloodWait from pyrogram.file_id import FileId, FileType, ThumbnailSource from pyrogram.enums import ParseMode, ChatType from pyrogram.enums.parse_mode import ParseMode from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton #--------------------------Local Imports-------------# from FileStream.bot import FileStream from FileStream.bot import MULTI_CLIENTS, WORK_LOADS from FileStream.Database import Database from FileStream.config import Telegram, Server from FileStream.Tools.tool import TimeFormatter from FileStream.utils.FileProcessors.bot_utils import is_user_banned, is_user_exist, is_user_joined, gen_link, is_channel_banned, is_channel_exist, is_user_authorized, upload_type_func from FileStream.utils.FileProcessors.custom_dl import ByteStreamer from FileStream.utils.FileProcessors.custom_ul import TeleUploader from FileStream.utils.FileProcessors.custom_mix import TGFileController from FileStream.utils.FileProcessors.translation import LANG, BUTTON from FileStream.utils.FileProcessors.human_readable import humanbytes from FileStream.utils.FileProcessors.file_properties import get_file_ids,get_file_info async def progress(current, total, progress_args): progress_text = LANG.BASIC_PRIV_FILE.format( progress_args[1], humanbytes(progress_args[2])) #print(f"{current * 100 / total:.1f}%") now = time.time() diff = now - progress_args[3] 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 elapsed_time = TimeFormatter(milliseconds=elapsed_time) estimated_total_time = TimeFormatter( milliseconds=estimated_total_time) progress = "{0}{1}".format( ''.join(["●" for i in range(math.floor(percentage / 5))]), ''.join(["○" for i in range(20 - math.floor(percentage / 5)) ]) # This line is modified ) tmp = progress_text + '\n' + progress + LANG.PROGRESS_BAR.format( percentage=round(percentage, 2), current=humanbytes(current), total=humanbytes(total), speed=humanbytes(speed), est_time=estimated_total_time if estimated_total_time != '' else "0 s") try: await progress_args[0].edit_text( text=tmp, parse_mode=ParseMode.HTML, disable_web_page_preview=True, ) except FloodWait as w: print(f"Sleeping for {str(w.wait_time)}s") await asyncio.sleep(w.wait_time) except Exception as e: print(e)