LonamiWebs / Telethon

Pure Python 3 MTProto API Telegram client library, for bots too!

Home Page:https://docs.telethon.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Download speed slow even after installing cryptg

mriamnobody opened this issue · comments

Code that causes the issue

import os
import logging
from tqdm import tqdm
from telethon import TelegramClient

# Configure logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)

# Setup with your API ID, API hash, and session name
api_id = ''  # Your API ID (integer)
api_hash = ''  # Your API hash (string)
channel_link = ''  # Replace with your actual channel join link

client = TelegramClient('session_name', api_id, api_hash)

# Hardcode the download path
download_path = r'F:\Projects\Python Scripts\'
os.makedirs(download_path, exist_ok=True)

async def list_and_download_files():
    await client.start()
    print("Client Created - Attempting to access the channel via join link")

    try:
        channel = await client.get_entity(channel_link)
        print(f"Accessed channel: {channel.title}\n")

        # List all files
        files = []
        total_size_bytes = 0  # Initialize total size counter
        async for message in client.iter_messages(channel, reverse=True):
            if message.media:
                file_name = None
                file_size = 0  # Initialize file size

                # Handle different types of media
                if hasattr(message.media, 'document'):
                    for attribute in message.media.document.attributes:
                        if hasattr(attribute, 'file_name'):
                            file_name = attribute.file_name
                            break
                    if not file_name:
                        file_name = f"file_{message.id}"  # Default naming if no file name is present
                    file_size = message.media.document.size  # Get the size of the document
                elif hasattr(message.media, 'photo'):
                    file_name = f"photo_{message.id}.jpg"  # Default for photos
                    file_size = message.media.photo.sizes[-1].size  # Estimate the size of the photo

                # Append file details
                if file_name:
                    files.append((message.id, file_name, message.date))
                    total_size_bytes += file_size  # Add file size to the total size

        # Print file list
        for file in files:
            print(f"ID: {file[0]}, Name: {file[1]}, Date: {file[2]}")

        # Print the total number of files found
        print(f"\nTotal number of files found: {len(files)}")
        
        # Print total size in MB and GB
        total_size_mb = total_size_bytes / (1024 * 1024)
        total_size_gb = total_size_mb / 1024
        print(f"Total size: {total_size_mb:.2f} MB ({total_size_gb:.2f} GB)")

        # Input for file IDs to download
        file_ids_input = input("\nEnter 'all' to download all files or provide the IDs of the files to download (comma-separated): ")
        if file_ids_input.lower() == 'all':
            file_ids = [file[0] for file in files]  # List all file IDs to download all files
        else:
            file_ids = [int(fid.strip()) for fid in file_ids_input.split(',')]  # Specific file IDs as input

        # Download the selected files
        for file_id in file_ids:
            selected_file = next((m for m in files if m[0] == file_id), None)
            if selected_file:
                local_file_path = os.path.join(download_path, selected_file[1])

                # Check if file exists and compare sizes
                if os.path.exists(local_file_path):
                    local_file_size = os.path.getsize(local_file_path)
                    remote_file_size = await client.get_messages(channel, ids=selected_file[0])
                    remote_file_size = remote_file_size.file.size

                    # Skip download if local and remote file sizes are the same
                    if local_file_size == remote_file_size:
                        print(f"Skipping download, local file {selected_file[1]} is the same size as remote file.")
                        continue
                    else:
                        print(f"Local file {selected_file[1]} differs in size from remote file, replacing local file.")

                message = await client.get_messages(channel, ids=selected_file[0])
                progress = tqdm(total=100, desc=f"Downloading {selected_file[1]}")
                path = await message.download_media(file=local_file_path, progress_callback=lambda d, t: progress.update((d / t) * 100 - progress.n))
                progress.close()
                print(f'Downloaded {selected_file[1]} to {path}')

                # Ensure there is a non-zero time difference to avoid division by zero
                time_difference = progress.last_print_t - progress.start_t
                if time_difference > 0:
                    size_in_bytes = os.path.getsize(path)
                    speed = size_in_bytes / time_difference
                    print(f'Completed {selected_file[1]}. Speed: {speed / 1024:.2f} KB/s')
                else:
                    print(f'Completed {selected_file[1]}. Download was too fast to measure speed.')

    except Exception as e:
        print(f"Error accessing channel or downloading files: {e}")

with client:
    client.loop.run_until_complete(list_and_download_files())

Expected behavior

After installing cryptg the download speed should improve.

Actual behavior

Even after installing cryptg the download speed remains slow.

Traceback

