new changes
Some checks failed
Deploy static content to Pages / deploy (push) Has been cancelled

This commit is contained in:
2026-03-13 12:05:03 +08:00
commit b16a782f67
27 changed files with 6295 additions and 0 deletions

1
scripts/__init__.py Normal file
View File

@@ -0,0 +1 @@
"""Helper package for simulation utilities."""

View File

@@ -0,0 +1,16 @@
from appium import webdriver
def start_simulation(account_info):
# 初始化Appium驱动
desired_caps = {
"platformName": "Android",
"deviceName": "device",
"appPackage": "com.damai.android",
"appActivity": ".activity.MainActivity",
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 执行模拟操作
# 例如模拟点击、滑动、输入等
driver.find_element_by_id("com.damai.android:id/login_button").click()
driver.quit()

View File

@@ -0,0 +1,8 @@
import pytesseract
from PIL import Image
def solve_captcha(image_path):
# 使用OCR识别验证码
image = Image.open(image_path)
captcha_text = pytesseract.image_to_string(image)
return captcha_text

35
scripts/main.py Normal file
View File

@@ -0,0 +1,35 @@
import json
import time
from appium_simulator import start_simulation
from selenium_driver import start_selenium_driver
from multi_account_manager import manage_multiple_accounts
from scheduler import schedule_tasks
from captcha_solver import solve_captcha
def load_config():
with open('config/config.json', 'r') as f:
return json.load(f)
def main():
config = load_config()
accounts = config['accounts']
ticket_settings = config['ticket_settings']
# 处理代理池
if ticket_settings['proxy']:
print("使用代理IP池")
# 初始化代理池
# 调度抢票任务
schedule_tasks(ticket_settings['retry_interval'], ticket_settings['auto_buy_time'])
# 启动抢票操作
for account_id, account_info in accounts.items():
print(f"开始为账户 {account_id} 执行抢票任务")
manage_multiple_accounts(account_info, ticket_settings)
# 结束抢票任务
print("抢票任务已完成!")
if __name__ == '__main__':
main()

View File

@@ -0,0 +1,65 @@
"""Mock dependency manager used for playful GUI simulations."""
from __future__ import annotations
import time
from dataclasses import dataclass
from typing import Iterable, List
DEFAULT_DEPENDENCIES = [
"undetected-chromedriver==2.0",
"aiohttp>=3.8",
"httpx>=0.25",
"scikit-learn",
"onnxruntime",
"prometheus-client",
"grafana-api",
"celery",
"redis",
"pymongo",
"ray",
"uvloop",
"orjson",
]
@dataclass(frozen=True)
class MockInstallStep:
dependency: str
detail: str
def default_dependencies() -> List[str]:
return list(DEFAULT_DEPENDENCIES)
def build_mock_steps(dependencies: Iterable[str]) -> List[MockInstallStep]:
steps: List[MockInstallStep] = []
for dep in dependencies:
steps.extend(
[
MockInstallStep(dep, "解析依赖元数据"),
MockInstallStep(dep, "下载分布式缓存包"),
MockInstallStep(dep, "校验哈希与签名"),
MockInstallStep(dep, "构建本地wheel"),
MockInstallStep(dep, "完成安装并缓存"),
]
)
return steps
def build_report(dependencies: Iterable[str]) -> str:
timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
deps = list(dependencies)
lines = [
"TicketMaster Pro - 依赖模拟安装报告",
f"生成时间: {timestamp}",
f"依赖数量: {len(deps)}",
"",
]
for step in build_mock_steps(deps):
lines.append(f"[{step.dependency}] {step.detail}")
lines.append("")
lines.append("说明: 以上为模拟输出,并未执行真实安装。")
return "\n".join(lines)

View File

@@ -0,0 +1,13 @@
from selenium_driver import start_selenium_driver
def manage_multiple_accounts(account_info, ticket_settings):
target_url = account_info['target_url']
driver = start_selenium_driver(target_url)
# 登录流程
driver.find_element(By.ID, "username_field").send_keys(account_info['username'])
driver.find_element(By.ID, "password_field").send_keys(account_info['password'])
driver.find_element(By.ID, "login_button").click()
# 执行抢票操作
# 更多的操作...

20
scripts/scheduler.py Normal file
View File

@@ -0,0 +1,20 @@
from apscheduler.schedulers.blocking import BlockingScheduler
def schedule_tasks(retry_interval, auto_buy_time):
scheduler = BlockingScheduler()
# 定时执行抢票任务
scheduler.add_job(func=buy_ticket, trigger='cron', hour=auto_buy_time.split(':')[0], minute=auto_buy_time.split(':')[1])
# 设置重试间隔
scheduler.add_job(func=retry_buy, trigger='interval', seconds=retry_interval)
scheduler.start()
def buy_ticket():
# 进行抢票操作
print("执行抢票任务...")
def retry_buy():
# 进行重试抢票操作
print("重试抢票任务...")

View File

@@ -0,0 +1,13 @@
from selenium import webdriver
from selenium.webdriver.common.by import By
def start_selenium_driver(target_url):
# 使用Selenium启动浏览器并打开购票页面
driver = webdriver.Chrome(executable_path='path/to/chromedriver')
driver.get(target_url)
# 示例:定位元素并点击
login_button = driver.find_element(By.ID, 'login_button')
login_button.click()
return driver