Quellcode durchsuchen

update xc spider 2.26.1

charley vor 3 Wochen
Ursprung
Commit
d614014efc
1 geänderte Dateien mit 10 neuen und 7 gelöschten Zeilen
  1. 10 7
      xingchao_spider/xc_spider.py

+ 10 - 7
xingchao_spider/xc_spider.py

@@ -28,7 +28,7 @@ HEADERS = {
     # "sign": "3c5028da758dc416455f575334cadaab",
     # "x-token": "782a2174df1a19aa26904dad1d347c97",
     "client": "yingyongbao",
-    "appversion": "2.6.20",
+    "appversion": "2.1.10",
     # "nonce": "507060933e1e0585",
     "deviceid": "null",
     "jrd": "100d85590861f713a85",
@@ -441,6 +441,7 @@ def get_player_list(log, no, sql_pool, x_token):
     :param sql_pool:
     :param no:
     :param x_token:
+    :return: True表示成功获取并保存数据,False表示商品不存在或数据为空(状态已内部处理)
     """
     log.debug(f'-------------{inspect.currentframe().f_code.co_name}-- get {no} ---------------')
     url = "https://api.xingchao6.com/AppClient/v1/product/order/km/list/page"
@@ -477,7 +478,7 @@ def get_player_list(log, no, sql_pool, x_token):
         if response.json().get("code") == 500:
             log.error(f"{no}商品不存在, 更改状态为2..........")
             sql_pool.update_one("UPDATE xingchao_product_record SET player_stats = 2 WHERE no = %s", (no,))
-            break
+            return False
 
         data_list = resp_json.get("data", {}).get("list", [])
         if not data_list:
@@ -485,7 +486,7 @@ def get_player_list(log, no, sql_pool, x_token):
 
             # data_list为空  更改状态为3  未上传
             sql_pool.update_one("UPDATE xingchao_product_record SET player_stats = 3 WHERE no = %s", (no,))
-            break
+            return False
 
         player_data_list = []
         for item in data_list:
@@ -538,7 +539,7 @@ def get_player_list(log, no, sql_pool, x_token):
 
         if not next_id:
             logger.debug("next_id is not,  get_player_list end")
-            break
+            return True
 
         # 设置等待时间 避免查询太频繁
         time.sleep(random.uniform(0.5, 1))
@@ -732,12 +733,14 @@ def xc_main(log):
             sql_player_list = [i[0] for i in sql_player_list]
             for noid in sql_player_list:
                 try:
-                    get_player_list(log, noid, sql_pool, x_token)
+                    success = get_player_list(log, noid, sql_pool, x_token)
 
-                    # 保存完成  更改状态为1
-                    sql_pool.update_one("UPDATE xingchao_product_record SET player_stats = 1 WHERE no = %s", (noid,))
+                    # 只有成功获取并保存数据时才更改状态为1
+                    if success:
+                        sql_pool.update_one("UPDATE xingchao_product_record SET player_stats = 1 WHERE no = %s", (noid,))
                 except Exception as e:
                     log.error(f"Request get_player_list error: {e}")
+                    # 异常情况(包括token过期等)改为状态2
                     sql_pool.update_one("UPDATE xingchao_product_record SET player_stats = 2 WHERE no = %s", (noid,))
         except Exception as e:
             log.error(f"Request player list error: {e}")