【问题标题】:telegram bot image from url - undesired cache来自 url 的电报机器人图像 - 不需要的缓存
【发布时间】:2017-07-31 20:36:34
【问题描述】:

我正在开发一个电报机器人,它可以根据请求显示来自多个网络摄像头的图像。我从 url 获取图像,然后发送给用户(使用 bot.sendPhoto() )我的问题是,对于任何给定的网络摄像头,文件名都不会改变,而且照片似乎是从电报的缓存发送的。因此,它将从第一次请求该图像时开始显示该图像。

我考虑过从 url 下载图像,使用变量名称(例如带有时间戳的名称)保存,然后将其发送到聊天室,这似乎是一个不雅的解决方案,并希望有更好的解决方案。就像强制图像不缓存在电报服务器上一样。

我正在使用 python-telegram-bot 包装器,但我不确定它是否特定于此。

有什么想法吗?我试过搜索,但到目前为止很少出现。 提前致谢。

【问题讨论】:

  • 看来您别无选择,只能使用这种不雅的方式。但我担心 Telegram 机器人不是为此类任务而设计的 :) 如果我是你,我会创建一个 Web 服务器,其页面会定期刷新来自网络摄像头的图像。

标签: python caching telegram python-telegram-bot


【解决方案1】:

我也遇到了同样的问题,但我找到了最简单的解决方案。

调用图片时,需要在图片链接中添加一个带时间戳的参数。 示例:

http://www.example.com/img/img.jpg?a=TIMESTAMP

其中 TIMESTAMP 是基于您使用的语言的时间戳函数。

简单但棘手;)

【讨论】:

  • 可以,但是在使用内联查询时不要添加到缩略图中,保持缩略图不变
  • 你成就了我的一天!很好的答案
  • @IgnacioAra ;))
【解决方案2】:

我认为最好的方法是像我们在 React 中做的一样,同样的,相同的 URL 调用首先在缓存中检查。

如果您使用 Python,最好的方法是:

timestamp = datetime.datetime.now().isoformat()
# Above statement returns like: '2013-11-18T08:18:31.809000'
pic_url = '{0}?a={1}'.format(img_url, timestamp)

希望有帮助!

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。我想创建一个机器人,它发送由滑雪场的网络摄像头拍摄的图像(webcam.example.com/image.jpg)。不幸的是,文件名和 URL 永远不会更新,电报总是发送缓存的图像。所以我决定改变传递给 api 的 url。为了实现这一点,我编写了一个简单的 php 站点(example.com/photo.php),它重定向到照片的原始 url。之后,我在我的网站空间上创建了一个文件夹 (example.com/getphoto/),其中包含一个 .htaccess 文件。 .htaccess 将此文件夹中的所有请求重定向到 photo.php 站点,该站点重定向到图像 (webcam.example.com/image.jpg)。因此,您可以将所有内容添加到文件夹的 url 并仍然获取图片(例如 example.com/getphoto/42 或 example.com/getphoto/hrte8437g)。电报 api 似乎通过 url 缓存照片,所以如果你总是在传递给 api 的 url 中添加另一个结尾,电报不会使用缓存的版本,而是发送当前图像。始终更改 url 的最简单方法是向其中添加当前日期。

    example.com/photo.php

    <?php
    header("Location: http://webcam.example.com/image.jpg");
    die();
    ?>
    

    example.com/getphoto/.htaccess

    RewriteEngine on
    RewriteRule ^(.*)$ http://example.com/photo.php
    

    在python中:

    bot.sendPhoto(chat_id, 'example.com/getphoto/' + strftime("%Y-%m-%d_%H-%M-%S", gmtime()))
    

    此解决方法也应该适用于其他语言,如 java 或 php。您只需要更改获取当前日期的方式即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 2022-08-18
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      相关资源
      最近更新 更多