Parcourir la source

MOD:添加书城---阅文快应用

cxyu il y a 3 ans
Parent
commit
bd1c2f1420

+ 18 - 0
app/api_data/platform_order/get_order.py

@@ -5,6 +5,7 @@ from model.DingTalkUtils import DingTalkDecorators
 from app.api_data.platform_order.audio_qiyue import AudioQiyue
 from app.api_data.platform_order.youshuge import get_youshuge_order_task
 from app.api_data.platform_order.yuewen import get_yuewen_order_task
+from app.api_data.platform_order.yuewen_fast_app import get_yuewen_fast_app_order_task
 from app.api_data.platform_order.yangguang import yangguang
 from app.api_data.platform_order.QiYue import get_qiyue_order_task
 import logging
@@ -139,6 +140,23 @@ def yueweng(start=None, end=None):
     executor.shutdown()
     logging.info('阅文订单数据拉取,结束')
 
+@DingTalkDecorators("阅文快应用")
+def yueweng_fastapp(start=None, end=None):
+    logging.info('阅文快应用订单数据拉取,开始')
+    if start is None:
+        start = end = du.getNow()
+
+    executor = ThreadPoolExecutor(max_workers=5)
+    accounts = get_account("阅文快应用")
+    if len(accounts) == 0:
+        return
+    else:
+        logging.info(f'阅文快应用有账号{len(accounts)}个')
+    for account in accounts:
+        executor.submit(get_yuewen_fast_app_order_task, start, end, account)
+    executor.shutdown()
+    logging.info('阅文快应用订单数据拉取,结束')
+
 
 @DingTalkDecorators("七悦有声")
 def qiyueyousheng(start=None, end=None):

+ 2 - 2
app/api_data/platform_order/yangguang.py

@@ -235,7 +235,7 @@ def daily_yg():
 if __name__ == '__main__':
     # get_channel_info()
     # exit(0)
-    yangguang(start=du.get_n_days(-29), end=du.get_n_days(0))
+    yangguang(start=du.get_n_days(-2), end=du.get_n_days(0))
 
     # yangguang('2021-05-28','2021-05-28')
     # daily_yg()
@@ -246,4 +246,4 @@ if __name__ == '__main__':
     # parse_order_data()
     # get_channel_info()
     # yangguang(start=du.get_n_days(-1),end=du.get_n_days(0))
-    parse_order('29600', stage='趣程27期')
+    # parse_order('29600', stage='趣程27期')

+ 117 - 0
app/api_data/platform_order/yuewen_fast_app.py

@@ -0,0 +1,117 @@
+import time
+from model.DateUtils import DateUtils
+from model.ComUtils import md5
+import requests
+from model.ComUtils import split_int
+from app.api_data.platform_order.order_util import save_order
+from model.DingTalkUtils import DingTalkUtils
+
+ut = DateUtils()
+
+
+def get_yuewen_fast_app_order_task(st, et, account):
+    """相同参数一分钟只能调用一次"""
+    email = account[0]
+    appsecert = account[1]
+
+    url = 'https://open.yuewen.com/cpapi/wxRecharge/quickappchargelog'
+
+    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
+
+    for i in split_int(start_time, end_time, 10000):
+        print(i)
+        start = i[0]
+        end = i[1]
+
+        page = 1
+        last_min_id = ''
+        last_max_id = ''
+        total_count = ''
+        last_page = ''
+
+        li = []
+        while True:
+
+            params = {
+                'email': email,
+                'coop_type': 11,
+                'timestamp': int(time.time()),
+                'start_time': start,
+                'end_time': end,
+                '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)
+            rsp = requests.get(url=url, params=params)
+            print(rsp.text)
+            response_result_json=rsp.json()
+            print(response_result_json)
+            print(len(response_result_json["data"]["list"]))
+            if not response_result_json.get('data'):
+                DingTalkUtils().send('阅文订单拉取失败')
+
+            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],
+                           '',
+                           '阅文快应用',
+                           'fast_app_'+i['app_name'],
+                           '',
+                           i['openid'],  # 这部分可能要修改,openid对应的微信相关id
+                           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
+        print(li)
+        if len(li) > 0:
+            print(f"{email} 有订单{len(li)}")
+            save_order(li)
+
+
+if __name__ == '__main__':
+    a = "guangzhouliuqi2@sina.com,10ce1dd6ccb330a82b73701d1e78f518"
+    b = "mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee"
+    {"version": "1", "app_secret": "74ca754515fa253c8ab790603cebc2ee", "email": "mqud82950@163.com"}
+    a = 'mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee'
+    a = 'qucheng66qi@163.com,21a8345b00ef9e062c940887e0dbedb3'
+
+    get_yuewen_fast_app_order_task('2021-09-16', '2021-09-25', a.split(','))