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 (да, такой разочаровывающий опыт), пока проблема не будет исправлена.

Другие вопросы по тегам