Telegram bot api: проблема с размером загружаемого / скачиваемого GIF
Столкнулся с проблемой, когда я пытаюсь отправить GIF своему боту, но бот не может получить доступ к исходному размеру изображения. Похоже, что серверы телеграмм конвертируют его в mp4 (это хорошая идея, выглядит нормально), и когда я пытаюсь его загрузить - он всегда выглядит как эскиз с максимальной стороной 320 пикселей.
Похоже, это ошибка API, потому что, например, здесь:
Он описывается как 600x473px, но реальный размер загруженного mp4:
Итак, пытаюсь понять - где я здесь ошибаюсь, поскольку исходный размер gif требует для нужд моего проекта... Может быть, здесь есть обходной путь?
пс. в случае преобразования gif в mp4 вручную с сохранением качества и размера, а затем отправки боту - он отлично работает, без дополнительного сжатия и т.д., но недопустимо просить пользователя сделать это перед использованием бота.
Обновить:
Для воспроизведения (вам нужен бот /bot_token, а также возможность получать веб-перехватчик с помощью json):
1) отправка этого gif (https://c2n.me/47Y3H37.gif) боту через клиент телеграммы Windows 10 (v2.1.10). Использование "отправить без сжатия". Размер GIF: 600x473, 3,35 МБ.
2) Бот получил и Telegram отправил вебхук:
{
"update_id": 290360893,
"message": {
"message_id": 21,
"from": {
"id": 101483786,
"is_bot": false,
"first_name": "edited",
"last_name": "edited",
"username": "edited",
"language_code": "en"
},
"chat": {
"id": edited,
"first_name": "edited",
"last_name": "edited",
"username": "edited",
"type": "private"
},
"date": 1591962500,
"animation": {
"file_name": "9Ywn9p.gif.mp4",
"mime_type": "video/mp4",
"duration": 4,
"width": 600,
"height": 473,
"thumb": {
"file_id": "AAMCAgADGQEAAxVe42t2MTQQrFMyXbskwWiNkHjm3wACKwgAAtZ-GEtFrAh9bgzTOnpJm5QuAAMBAAdtAAMIgQACGgQ",
"file_unique_id": "AQADekmblC4AAwiBAAI",
"file_size": 15304,
"width": 320,
"height": 252
},
"file_id": "CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA",
"file_unique_id": "AgADKwgAAtZ-GEs",
"file_size": 68253
},
"document": {
"file_name": "9Ywn9p.gif.mp4",
"mime_type": "video/mp4",
"thumb": {
"file_id": "AAMCAgADGQEAAxVe42t2MTQQrFMyXbskwWiNkHjm3wACKwgAAtZ-GEtFrAh9bgzTOnpJm5QuAAMBAAdtAAMIgQACGgQ",
"file_unique_id": "AQADekmblC4AAwiBAAI",
"file_size": 15304,
"width": 320,
"height": 252
},
"file_id": "CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA",
"file_unique_id": "AgADKwgAAtZ-GEs",
"file_size": 68253
}
}
}
, чтобы вы могли видеть, что размер правильный, но вес - нет, это всего лишь 68253 байта = 66,65 КБ, вместо ~3,35 МБ (некоторые меньше, из-за преобразования)
3) Получить file_id: CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA из этого webhook и пытается использовать его в апи, вызвав GET "https://api.telegram.org/bot{your_bot_token} / Get Filefile_id=CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA?", И вы получите:
{
"ok": true,
"result": {
"file_id": "CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA",
"file_unique_id": "AgADKwgAAtZ-GEs",
"file_size": 68253,
"file_path": "animations/file_12.mp4"
}
}
4) Загрузка файла с использованием этого пути к файлу: GET "https://api.telegram.org/file/bot{your_bot_token}/animations/file_12.mp4" и... получение этого файла mp4: https://c2n.me/47Y4oAv.mp4, с потерей качества, веса и размера (320x252)
Но когда вы пытаетесь загрузить его из клиента Telegram - нажав "Сохранить как" - работает нормально, mp4 с соответствующим размером / весом. Так похоже на ошибку api...
обновление № 2: попытался отправить его через службу поддержки tfs telegram, но также не могу войти в систему, используя мой номер телефона... (https://c2n.me/47Yqswl.png). @pavel_durov, не могли бы вы все исправить:))
1 ответ
Похоже, что единственный обходной путь atm - преобразовать gif в mp4 (да, такой разочаровывающий опыт), пока проблема не будет исправлена.