ybq_photo_oss.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. # from qcloudsms_py import SmsSingleSender
  2. # from qcloudsms_py.httpclient import HTTPError
  3. # from qcloudsms_py import SmsMultiSender
  4. import os
  5. import django
  6. import sys
  7. BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # 定位到你的django根目录
  8. sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir)))
  9. os.environ.setdefault("DJANGO_SETTINGS_MODULE",
  10. "yfwlw_pro.settings") # project_name 项目名称
  11. django.setup()
  12. import json
  13. import time
  14. import requests
  15. import datetime
  16. from apps.ReportManage.all_dict import mobile_list, insect_dict_new, qxz_dict
  17. from apps.AppInfoManage.models import Equip, Equip_type, YBQphoto, Msg_Send, Msg_Conf, Equip_SimInfo, SCDstatus, CBDstatus, RecentCBDdata, MyUser,YBQphoto, BZYdata, QXZstatus,QXZdata,\
  18. QXZstatus_New, QXZ_Conf, QXZ_Default_Conf, MyUser, JKphoto, BZYphoto, QXZdata_New, Group, CBDstatus_all, Alarm_record
  19. from apps.SimInfo.views import get_siminfo
  20. import paho.mqtt.client as mqtt
  21. # 短信应用 SDK AppID
  22. appid = 1400227496 # SDK AppID 以1400开头
  23. # 短信应用 SDK AppKey
  24. appkey = "c9aba961bd30072f1e1b9272077abaea"
  25. from requests.auth import HTTPBasicAuth
  26. import xlrd, xlwt
  27. import random
  28. from django.db import transaction
  29. from django.db.models import Q
  30. from django.db.models import Count
  31. import math
  32. import os
  33. import urllib.parse
  34. import urllib.request
  35. import re
  36. from collections import Counter
  37. import datetime
  38. import oss2
  39. import threadpool
  40. # i = CBDstatus.objects.get(equip_id="867814040037265")
  41. # for i in CBDstatus.objects.all():
  42. # print("--->>lng",i.lng)
  43. # print("--->>lat",i.lat)
  44. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  45. # auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  46. auth = oss2.Auth('LTAI4G7tFh5Nk4KXZoSPk1D8', 'RV4S2SfbLPoFNjlI4uIOoA0J1LQPQc')
  47. # Endpoint以杭州为例,其它Region请按实际情况填写。
  48. # bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  49. # bucket = oss2.Bucket(auth, 'https://cbdphoto.oss-cn-hangzhou.aliyuncs.com', 'cbdphoto')
  50. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'ybqpic')
  51. # # 必须以二进制的方式打开文件,因为需要知道文件包含的字节数。
  52. # with open('./1.jpg', 'rb') as fileobj:
  53. # # Seek方法用于指定从第1000个字节位置开始读写。上传时会从您指定的第1000个字节位置开始上传,直到文件结束。
  54. # fileobj.seek(1000, os.SEEK_SET)
  55. # # Tell方法用于返回当前位置。
  56. # current = fileobj.tell()
  57. # bucket.put_object('2.jpg', fileobj)
  58. # aa = bucket.put_object_from_file('10/112234.jpg', '112233.jpg')
  59. # print(aa)
  60. def TimeStampToTime(timestamp):
  61. timeStruct = time.localtime(timestamp)
  62. str_p = time.strftime('%Y-%m-%d %H:%M:%S',timeStruct)
  63. dateTime_p = datetime.datetime.strptime(str_p,'%Y-%m-%d %H:%M:%S')
  64. return dateTime_p
  65. def get_FileCreateTime(filePath):
  66. # filePath = unicode(filePath,'utf8')
  67. t = os.path.getctime(filePath)
  68. return TimeStampToTime(t)
  69. def oss_transpond(pic_addr_1):
  70. pic_addr = pic_addr_1.replace("../","")
  71. picname_1 = get_FileCreateTime(pic_addr_1)
  72. # print("文件时间为",picname_1)
  73. # now = datetime.datetime.now()
  74. addr = pic_addr.split("/")[-1]
  75. if len(addr) == 25:
  76. # print("长addr",addr)
  77. _time = addr.split("-")[1] + addr.split("-")[2]
  78. _time = _time.split(".")[0]
  79. print("------->>",len(_time))
  80. # print(_time)
  81. try:
  82. _time = datetime.datetime.strptime(_time,'%Y%m%d%H%M%S')
  83. except:
  84. print("时间转化错误alarm")
  85. print("----->>",addr)
  86. _time = picname_1
  87. # print("192.168的时间",pic_addr)
  88. print("------->>",_time)
  89. # if i.upl_time.hour != _time.hour:
  90. # i.upl_time = _time
  91. # i.save()
  92. else:
  93. print("其他addr",addr)
  94. print("其他",pic_addr)
  95. _time = get_FileCreateTime(pic_addr_1)
  96. # time.sleep(1)
  97. if _time.year == 1970:
  98. _time = get_FileCreateTime(pic_addr_1)
  99. strnow = datetime.datetime.strftime(_time,'%Y%m')
  100. picname = datetime.datetime.strftime(_time,'%Y%m%d%H%M%S')
  101. # # bucket_pic = bucket.put_object_from_file(strnow + '/' + imei + '/'+ picname + '.jpg', pic_addr_1)
  102. # print("图片数据库路径为pic_addr",pic_addr)
  103. # new_addr = "https://cbdpic.oss-cn-hangzhou.aliyuncs.com/" + strnow + '/' + imei + '/'+ picname + '.jpg'
  104. new_addr = "http://ybq.yfpyx.com/" + imei + '/' + strnow + '/'+ picname + '.jpg'
  105. exist = bucket.object_exists(imei + '/' + strnow + '/'+ picname + '.jpg')
  106. if exist:
  107. print('object exist')
  108. if YBQphoto.objects.filter(addr=pic_addr).exists():
  109. if YBQphoto.objects.filter(addr=new_addr).exists():
  110. pass
  111. else:
  112. # YBQphoto.objects.create(equip_id=equip_obj,addr=new_addr,upl_time=_time)
  113. YBQphoto.objects.filter(addr=pic_addr).update(addr=new_addr)
  114. # os.remove(pic_addr_1)
  115. print("图片删除成功")
  116. print("数据库创建链接成功")
  117. else:
  118. if YBQphoto.objects.filter(addr=new_addr).exists():
  119. pass
  120. else:
  121. YBQphoto.objects.create(equip_id=equip_obj,addr=new_addr,upl_time=_time,real_time=_time)
  122. # os.remove(pic_addr_1)
  123. print("图片删除成功")
  124. else:
  125. print('object not exist')
  126. bucket_pic = bucket.put_object_from_file(imei + '/' + strnow + '/'+ picname + '.jpg', pic_addr_1)
  127. print("----------->>>",bucket_pic)
  128. if YBQphoto.objects.filter(addr=pic_addr).exists():
  129. if YBQphoto.objects.filter(addr=new_addr).exists():
  130. pass
  131. else:
  132. # YBQphoto.objects.create(equip_id=equip, addr=img_addr,at=eval(data_obj.cbd_data)['at'],ah=eval(data_obj.cbd_data)['ah'])
  133. YBQphoto.objects.filter(addr=pic_addr).update(addr=new_addr)
  134. # os.remove(pic_addr_1)
  135. print("图片删除成功")
  136. else:
  137. if YBQphoto.objects.filter(addr=new_addr).exists():
  138. pass
  139. else:
  140. YBQphoto.objects.create(equip_id=equip_obj,addr=new_addr,upl_time=_time,real_time=_time)
  141. # os.remove(pic_addr_1)
  142. print("图片删除成功")
  143. # BZYphoto.objects.create(equip_id=imei,addr=new_addr,upl_time=picname)
  144. print("oss传输成功")
  145. # for obj in oss2.ObjectIterator(bucket, prefix='202009/865650042837720/'):
  146. # addr = "https://bzypic.oss-cn-hangzhou.aliyuncs.com/" + obj.key
  147. # if BZYphoto.objects.filter(addr=addr).exists():
  148. # print("照片存在")
  149. # else:
  150. # print("照片不存在")
  151. # print(addr)
  152. for x in Equip.objects.filter(equip_type=4):
  153. imei = x.equip_id
  154. equip_obj = x
  155. file_dir = "../pyftp/ftp_file/sex_photo1/%s"%imei
  156. for root, dirs, file in os.walk(file_dir):
  157. if file != [] and "jpg" in file[0]:
  158. # print("当前路径下所有非目录子文件>>",file)
  159. for i in file:
  160. pic_addr_1 = root + "/" + i
  161. pic_addr = pic_addr_1.replace("../","")
  162. picname_1 = get_FileCreateTime(pic_addr_1)
  163. # print("文件时间为",picname_1)
  164. # now = datetime.datetime.now()
  165. addr = pic_addr.split("/")[-1]
  166. if len(addr) == 25:
  167. # print("长addr",addr)
  168. _time = addr.split("-")[1] + addr.split("-")[2]
  169. _time = _time.split(".")[0]
  170. print("------->>",len(_time))
  171. # print(_time)
  172. try:
  173. _time = datetime.datetime.strptime(_time,'%Y%m%d%H%M%S')
  174. except:
  175. print("时间转化错误alarm")
  176. print("----->>",addr)
  177. _time = picname_1
  178. # print("192.168的时间",pic_addr)
  179. print("------->>",_time)
  180. # if i.upl_time.hour != _time.hour:
  181. # i.upl_time = _time
  182. # i.save()
  183. else:
  184. print("其他addr",addr)
  185. print("其他",pic_addr)
  186. _time = get_FileCreateTime(pic_addr_1)
  187. # time.sleep(1)
  188. if _time.year == 1970:
  189. _time = get_FileCreateTime(pic_addr_1)
  190. strnow = datetime.datetime.strftime(_time,'%Y%m')
  191. picname = datetime.datetime.strftime(_time,'%Y%m%d%H%M%S')
  192. # # bucket_pic = bucket.put_object_from_file(strnow + '/' + imei + '/'+ picname + '.jpg', pic_addr_1)
  193. # print("图片数据库路径为pic_addr",pic_addr)
  194. # new_addr = "https://cbdpic.oss-cn-hangzhou.aliyuncs.com/" + strnow + '/' + imei + '/'+ picname + '.jpg'
  195. new_addr = "http://ybq.yfpyx.com/" + imei + '/' + strnow + '/'+ picname + '.jpg'
  196. exist = bucket.object_exists(imei + '/' + strnow + '/'+ picname + '.jpg')
  197. if exist:
  198. print('object exist')
  199. if YBQphoto.objects.filter(addr=pic_addr).exists():
  200. if YBQphoto.objects.filter(addr=new_addr).exists():
  201. pass
  202. else:
  203. # YBQphoto.objects.create(equip_id=equip_obj,addr=new_addr,upl_time=_time)
  204. YBQphoto.objects.filter(addr=pic_addr).update(addr=new_addr)
  205. # os.remove(pic_addr_1)
  206. print("图片删除成功")
  207. print("数据库创建链接成功")
  208. else:
  209. if YBQphoto.objects.filter(addr=new_addr).exists():
  210. pass
  211. else:
  212. YBQphoto.objects.create(equip_id=equip_obj,addr=new_addr,upl_time=_time,real_time=_time)
  213. # os.remove(pic_addr_1)
  214. print("图片删除成功")
  215. else:
  216. print('object not exist')
  217. bucket_pic = bucket.put_object_from_file(imei + '/' + strnow + '/'+ picname + '.jpg', pic_addr_1)
  218. print("----------->>>",bucket_pic)
  219. if YBQphoto.objects.filter(addr=pic_addr).exists():
  220. if YBQphoto.objects.filter(addr=new_addr).exists():
  221. pass
  222. else:
  223. # YBQphoto.objects.create(equip_id=equip, addr=img_addr,at=eval(data_obj.cbd_data)['at'],ah=eval(data_obj.cbd_data)['ah'])
  224. YBQphoto.objects.filter(addr=pic_addr).update(addr=new_addr)
  225. # os.remove(pic_addr_1)
  226. print("图片删除成功")
  227. else:
  228. if YBQphoto.objects.filter(addr=new_addr).exists():
  229. pass
  230. else:
  231. YBQphoto.objects.create(equip_id=equip_obj,addr=new_addr,upl_time=_time,real_time=_time)
  232. # os.remove(pic_addr_1)
  233. print("图片删除成功")
  234. # BZYphoto.objects.create(equip_id=imei,addr=new_addr,upl_time=picname)
  235. print("oss传输成功")
  236. # if __name__ == '__main__':
  237. # data = []
  238. # for x in Equip.objects.filter(equip_type=4):
  239. # imei = x.equip_id
  240. # file_dir = "../pyftp/ftp_file/sex_photo1/%s"%imei
  241. # for root, dirs, file in os.walk(file_dir):
  242. # if file != [] and "jpg" in file[0]:
  243. # # print("当前路径下所有非目录子文件>>",file)
  244. # for i in file:
  245. # pic_addr_1 = root + "/" + i
  246. # data.append(pic_addr_1)
  247. # print("-------------->>",data[0:8])
  248. # pool = threadpool.ThreadPool(20)
  249. # req = threadpool.makeRequests(oss_transpond, data)
  250. # [pool.putRequest(req) for req in req]
  251. # pool.wait()