ipc.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. from plugins import base
  4. from onvif import ONVIFCamera
  5. from urllib.request import urlretrieve
  6. from os import path
  7. import datetime
  8. class IPC(base.Base):
  9. def __init__(self, *args, **kwargs):
  10. base.Base.__init__(*args, **kwargs)
  11. self.host = kwargs['host']
  12. self.port = kwargs['port']
  13. self.user = kwargs['user']
  14. self.password = kwargs['password']
  15. self.image_dir = kwargs['image_dir']
  16. self.wsdl_dir = '../resource/wsdl'
  17. if kwargs.__contains__('wsdl_dir') and kwargs['wsdl_dir'] != "":
  18. self.wsdl_dir = kwargs['wsdl_dir']
  19. def exec(self):
  20. image_name = self.snapshot()
  21. analyze_result = self.analyze()
  22. return {'data': analyze_result, 'image': image_name}
  23. def snapshot(self):
  24. try:
  25. mycam = ONVIFCamera(self.host, self.port, self.user, self.password, self.wsdl_dir)
  26. media = mycam.create_media_service()
  27. profiles = media.GetProfiles()
  28. if len(profiles) < 1:
  29. return
  30. token = profiles[0]['token']
  31. snapshot_detail = media.GetSnapshotUri(token)
  32. snapshot_url = snapshot_detail['url']
  33. image_name = str(int(datetime.datetime.now().timestamp() * 1000)) + ".png"
  34. # download image via image url
  35. urlretrieve(snapshot_url, path.join(self.image_dir, image_name))
  36. except Exception as e:
  37. return e
  38. return image_name
  39. def analyze(self):
  40. return {}