main.py 3.0 KB

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