Compare commits
2 Commits
release-1.
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 247128cbe9 | |||
| 09463f491d |
@ -221,18 +221,28 @@ async def download_part(client: TelegramClient, dest: typing.BinaryIO, dInfo: Do
|
||||
totalBytesDownloaded = 0
|
||||
lastRealTimeMeasurement = time.time()
|
||||
|
||||
buffer = None
|
||||
currentLoop = asyncio.get_running_loop()
|
||||
currentExecutor = ThreadPoolExecutor(max_workers=1)
|
||||
|
||||
def writeBuffer(buf):
|
||||
if buf:
|
||||
dest.write(buf)
|
||||
|
||||
while totalBytesDownloaded < realSize:
|
||||
offset = totalBytesDownloaded
|
||||
limit = chunkSize
|
||||
|
||||
try:
|
||||
downloadResult: File = await client(GetFileRequest(
|
||||
taskReceive = client(GetFileRequest(
|
||||
inputFileLocation,
|
||||
offset,
|
||||
limit,
|
||||
precise=False,
|
||||
cdn_supported=False
|
||||
))
|
||||
taskWriteBuffer = currentLoop.run_in_executor(currentExecutor, writeBuffer, buffer)
|
||||
downloadResult, writeResult = await asyncio.gather(taskReceive, taskWriteBuffer, loop=currentLoop, return_exceptions=False)
|
||||
except BadRequestError as e:
|
||||
if 'expire' in str(e.message).lower():
|
||||
click.echo('Reloading message...', err=True)
|
||||
@ -249,12 +259,12 @@ async def download_part(client: TelegramClient, dest: typing.BinaryIO, dInfo: Do
|
||||
extraBytes = totalBytesDownloaded - realSize
|
||||
buffer = buffer[:-extraBytes]
|
||||
|
||||
dest.write(buffer)
|
||||
if totalBytesDownloaded % (pow(2, 20) * 10) == 0:
|
||||
click.echo(
|
||||
f"{dInfo.part_info['part']}p {format_file_size(totalBytesDownloaded)}b {(time.time() - lastRealTimeMeasurement):.3f}s\t",
|
||||
nl=False, err=True
|
||||
)
|
||||
writeBuffer(buffer)
|
||||
|
||||
|
||||
async def download_file(client: TelegramClient, dest: typing.BinaryIO, fileInfo: dict, dialog: str):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user