Files
aiData/T3_AiTeJiYiChong.py

69 lines
2.2 KiB
Python
Raw Normal View History

2026-01-12 14:50:20 +08:00
# coding=utf-8
import sys
import os
import asyncio
2026-01-12 15:31:25 +08:00
import logging
2026-01-12 14:50:20 +08:00
2026-01-12 15:31:25 +08:00
# 将项目根目录添加到 sys.path
project_root = os.path.dirname(os.path.abspath(__file__))
if project_root not in sys.path:
sys.path.append(project_root)
2026-01-12 20:16:06 +08:00
try:
from Apps.AiTeJiYiChong.Service import AiTeJiYiChongService
from Apps.AiTeJiYiChong import Opener, Crawler, Kit
2026-01-14 07:37:15 +08:00
# 配置日志
logger = Kit.setup_logger("T2_AiTeJiYiChong", clear_old_log=True)
2026-01-12 20:16:06 +08:00
except KeyboardInterrupt:
2026-01-14 07:37:15 +08:00
print("\n🛑 用户在初始化阶段手动停止了程序。")
2026-01-12 20:16:06 +08:00
sys.exit(0)
except Exception as e:
2026-01-14 07:37:15 +08:00
print(f"❌ 初始化导入失败: {e}")
2026-01-12 20:16:06 +08:00
sys.exit(1)
2026-01-12 15:31:25 +08:00
async def run_process():
logger.info("=== 开始全流程任务 (艾特吉易充): 打开小程序 -> 爬取数据 ===")
# 步骤 0: 初始化基础服务
logger.info(">>> 步骤 0: 初始化基础服务 (数据库连接)...")
service = AiTeJiYiChongService()
await service.init_db()
2026-01-12 14:50:20 +08:00
try:
# 启动前清空临时目录
Kit.clear_temp_dir()
2026-01-12 15:31:25 +08:00
# 步骤 1: 打开小程序
logger.info(">>> 步骤 1: 启动 艾特吉易充 小程序...")
success = await Opener.open_mini_program()
if not success:
logger.error("❌ 无法成功打开小程序,任务终止。")
return
logger.info("✅ 小程序启动成功,等待 5 秒确保界面稳定...")
await asyncio.sleep(5)
# 步骤 2: 执行爬取任务
logger.info(">>> 步骤 2: 开始执行场站爬取任务...")
success = await Crawler.main(service=service, do_cleanup=False)
if not success:
logger.error("❌ 步骤 2 爬取任务失败。")
return
2026-01-12 14:50:20 +08:00
2026-01-12 15:31:25 +08:00
logger.info("✅ 爬取任务完成!")
2026-01-12 14:50:20 +08:00
except Exception as e:
2026-01-12 15:31:25 +08:00
logger.error(f"❌ 运行异常: {e}")
finally:
if service:
await service.close_db()
logger.info("=== 全流程任务结束 ===")
2026-01-12 14:50:20 +08:00
if __name__ == "__main__":
2026-01-12 15:31:25 +08:00
try:
asyncio.run(run_process())
except KeyboardInterrupt:
logger.info("\n🛑 用户手动停止了程序 (Ctrl+C)。")
except Exception as e:
logger.exception(f"主程序崩溃: {e}")