2

我使用 python 和 Telethon 来获取消息。我可以下载消息照片,但我不想存储和下载。我想知道照片的网址,以便以后随时使用它。有什么办法吗?

4

2 回答 2

4

电报 API 不会为您提供帖子媒体文件的直接 URL。但是,作为一种解决方法,请看一下 Telegram 几个月前添加到其网站的新功能:

您只需键入具有此模式的 URL,即可在网络上查看公共频道的帖子: https ://t.me/ “channel-username”/“post-No”

(例如https://t.me/gizmiztel/2350

通过这种方式,您可以解析 DOM 并找到每个媒体文件的直接 URL。

注意:您可能需要为每种类型的文件使用单独的方法来提取文件的 URL。

于 2018-09-23T13:34:44.127 回答
1

@tashakori 答案的扩展

对于没有设置用户名的频道(我见过一些),它是https://t.me/c/channel_id/message_id

例如。

async def main():
    # TODO setup client etc.
    # this channel id was obtained from using something similar to https://stackoverflow.com/a/62849271/8608146
    channel = await client.get_entity(-1001006503122)
    async for message in client.iter_messages(channel, reverse=True):
        # channel.id and the above -100.. id are not same
        # this channel.id looks like 1006503122
        print("message URL", f"https://t.me/c/{channel.id}/{message.id}")

另请注意:当然,只有加入频道的用户才能访问这些链接。

还有message.chat_id返回-100的属性......

于 2021-05-05T17:24:03.833 回答