Как при помощи API телеграма работать с файлами больше 20МБ?

Я хочу при помощи телеграм-бота считывать только часть большого файла. Для этого я использую следующих код:

def download_file_range(file_id, start_byte, end_byte):
    def convert_bytes_to_utf8(byte_string):
        discarded_bytes = 0
        while discarded_bytes < 10 and len(byte_string) > 0:
            try:
                text = byte_string.decode('utf-8')
                return text
            except UnicodeDecodeError:
                #print(type(byte_string))
                if discarded_bytes%2==0:
                    byte_string = byte_string[1:]
                else:
                    byte_string = byte_string[:-1]
                discarded_bytes += 1

        return ''
    file_info = bot.get_file(file_id)
    file_path = file_info.file_path

    # Получение URL файла
    file_url = f'https://api.telegram.org/file/bot{TOKEN}/{file_path}'

    # Скачивание только указанной части файла
    headers = {'Range': f'bytes={start_byte}-{end_byte}'}
    response = requests.get(file_url, headers=headers, stream=True)
    #print(response.content)
    if response.status_code == 206:  # Проверка успешности запроса
        return convert_bytes_to_utf8(response.content)

    return ''

Он считывает из текстового файла только символы из указанного диапазона байтов. Проблема в том, что это не работает с файлами больше 20МБ. Подскажите, как реализовать то же самое только для файлов 2-4 Gb? Возможно, используя аккаунт человека, а не бота.


Ответы (0 шт):