yuewen.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import time
  2. from model.DateUtils import DateUtils
  3. from model.ComUtils import md5
  4. import requests
  5. from model.ComUtils import split_int
  6. from app.api_data.platform_order.order_util import save_order
  7. from model.DingTalkUtils import DingTalkUtils
  8. ut = DateUtils()
  9. def get_yuewen_order_task(st, et, account):
  10. """相同参数一分钟只能调用一次"""
  11. email = account[0]
  12. appsecert = account[1]
  13. url = 'https://open.yuewen.com/cpapi/wxRecharge/querychargelog'
  14. start_time = DateUtils.str_to_stamp(st)
  15. # 结束时间不能超过当前的时间戳
  16. if et == ut.getNow():
  17. end_time = DateUtils.str_to_stamp(ut.get_n_minutes_ago(), "%Y-%m-%d %H:%M:%S")
  18. else:
  19. end_time = DateUtils.str_to_stamp(et) + 86399
  20. for i in split_int(start_time,end_time,10000):
  21. start = i[0]
  22. end = i[1]
  23. print(ut.stamp_to_str(end))
  24. page = 1
  25. last_min_id = ''
  26. last_max_id = ''
  27. total_count = ''
  28. last_page = ''
  29. li = []
  30. while True:
  31. params = {
  32. 'email': email,
  33. 'timestamp': int(time.time()),
  34. 'start_time': start,
  35. 'end_time': end,
  36. 'page': page,
  37. 'version':1
  38. }
  39. if page > 1:
  40. params['last_min_id'] = last_min_id
  41. params['last_max_id'] = last_max_id
  42. params['total_count'] = total_count
  43. params['last_page'] = last_page
  44. sorted_data = sorted(params.items())
  45. str_params = ''
  46. for k, v in sorted_data:
  47. str_params = str_params + str(k) + str(v)
  48. sign = md5(appsecert + str_params).upper()
  49. # 放入签名
  50. params['sign'] = sign
  51. # print(params)
  52. response_result_json = requests.get(url=url, params=params).json()
  53. # print(response_result_json)
  54. # print(len(response_result_json["data"]["list"]))
  55. if not response_result_json.get('data'):
  56. print(response_result_json)
  57. DingTalkUtils.send('阅文订单拉取失败')
  58. response_data = response_result_json['data']
  59. total_count = response_data['total_count']
  60. last_min_id = response_data['min_id']
  61. last_max_id = response_data['max_id']
  62. last_page = response_data['page']
  63. order_item_list = response_data['list']
  64. if len(order_item_list) == 0:
  65. break
  66. for i in order_item_list:
  67. order_time = i["order_time"]
  68. li.append((order_time[:10],
  69. '',
  70. '阅文',
  71. i['app_name'],
  72. i['channel_id'],
  73. i['openid'],
  74. i['order_time'],
  75. i['reg_time'],
  76. i['amount'],
  77. i['book_name'],
  78. i['order_id'],
  79. i['order_status']
  80. ))
  81. if len(order_item_list) < 100:
  82. break
  83. else:
  84. page += 1
  85. if len(li) > 0:
  86. print(f"{email} 有订单{len(li)}")
  87. save_order(li)
  88. if __name__ == '__main__':
  89. a = "guangzhouliuqi2@sina.com,10ce1dd6ccb330a82b73701d1e78f518"
  90. b = "mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee"
  91. get_yuewen_order_task('2021-05-28', '2021-05-28', a.split(','))