李莎 2 yıl önce
ebeveyn
işleme
500eae5347
4 değiştirilmiş dosya ile 79 ekleme ve 43 silme
  1. 21 2
      Utils/Hik_Cloud.py
  2. 11 11
      Utils/Hik_iSecure.py
  3. 6 2
      config.json
  4. 41 28
      main.py

+ 21 - 2
Utils/Hik_Cloud.py

@@ -3,6 +3,7 @@ import math
 import requests
 import datetime
 import json
+import threading
 
 def datetime_now():
     datetimenow = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
@@ -14,8 +15,26 @@ class Hik_Cloud():
         self.host = host
         self.client_id = client_id
         self.client_secret = client_secret
-        self.get_token()
+        # self.get_token()
+        self.token = ""
+        flushTokenThread = threading.Thread(target=self.update_token)
+        flushTokenThread.start()
+        while 1:  # 等待第一次刷新token完成
+            if self.token:
+                break
+            time.sleep(1)
 
+    def update_token(self):
+        while 1:
+            try:
+                print("Hik_Cloud update token every 6 days")
+                self.get_token()
+                time.sleep(3600 * 24 * 6)
+            except Exception as e:
+                print("update token error: wait for 60 seconds")
+                time.sleep(60)
+
+    ###获取token  6天需要更新一次
     def get_token(self):
         path = "/oauth/token"
         base_headers = {
@@ -104,7 +123,7 @@ class Hik_Cloud():
             "employeeNos": employeeNos,
             "autoIssue": "true"
         }
-        response = self.post(self.host + path,headers,data)
+        response = self.post(self.host + path,data,headers)
         if response["code"] == 200:
             print("%s,海康云眸权限组绑定人员成功" % (datetime_now()))
         else:

+ 11 - 11
Utils/Hik_iSecure.py

@@ -24,22 +24,22 @@ class Hik_iSecure():
         self.appSecret = appSecret  # 秘钥appSecret
         self.get_token()
         # self.token = ""
-        # flushTokenThread = threading.Thread(target=self.update_token)
-        # flushTokenThread.start()
+        flushTokenThread = threading.Thread(target=self.update_token)
+        flushTokenThread.start()
         while 1:  # 等待第一次刷新token完成
             if self.token:
                 break
             time.sleep(1)
 
-    # def update_token(self):
-    #     while 1:
-    #         try:
-    #             print("update token every 11 hours")
-    #             self.get_token()
-    #             time.sleep(3600 * 11)
-    #         except Exception as e:
-    #             print("update token error: wait for 60 seconds")
-    #             time.sleep(60)
+    def update_token(self):
+        while 1:
+            try:
+                print("Hik_iSecure update token every 11 hours")
+                self.get_token()
+                time.sleep(3600 * 11)
+            except Exception as e:
+                print("update token error: wait for 60 seconds")
+                time.sleep(60)
 
     ###获取token  12小时需要更新一次
     def get_token(self):

+ 6 - 2
config.json

@@ -3,6 +3,10 @@
   "appKey": "25227103",
   "appSecret": "LMGm1LNhAE7zF6Alzqdz",
   "hik_host": "https://api2.hik-cloud.com",
-  "hik_client_id": "62015748440c4f3c83e41dd59a9c4876",
-  "hik_client_secret": "d6ff2fdd784a4572b7371398790a7eff"
+  "hik_client_id": "63871604cc874957a8a32b9504c5d107",
+  "hik_client_secret": "37a7467ccc7c443195f746039e5388c6",
+  "groupId": "4bca05cdd54d40dd9adbd23c2d91ede8",
+  "sleeptime": "7200"
+
+
 }

+ 41 - 28
main.py

@@ -1,4 +1,6 @@
 import json
+import time
+
 from Utils.Hik_iSecure import Hik_iSecure
 from Utils.Hik_Cloud import Hik_Cloud
 import datetime
@@ -14,35 +16,46 @@ with open("config.json") as f:
     hik_host = f_data["hik_host"]
     hik_client_id = f_data["hik_client_id"]
     hik_client_secret = f_data["hik_client_secret"]
+    groupId = f_data["groupId"]
+    sleeptime = f_data["sleeptime"]
+
+
+while True:
+    HikiSecure = Hik_iSecure(host, appKey, appSecret)
+    HikCloud = Hik_Cloud(hik_host,hik_client_id,hik_client_secret)
+
+    #获取海康安防系统人员列表
+    person_lists = HikiSecure.get_personlist()
+    print("%s,获取海康安防平台人员信息成功"%datetime_now())
+
+    #获取海康云眸人员列表
+    hik_person_list = HikCloud.hik_getuserlist()
+    #查询需要同步的人员
+    diff_value = set(person_lists)-set(hik_person_list)
+    if diff_value:
+        print("%s,需同步人员%s个" % (datetime_now(), len(diff_value)))
+        for employee in diff_value:
+            employeeNo = employee
+            personName = person_lists[employeeNo][0]
+            faceImageBase64 = person_lists[employeeNo][1]
+            #往海康云眸添加人员
+            print(employeeNo,personName)
+            HikCloud.hik_adduser(employeeNo,personName,faceImageBase64)
+
+        #获取海康安防系统人员卡片信息
+        cards = HikiSecure.get_card(diff_value)
+        print("%s,获取海康安防平台卡片信息成功"%datetime_now())
+
+        #往海康云眸添加卡片
+        HikCloud.hik_addcard(cards)
+
+        #海康云眸权限组绑定人员
+        HikCloud.hik_permissiongroupspersons(groupId,list(diff_value))
+    else:
+        print("%s 没有需要同步的人员信息"%datetime_now())
+
+    time.sleep(int(sleeptime))
 
-HikiSecure = Hik_iSecure(host, appKey, appSecret)
-HikCloud = Hik_Cloud(hik_host,hik_client_id,hik_client_secret)
-
-# #获取海康安防系统人员列表
-# person_lists = HikiSecure.get_personlist()
-# print("%s,获取海康安防平台人员信息成功"%datetime_now())
-#
-# #获取海康云眸人员列表
-# hik_person_list = HikCloud.hik_getuserlist()
-# diff_value = set(person_lists)-set(hik_person_list)
-# print("%s,需同步人员%s个"%(datetime_now(),len(diff_value)))
-diff_value = {"0415520418954944","012827393637629142","05310840651300429"}
-if diff_value:
-    # for employee in diff_value:
-    #     employeeNo = employee
-    #     personName = person_lists[employeeNo][0]
-    #     faceImageBase64 = person_lists[employeeNo][1]
-    #     #往海康云眸添加人员
-    #     HikCloud.hik_adduser(employeeNo,personName,faceImageBase64)
-
-    #获取海康安防系统人员卡片信息
-    cards = HikiSecure.get_card(diff_value)
-    print("%s,获取海康安防平台卡片信息成功"%datetime_now())
-
-    #往海康云眸添加卡片
-    HikCloud.hik_addcard(cards)
-    #海康云眸权限组绑定人员
-    HikCloud.hik_permissiongroupspersons(groupId,diff_value)