Telegram bot api:GIF 上传/下载大小问题

Nig*_*ist 8 telegram telegram-bot telegram-webhook telegram-api

遇到问题,当我尝试将 GIF 发送到我的机器人时,但机器人无法访问图像的原始大小。似乎电报服务器将其转换为 mp4(这是个好主意,看起来不错),当我尝试下载它时 - 它总是看起来像一个最大 320 像素的缩略图

看起来,它是一个api 错误,因为例如这里:

在此处输入图片说明

它描述为 600x473px,但实际下载的 mp4 大小是:

在此处输入图片说明

所以,试图理解 - 我在这里错了,因为我的项目需要原始 gif 大小......也许这里存在任何解决方法?

附:如果手动将 gif 转换为 mp4 并保存质量和大小,然后提交给 bot - 它工作得很棒,没有任何额外的压缩等,但在使用 bot 之前要求使用它是不可接受的。

更新 :

要重现(您需要 bot/bot_token 并且还需要能够使用 json 接收 webhook):

1)通过 Windows 10 电报客户端 (v2.1.10)将此 gif ( https://c2n.me/47Y3H37.gif ) 发送到机器人。使用“无压缩发送”。Gif 大小:600x473,3.35MB

2) Bot 接收和 Telegram 发送 webhook :

{
  "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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

,所以你可以在那里看到,那个大小是正确的,但重量 - 不,它只有 68253 字节 = 66.65kb,而不是 ~3.35MB(少一些,因为转换)

3)获取的file_id:CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA从这个网络挂接,并试图通过调用GET使用它的API “ https://api.telegram.org/bot {} your_bot_token /的GetFile的file_id = CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA?”,您将收到:

{
  "ok": true,
  "result": {
    "file_id": "CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA",
    "file_unique_id": "AgADKwgAAtZ-GEs",
    "file_size": 68253,
    "file_path": "animations/file_12.mp4"
  }
}
Run Code Online (Sandbox Code Playgroud)

4) 使用此 file_path 下载文件: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 电报支持提交,但也无法使用我的电话号码登录...(https://c2n.me/47Yqswl.png)。@pavel_durov,你能不能把它全部修好:))

Ban*_*nio 3

似乎 atm 唯一的解决方法是将 gif 转换为 mp4(是的,这是一次令人沮丧的经历),直到问题得到解决。