2017-03-10 15 views
1

私は、要求に応じて複数のウェブカメラの画像を表示する電報ボットに取り組んでいます。私はURLから画像を取得し、ユーザに送信します(bot.sendPhoto()を使用します)。私の問題は、任意のWebカメラでファイル名が変更されず、写真がテレグラムのキャッシュから送信されたようです。したがって、画像が要求された最初の画像が表示されます。テレグラムからのボット画像 - 望ましくないキャッシュ

URLから画像をダウンロードし、変数名(タイムスタンプ付きの名前など)で保存してチャットに送信することを考えましたが、これは控えめな解決策のように思えます。テレグラムサーバーにキャッシュされないようにイメージを強制します。

私はpython-telegram-botラッパーを使用していますが、それはそれが固有であるかどうかはわかりません。

アイデア?私は検索しようとしましたが、今のところほとんど変わりません。 ありがとうございます。

+0

あなたはその方法を使いたくないと思われます。しかし、私はテレグラムのボットがそのようなタスクのために設計されていない恐れがあります:)私はあなたの場合、私はウェブカメラから定期的に爽やかなイメージを持つページでWebサーバーを作るだろう。 –

答えて

0

私は同じ問題を抱えていました。スキー場のウェブカメラ(webcam.example.com/image.jpg)で撮影した画像を送信するボットを作りたかったのです。残念なことに、ファイル名とURLは決して更新されず、電文は常にキャッシュされた画像を送信します。だから私はapiに渡されたURLを変更することにしました。これを達成するために、私は写真の元のURLにリダイレクトする単純なPHPサイト(example.com/photo.php)を書きました。その後、自分のウェブスペースに.htaccessファイルを入れたフォルダ(example.com/getphoto/)を作成しました。 .htaccessは、このフォルダ内のすべてのリクエストを、イメージ(webcam.example.com/image.jpg)にリダイレクトするphoto.phpサイトにリダイレクトします。フォルダのURLにすべてを追加しても、画像は取得できます(example.com/getphoto/42、example.com/getphoto/hrte8437gなど)。テレグラムAPIはURLで写真をキャッシュしているようです。したがって、APIに渡されたURLに常に別のエンディングを追加すると、テレグラムはキャッシュされたバージョンを使用せず、代わりに現在のイメージを送信します。 URLを常に変更する最も簡単な方法は、現在の日付をURLに追加することです。

example.com/photo.php Pythonで

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

example.com/getphoto/.htaccess

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

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

この回避策は、他に動作するはずですjavaやphpのような言語。現在の日付を取得する方法を変更するだけです。

関連する問題