import time from model.DateUtils import DateUtils from model.ComUtils import md5 import requests from app.api_data.platform_order.order_util import save_order ut = DateUtils() def get_yuewen_order_task(st, et, account): """相同参数一分钟只能调用一次""" email = account[0] appsecert = account[1] url = 'https://open.yuewen.com/cpapi/wxRecharge/querychargelog' start_time = DateUtils.str_to_stamp(st) # 结束时间不能超过当前的时间戳 if et == ut.getNow(): end_time = DateUtils.str_to_stamp(ut.get_n_minutes_ago(), "%Y-%m-%d %H:%M:%S") else: end_time = DateUtils.str_to_stamp(et) + 86399 page = 1 last_min_id = '' last_max_id = '' total_count = '' last_page = '' li = [] while True: params = { 'email': email, 'timestamp': int(time.time()), 'start_time': start_time, 'end_time': end_time, 'page': page, 'version':1 } if page > 1: params['last_min_id'] = last_min_id params['last_max_id'] = last_max_id params['total_count'] = total_count params['last_page'] = last_page sorted_data = sorted(params.items()) str_params = '' for k, v in sorted_data: str_params = str_params + str(k) + str(v) sign = md5(appsecert + str_params).upper() # 放入签名 params['sign'] = sign # print(params) response_result_json = requests.get(url=url, params=params).json() # print(response_result_json) # print(len(response_result_json["data"]["list"])) response_data = response_result_json['data'] total_count = response_data['total_count'] last_min_id = response_data['min_id'] last_max_id = response_data['max_id'] last_page = response_data['page'] order_item_list = response_data['list'] if len(order_item_list) == 0: break for i in order_item_list: order_time = i["order_time"] li.append((order_time[:10], '', '阅文', i['app_name'], i['channel_id'], i['openid'], i['order_time'], i['reg_time'], i['amount'], i['book_name'], i['order_id'], i['order_status'] )) if len(order_item_list) < 100: break else: page += 1 if len(li) > 0: print(f"{email} 有订单{len(li)}") save_order(li) if __name__ == '__main__': a = "mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee" get_yuewen_order_task('2021-05-14', '2021-05-14', a.split(','))