来自URL的电报机器人图像 - 不希望的缓存



我正在使用根据要求显示来自多个网络摄像头的图像的电报机器人。我从URL中获取图像,然后发送给用户(使用bot.sendphoto())我的问题是,对于任何给定的网络摄像头,该文件名都不会更改,并且看来照片是从Telegram的缓存发送的。因此,它将从要求图像的第一次显示图像。

我已经考虑过从URL下载图像,并使用一个可变名称保存(例如带有时间戳的名称)然后将其发送到聊天中,这似乎是一个不高档的解决方案,并希望有更好的东西。就像强迫图像不要在电报服务器上缓存。

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

有什么想法吗?我已经尝试搜索,但到目前为止,很少有。预先感谢。

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

调用图像时,必须在图像链接中添加带有时间戳的参数。示例:

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

,根据您使用的语言,时间戳是时间戳函数。

简单但棘手;)

我认为最好的方法是与我们在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)

希望有帮助!

我也有同样的问题。我想创建一个机器人,该机器人发送由滑雪坡(webCam.example.com/image.jpg)的网络摄像头拍摄的图像。不幸的是,该文件名和URL永远不会更新和电报总是发送缓存的图像。因此,我决定更改传递给API的URL。为了实现这一目标,我编写了一个简单的PHP网站(example.com/photo.php),该网站重定向到照片的原始URL。之后,我在网络空间上使用.htaccess文件的网络空间创建了一个文件夹(example.com/getphoto/)。.htaccess将所有请求中的所有请求重定向到photo.php站点,该网站将其重定向到图像(webcam.example.com/image.jpg)。因此,您可以将所有内容添加到文件夹的URL中,但仍然可以获取图片(例如example.com/getphoto/42或example.com/getphoto/hrte8437g)。Telegram API似乎是由URL缓存的照片,因此,如果您始终将另一个末尾添加到传递给API的URL中,则Telegram不会使用缓存的版本,而是发送当前图像。始终更改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等其他语言。您只需要更改获得当前日期的方式。

相关内容

最新更新