【问题标题】:How to download an image/media using telegram API如何使用电报 API 下载图像/媒体
【发布时间】:2019-02-19 09:05:24
【问题描述】:

我想首先说这个问题不是针对电报机器人 API。我正在尝试使用电报核心 API 从频道中获取图像。图片在消息对象的 media 属性中

"_": "message",
      "pFlags": {
        "post": true
      },
      "flags": 17920,
      "post": true,
      "id": 11210,
      "to_id": {
        "_": "peerChannel",
        "channel_id": 1171605754
      },
      "date": 1550556770,
      "message": "",
      "media": {
        "_": "messageMediaPhoto",
        "pFlags": {},
        "flags": 1,
        "photo": {
          "_": "photo",
          "pFlags": {},
          "flags": 0,
          "id": "6294134956242348146",
          "access_hash": "11226369941418527484",
          "date": 1550556770,

我正在使用 upload.getFile API 来获取文件。例子是

upload.getFile({
  location: {
    _: 'inputFileLocation',
    id: '6294134956242348146',
    access_hash: '11226369941418527484'
  },
  limit: 1000,
  offset: 0
})

但问题是它抛出错误 RpcError: CODE#400 LIMIT_INVALID。从https://core.telegram.org/api/files 看来,限制值无效。我尝试将限制设置为

  • 1024000 (1Kb)
  • 20480000 (20Kb)
  • 204800000 (200kb)

但它总是返回相同的错误。

【问题讨论】:

    标签: download telegram


    【解决方案1】:

    对于那些也对文档感到沮丧的人。使用、阅读和尝试不同的东西最终会对你有用。如果可能的话,有人可以承担记录出色的开源软件的任务。

    答案是,位置对象不应像其他 API 那样包含 id 或访问哈希,而是它具有自己的参数,如电报模式中定义的那样。

    消息有一个媒体属性,它有一个大小对象。这将包含 3 个或更多大小选项(缩略图、预览、网页大小等)。选择您需要的并使用 volume_id、local_id 和 secret 属性。工作代码将如下所示。

    upload.getFile({
        location: {
          _: 'inputFileLocation', (This parameter will change for other files)
          volume_id: volumeId,
          local_id: localId,
          secret: secret
        },
        limit: 1024 * 1024,
        offset: 0
      }, {
        isFileTransfer: true,
        createClient: true
      })
    

    需要注意以下几点。

    • 限制应该以字节为单位(而不是位)
    • 偏移量将为 0。但如果它的大文件使用它并限制下载部分文件并加入它们。
    • isFileTransfer 和 createClient 等附加参数也存在。我还没有完全理解为什么需要它。有时间我会更新的。

    尝试使用构建在原始电报库之上的库。我正在使用Airgram,这是一个 JS/TS 库,它是一个维护良好的 Repo。

    【讨论】:

      猜你喜欢
      • 2018-03-20
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 2022-01-25
      • 2013-03-22
      • 2016-09-02
      • 1970-01-01
      相关资源
      最近更新 更多