QiYue.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. """
  2. 七悦书城数据
  3. """
  4. import time
  5. from model import ComUtils
  6. import requests
  7. import json
  8. from model.DataBaseUtils import MysqlUtils
  9. from model.DateUtils import DateUtils
  10. from model.ComUtils import *
  11. import math
  12. from model.DateUtils import DateUtils
  13. import logging
  14. from urllib import parse
  15. from model.DingTalkUtils import DingTalkUtils
  16. from app.api_data.platform_order.order_util import *
  17. # logging.getLogger().setLevel(logging.WARNING)
  18. db = MysqlUtils()
  19. du = DateUtils()
  20. # 获取七悦订单数据
  21. def get_qiyue_order_task(start, end, account):
  22. """一分钟请求60次的限制"""
  23. order_list = []
  24. # 参数
  25. order_url = "https://a-api.zhangwenwenhua.com" + "/v1/orders"
  26. stage = account[0]
  27. token = account[1]
  28. size = 50
  29. freq = 0
  30. for date in du.getDateLists(start, end):
  31. page = 1
  32. while True:
  33. timestamp = int(time.time())
  34. url = order_url + "?" + "token=" + str(token) + "&timestamp=" + str(timestamp) + "&page=" + str(
  35. page) + "&size=" + str(size) + "&date=" + date
  36. rsp = requests.get(url=url)
  37. response_result_json = rsp.json()
  38. # print(response_result_json)
  39. # 无限制了
  40. # freq += 1
  41. # if freq == 59:
  42. # print("一分钟请求60次的限制 等待中")
  43. # time.sleep(61)
  44. # freq = 0
  45. code = response_result_json['code']
  46. if code != 0:
  47. print(stage, '七悦充值接口异常:', response_result_json)
  48. break
  49. result_data = response_result_json['data']
  50. total = result_data['total']
  51. if total <= 0:
  52. break
  53. order_item_list = result_data['data']
  54. for x in order_item_list:
  55. create_time = DateUtils.stamp_to_str(x['create_time'], '%Y-%m-%d %H:%M:%S')
  56. reg_time = DateUtils.stamp_to_str(x['user_create_time'], '%Y-%m-%d %H:%M:%S')
  57. order_list.append((
  58. create_time[:10],
  59. stage,
  60. '七悦',
  61. x['wechat_app_name'], # 公众号名称
  62. x['channel_id'],
  63. x['user_open_id'],
  64. create_time,
  65. reg_time, # 用户注册时间
  66. x['money'],
  67. x['book_name'],
  68. x['id'],
  69. x['state'],
  70. x['user_id'],
  71. x['wechat_app_id'],
  72. x['book_keywords'],
  73. x['type'],
  74. x['trade_no'],
  75. x['transaction_no']
  76. )
  77. )
  78. next_page_url = result_data['next_page_url']
  79. if next_page_url is None:
  80. break
  81. page += 1
  82. # print(len(order_list))
  83. print(f'{stage} [{start}-{end}] 有订单{order_list.__len__()}')
  84. # print(order_list)
  85. if order_list.__len__() > 0:
  86. save_order2(order_list)
  87. # 获取七悦用户信息
  88. def get_qiyue_user_info(account, date=None):
  89. order_url = "https://a-api.zhangwenwenhua.com" + "/v1/users"
  90. stage = account[0]
  91. token = account[1]
  92. page = 1
  93. size = 100
  94. freq = 0
  95. dt = "&date=" + date if date else ''
  96. li = []
  97. while True:
  98. timestamp = int(time.time())
  99. url = order_url + "?" + "token=" + str(token) + "&timestamp=" + str(timestamp) + "&page=" + str(
  100. page) + "&size=" + str(size) + "&date=" + dt
  101. r = requests.get(url=url).json()
  102. print(r)
  103. freq += 1
  104. if freq == 59:
  105. print("一分钟请求60次的限制 等待中")
  106. time.sleep(61)
  107. freq = 0
  108. if r['code'] != 0:
  109. print(r)
  110. continue
  111. # DingTalkUtils.send('七悦用户拉取接口错误'+r['msg'])
  112. for i in r['data']['data']:
  113. li.append(('七悦',
  114. i['id'],
  115. i['openid'],
  116. i['channel_id'],
  117. i['wechat_app_name'],
  118. i['wechat_app_id'],
  119. i['kandian'],
  120. i['free_kandian'],
  121. i['vip_endtime']
  122. ))
  123. if len(r['data']['data']) < size:
  124. break
  125. page += 1
  126. print(f"{stage} 有粉丝{len(li)}")
  127. if len(li) > 0:
  128. sql = "replace into platform_user_info values (%s,%s,%s,%s,%s,%s,%s,%s,%s)"
  129. db.quchen_text.executeMany(sql, li)
  130. if __name__ == '__main__':
  131. st = '2021-06-07'
  132. et = '2021-06-07'
  133. for account in get_account("七悦"):
  134. get_qiyue_order_task(st, et, account)
  135. # get_qiyue_user_info(account)