Json Synology监视Web API帮助。抓拍快照?

Json Synology监视Web API帮助。抓拍快照?,json,http,synology,Json,Http,Synology,如何从监视站Web API获取“快照”?我想做的是抓取一个快照并将其提供给网页 不太熟悉Synology监视站的Web API是如何工作的(我一般是编程新手)。我试着通过帮助阅读。可以在此处找到web API帮助 当我把它输入浏览器时,我希望能得到一个快照JPG http://MyNASip:5000/webapi/entry.cgi?camStm=1&version="8"&cameraId=1&api="SYNO.SurveillanceStation.Camera"

如何从监视站Web API获取“快照”?我想做的是抓取一个快照并将其提供给网页

不太熟悉Synology监视站的Web API是如何工作的(我一般是编程新手)。我试着通过帮助阅读。可以在此处找到web API帮助

当我把它输入浏览器时,我希望能得到一个快照JPG

http://MyNASip:5000/webapi/entry.cgi?camStm=1&version="8"&cameraId=1&api="SYNO.SurveillanceStation.Camera"&preview=true&method="GetSnapshot"
我理解得对吗

相反,我在浏览器中得到了这个

{"error":{"code":105},"success":false}
我在/var/log/messages中得到以下信息

2018-02-05T13:15:03-06:00 DS215j synoscgi_SYNO.SurveillanceStation.Camera_8_GetSnapshot[15020]: group_is_admin_group_member_by_uid.c:14 SYNOUserGetByUID(4294967295) failed [0x1D00 user_get_by_uid.c:129

是否存在身份验证问题

API第16页说错误105是“用户权限不足”。按照第14页所示的工作流程,您应该能够完成您想要的任务。尝试先调用登录方法(第21页),然后请求快照


这可能会有所帮助:每当您看到
GET/webapi/…
时,都可以将其更改为
http://MyNASip:5000/webapi/...
并使用浏览器发送请求。

获取快照的代码必须在访问快照之前从api获取路径、相机路径和SID。 以下是我的代码摘录(见下文)

这是我编写的php脚本的摘录,用于将所有调用连接到synology监视站API。 您可以抓取快照、mjpeg、开始-停止、发送邮件等

这是:


代码非常简单,请随意寻找灵感。

我意识到这是一个旧线程,但我只是遇到了一个类似的问题,并弄清楚了发生了什么。监视站应用程序有自己的用户帐户,这些帐户与NAS用户帐户分开。登录到监视站,并确保在那里设置了用户。

API第16页说,错误105是“用户权限不足”。您是否首先调用了第21页所述的登录方法?没有。我没有,也不知道该怎么做。我不了解Synology产品,我只是查看您链接到的API。按照第14页所示的工作流程,您应该能够完成您想要的任务。这可能会有所帮助:每当您看到
GET/webapi/…
时,都可以将其更改为
http://MyNASip:5000/webapi/...
并使用您的浏览器发送请求。谢谢您的提示,我会看看我能做些什么。@Paul这似乎很有效。添加它作为答复,我会让它得到答复。谢谢你给我指出了正确的方向。这不是对具体问题的回答,而是一条暗示解决问题方向的评论。请删除答案并发表评论。好吧,我是新来的,但当我想发表评论时,该系统说我必须有50个声誉才能发表评论……该帖子提供了一个真实的答案,你可以在其中回答OP的问题,并具体说明如何1)将回购协议纳入OP的项目,2)使用回购协议解决问题,并举几个例子。有用的答案,感谢@sebcbien发布实现此功能所需的步骤。特别有助于从PHP执行此操作的任何人,但通常其他人都可以阅读。
#!/usr/bin/python
import cookielib, urllib2

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
nas =  'url.synology.me'
dsm_url = 'https://'+nas+':8080'
username = 'user'
password = 'password'

opener.addheaders = [
        ('User-Agent', 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11'),
            ]
url1=dsm_url+'/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=1&account='+username+'&passwd='+password+'&session=SurveillanceStation&format=sid'
url3=dsm_url+'/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=GetSnapshot&version=1&cameraId=2&preview=true'
url4=dsm_url+'/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&account='+username+'&passwd='+password+'&session=SurveillanceStation'

opener.open(url1)

stream=opener.open(url3)
with open ('image.jpg','w') as f1: f1.write(stream.read())
opener.open(url4)
#!/usr/bin/python
import cookielib, urllib2

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
nas =  'url.synology.me'
dsm_url = 'https://'+nas+':8080'
username = 'user'
password = 'password'

opener.addheaders = [
        ('User-Agent', 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11'),
            ]
url1=dsm_url+'/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=1&account='+username+'&passwd='+password+'&session=SurveillanceStation&format=sid'
url3=dsm_url+'/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=GetSnapshot&version=1&cameraId=2&preview=true'
url4=dsm_url+'/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&account='+username+'&passwd='+password+'&session=SurveillanceStation'

opener.open(url1)

stream=opener.open(url3)
with open ('image.jpg','w') as f1: f1.write(stream.read())
opener.open(url4)