savepic.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # -*- coding: utf-8 -*-
  2. """
  3. demeter web
  4. name:admin.py
  5. author:rabin
  6. """
  7. import time
  8. from demeter.core import *
  9. import oss2
  10. from itertools import islice
  11. from datetime import *
  12. timeSleep = 1800
  13. key = 'xinnongbaohe'
  14. host = 'oss-cn-shanghai.aliyuncs.com'
  15. appId = 'LTAIsuklCbkXzpgt'
  16. appSecret = 'M4d7xLxY0bVE034rTL84MEasG8Q8YZ'
  17. url = 'http://'+key+'.'+host+'/'
  18. auth = oss2.Auth(appId, appSecret)
  19. endpoint = 'http://' + host
  20. bucket = oss2.Bucket(auth, endpoint, key)
  21. fix = '.jpg'
  22. # 更改控制设备的超时状态
  23. class Savepic(object):
  24. def run(self):
  25. self.handle()
  26. time.sleep(timeSleep)
  27. def handle(self):
  28. pic()
  29. def pic():
  30. model = Demeter.model('device_info')
  31. model.hardware_type = 6
  32. data = model.select()
  33. if data:
  34. for value in data:
  35. if url in value['value']:
  36. prefix = value['value'].replace(url, '')
  37. prefix = prefix.replace(fix, '')
  38. ossLoad(value, prefix)
  39. def ossLoad(value, prefix, marker=''):
  40. #data = oss2.ObjectIterator(bucket, prefix=prefix)
  41. data = bucket.list_objects(prefix=prefix, marker=marker, max_keys=100)
  42. if data.is_truncated == True:
  43. ossLoad(value, prefix, data.next_marker)
  44. elif data.object_list:
  45. pics = []
  46. for v in data.object_list:
  47. pics.append((v.key, v.last_modified))
  48. for v in pics[-10:]:
  49. savePic(value, v[0], v[1])
  50. #oss2.resumable_download(bucket, 'remote.txt', 'local.txt')
  51. def savePic(value, file, cur):
  52. spic = url + file
  53. model = Demeter.model('device_pic')
  54. model.spic = spic
  55. data = model.select()
  56. if not data:
  57. day = str(date.today())
  58. day = day.split('-')
  59. file_name = spic
  60. file_path = day[0] + '/' + day[1] + '/' + day[2]
  61. file_path = File.mkdirs(os.path.join(Demeter.path, 'runtime','camera', file_path)) + '/' + Demeter.md5(file_name) + '.jpg'
  62. oss2.resumable_download(bucket, file, file_path)
  63. model.pic = file_path.replace(Demeter.path + 'runtime', '')
  64. model.spic = spic
  65. model.farm_id = value['farm_id']
  66. model.gateway_id = value['gateway_id']
  67. model.device_id = value['id']
  68. model.sdate = cur
  69. id = model.insert()
  70. if id:
  71. bucket.delete_object(file)
  72. #pic()