| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- # -*- coding: utf-8 -*-
- # Author : Charley
- # Python : 3.12.10
- # Date : 2026/8/3 15:36
- import sys
- from mysql_pool import MySQLConnectionPool
- import schedule
- import time
- from deca_daily_spider import do_request
- from deca_daily_spider import logger
- def main_task():
- logger.info(f"开始运行 {sys._getframe().f_code.co_name} 得卡采集任务" + "." * 40)
- sql_pool = MySQLConnectionPool(log=logger)
- if not sql_pool.check_pool_health():
- logger.error("数据库连接池异常")
- raise RuntimeError("数据库连接池异常")
- try:
- url = "/api/v1/app/home/recommend/groupbuy/list"
- data = {
- "page": 1,
- "pageSize": 20,
- "categoryParam": 0
- }
- response = do_request(logger, url, body=data)
- # print(response.json())
- # print(response)
- if response:
- seen = set()
- dict_list = []
- data_list = response.get("data", {}).get("list", [])
- for data in data_list:
- merchant = data.get("merchant", {})
- merchant_name = merchant.get("merchantName", "")
- if merchant_name != '魔都兄弟球星卡':
- continue
- product_code = data.get("code")
- if product_code in seen:
- continue
- seen.add(product_code)
- dict_list.append({
- # "merchant_user_id": merchant.get("merchantUserID", ""),
- "merchant_name": merchant_name,
- "product_code": product_code,
- "title": data.get("title"),
- "unit_price": data.get("unitPrice", 0),
- "card_count": data.get("cardCount", 0),
- "sold_count": data.get("soldCount", 0),
- })
- sql_pool.insert_many(table="deca_track_record", data_list=dict_list)
- except Exception as e:
- logger.error(f"{sys._getframe().f_code.co_name} error: {e}")
- finally:
- logger.info(f"得卡采集 {sys._getframe().f_code.co_name} 运行结束,等待下一轮" + "." * 20)
- def schedule_task():
- """定时任务入口:每天 09:00 与 15:00 各运行一次 main_task。"""
- # main_task() # 立即跑一次(调试时取消注释)
- schedule.every(1).minutes.do(main_task)
- while True:
- schedule.run_pending()
- time.sleep(1)
- if __name__ == '__main__':
- schedule_task()
|