RLTApi.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. # 区域流量热力图基础数据服务接口说明0515
  12. ROOT_PATH = "https://yzh-wg.gdgov.cn/ebus"
  13. RLT_PASSID = "mmsyjglj_qyllrltdy"
  14. RLT_TOKEN = "f263d7f514724944b665bee64440ffb0"
  15. # 2.行政区划人流量查询接口
  16. def listPopulationNumberByRegion(regionCode: str = '4409'):
  17. url = ROOT_PATH + f'/qyllrlt/listPopulationNumberByRegion?regionCode={regionCode}&regionType=city&dataSource=4'
  18. logger.info('rltapi get: {}', url)
  19. # payload = f"regionCode={regionCode}&regionType=city&dataSource=4"
  20. return __get_url(url)
  21. # 3.行政区划人口热力查询接口
  22. def listPopulationHeatByRegion(regionCode: str = '4409'):
  23. url = ROOT_PATH + f'/qyllrlt/listPopulationHeatByRegion?regionCode={regionCode}&regionType=city&dataSource=4'
  24. logger.info('rltapi get: {}', url)
  25. # payload = f"regionCode={regionCode}&regionType=city&dataSource=4"
  26. return __get_url(url)
  27. def __get_url(url: str, payload: str=''):
  28. # print(payload)
  29. timestamp = str(int(time.time()))
  30. nonce = ranstr(20)
  31. signature = calcResponseSign(timestamp, RLT_TOKEN, nonce)
  32. headers = {
  33. "x-rio-signature": signature,
  34. "x-rio-timestamp": timestamp,
  35. "x-rio-nonce": nonce,
  36. "x-rio-paasid": RLT_PASSID,
  37. "Content-Type": 'application/x-www-form-urlencoded',
  38. "x-datax-code": "dss-qyrkrlzp",
  39. "x-datax-passid": "qyllrlt"
  40. }
  41. print(headers)
  42. urllib3.disable_warnings()
  43. response = requests.get(url, headers=headers, data=payload, verify=False)
  44. if response.status_code == 200:
  45. logger.info('rltapi return: {}', response.text)
  46. result = response.json()
  47. if result['status'] == 0:
  48. return result['data']
  49. return AppException(result['status'], result['msg'])
  50. else:
  51. logger.info('rltapi return: {}, {}', response.status_code, response.text)
  52. result = response.json()
  53. raise AppException(response.status_code, result['desc'])