123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- """
- 七悦书城数据
- """
- import time
- from model import ComUtils
- import requests
- import json
- from model.DataBaseUtils import MysqlUtils
- from model.DateUtils import DateUtils
- from model.ComUtils import *
- import math
- from model.DateUtils import DateUtils
- import logging
- from urllib import parse
- from model.DingTalkUtils import DingTalkUtils
- from app.api_data.platform_order.order_util import *
- logging.getLogger().setLevel(logging.WARNING)
- db = MysqlUtils()
- du = DateUtils()
- # 获取七悦订单数据
- def get_qiyue_order_task(start, end, account):
- """一分钟请求60次的限制"""
- order_list = []
- # 参数
- order_url = "https://api.zhangwenwenhua.com" + "/v1/orders"
- stage = account[0]
- token = account[1]
- size = 50
- freq = 0
- for date in du.getDateLists(start, end):
- page = 1
- while True:
- timestamp = int(time.time())
- url = order_url + "?" + "token=" + str(token) + "×tamp=" + str(timestamp) + "&page=" + str(
- page) + "&size=" + str(size) + "&date=" + date
- rsp = requests.get(url=url)
- response_result_json = rsp.json()
- # print(response_result_json)
- freq += 1
- if freq == 59:
- print("一分钟请求60次的限制 等待中")
- time.sleep(61)
- freq = 0
- code = response_result_json['code']
- if code != 0:
- print(stage, '七悦充值接口异常:', response_result_json)
- break
- result_data = response_result_json['data']
- total = result_data['total']
- if total <= 0:
- break
- order_item_list = result_data['data']
- for x in order_item_list:
- create_time = DateUtils.stamp_to_str(x['create_time'], '%Y-%m-%d %H:%M:%S')
- reg_time = DateUtils.stamp_to_str(x['user_create_time'], '%Y-%m-%d %H:%M:%S')
- order_list.append((
- create_time[:10],
- stage,
- '七悦',
- x['wechat_app_name'], # 公众号名称
- x['channel_id'],
- x['user_open_id'],
- create_time,
- reg_time, # 用户注册时间
- x['money'],
- x['book_name'],
- x['id'],
- x['state'],
- x['id'],
- x['user_id'],
- x['wechat_app_id'],
- x['book_keywords'],
- x['type'],
- x['trade_no'],
- x['transaction_no']
- )
- )
- next_page_url = result_data['next_page_url']
- if next_page_url is None:
- break
- page += 1
- # print(len(order_list))
- print(f'{stage} [{start}-{end}] 有订单{order_list.__len__()}')
- # print(order_list)
- if order_list.__len__() > 0:
- save_order2(order_list)
- # 获取七悦用户信息
- def get_qiyue_user_info(account):
- order_url = "https://api.zhangwenwenhua.com" + "/v1/users"
- stage = account[0]
- token = account[1]
- page = 1
- size = 100
- freq = 0
- li = []
- while True:
- timestamp = int(time.time())
- url = order_url + "?" + "token=" + str(token) + "×tamp=" + str(timestamp) + "&page=" + str(
- page) + "&size=" + str(size)
- r = requests.get(url=url).json()
- # print(r)
- freq += 1
- if freq == 59:
- print("一分钟请求60次的限制 等待中")
- time.sleep(61)
- freq = 0
- if r['code'] != 0:
- print(r)
- continue
- # DingTalkUtils.send('七悦用户拉取接口错误'+r['msg'])
- for i in r['data']['data']:
- li.append(('七悦',
- i['id'],
- i['openid'],
- i['channel_id'],
- i['wechat_app_name'],
- i['wechat_app_id'],
- i['kandian'],
- i['free_kandian'],
- i['vip_endtime']
- ))
- if len(r['data']['data']) < size:
- break
- page += 1
- print(f"{stage} 有粉丝{len(li)}")
- if len(li)>0:
- sql="replace into platform_user_info values (%s,%s,%s,%s,%s,%s,%s,%s,%s)"
- db.quchen_text.executeMany(sql,li)
- if __name__ == '__main__':
- st ='2020-11-01'
- et ='2021-01-01'
- db.quchen_text.execute(f'DELETE from ods_order where platform="七悦" and date>="{st}" and date<="{et}"')
- for account in get_account("七悦"):
- get_qiyue_order_task(st, et, account)
- # get_qiyue_user_info(account)
|