Skip to content

Commit 6b7c414

Browse files
committed
Fix status
Signed-off-by: anasty17 <[email protected]>
1 parent 495adf6 commit 6b7c414

12 files changed

+98
-108
lines changed

bot/helper/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

bot/helper/ext_utils/bot_utils.py

+12-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@
1010
from functools import partial, wraps
1111

1212
from bot import user_data, config_dict, bot_loop
13-
from bot.helper.ext_utils.help_messages import YT_HELP_DICT, MIRROR_HELP_DICT
13+
from bot.helper.ext_utils.help_messages import (
14+
YT_HELP_DICT,
15+
MIRROR_HELP_DICT,
16+
CLONE_HELP_DICT,
17+
)
1418
from bot.helper.ext_utils.telegraph_helper import telegraph
1519
from bot.helper.telegram_helper.button_build import ButtonMaker
1620

@@ -37,14 +41,19 @@ def cancel(self):
3741
def create_help_buttons():
3842
buttons = ButtonMaker()
3943
for name in list(MIRROR_HELP_DICT.keys())[1:]:
40-
buttons.ibutton(name, f"help m {name}")
44+
buttons.ibutton(name, f"help mirror {name}")
4145
buttons.ibutton("Close", "help close")
4246
COMMAND_USAGE["mirror"] = [MIRROR_HELP_DICT["main"], buttons.build_menu(3)]
4347
buttons.reset()
4448
for name in list(YT_HELP_DICT.keys())[1:]:
4549
buttons.ibutton(name, f"help yt {name}")
4650
buttons.ibutton("Close", "help close")
4751
COMMAND_USAGE["yt"] = [YT_HELP_DICT["main"], buttons.build_menu(3)]
52+
buttons.reset()
53+
for name in list(CLONE_HELP_DICT.keys())[1:]:
54+
buttons.ibutton(name, f"help clone {name}")
55+
buttons.ibutton("Close", "help close")
56+
COMMAND_USAGE["clone"] = [CLONE_HELP_DICT["main"], buttons.build_menu(3)]
4857

4958

5059
def bt_selection_buttons(id_):
@@ -163,7 +172,7 @@ def update_user_ldata(id_, key, value):
163172
user_data[id_][key] = value
164173

165174

166-
async def retry_function(func, *args, retry=10, **kwargs):
175+
async def retry_function(func, *args, retry=30, **kwargs):
167176
try:
168177
return await func(*args, **kwargs)
169178
except:

bot/helper/ext_utils/help_messages.py

