2017-03-10 7 views
1

요청에 따라 여러 웹캠의 이미지를 표시하는 전보 봇 작업 중입니다. URL에서 이미지를 가져 와서 사용자에게 보냅니다 (bot.sendPhoto() 사용). 문제는 특정 웹캠의 경우 파일 이름이 변경되지 않고 사진이 전보의 캐시에서 전송 된 것 같습니다. 그러면 이미지가 처음 요청 된 이미지가 표시됩니다.telegram 봇 이미지 from url - 원하지 않는 캐시

URL에서 이미지를 다운로드하고, 변수 이름 (예 : 타임 스탬프가 포함 된 이름)으로 저장 한 다음 채팅에 전송하는 방법에 대해 생각해 보았습니다.이 방법은 비현실적인 솔루션처럼 보이며 더 나은 것을 기대했습니다. 텔레 그램 서버에 캐시되지 않도록 이미지를 강요하는 것.

저는 python-telegram-bot wrapper를 사용하고 있습니다 만, 그 것이 구체적이라는 것은 확실하지 않습니다.

아이디어가 있으십니까? 나는 검색을 시도했지만 지금까지 거의 돌지 않고있다. 미리 감사드립니다.

+0

당신은 그 방법을 사용하는 것 외에 다른 선택의 여지가없는 것처럼 보입니다. 그러나 나는 텔레 그램 봇이 그러한 작업을 위해 설계되지 않았다는 것을 두려워합니다 :) 만약 내가 당신이라면 나는 웹캠에서 주기적으로 상쾌한 이미지가있는 웹 서버를 만들 것입니다. –

답변

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

<?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())) 
작동합니다 자바 또는 PHP와 같은 언어. 현재 날짜를 가져 오는 방법을 변경하면됩니다.