我使用 python-telegram-bot 从发送到我实现的机器人的帖子中获取下载网址。问题是文件大小限制(最大上传大小:50 MB,最大下载大小:20 MB)。
所以我将 python 库更改为 telethon 以使用 mtproto。它没有文件大小限制,但是,我找不到获取下载网址的方法!它有一个名为“download_media”的方法,可以下载媒体!
@client.on(events.NewMessage)
async def download_media(event, **kwargs):
message = event.message
file = await message.download_media()
有没有办法只获取下载网址而不下载文件?
与 Telethon 连接的 Telegram 的 MTProto API 不提供从 URL 下载文件的功能,为了方便起见,该功能由 HTTP bot API 提供。
1- 使用
message.document.file_id
您可以访问视频的 file_id。
2- 使用
getFile(<file_id>)
方法获取文件的 file_path
(相当于卷曲 https://api.telegram.org/$bot_token/getFile
,请阅读更多内容Telegram Bot getFile API 和 python-telegram-bot getFile 文档)
3- 视频的最终 URL 如下:
https://api.telegram.org/file/<bot_token>/<file_path>
P.S:仅在您自己的代码库上使用该 URL,因为它会泄露您的 BOT_TOKEN。
P.S.2:链接有效期为 1 小时,之后必须再次提出
getFile
请求。