WRJApi.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. import requests
  4. import time
  5. from utils.sg_auth import calcResponseSign, ranstr
  6. from extensions import logger
  7. import urllib3
  8. from exceptions import AppException
  9. # 无人机API
  10. # 广东省政务领域无人机管理平台开放接口文档
  11. ROOT_PATH = "https://yzh-wg.gdgov.cn/ebus"
  12. WRJ_PASSID = "mmyjglj_wrjdy"
  13. WRJ_TOKEN = "757ebd126c02470c91c3f02745bee7ed"
  14. # 2.1.获取无人机清单
  15. def roughTimeStatus(addressAreaId: str = '4407'):
  16. url = ROOT_PATH + '/swrj/open/uavReal/roughTimeStatus'
  17. logger.info('wrjapi get: {}', url)
  18. payload = f"addressAreaId={addressAreaId}"
  19. return __get_url(url, payload)
  20. # 2.2.获取飞行中无人机清单
  21. def flyUavInfo(addressAreaId: str = '4407'):
  22. url = ROOT_PATH + '/swrj/open/uavReal/flyUavInfo'
  23. logger.info('wrjapi get: {}', url)
  24. payload = f"addressAreaId={addressAreaId}"
  25. return __get_url(url, payload)
  26. # 5.1.获取无人机实时飞行信息
  27. def getRealInfo(SN: str):
  28. url = ROOT_PATH + '/swrj/open/uavReal/getRealInfo'
  29. logger.info('wrjapi get: {}', url)
  30. payload = f"SN={SN}"
  31. return __get_url(url, payload)
  32. def __get_url(url: str, payload: str):
  33. print(payload)
  34. timestamp = str(int(time.time()))
  35. nonce = ranstr(20)
  36. signature = calcResponseSign(timestamp, WRJ_TOKEN, nonce)
  37. headers = {
  38. "x-rio-signature": signature,
  39. "x-rio-timestamp": timestamp,
  40. "x-rio-nonce": nonce,
  41. "x-rio-paasid": WRJ_PASSID,
  42. "Content-Type": 'application/x-www-form-urlencoded',
  43. "sign-uav": "2ajk3d9w8qvncp8t5ekjqq" # 粤政易用户省统id, 业主id
  44. }
  45. urllib3.disable_warnings()
  46. response = requests.get(url, headers=headers, data=payload, verify=False)
  47. # logger.info('wrjapi return: {}', response.text)
  48. if response.status_code == 200:
  49. result = response.json()
  50. if result['code'] == 0:
  51. return result['data']
  52. return AppException(result['code'], result['message'])
  53. raise AppException(1, '网络异常')