-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathurldl.py
More file actions
72 lines (63 loc) · 2.48 KB
/
urldl.py
File metadata and controls
72 lines (63 loc) · 2.48 KB
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
from .. import loader, utils
import io
from telethon.tl.types import MessageEntityUrl, MessageEntityTextUrl
import os
import aiohttp
class aMod(loader.Module):
strings = {"name": "UrlDl"}
async def urldlcmd(self, event):
await downloading(event)
async def urldlbigcmd(self, event):
await downloading(event, True)
async def downloading(event, big=False):
args = utils.get_args_raw(event)
reply = await event.get_reply_message()
if not args:
if not reply:
await event.edit("<b>Ссылки нету!</b>")
return
message = reply
else:
message = event
if not message.entities:
await event.edit("<b>Ссылки нету!</b>")
return
urls = []
for ent in message.entities:
if type(ent) in [MessageEntityUrl, MessageEntityTextUrl]:
url_ = True
if type(ent) == MessageEntityUrl:
offset = ent.offset
length = ent.length
url = message.raw_text[offset:offset+length]
else:
url = ent.url
if not url.startswith("http"):
url = "http://"+url
urls.append(url)
if not urls:
await event.edit("<b>Ссылки нету!</b>")
return
async with aiohttp.ClientSession() as session:
for url in urls:
try:
await event.edit("<b>Загрузка...</b>\n"+url)
fname = url.split("/")[-1]
async with session.get(url) as response:
if big:
f = open(fname, "wb")
async for chunk in response.content.iter_chunked(1024):
f.write(chunk)
f.close()
await event.edit("<b>Отправка...</b>\n"+url)
await event.client.send_file(event.to_id, open(fname, "rb"), reply_to=reply)
os.remove(fname)
else:
file = io.BytesIO(await response.read())
file.name = fname
file.seek(0)
await event.edit("<b>Отправка...</b>\n"+url)
await event.client.send_file(event.to_id, file, reply_to=reply)
except Exception as e:
await event.reply("<b>Ошибка при загрузке!</b>\n"+url+"\n<code>"+str(e)+"</code>")
await event.delete()