helper.py 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. import datetime
  2. import hashlib
  3. import json
  4. import platform
  5. # import time
  6. import requests
  7. from requests_futures.sessions import FuturesSession
  8. # from scrapy import Selector
  9. # from selenium import webdriver
  10. from hgg070_spider.conf.uid import UID as u_id, UID
  11. # from selenium.webdriver import FirefoxOptions
  12. fs_session = FuturesSession()
  13. import hashlib
  14. import json
  15. from requests_futures.sessions import FuturesSession
  16. from .langconv import *
  17. from .LocalToken import token
  18. class Helper(object):
  19. @staticmethod
  20. def changetime(params):
  21. if params.endswith('p'):
  22. p_time = params[-6:-1]
  23. if p_time.startswith('12'):
  24. us_time = params[:-1] + ":00"
  25. # print(us_time)
  26. # start_time = datetime.datetime.strptime(us_time, "%Y-%m-%d %H:%M:%S") + datetime.timedelta(
  27. # hours=12)
  28. # match_date = start_time.strftime("%Y-%m-%d %H:%M:%S").split(' ')[0]
  29. # match_time = start_time.strftime("%Y-%m-%d %H:%M:%S").split(' ')[1]
  30. else:
  31. params = params[:-1] + ':00'
  32. us_time = datetime.datetime.strptime(params, "%Y-%m-%d %H:%M:%S") + datetime.timedelta(
  33. hours=12)
  34. # start_time = us_time + datetime.timedelta(hours=12)
  35. # match_date = start_time.strftime("%Y-%m-%d %H:%M:%S").split(' ')[0]
  36. # match_time = start_time.strftime("%Y-%m-%d %H:%M:%S").split(' ')[1]
  37. us_time = us_time.strftime("%Y-%m-%d %H:%M:%S")
  38. # pass
  39. else:
  40. us_time = params[:-1] + ':00'
  41. # start_time = datetime.datetime.strptime(params, "%Y-%m-%d %H:%M:%S") + datetime.timedelta(
  42. # hours=12)
  43. # match_date = start_time.strftime("%Y-%m-%d %H:%M:%S").split(' ')[0]
  44. # match_time = start_time.strftime("%Y-%m-%d %H:%M:%S").split(' ')[1]
  45. return us_time
  46. @staticmethod
  47. def get(url, params):
  48. return requests.get(url, data={"data": json.dumps(params), "token": u_id['token']}, timeout=30)
  49. @staticmethod
  50. def post(url, params):
  51. return requests.post(url, data={"data": json.dumps(params), "token": u_id['token']}, timeout=30)
  52. @staticmethod
  53. def async_post(url, params):
  54. try:
  55. # print(u_id['token'])
  56. data = fs_session.post(url, data={"data": json.dumps(params), "token": u_id['token']}).result()
  57. # data = fs_session.post(url, data={"data": json.dumps(params), "token": "agxrI115617094865d15cbaecca9f"}, timeout=30).result()
  58. if data:
  59. response_data = json.loads(data.content.decode('utf-8'))
  60. # print(response_data)
  61. # token异常重新获取
  62. if response_data.get('status') == 10032:
  63. token = Helper.get_token()
  64. sys = platform.system()
  65. if sys == 'Windows':
  66. file_path = os.path.abspath(os.path.join(os.getcwd(), "..")) + "\\conf\\uid.py"
  67. else:
  68. file_path = os.path.abspath(os.path.join(os.getcwd(), "..")) + "/hgg070_spider/conf/uid.py"
  69. if os.path.exists(file_path):
  70. fs = open(file_path, 'w+')
  71. UID['token'] = token
  72. fs.write('UID={}'.format(UID))
  73. fs.close()
  74. data = fs_session.post(url, data={"data": json.dumps(params), "token": u_id['token']}).result()
  75. # data = fs_session.post(url, data={"data": json.dumps(params), "token": u_id['token']})
  76. return data.content.decode('utf-8')
  77. # return data
  78. except requests.exceptions.RequestException as e:
  79. print(e)
  80. @staticmethod
  81. def get_zip_data(list1, list2):
  82. if list1 and list2:
  83. if isinstance(list1, list) and isinstance(list2, list):
  84. return dict(zip(list1, list2))
  85. @staticmethod
  86. def get_token():
  87. cpath = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  88. with open(cpath + '/conf/settings.json', 'r', encoding='utf8') as f:
  89. data = json.load(f)
  90. token_url = data['token_url']
  91. username1 = data['username1']
  92. password1 = data['password1']
  93. r = requests.post(token_url, data={'account': username1, 'password': password1})
  94. token = r.json()['data']['token']
  95. return token
  96. @staticmethod
  97. def genearte_MD5(params):
  98. # 创建md5对象
  99. hl = hashlib.md5()
  100. hl.update(params.encode(encoding='utf-8'))
  101. # print('MD5加密前为 :' + params)
  102. # print('MD5加密后为 :' + hl.hexdigest())
  103. return hl.hexdigest()
  104. if __name__ == '__main__':
  105. import os
  106. print(os.path.abspath(os.path.join(os.getcwd(), "..")) + "\\conf\\uid.py")
  107. print(os.path.abspath(__file__))
  108. def async_post(url, params):
  109. fs_session = FuturesSession()
  110. t_url, t_user, t_password, t_token = token['token_url'], token['username'], token['password'], token['token']
  111. data = fs_session.post(url, data={"data": json.dumps(params), "token": t_token}, timeout=180).result()
  112. try:
  113. new_data = data.json()
  114. if new_data.get('status') == 6:
  115. t_data = fs_session.post(url=t_url, data={'account': t_user, 'password': t_password}).result()
  116. if t_data.json().get('status') == 1:
  117. g_token = t_data.json()['data']['token']
  118. token['token'] = g_token
  119. with open('./utils/LocalToken.py', 'w+', encoding='utf8') as f:
  120. f.write('token = {}'.format(token))
  121. except Exception as e:
  122. print(e)
  123. new_data = {"status": 0, "msg": "接口返回异常", "data": []}
  124. return new_data
  125. @staticmethod
  126. def genearte_MD5(params, pt):
  127. # 创建md5对象
  128. hl = hashlib.md5()
  129. pn = int(pt)
  130. if pn == 3:
  131. param = params + str(pt)
  132. else:
  133. param = params
  134. hl.update(param.encode(encoding='utf-8'))
  135. return hl.hexdigest()
  136. @staticmethod
  137. def genearte_uuid(params):
  138. # 简体
  139. line = Converter("zh-hans").convert(params).replace(' ', '')
  140. # 繁体
  141. # line = Converter("zh-hant").convert(params).replace(' ', '')
  142. hl = hashlib.md5()
  143. hl.update(line.encode(encoding='utf-8'))
  144. return hl.hexdigest()