Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 17, 2019 08:44:21

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

из ip камеры в телегу

Добрый день, подскажите пожалуйста короткий путь …..
У меня есть ип камера, я могу с нее взять скриншот ссылкой типа 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)

ошибка:
Traceback (most recent call last):
File “C:\Users\checkout\Desktop\snap_py.py”, line 21, in <module>
cv2.imwrite(save_path, frame)
cv2.error: OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:715: error: (-215:Assertion failed) !_img.empty() in function ‘cv::imwrite’
скрипт папку создает, но внутри пусто

Офлайн

#2 Дек. 17, 2019 08:46:00

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

из ip камеры в телегу

Насколько я правильно понимаю, сначала надо фото получить, сохранить, а потом уже отправлять…
Сохранять и отправлять лучше делать в одном скрипте или вызывать разные?

Отредактировано shiyri (Дек. 17, 2019 08:48:15)

Офлайн

#3 Дек. 17, 2019 10:59:44

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

из ip камеры в телегу

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’


Запустил из командной строки вышли такие логи

Офлайн

#4 Дек. 17, 2019 11:09:37

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

из ip камеры в телегу

Ошибка была в адресе, надо было добавить http/

Офлайн

#5 Дек. 17, 2019 11:13:04

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

из ip камеры в телегу

Теперь надо

 <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>
файлик локальный(jpg), как-то положить в эту форму

Офлайн

#6 Дек. 17, 2019 11:33:39

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9999
Репутация: +  857  -
Профиль   Отправить e-mail  

из ip камеры в телегу

shiyri
провайдер Ростелеком запрещает использовать сервера api телеги, нашел выход, нашел сайт через, который сейчас отправляются логи в телегу текстом
Вообще, в инете сейчас принято использовать SOCKS5-прокси. Там суть в том, что данные шифруются и какой адрес запрашивается, скрыто в шифротексте, отправляемом на прокси-сервер. Так только ты и прокси-сервер знаете, с каким узлом идёт обмен.

Так что нужно найти такой прокси (обычно список берётся) и добавить подключение через него в свой скрипт.

shiyri
Теперь надо
  
<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>
Это ты можешь узнать через консоль браузера, заполнив форму и отправив её через браузер. Созданный запрос виден в консоли браузера, которую можно открыть через клавишу F12 (для Firefox).



Отредактировано py.user.next (Дек. 17, 2019 11:35:21)

Офлайн

#7 Дек. 17, 2019 11:42:38

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

из ip камеры в телегу

py.user.next
Вообще, в инете сейчас принято использовать SOCKS5-прокси. Там суть в том, что данные шифруются и какой адрес запрашивается, скрыто в шифротексте, отправляемом на прокси-сервер. Так только ты и прокси-сервер знаете, с каким узлом идёт обмен.
Если прокси висит или выключается это искать новый? Это не стабильный вариант…. хоть и мение геморный

Офлайн

#8 Дек. 17, 2019 11:48:11

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

из ip камеры в телегу

 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)

ошибка
File “up_py.py”, line 6
image_url = “C:\snapshots\snapshot.jpg”
^
SyntaxError: (unicode error) ‘unicodeescape’ codec can't decode bytes in positio
n 2-4: truncated \xXX escape

Офлайн

#9 Дек. 17, 2019 11:57:00

shiyri
Зарегистрирован: 2019-07-09
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

из ip камеры в телегу

image_url = “C:\snapshots\snapshot.jpg”
надо ставить двойные слеши

Офлайн

#10 Дек. 17, 2019 11:58:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9999
Репутация: +  857  -
Профиль   Отправить e-mail  

из ip камеры в телегу

shiyri
Если прокси висит или выключается это искать новый?
Из списка берётся другой прокси. А список ты можешь обновлять из Интернета, там они ничем не блокируются.



Отредактировано py.user.next (Дек. 17, 2019 11:58:30)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version