|
@@ -291,7 +291,12 @@ def get_player_single_page(log, act_id, token, page_num, page_size=PAGE_SIZE):
|
|
|
:param page_size: 每页条数
|
|
:param page_size: 每页条数
|
|
|
"""
|
|
"""
|
|
|
log.debug(f"Getting player list for act_id: {act_id}, page: {page_num}")
|
|
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}
|
|
request_data = {'actId': act_id, 'pageNum': page_num, 'pageSize': page_size}
|
|
|
return make_encrypted_post_request(
|
|
return make_encrypted_post_request(
|
|
|
log, url, request_data,
|
|
log, url, request_data,
|
|
@@ -634,38 +639,38 @@ def zc_main(log):
|
|
|
time.sleep(5)
|
|
time.sleep(5)
|
|
|
|
|
|
|
|
# 获取player data - 遍历所有活动
|
|
# 获取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:
|
|
except Exception as e:
|
|
|
log.error(f'{inspect.currentframe().f_code.co_name} error: {e}')
|
|
log.error(f'{inspect.currentframe().f_code.co_name} error: {e}')
|
|
|
finally:
|
|
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)
|
|
schedule.every().day.at("06:01").do(zc_main, log=logger)
|