我正在尝试构建一个程序,该程序会自动将运动拍摄的照片从我的USB网络摄像头发布到休息API,并遇到了一些问题。我的直播工作正常,它会在所需的时间拍照。 我有我的脚本在这里发布照片:
on_picture_save home/pi/Documents/on_picture_save.py
(是的,分号被删除(
如何使脚本使用刚刚保存的文件,或者自动执行此操作,以便我只需要执行以下操作?
import requests
url = "https://api.emotuit.com/upload"
r = requests.post(url)
print(r.text)
所有动作保存的目标目录是home/pi/Monitor,照片根据事件的时间保存在自己的目录中,如下所示:
picture_filename %v_%Y-%m-%d-%H:%M/%q
任何想法将不胜感激,谢谢!
更新:我已经找到了代码在命令行中的工作方式,并将其更改为该命令行以使事情变得更容易:
on_picture_save curl -X POST api.link.com/here -F 'files=@/path/to/file/here.jpg;type=image.jpg'
不过,我仍然会在打印结果时遇到问题,所以如果有任何关于如何通过额外的.py文件做到这一点的建议,那就太好了。
基于on_picture_save文档,您可以在命令中使用%f
on_picture_save home/pi/Documents/on_picture_save.py %f
它应该发送带有完整路径的文件名作为参数,您可以将其作为sys.argv[1]
import sys
print(sys.argv[1])
您还可以使用其他转化说明符发送其他信息。
顺便说一句:在snapshot_filename文档中,您还可以看到
在target_dir中创建一个名为lastsnap.jpg的符号链接和 将始终指向最新的快照,除非snapshot_filename 正是"最后的快照">
因此,您可以将最后一张照片作为最后一张快照.jpg
编辑:似乎你有curl命令
curl -X POST api.link.com/here -F 'files=@/path/to/file/here.jpg;type=image.jpg'
可以在 http://curl.trillworks.com 上转换为 Python 的请求
有了sys.argv[1]
,它可能是
import sys
import requests
files = {'files': (sys.argv[1], open(sys.argv[1], 'rb'))}
response = requests.post('http://api.link.com/here', files=files)
data = response.json()
print(data)
#print(data["???"])
但是它无法访问您的屏幕,您也看不到它。您只能将其保存在文件中并创建其他程序(在桌面上手动运行(来读取和显示它。
我使用的是 MQTT 队列而不是文件。
on_picture_save
将数据发送到队列,而家里的其他本地计算机在桌面上运行脚本,该脚本定期从队列中获取数据并显示在桌面上。
mosquitto作为服务器/代理和命令行客户端进行测试(或与bash
脚本一起使用(,
Paho MQTT作为Python的模块与MQTT一起工作。
import sys
import requests
import paho.mqtt.client as mqtt
files = {'files': (sys.argv[1], open(sys.argv[1], 'rb'))}
response = requests.post('http://api.link.com/here', files=files)
data = response.json()
client = mqtt.Client()
client.connect('localhost') # or IP of other computer with MQTT server/broker
client.publish('last', sys.argv[1], retain=True)
#client.publish('data', str(data["???"]), retain=True)