DEBUG:asyncio:Using proactor: IocpProactor
INFO:telethon.network.mtprotosender:Connecting to SOMEIP:443/TcpFull...
DEBUG:telethon.network.mtprotosender:Connection attempt 1...
DEBUG:telethon.network.mtprotosender:Connection success!
DEBUG:telethon.network.mtprotosender:Starting send loop
DEBUG:telethon.network.mtprotosender:Starting receive loop
INFO:telethon.network.mtprotosender:Connection to SOMEIP:443/TcpFull complete!
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205626153215548 to InvokeWithLayerRequest (1f6035cfbe0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 76 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling bad salt for message 7372205626153215548
DEBUG:telethon.network.mtprotosender:1 message(s) will be resent
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205626461910388 to InvokeWithLayerRequest (1f6035cfbe0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 76 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205626465969228 to MsgsAck (1f6035cfc70)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 36 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling container
DEBUG:telethon.network.mtprotosender:Handling new session created
DEBUG:telethon.network.mtprotosender:Handling acknowledge for [7372205626461910388]
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205626461910388
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205626793011808 to GetUsersRequest (1f6035cffa0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 32 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205626797058248 to MsgsAck (1f6035cfc10)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 60 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205626793011808
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205627240126752 to GetStateRequest (1f6035cffa0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 20 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205627240126756 to MsgsAck (1f6035cfdf0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 36 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205627240126752
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205627659516476 to GetUsersRequest (1f6035cfb80)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 32 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205627661622188 to MsgsAck (1f60362c790)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 36 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205627659516476
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205627987600468 to GetUsersRequest (1f60362c670)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 32 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205627987600472 to MsgsAck (1f6035cf010)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 36 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205627987600468
DEBUG:telethon.network.mtprotosender:Receiving items from the network...

DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205628322672032 to CheckChatInviteRequest (1f60362c400)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 40 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205628326659344 to MsgsAck (1f60362c7f0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 36 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205628322672032
DEBUG:telethon.network.mtprotosender:Receiving items from the network...

DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205628828348300 to GetHistoryRequest (1f60362c580)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 72 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205628828348304 to MsgsAck (1f60362c940)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 36 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205628828348300
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205633157949232 to GetHistoryRequest (1f60362c580)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 72 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205633157949236 to MsgsAck (1f60366ffa0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 36 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling container
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling acknowledge for [7372205633157949232]
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205633157949232
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205637467725184 to GetHistoryRequest (1f60362c580)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 72 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205637467725188 to MsgsAck (1f6036400d0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 76 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling container
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling acknowledge for [7372205637467725184]
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205637467725184
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205641764781980 to GetHistoryRequest (1f60362c580)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 72 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205641768971472 to MsgsAck (1f60362cf40)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 60 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling container
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling acknowledge for [7372205641764781980]
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205641764781980
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205646065681132 to GetHistoryRequest (1f60362c580)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 72 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205646067860276 to MsgsAck (1f60368e320)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 68 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling container
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling acknowledge for [7372205646065681132]
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205646065681132
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205650422658236 to GetHistoryRequest (1f60362c580)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 72 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205650422658240 to MsgsAck (1f603640a60)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 68 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling container
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling acknowledge for [7372205650422658236]
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205650422658236
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205656448040524 to GetHistoryRequest (1f60362c580)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 72 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205656448040528 to MsgsAck (1f6035cfc70)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 84 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205656448040524
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205660790250936 to GetHistoryRequest (1f60362c580)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 72 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372205660790250940 to MsgsAck (1f60366e8c0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 36 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling container
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling acknowledge for [7372205660790250936]
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372205660790250936
DEBUG:telethon.network.mtprotosender:Receiving items from the network...

This is log for a file which is being downloaded:

EBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372206305709488176 to GetMessagesRequest (1b363f31c60)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 56 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372206305709488180 to MsgsAck (1b363f31cc0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 60 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling container
DEBUG:telethon.network.mtprotosender:Handling update Updates
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling container
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update UpdateShort
DEBUG:telethon.network.mtprotosender:Handling update Updates
DEBUG:telethon.network.mtprotosender:Handling acknowledge for [7372206305709488176]
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372206305709488176
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
Downloading Lec1A_cn.mp4:   0%|                                                                                                                                                                                                                                                                                         | 0/100 [00:00<?, ?it/s]INFO:telethon.client.downloads:Starting direct file download in chunks of 262144 at 0, stride 262144
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372206306319845460 to GetFileRequest (1b363f21030)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 92 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372206306378055832 to MsgsAck (1b363f33130)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 116 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372206306319845460
DEBUG:telethon.network.mtprotosender:Receiving items from the network...
Downloading Lec1A_cn.mp4:   0%|▏                                                                                                                                                                                                                                                             | 0.057424601224113726/100 [00:00<09:57,  5.98s/it]DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372206307693766852 to GetFileRequest (1b363f21030)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 92 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.extensions.messagepacker:Assigned msg_id = 7372206307693766856 to MsgsAck (1b363eec5b0)
DEBUG:telethon.network.mtprotosender:Encrypting 1 message(s) in 36 bytes for sending
DEBUG:telethon.network.mtprotosender:Encrypted messages put in a queue to be sent
DEBUG:telethon.network.mtprotosender:Waiting for messages to send...
DEBUG:telethon.network.mtprotosender:Handling RPC result for message 7372206307693766852
DEBUG:telethon.network.mtprotosender:Receiving items from the network...

Telethon version

1.35.1

Python version

3.10.7

Operating system (including distribution name and version)

Windows 11

Other details

No response

Checklist

  • The error is in the library's code, and not in my own.
  • I have searched for this issue before posting it and there isn't an open duplicate.
  • I ran pip install -U https://github.com/LonamiWebs/Telethon/archive/v1.zip and triggered the bug in the latest version.

EDIT: I verified that the speed I was getting with cryptg installed was 20 Mbps, which improved the downloading speed. Without cryptg, the download speed is a mere 4-5 Mbps. Can I further improve the downloading speed beyond 20 Mbps?

I have no interest in further increasing the download speed of Telethon because that will just make flood waits more common. You can request Telegram for file parts concurrently though (you will have to implement it yourself or use someone else's code).

@Lonami, I checked the downloading speed without cryptg, and the speed was horrible. cryptg indeed increases speeds, but it still doesn't utilize the available internet bandwidth fully. That's okay for me as of now. Instead of trying to increase speed, I have implemented concurrent downloads, resulting in faster downloads and full bandwidth consumption of my connection. However, if the concurrent downloads are increased above a certain point, it again results in errors. So, as of now, I'm satisfied with the speeds. I'm grateful for you putting your hard work into this best tool. Thanks, mate.