Форум сайта python.su
Добрый день, подскажите пожалуйста короткий путь …..
У меня есть ип камера, я могу с нее взять скриншот ссылкой типа admin:admin@192.168.0.5/snapshot/snapshot.jpg, его требуется передать в телегу, провайдер Ростелеком запрещает использовать сервера api телеги, нашел выход, нашел сайт через, который сейчас отправляются логи в телегу текстом. Те на компе формируется событие и через Post запрос, событие уходит в php, на сайт, от туда в телегу, теперь хочется добавить к логу фотку. На сайте я сделал простую форму для загрузки фото, теперь надо сделать код для получения фото с камеры и отправка этого фото в форму на сайте.
Вот что получилось, но не работает, подскажите почему пожалуйста.
#!/usr/bin/python import cv2 import os # Config stream_url = 'admin:admin@192.168.2.67/action/snapshot/snapshot.jpg' # Determine save location absolute_script_dir = os.path.dirname(os.path.realpath(__file__)) save_dir = absolute_script_dir + '/snapshots/' save_path = save_dir + '/snapshot.jpg' # Capture frame from camera stream cap = cv2.VideoCapture(stream_url) ret, frame = cap.read() # Save frame as image if not os.path.exists(save_dir): os.makedirs(save_dir) cv2.imwrite(save_path, frame)
Офлайн
Насколько я правильно понимаю, сначала надо фото получить, сохранить, а потом уже отправлять…
Сохранять и отправлять лучше делать в одном скрипте или вызывать разные?
Отредактировано shiyri (Дек. 17, 2019 08:48:15)
Офлайн
global C:\projects\opencv-python\opencv\modules\videoio\src\cap.cpp (1
16) cv::VideoCapture:pen VIDEOIO(CV_IMAGES): raised OpenCV exception:
OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\videoio\src\cap_images.cp
p:253: error: (-5:Bad argument) CAP_IMAGES: can't find starting number (in the n
ame of file): 192.168.2.67/action/snapshot/snapshot.jpg in function ‘cv::icvExtr
actPattern’
Запустил из командной строки вышли такие логи
Офлайн
Ошибка была в адресе, надо было добавить http/
Офлайн
Теперь надо
<form method="post" action="basic.php" enctype="multipart/form-data"> <label for="inputfile">Upload File</label> <input type="file" id="inputfile" name="inputfile"></br> <input type="submit" value="Click To Upload"> </form>
Офлайн
shiyriВообще, в инете сейчас принято использовать SOCKS5-прокси. Там суть в том, что данные шифруются и какой адрес запрашивается, скрыто в шифротексте, отправляемом на прокси-сервер. Так только ты и прокси-сервер знаете, с каким узлом идёт обмен.
провайдер Ростелеком запрещает использовать сервера api телеги, нашел выход, нашел сайт через, который сейчас отправляются логи в телегу текстом
shiyriЭто ты можешь узнать через консоль браузера, заполнив форму и отправив её через браузер. Созданный запрос виден в консоли браузера, которую можно открыть через клавишу F12 (для Firefox).
Теперь надо<form method="post" action="basic.php" enctype="multipart/form-data"> <label for="inputfile">Upload File</label> <input type="file" id="inputfile" name="inputfile"></br> <input type="submit" value="Click To Upload"> </form>
Отредактировано py.user.next (Дек. 17, 2019 11:35:21)
Офлайн
py.user.nextЕсли прокси висит или выключается это искать новый? Это не стабильный вариант…. хоть и мение геморный
Вообще, в инете сейчас принято использовать SOCKS5-прокси. Там суть в том, что данные шифруются и какой адрес запрашивается, скрыто в шифротексте, отправляемом на прокси-сервер. Так только ты и прокси-сервер знаете, с каким узлом идёт обмен.
Офлайн
import urllib2 import requests api_host = 'http://бла бла бла/upload.php' headers = {'Content-Type' : 'image/jpeg'} image_url = "C:\snapshots\snapshot.jpg" img_file = urllib2.urlopen(image_url) response = requests.post(api_host, data=img_file.read(), headers=headers, verify=False)
Офлайн
image_url = “C:\snapshots\snapshot.jpg”
надо ставить двойные слеши
Офлайн
shiyriИз списка берётся другой прокси. А список ты можешь обновлять из Интернета, там они ничем не блокируются.
Если прокси висит или выключается это искать новый?
Отредактировано py.user.next (Дек. 17, 2019 11:58:30)
Офлайн