charley 1 周之前
父节点
当前提交
7a0d10dd34
共有 1 个文件被更改,包括 39 次插入 和 34 次删除
  1. 39 34
      zc_spider/zc_new_daily_spider.py

+ 39 - 34
zc_spider/zc_new_daily_spider.py

@@ -291,7 +291,12 @@ def get_player_single_page(log, act_id, token, page_num, page_size=PAGE_SIZE):
     :param page_size: 每页条数
     """
     log.debug(f"Getting player list for act_id: {act_id}, page: {page_num}")
-    url = f"{BASE_URL}/zc-api/act/actOrder/getActOrderPublicDetails"
+    # 2026/10/26 接口切换:getActOrderPublicDetails 返回行里没有 giveNumber / userName
+    # (它为 id/orderId/secretName/addTime/userId/user_name 那套字段),导致
+    # zc_player_record 的 give_number / user_name 长期写入 NULL。
+    # 实测 getUserDetailsCount 返回 rows 含 actId/giveNumber/userId/userName/userLogo/isAnonym,
+    # 与 parse_player_data 的取值字段完全对齐,故切换到此接口。
+    url = f"{BASE_URL}/zc-api/act/actOrder/getUserDetailsCount"
     request_data = {'actId': act_id, 'pageNum': page_num, 'pageSize': page_size}
     return make_encrypted_post_request(
         log, url, request_data,
@@ -634,38 +639,38 @@ def zc_main(log):
         time.sleep(5)
 
         # 获取player data - 遍历所有活动
-        try:
-            # 从 sold 表查询所有 actId
-            act_id_rows = sql_pool.select_all("SELECT pid FROM zc_product_record WHERE player_state != 1")
-            act_id_list = [row[0] for row in act_id_rows] if act_id_rows else []
-            log.info(f"查询到 {len(act_id_list)} 个活动ID")
-
-            for act_id in act_id_list:
-                try:
-                    # 先将当前 pid 的状态改为 1,表示开始查询
-                    sql_pool.update_one("UPDATE zc_product_record SET player_state = 1 WHERE pid = %s", (act_id,))
-                    log.info(f"将 pid: {act_id} 的状态更新为 1(开始查询)")
-
-                    log.info(f"开始爬取pid: {act_id} 的玩家数据")
-                    has_data = get_player_list(log, act_id, token, sql_pool)
-
-                    # 根据是否有数据更新状态
-                    if has_data:
-                        log.info(f"pid: {act_id} 查询到数据,状态保持为 1")
-                    else:
-                        log.info(f"pid: {act_id} 没有数据,状态更新为 2")
-                        sql_pool.update_one("UPDATE zc_product_record SET player_state = 2 WHERE pid = %s", (act_id,))
-
-                except Exception as pid_error:
-                    # 如果查询失败,将状态改为 3
-                    log.error(f"pid: {act_id} 查询失败,错误: {pid_error}")
-                    try:
-                        sql_pool.update_one("UPDATE zc_product_record SET player_state = 3 WHERE pid = %s", (act_id,))
-                        log.info(f"已将 pid: {act_id} 的状态更新为 3(查询异常)")
-                    except Exception as update_error:
-                        log.error(f"更新 pid: {act_id} 状态失败: {update_error}")
-        except Exception as e:
-            log.error(f'iterate_player_list error: {e}')
+        # try:
+        #     # 从 sold 表查询所有 actId
+        #     act_id_rows = sql_pool.select_all("SELECT pid FROM zc_product_record WHERE player_state != 1")
+        #     act_id_list = [row[0] for row in act_id_rows] if act_id_rows else []
+        #     log.info(f"查询到 {len(act_id_list)} 个活动ID")
+        #
+        #     for act_id in act_id_list:
+        #         try:
+        #             # 先将当前 pid 的状态改为 1,表示开始查询
+        #             sql_pool.update_one("UPDATE zc_product_record SET player_state = 1 WHERE pid = %s", (act_id,))
+        #             log.info(f"将 pid: {act_id} 的状态更新为 1(开始查询)")
+        #
+        #             log.info(f"开始爬取pid: {act_id} 的玩家数据")
+        #             has_data = get_player_list(log, act_id, token, sql_pool)
+        #
+        #             # 根据是否有数据更新状态
+        #             if has_data:
+        #                 log.info(f"pid: {act_id} 查询到数据,状态保持为 1")
+        #             else:
+        #                 log.info(f"pid: {act_id} 没有数据,状态更新为 2")
+        #                 sql_pool.update_one("UPDATE zc_product_record SET player_state = 2 WHERE pid = %s", (act_id,))
+        #
+        #         except Exception as pid_error:
+        #             # 如果查询失败,将状态改为 3
+        #             log.error(f"pid: {act_id} 查询失败,错误: {pid_error}")
+        #             try:
+        #                 sql_pool.update_one("UPDATE zc_product_record SET player_state = 3 WHERE pid = %s", (act_id,))
+        #                 log.info(f"已将 pid: {act_id} 的状态更新为 3(查询异常)")
+        #             except Exception as update_error:
+        #                 log.error(f"更新 pid: {act_id} 状态失败: {update_error}")
+        # except Exception as e:
+        #     log.error(f'iterate_player_list error: {e}')
     except Exception as e:
         log.error(f'{inspect.currentframe().f_code.co_name} error: {e}')
     finally:
@@ -677,7 +682,7 @@ def schedule_task():
     爬虫模块 定时任务 的启动文件
     """
     # 立即运行一次任务
-    zc_main(log=logger)
+    # zc_main(log=logger)
 
     # 设置定时任务
     schedule.every().day.at("06:01").do(zc_main, log=logger)