+25-31
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
Check here all supported <a href='https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md'>SITES</a>
1919
Check all yt-dlp api options from this <a href='https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/YoutubeDL.py#L184'>FILE</a> or use this <a href='https://t.me/mltb_official_channel/177'>script</a> to convert cli arguments to api options."""
2020

21+
clone = """Send Gdrive|Gdot|Filepress|Filebee|Appdrive|Gdflix link or rclone path along with command or by replying to the link/rc_path by command.
22+
Use -sync to use sync method in rclone. Example: /cmd rcl/rclone_path -up rcl/rclone_path/rc -sync"""
23+
2124
new_name = """<b>New Name</b>: -n
2225
2326
/cmd link -n new name
@@ -154,7 +157,7 @@
154157
You can add tuple and dict also. Use double quotes inside dict."""
155158

156159
convert_media = """<b>Convert Media</b>: -ca -cv
157-
/cmd link -ca mp3 -cv mp4 (convert all audios to mp3 and videos to mp4)
160+
/cmd link -ca mp3 -cv mp4 (convert all audios to mp3 and all videos to mp4)
158161
/cmd link -ca mp3 (convert all audios to mp3)
159162
/cmd link -cv mp4 (convert all videos to mp4)
160163
/cmd link -ca mp3 + flac ogg (convert only flac and ogg audios to mp3)
@@ -165,6 +168,19 @@
165168
/cmd link -fd (force download only)
166169
/cmd link -fu (force upload directly after download finish)"""
167170

171+
gdrive = """<b>Gdrive</b>: link
172+
If DEFAULT_UPLOAD is `rc` then you can pass up: `gd` to upload using gdrive tools to GDRIVE_ID.
173+
/cmd gdriveLink or gdl or gdriveId -up gdl or gdriveId or gd
174+
/cmd tp:gdriveLink or tp:gdriveId -up tp:gdriveId or gdl or gd (to use token.pickle if service account enabled)
175+
/cmd sa:gdriveLink or sa:gdriveId -p sa:gdriveId or gdl or gd (to use service account if service account disabled)
176+
/cmd mtp:gdriveLink or mtp:gdriveId -up mtp:gdriveId or gdl or gd(if you have added upload gdriveId from usetting) (to use user token.pickle that uploaded by usetting)"""
177+
178+
rclone_cl = """<b>Rclone</b>: path
179+
If DEFAULT_UPLOAD is `gd` then you can pass up: `rc` to upload to RCLONE_PATH.
180+
/cmd rcl/rclone_path -up rcl/rclone_path/rc -rcf flagkey:flagvalue|flagkey|flagkey:flagvalue
181+
/cmd rcl or rclonePath -up rclonePath or rc or rcl
182+
/cmd mrcc:rclonePath -up rcl or rc(if you have add rclone path from usetting) (to use user config)"""
183+
168184
YT_HELP_DICT = {
169185
"main": yt,
170186
"New-Name": f"{new_name}\nNote: Don't add file extension",
@@ -209,6 +225,14 @@
209225
"User-Download": user_download,
210226
}
211227

228+
CLONE_HELP_DICT = {
229+
"main": clone,
230+
"Multi-Link": multi_link,
231+
"Bulk": bulk,
232+
"Gdrive": gdrive,
233+
"Rclone": rclone_cl,
234+
}
235+
212236
RSS_HELP_MESSAGE = """
213237
Use this format to add feed url:
214238
Title1 link (required)
@@ -232,36 +256,6 @@
232256
Timeout: 60 sec.
233257
"""
234258

235-
CLONE_HELP_MESSAGE = """
236-
Send Gdrive|Gdot|Filepress|Filebee|Appdrive|Gdflix link or rclone path along with command or by replying to the link/rc_path by command.
237-
238-
<b>Multi links only by replying to first gdlink or rclone_path:</b> -i
239-
/cmd -i 10(number of links/paths)
240-
241-
<b>Bulk Clone</b>: -b
242-
Bulk can be used by text message and by replying to text file contains links seperated by new line.
243-
You can use it only by reply to message(text/file).
244-
Example:
245-
link1 -up remote1:path1 -rcf |key:value|key:value
246-
link2 -up remote2:path2
247-
link3 -up remote2:path2
248-
Reply to this example by this cmd /cmd -b(bulk)
249-
You can set start and end of the links from the bulk like seed, with -b start:end or only end by -b :end or only start by -b start. The default start is from zero(first link) to inf.
250-
251-
<b>Clone Destination</b>: -up
252-
If DEFAULT_UPLOAD is `rc` then you can pass up: `gd` to upload using gdrive tools to GDRIVE_ID.
253-
If DEFAULT_UPLOAD is `gd` then you can pass up: `rc` to upload to RCLONE_PATH.
254-
If you want to add path or gdrive manually from your config/token (uploaded from usetting) add mrcc: for rclone and mtp: before the path/gdrive_id without space.
255-
Incase you want to specify whether using token or service accounts you can add tp:link or tp:gdrive_id or sa:link or sa:gdrive_id. This for links and upload destination.
256-
257-
<b>Gdrive:</b>
258-
/cmd gdrivelink/gdl/gdrive_id -up gdl/gdrive_id/gd
259-
260-
<b>Rclone:</b>
261-
/cmd rcl/rclone_path -up rcl/rclone_path/rc -rcf flagkey:flagvalue|flagkey|flagkey:flagvalue
262-
Use -sync to use sync method in rclone. Example: /cmd rcl/rclone_path -up rcl/rclone_path/rc -sync
263-
"""
264-
265259
PASSWORD_ERROR_MESSAGE = """
266260
<b>This link requires a password!</b>
267261
- Insert <b>::</b> after the link and write the password after the sign.

