main.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import datetime
  2. import os
  3. import time
  4. from Utils.AccessToken import access_token
  5. from Utils.UserId import userid
  6. from Utils.JobId import jobid
  7. from Utils.HikAccessToken import hik_access_token
  8. from Utils.HikGetUserlist import hik_getuserlist
  9. from Utils.HikAdduser import hik_adduser
  10. from Utils.HikPermissionGroupsPersons import hik_permissiongroupspersons
  11. from Utils.HikAddcard import hik_addcard
  12. from Utils.Hik_isToken import hik_is_token
  13. import json
  14. def datetime_now():
  15. datetimenow = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
  16. return datetimenow
  17. with open("config.json") as f:
  18. data = json.load(f)
  19. appkey = data["appkey"]
  20. appsecret = data["appsecret"]
  21. client_id = data["client_id"]
  22. client_secret = data["client_secret"]
  23. groupId = data["groupId"]
  24. sleeptime = data["sleeptime"]
  25. #容器获取环境变量
  26. # appkey = os.getenv("appkey")
  27. # appsecret = os.getenv("appsecret")
  28. # client_id = os.getenv("client_id")
  29. # client_secret = os.getenv("client_secret")
  30. # groupId = os.getenv("groupId")
  31. # sleeptime = os.getenv("sleeptime")
  32. #获取Hik token
  33. hik_accesstoken = hik_access_token(client_id,client_secret)
  34. # print(hik_accesstoken)
  35. while True:
  36. #获取钉钉token
  37. ding_accesstoken = access_token(appkey,appsecret)
  38. print("%s,获取钉钉token成功"%datetime_now())
  39. #获取钉钉用户id
  40. ding_userid_list = userid(ding_accesstoken)
  41. print("%s,获取钉钉用户id成功"%datetime_now())
  42. #获取钉钉用户工号
  43. ding_jobidlists = jobid(ding_userid_list,ding_accesstoken)
  44. print("%s,获取钉钉用户工号成功"%datetime_now())
  45. #判断token是否有效
  46. hik_accesstoken = hik_is_token(hik_accesstoken,client_id,client_secret)
  47. # print(hik_accesstoken)
  48. #获取Hik 用户列表
  49. hik_userlists = hik_getuserlist(hik_accesstoken)
  50. # print(hik_userlists)
  51. #钉钉用户数据同步到海康云眸
  52. #查询出海康云眸里没有的钉钉jobid
  53. diff_value = set(ding_jobidlists) - set(hik_userlists)
  54. diff_value = list(diff_value)
  55. #删除jobid为空的
  56. j = 0
  57. for i in range(len(diff_value)):
  58. if diff_value[j] == "":
  59. diff_value.pop(j)
  60. else:
  61. j += 1
  62. if diff_value:
  63. print("%s,需要添加用户列表%s,共计%s个"%(datetime_now(),diff_value,len(diff_value)))
  64. #根据以上取出的jobid往海康云眸里添加用户
  65. for id in diff_value:
  66. name = ding_jobidlists[id]
  67. hik_adduser(hik_accesstoken,id,name)
  68. time.sleep(2)
  69. #根据以上取出的jobid在海康云眸里权限组绑定人员
  70. hik_permissiongroupspersons(hik_accesstoken,groupId,diff_value)
  71. #根据以上取出的jobid在海康云眸里创建卡片
  72. hik_addcard(hik_accesstoken,diff_value)
  73. else:
  74. print("%s,没有需要同步的人员"%datetime_now())
  75. time.sleep(int(sleeptime))