Files
aiData/Apps/YeLiTe/Opener.py
HuangHai f6fb2ab97f 'commit'
2026-01-17 07:21:21 +08:00

109 lines
3.1 KiB
Python

# coding=utf-8
import asyncio
import logging
import os
import time
import uiautomator2 as u2
import uuid
from Apps.YeLiTe.Kit import take_screenshot
from Apps.YeLiTe.ReadImageKit import ReadImageKit
from Config.Config import TEMP_IMAGE_DIR
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger("OpenYeLiTe")
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
async def check_and_close_ad(d):
"""
检测并关闭广告弹窗
"""
max_loops = 2
w, h = d.window_size()
device_info = {'displayWidth': w, 'displayHeight': h}
for loop_idx in range(max_loops):
logger.info(f"开始第 {loop_idx + 1} 轮广告检测...")
image_uuid = f"ylt_ad_check_{int(time.time())}"
screenshot_path = take_screenshot(d, image_uuid, save_dir=TEMP_IMAGE_DIR)
ad_result = await ReadImageKit.detect_ad_popup(screenshot_path, device_info=device_info)
if ad_result:
x, y = ad_result['x'], ad_result['y']
ad_type = ad_result.get("ad_type", "unknown")
logger.info(f"检测到广告 [{ad_type}],坐标: ({x}, {y}),执行关闭操作...")
d.click(x, y)
await asyncio.sleep(2.0)
if os.path.exists(screenshot_path): os.remove(screenshot_path)
else:
logger.info("未检测到广告弹窗。")
if os.path.exists(screenshot_path): os.remove(screenshot_path)
break
return True
async def open_mini_program():
"""
进入微信小程序: 驿来特
"""
d = u2.connect()
logger.info("执行进入小程序: 驿来特")
# 1. 启动微信
logger.info("启动微信...")
d.app_start("com.tencent.mm", stop=True)
await asyncio.sleep(5)
logger.info("点击搜索按钮...")
w, h = d.window_size()
d.click(int(w * 0.84), int(h * 0.08))
await asyncio.sleep(2)
logger.info("输入搜索内容: 驿来特")
try:
d.set_input_ime(True)
except Exception as e:
logger.warning(f"启用 FastInputIME 失败: {e}")
try:
search_bar_x, search_bar_y = int(w * 0.4), int(h * 0.08)
d.click(search_bar_x, search_bar_y)
await asyncio.sleep(1.5)
except Exception as e:
logger.warning(f"点击搜索框以获取焦点失败: {e}")
try:
d.send_keys("驿来特")
except Exception as e:
logger.warning(f"直接 send_keys 失败: {e}")
try:
d(focused=True).set_text("驿来特")
except Exception as e2:
logger.error(f"文字输入彻底失败: {e2}")
await asyncio.sleep(3)
try:
d.set_input_ime(False)
except Exception as e:
logger.warning(f"恢复系统输入法失败: {e}")
# 4. 点击搜索结果中的第一个小程序
logger.info("点击搜索结果中的小程序...")
d.click(int(w * 0.5), int(h * 0.18))
logger.info("等待小程序加载...")
await asyncio.sleep(10)
# 5. 广告检测
await check_and_close_ad(d)
return True
if __name__ == "__main__":
asyncio.run(open_mini_program())