-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
utils.py
107 lines (80 loc) · 2.94 KB
/
utils.py
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
from sys import stdout, exit
from pyrogram.types import Message
from pyrogram import enums
from time import time
from os import system, name as osname
def wait():
try:
input("Press enter to exit...")
except KeyboardInterrupt:
pass
finally:
exit(0)
SPEED_DATA = {}
def progress(current, total, uuid):
current_time = time()
length = 50
if uuid in SPEED_DATA:
elapsed_time = current_time - SPEED_DATA[uuid]["last_time"]
speed = (current - SPEED_DATA[uuid]["progress"]) / elapsed_time
else:
speed = 0
SPEED_DATA[uuid] = {"last_time": current_time, "progress": current}
progress_percent = current * 100 / total
completed = int(length * current / total)
bar = f"[{'#' * completed}{' ' * (length - completed)}] {progress_percent:.1f} % - {convert_bytes(speed)}/s - {convert_bytes(current)}"
stdout.write(f"\r{bar}")
stdout.flush()
available_media = ("audio", "document", "photo", "sticker",
"animation", "video", "voice", "video_note")
def get_media_type(message: Message) -> enums.MessageMediaType:
if isinstance(message, Message):
for kind in available_media:
media = getattr(message, kind, None)
if media is not None:
return media
else:
return None
def convert_bytes(size, precision=2):
suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']
suffix_index = 0
while size >= 1024 and suffix_index < len(suffixes) - 1:
suffix_index += 1
size /= 1024.0
return f"{size:.{precision}f} {suffixes[suffix_index]}"
def get_file_name(media: enums.MessageMediaType) -> str:
try:
return media.file_name
except:
return media.file_unique_id
def print_dowload_msg(media: enums.MessageMediaType, msgid: int, fromID: int, total: int):
print(
f"{get_file_name(media)} -",
f"{media.__class__.__name__} -",
f"{convert_bytes(media.file_size)}",
f"({(msgid - fromID + 1)}/{total})",
)
def print_examples():
print("""
Examples:
https://t.me/xxxx/1423
https://t.me/c/xxxx/10
https://t.me/xxxx/1001-1010
https://t.me/c/xxxx/101 - 120"""
)
configfile = "tgd.txt"
TGD = """
▄██████▄ ▄██████▄ ████████▄
██▀▀███▀▀██ ███ ███ ███ ▀███
███ ███ █▀ ███ ███
███ ▄███ ███ ███
███ ▀▀███ ████▄ ███ ███
███ ███ ███ ███ ███
███ ███ ███ ███ ▄███
▄████ ████████▀ ████████▀
"""
VERSION = "1.2"
system("cls" if osname == "nt" else "clear")
print(TGD)
print(" TeleGram Downloader")
print(f" Version {VERSION}\n")