bot/helper/ext_utils/status_utils.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from html import escape
22
from psutil import virtual_memory, cpu_percent, disk_usage
33
from time import time
4-
from asyncio import gather
4+
from asyncio import gather, iscoroutinefunction
55

66
from bot import DOWNLOAD_DIR, task_dict, task_dict_lock, botStartTime, config_dict
77
from bot.helper.ext_utils.bot_utils import sync_to_async
@@ -174,7 +174,12 @@ async def get_readable_message(sid, is_user, page_no=1, status="All", page_step=
174174
MirrorStatus.STATUS_CONVERTING,
175175
MirrorStatus.STATUS_QUEUEUP,
176176
]:
177-
msg += f"\n{get_progress_bar_string(task.progress())} {task.progress()}"
177+
progress = (
178+
await task.progress()
179+
if iscoroutinefunction(task.progress)
180+
else task.progress()
181+
)
182+
msg += f"\n{get_progress_bar_string(progress)} {progress}"
178183
msg += f"\n<b>Processed:</b> {task.processed_bytes()} of {task.size()}"
179184
msg += f"\n<b>Speed:</b> {task.speed()} | <b>ETA:</b> {task.eta()}"
180185
if hasattr(task, "seeders_num"):

bot/helper/mirror_utils/status_utils/extract_status.py

+11-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from time import time
22

