#!/usr/bin/env python # -*- coding:utf-8 -*- from plugins import base from onvif import ONVIFCamera from urllib.request import urlretrieve from os import path import datetime class IPC(base.Base): def __init__(self, *args, **kwargs): base.Base.__init__(*args, **kwargs) self.host = kwargs['host'] self.port = kwargs['port'] self.user = kwargs['user'] self.password = kwargs['password'] self.image_dir = kwargs['image_dir'] self.wsdl_dir = '../resource/wsdl' if kwargs.__contains__('wsdl_dir') and kwargs['wsdl_dir'] != "": self.wsdl_dir = kwargs['wsdl_dir'] def exec(self): image_name = self.snapshot() analyze_result = self.analyze() return {'data': analyze_result, 'image': image_name} def snapshot(self): try: mycam = ONVIFCamera(self.host, self.port, self.user, self.password, self.wsdl_dir) media = mycam.create_media_service() profiles = media.GetProfiles() if len(profiles) < 1: return token = profiles[0]['token'] snapshot_detail = media.GetSnapshotUri(token) snapshot_url = snapshot_detail['url'] image_name = str(int(datetime.datetime.now().timestamp() * 1000)) + ".png" # download image via image url urlretrieve(snapshot_url, path.join(self.image_dir, image_name)) except Exception as e: return e return image_name def analyze(self): return {}