[英]how to download a large file faster using telethon in telegram?
我正在嘗試做一些從電報頻道下載大量文件的事情,該代碼運行良好,但花費的時間太長,最重要的是我的互聯網連接速度很慢我有這個代碼,我正在下載重達 1gb 的文件,但它一個例子需要很長時間才能使下載更快?
from telethon.sync import TelegramClient
from telethon.tl.functions.messages import GetHistoryRequest
import datetime
import os
def get_entity_data(entity_id, limit):
entity = client.get_entity(entity_id)
fecha = datetime.datetime.today()
today = fecha.day
yesterday = today - 1
posts = client(GetHistoryRequest(
peer=entity,
limit=limit,
offset_date=None,
offset_id=0,
max_id=0,
min_id=0,
add_offset=0,
hash=0))
for post in posts.messages:
post_day = post.date.day
if post_day >= yesterday:
if post.media is not None:
try:
file_name = post.media.document.attributes[0].file_name
except:
file_name = post.media.document.attributes[1].file_name
directorio = os.getcwd()+'/descargas'
if os.path.exists('descargas/'+file_name) == False:
print(file_name, 'Descargando...')
client.download_media(message=post, file=directorio)
print('Archivo descargado.')
我認為您可以通過更少的limit
來處理它並設置offset
並使用多線程請求,也許pool
package 可以幫助您使用這種方法。 例如,limit 參數設置為 10 並且存在您想要獲取的 1000 個 id,因此偏移量應為offset = [0, 10, 20, 30, ..., 1000]
則:
from telethon.sync import TelegramClient
from telethon.tl.functions.messages import GetHistoryRequest
import datetime
import os
import pool
offsets = [0, 10, 20, 30, ..., 1000]
pool.map(get_entity_data, offsets)
def get_entity_data(entity_id={your_id}, limit=10, offset_id=0):
your function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.