33
from bot import LOGGER, subprocess_lock
4-
from bot.helper.ext_utils.bot_utils import async_to_sync
54
from bot.helper.ext_utils.files_utils import get_path_size
65
from bot.helper.ext_utils.status_utils import (
76
get_readable_file_size,
@@ -16,21 +15,23 @@ def __init__(self, listener, gid):
1615
self._size = self.listener.size
1716
self._gid = gid
1817
self._start_time = time()
18+
self._proccessed_bytes = 0
1919

2020
def gid(self):
2121
return self._gid
2222

2323
def speed_raw(self):
24-
return self.processed_raw() / (time() - self._start_time)
24+
return self._proccessed_bytes / (time() - self._start_time)
2525

26-
def progress_raw(self):
26+
async def progress_raw(self):
27+
await self.processed_raw()
2728
try:
28-
return self.processed_raw() / self._size * 100
29+
return self._proccessed_bytes / self._size * 100
2930
except:
3031
return 0
3132

32-
def progress(self):
33-
return f"{round(self.progress_raw(), 2)}%"
33+
async def progress(self):
34+
return f"{round(await self.progress_raw(), 2)}%"
3435

3536
def speed(self):
3637
return f"{get_readable_file_size(self.speed_raw())}/s"
@@ -43,7 +44,7 @@ def size(self):
4344

4445
def eta(self):
4546
try:
46-
seconds = (self._size - self.processed_raw()) / self.speed_raw()
47+
seconds = (self._size - self._proccessed_bytes) / self.speed_raw()
4748
return get_readable_time(seconds)
4849
except:
4950
return "-"
@@ -52,13 +53,13 @@ async def status(self):
5253
return MirrorStatus.STATUS_EXTRACTING
5354

5455
def processed_bytes(self):
55-
return get_readable_file_size(self.processed_raw())
56+
return get_readable_file_size(self._proccessed_bytes)
5657

5758
def processed_raw(self):
5859
if self.listener.newDir:
59-
return async_to_sync(get_path_size, self.listener.newDir)
60+
self._proccessed_bytes = get_path_size(self.listener.newDir)
6061
else:
61-
return async_to_sync(get_path_size, self.listener.dir) - self._size
62+
self._proccessed_bytes = get_path_size(self.listener.dir) - self._size
6263

6364
def task(self):
6465
return self

bot/helper/mirror_utils/status_utils/media_convert_status.py

-12
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,15 @@ def __init__(self, listener, gid):
1111
def gid(self):
1212
return self._gid
1313

14-
def progress(self):
15-
return "0"
16-
17-
def speed(self):
18-
return "0"
19-
2014
def name(self):
2115
return self.listener.name
2216

2317
def size(self):
2418
return get_readable_file_size(self._size)
2519

26-
def eta(self):
27-
return "0s"
28-
2920
async def status(self):
3021
return MirrorStatus.STATUS_CONVERTING
3122

32-
def processed_bytes(self):
33-
return 0
34-
3523
def task(self):
3624
return self
3725

bot/helper/mirror_utils/status_utils/sample_video_status.py

-12
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,15 @@ def __init__(self, listener, gid):
1111
def gid(self):
1212
return self._gid
1313

14-
def progress(self):
15-
return "0"
16-
17-
def speed(self):
18-
return "0"
19-
2014
def name(self):
2115
return self.listener.name
2216

2317
def size(self):
2418
return get_readable_file_size(self._size)
2519

26-
def eta(self):
27-
return "0s"
28-
2920
async def status(self):
3021
return MirrorStatus.STATUS_SAMVID
3122

32-
def processed_bytes(self):
33-
return 0
34-
3523
def task(self):
3624
return self
3725

bot/helper/mirror_utils/status_utils/split_status.py

-12
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,15 @@ def __init__(self, listener, gid):
1111
def gid(self):
1212
return self._gid
1313

14-
def progress(self):
15-
return "0"
16-
17-
def speed(self):
18-
return "0"
19-
2014
def name(self):
2115
return self.listener.name
2216

2317
def size(self):
2418
return get_readable_file_size(self._size)
2519

26-
def eta(self):
27-
return "0s"
28-
2920
async def status(self):
3021
return MirrorStatus.STATUS_SPLITTING
3122

32-
def processed_bytes(self):
33-
return 0
34-
3523
def task(self):
3624
return self
3725

bot/helper/mirror_utils/status_utils/yt_dlp_download_status.py

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from bot.helper.ext_utils.bot_utils import async_to_sync
21
from bot.helper.ext_utils.files_utils import get_path_size
32
from bot.helper.ext_utils.status_utils import (
43
MirrorStatus,
@@ -12,18 +11,19 @@ def __init__(self, listener, obj, gid):
1211
self._obj = obj
1312
self._gid = gid
1413
self.listener = listener
14+
self._proccessed_bytes = 0
1515

1616
def gid(self):
1717
return self._gid
1818

1919
def processed_bytes(self):
20-
return get_readable_file_size(self.processed_raw())
20+
return get_readable_file_size(self._proccessed_bytes)
2121

22-
def processed_raw(self):
22+
async def processed_raw(self):
2323
if self._obj.downloaded_bytes != 0:
24-
return self._obj.downloaded_bytes
24+
self._proccessed_bytes = self._obj.downloaded_bytes
2525
else:
26-
return async_to_sync(get_path_size, self.listener.dir)
26+
self._proccessed_bytes = await get_path_size(self.listener.dir)
2727

2828
def size(self):
2929
return get_readable_file_size(self._obj.size)
@@ -34,7 +34,8 @@ async def status(self):
3434
def name(self):
3535
return self.listener.name
3636

37-
def progress(self):
37+
async def progress(self):
38+
await self.processed_raw()
3839
return f"{round(self._obj.progress, 2)}%"
3940

4041
def speed(self):
@@ -44,7 +45,9 @@ def eta(self):
4445
if self._obj.eta != "-":
4546
return get_readable_time(self._obj.eta)
4647
try:
47-
seconds = (self._obj.size - self.processed_raw()) / self._obj.download_speed
48+
seconds = (
49+
self._obj.size - self._proccessed_bytes
50+
) / self._obj.download_speed
4851
return get_readable_time(seconds)
4952
except:
5053
return "-"

0 commit comments

Comments
 (0)