This commit is contained in:
sjk
2026-01-17 13:11:40 +08:00
parent 3d402639da
commit a6326a8ccb
2 changed files with 31 additions and 4 deletions

View File

@@ -85,12 +85,16 @@ class MIPAdAutomation:
if not has_ad:
logger.info("未检测到商业广告,跳过该链接")
# 记录无广告
self._record_click_failure(url, "未检测到商业广告")
return False, False
# 点击广告
logger.info("检测到商业广告,准备点击")
if not self._click_advertisement(ad_element):
logger.warning("点击广告失败")
# 记录点击失败
self._record_click_failure(url, "广告点击失败,页面未跳转")
return False, False
# 记录点击到数据库
@@ -110,6 +114,11 @@ class MIPAdAutomation:
except Exception as e:
logger.error(f"处理链接异常: {str(e)}")
# 记录异常
try:
self._record_click_failure(url, f"异常: {str(e)}")
except:
pass
return False, False
finally:
# 尝试关闭当前标签页,返回主窗口

View File

@@ -18,14 +18,30 @@ from concurrent.futures import ThreadPoolExecutor, as_completed
from typing import List, Dict, Optional
import threading
# 配置日志(添加线程标识)
# 配置日志(添加线程标识 + 文件输出
logger.remove()
# 控制台输出
logger.add(
sys.stdout,
format="<green>{time:HH:mm:ss}</green> | <cyan>[{thread.name}]</cyan> | <level>{level: <8}</level> | <level>{message}</level>",
level="INFO"
)
# 文件输出
from pathlib import Path
log_dir = Path("./logs")
log_dir.mkdir(exist_ok=True)
logger.add(
log_dir / "db_tasks_{time:YYYY-MM-DD}.log",
format="{time:YYYY-MM-DD HH:mm:ss} | [{thread.name}] | {level: <8} | {message}",
level="INFO",
rotation="00:00", # 每天凌晨切割日志
retention="30 days", # 保留30天
encoding="utf-8"
)
class DatabaseTaskExecutor:
"""数据库任务执行器"""
@@ -45,13 +61,15 @@ class DatabaseTaskExecutor:
self.client = AdsPowerClient()
self.dm = DataManager()
# 创建截图目录
self.screenshot_dir = Path("./screenshots")
self.screenshot_dir.mkdir(exist_ok=True)
# 创建截图目录(按日期组织)
timestamp = datetime.now().strftime('%Y%m%d')
self.screenshot_dir = Path("./test") / f"batch_{timestamp}"
self.screenshot_dir.mkdir(parents=True, exist_ok=True)
logger.info(f"执行模式: {'并发' if max_workers > 1 else '串行'}")
logger.info(f"最大并发数: {max_workers}")
logger.info(f"使用代理: {use_proxy}")
logger.info(f"截图目录: {self.screenshot_dir}")
def get_active_tasks(self, limit: Optional[int] = None) -> List[Dict]:
"""