|
@@ -1,98 +0,0 @@
|
|
|
-#!/usr/bin/env python
|
|
|
-# -*- coding: utf-8 -*-
|
|
|
-"""
|
|
|
-get_data_hourly.py
|
|
|
-"""
|
|
|
-
|
|
|
-
|
|
|
-def get_zzy_order(st, et):
|
|
|
- time1 = time.time()
|
|
|
- API_list = al.zzy_account_list
|
|
|
- r = ()
|
|
|
-
|
|
|
- for x in API_list:
|
|
|
- my_key = x[0]
|
|
|
- secert = x[1]
|
|
|
- stage = x[2]
|
|
|
- my_sign = md5value(secert + 'key=' + my_key)
|
|
|
- url = 'https://openapi.818tu.com/partners/channel/channels/list?'
|
|
|
- parameter = 'key=' + my_key + '&sign=' + my_sign
|
|
|
- channel_list = requests.get(url + parameter) # 获取子渠道列表
|
|
|
-
|
|
|
- if 'data' in channel_list.json().keys():
|
|
|
- items = channel_list.json()['data']['items']
|
|
|
- elif len(x) > 3:
|
|
|
- my_key = x[3]
|
|
|
- secert = x[4]
|
|
|
- my_sign = md5value(secert + 'key=' + my_key)
|
|
|
- url = 'https://openapi.818tu.com/partners/channel/channels/list?'
|
|
|
- parameter = 'key=' + my_key + '&sign=' + my_sign
|
|
|
- channel_list = requests.get(url + parameter)
|
|
|
- items = channel_list.json()['data']['items']
|
|
|
- else:
|
|
|
- print(channel_list.json())
|
|
|
- items = []
|
|
|
-
|
|
|
- if items != []:
|
|
|
- for item in items: # 获取channel_id 后逐个拉取历史orders
|
|
|
- channel_id = item['id']
|
|
|
- channel = item['nickname']
|
|
|
- status = str(1)
|
|
|
- per_page = str(1000)
|
|
|
- limit_time = et
|
|
|
- get_time = st
|
|
|
- lt = parse.urlencode({'created_at[lt]': limit_time})
|
|
|
- gt = parse.urlencode({'created_at[gte]': get_time})
|
|
|
- url_1 = 'https://openapi.818tu.com/partners/channel/orders/list?'
|
|
|
- my_sign_1 = md5value(secert + 'channel_id=' + str(
|
|
|
- channel_id) + '&created_at[gte]=' + get_time + '&created_at[lt]=' + limit_time + '&key=' + my_key + '&per_page=' + per_page + '&status=' + status)
|
|
|
- parameter_1 = 'channel_id=' + str(
|
|
|
- channel_id) + '&' + gt + '&' + lt + '&per_page=' + per_page + '&status=' + status + '&key=' + my_key + '&sign=' + my_sign_1
|
|
|
- orders = requests.get(url_1 + parameter_1)
|
|
|
- t = orders.json()['data']['count'] // int(per_page) + 1
|
|
|
- for page in range(1, t + 1):
|
|
|
- my_sign_2 = md5value(secert + 'channel_id=' + str(
|
|
|
- channel_id) + '&created_at[gte]=' + get_time + '&created_at[lt]=' + limit_time + '&key=' + my_key + '&page=' + str(
|
|
|
- page) + '&per_page=' + per_page + '&status=' + status)
|
|
|
- parameter_2 = 'channel_id=' + str(channel_id) + '&' + gt + '&' + lt + '&page=' + str(
|
|
|
- page) + '&per_page=' + per_page + '&status=' + status + '&key=' + my_key + '&sign=' + my_sign_2
|
|
|
- orders_1 = requests.get(url_1 + parameter_2)
|
|
|
- b = orders_1.json()['data']['items']
|
|
|
-
|
|
|
- for a in b:
|
|
|
- c = {}
|
|
|
- c['user_id'] = str(a['member']['openid'])
|
|
|
- c['channel'] = channel
|
|
|
- c['reg_time'] = a['member']['created_at']
|
|
|
- c['channel_id'] = channel_id
|
|
|
- c['amount'] = round(a['price'] / 100, 2)
|
|
|
- c['order_id'] = str(a['id'])
|
|
|
- c['order_time'] = a['created_at']
|
|
|
- c['platform'] = '掌中云'
|
|
|
- dtime = datetime.datetime.strptime(a['created_at'][0:10], "%Y-%m-%d")
|
|
|
- c['date'] = ((int(time.mktime(dtime.timetuple())) + 8 * 3600) // 86400) * 86400 - 8 * 3600
|
|
|
- c['stage'] = stage
|
|
|
-
|
|
|
- if str(a['from_novel_id']) != 'None':
|
|
|
- c['from_novel'] = a['from_novel']['title']
|
|
|
- else:
|
|
|
- c['from_novel'] = 'None'
|
|
|
- """
|
|
|
- del[a['member']]
|
|
|
- del[a['referral_link_id']]
|
|
|
- del[a['id']]
|
|
|
- del[a['created_at']]
|
|
|
- del[a['paid_at']]
|
|
|
- del a['border_id']
|
|
|
- del a['from_novel_id']
|
|
|
- del a['status']
|
|
|
- del a['price']
|
|
|
- del a['agent_uid']
|
|
|
- """
|
|
|
- x = sorted(c.items(), key=lambda item: item[0])
|
|
|
- x = dict(x)
|
|
|
- x = tuple(x.values())
|
|
|
- r = r + ((x),)
|
|
|
- cost_time = round((time.time() - time1) / 60, 1)
|
|
|
- print('get_zzy_order:', len(r), 'cost_minutes:', cost_time)
|
|
|
- return r
|