File size: 3,331 Bytes
e566133
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dbda92a
 
e566133
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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)