Загрузка оборвалась: как докачать файл в Telegram
Докачать прерванную загрузку в Telegram можно с того же байта: сон компьютера, обрыв Wi-Fi или выход из приложения больше не обнуляют прогресс на диске.
6 мин чтения
Если многогигабайтное видео остановилось на 80 процентах, почти наверняка его не придётся забирать заново с самого начала. TelegramBuddy пишет каждую большую загрузку во временный файл с расширением .part на вашем собственном диске и знает, сколько байт туда уже попало. Когда вы возобновляете загрузку из Telegram после паузы, обрыва связи или даже полного выхода из программы и повторного запуска, приложение запрашивает у Telegram остаток файла начиная с того байта, на котором всё остановилось, и продолжает писать в тот же файл .part. Прогресс, который уже на диске, на диске и остаётся. По сети идёт только недостающий хвост.
Это короткий ответ. Подробный тоже стоит знать, потому что от того, какие обрывы не стоят вам ничего, какие стоят пары секунд, а какие означают, что Telegram намеренно вас притормаживает, зависит то, как лучше готовить большую задачу.
Что на самом деле прерывает большую загрузку
Почти каждая остановившаяся передача сводится к одной из пяти причин, и только одна из них — настоящая ошибка.
- Компьютер ушёл в спящий режим. Закрытая крышка ноутбука посреди передачи — самая частая причина. Сеть исчезает, соединения умирают, и передача останавливается там, где была.
- Связь оборвалась или сменилась. Переход с Wi-Fi на точку доступа телефона, перезагрузка роутера, переподключение VPN или гостиничная сеть, которая тихо сбрасывает простаивающие соединения, — для приложения всё это выглядит одинаково: данные перестали приходить.
- Вы вышли из приложения. Иногда намеренно, иногда потому что машине понадобилась перезагрузка для обновления.
- Вы сами поставили загрузку на паузу или отменили её. Совершенно нормально, и обрабатывается точно так же, как случайность.
- Telegram попросил подождать. Это flood wait: серверы Telegram отвечают, по сути, «вы просите слишком много и слишком быстро, вернитесь через N секунд». Это ограничение частоты запросов, а не сбой, и о нём есть отдельный раздел ниже.
Обратите внимание, чего в этом списке нет: испорченного половинчатого файла, который нужно удалить и начать заново. Недокачанный файл — это не поломка. Это закладка.
Как докачать файл из Telegram вместо того, чтобы начинать заново
Шаги нарочно скучные:
- Снова откройте TelegramBuddy, если он был закрыт. Ваша сессия Telegram лежит в файле на вашем же компьютере, так что вы по-прежнему авторизованы — заходить в аккаунт заново и что-либо подтверждать не нужно.
- Найдите нужный пункт в очереди загрузок.
- Нажмите возобновление (или повтор, если файл помечен как неудавшийся).
- Приложение проверяет файл
.part, видит, сколько в нём байт, запрашивает файл с этого смещения и продолжает дописывать. - Когда приходит последний байт, файл
.partпревращается в готовый файл с правильным именем.
Три детали стоит знать. Недокачанный файл лежит в той же папке, где окажется готовый, так что вы можете наблюдать, как он растёт. Поскольку докачка отсчитывается в байтах, нет никакой разницы, остановились вы на 3 процентах или на 97. А если вы сами удалите файл .part, пока загрузка на паузе, ничего не сломается — этот файл просто начнётся сначала, и вы потеряете только те байты, которые сами выбросили.
Что не докачивается и почему это нормально
Не всё получает обработку на уровне байтов. Фотографии и небольшие файлы запрашиваются заново целиком, а не докачиваются.
Звучит как пробел, пока не посчитаешь. Фотография — это передача длиной в секунду-две, так что вести учёт недокачанной половины было бы дороже, чем просто запросить её снова. Докачка применяется там, где обрыв действительно бьёт больно: к большим видео, архивам и документам.
| Что прервало загрузку | Большое видео, архив или документ | Фото или небольшой файл |
|---|---|---|
| Пауза с вашей стороны | Продолжается с последнего записанного байта | Запрашивается целиком при возобновлении |
| Обрыв связи | Продолжается с последнего записанного байта | Запрашивается целиком при повторе |
| Выход из приложения или перезагрузка | Продолжается с последнего записанного байта | Запрашивается целиком при следующем запуске |
| Flood wait от Telegram | Выжидает задержку, затем продолжает | Ждёт, затем запрашивается целиком |
| Уже скачано раньше | Полностью пропускается | Полностью пропускается |
Последнюю строку недооценивают чаще всего.
Повторный проход по каналу забирает только новое
Массовая загрузка сканирует всю историю чата и ставит в очередь каждый подходящий файл, причём в очереди может быть сразу несколько чатов. Самое важное — что происходит, когда вы направляете её на тот же чат во второй раз: файлы, которые уже есть на диске, пропускаются, так что повторный проход забирает только то, что было опубликовано с прошлого раза.
Это превращает «скачать из этого канала всё» из одноразовой операции, повторять которую не хочется, в то, что можно запускать хоть каждую неделю не задумываясь. Работает это потому, что имена файлов устойчивы и предсказуемы. Файлы сохраняют то имя, которое им дал Telegram. Файлы, которые приходят вообще без имени, — а это большинство фотографий и видео — называются по id сообщения, так что одно и то же сообщение всегда соответствует одному и тому же файлу. Если настоящее совпадение имён всё-таки случается, id сообщения добавляется в скобках. У каждого чата своя папка, при желании разделённая на Photos (Фото), Videos (Видео), Files (Файлы), Music (Музыка), Voice (Голосовые), а дата каждого файла ставится по дате публикации, а не по моменту, когда вы его скачали.
Одну вещь стоит сказать прямо: то, что массовую задачу легко запустить заново, не делает всё содержимое канала вашим. Храните только то, на что у вас действительно есть право, и не трогайте чужие платные или защищённые авторским правом материалы.
Flood wait: когда Telegram просит сбавить обороты
Flood wait — это Telegram, защищающий собственную инфраструктуру. Попросите слишком много и слишком быстро, и сервер вернёт вместо данных ответ «подождите столько-то». Некоторые из них — несколько секунд. Некоторые заметно дольше.
Неправильное поведение приложения здесь — счесть это ошибкой, отметить файл как неудавшийся и выдать вам сломанную очередь. Flood wait выжидается автоматически: передача приостанавливается ровно на столько, на сколько попросил Telegram, а затем продолжается. Долгая ночная задача может пересидеть несколько таких пауз и всё равно к утру оказаться завершённой.
Две вещи делают их более редкими:
- Уменьшите лимит одновременных загрузок. Вы сами выбираете, сколько файлов передаётся одновременно. Большее число не означает автоматически большую скорость; после некоторого предела оно в основном приносит вам ограничения частоты запросов. Если ожидания повторяются, уменьшите его.
- Используйте свой собственный api_id. Telegram считает ограничения частоты по тому api_id, с которым подключается приложение, — именно поэтому каждая установка TelegramBuddy просит ваши собственные бесплатные данные с my.telegram.org, а не делит один набор на всех. Тогда ваша очередь не конкурирует ни с кем, кроме вас самих. Получение api_id и api_hash занимает пару минут.
Как подготовить большую задачу, чтобы она пережила ночь
- Запретите компьютеру засыпать на всё это время. На ноутбуке подключите его к сети и держите крышку открытой либо отключите спящий режим в системных настройках.
- Выбирайте самую стабильную сеть, какая у вас есть, и не переключайте сети посреди задачи. Докачка справляется с обрывом, но лучше, когда обрыва нет.
- Перед запуском очень большой очереди поставьте скромный лимит одновременных загрузок.
- Оставьте приложение запущенным. Закрыть его не смертельно, но и не бесплатно.
- Один раз проверьте очередь на старте. Перезапустить две неудачи на первой минуте лучше, чем обнаружить их через восемь часов.
Если вы делаете это с большим медиаканалом, к этому хорошо подходит порядок действий из статьи как скачать все видео из Telegram-канала; а для источников, доступных только участникам, смотрите загрузку из закрытого Telegram-канала.
Куда двигаться дальше
Докачка — самая незаметная функция загрузчика и та, за которую вы благодарны больше всего. Если хотите увидеть картину целиком: страница возможностей описывает фильтрацию галереи, экспорт текста и чатов и раскладку папок по чатам, а FAQ отвечает на практические вопросы о сессиях, хранении и ограничениях. Когда будете готовы всё настроить, начните со страницы загрузки — а если предпочитаете сначала почитать, в списке статей блога есть остальные руководства.