- Python 3.12
pip install -r requirements.txt
python main.py
- 将
depoly\deploy.py
中的项目名和项目地址修改为你的项目名和项目地址并上传至GitHub仓库根目录
- 将
deploy\install.yml
中MaaXXX修改为你的项目名并上传至GitHub仓库的.github/workflows
目录 - 推送新版本
- 在计划任务界面点击资源的添加按钮即可添加资源
- 每个资源可以有多个配置,互相独立
- 结束后操作可以选择启动其他资源中的某项配置文件
- 配合启动后执行任务可以实现多资源的无缝启动
- -r参数可接受资源名称 例如
python main.py -r resource1
或者MFW.exe -r resource1
- -c参数可接受配置文件名称 例如
python main.py -c config1
或者MFW.exe -c config1
- -d参数可以在运行后直接启动任务 例如
python main.py -d
或者MFW.exe -d
- 在
interface.json
文件中添加MFW_min_req_version
键,值为MFW的版本号
"MFW_min_req_version": "1.5.4"
- 添加后,如果MFW在更新时发现新资源中
MFW_min_req_version
的值大于当前MFW的版本号,则会停止更新并提示原因
- 在设置中可以启用
速通模式
- 启用后会跳过周期内已经运行过一次的任务
- 运行周期为资源开发者设置
- 如果设置了全局on_error(default_pipeline.json),需要打开对应node的
focus
为True
,任务进入on_error后会显示失败,且不记录时间 - 在interface文件中,格式为:
{
"task": [
{
"name": "每日任务",
"entry": "每日任务",
"periodic": 1, //每日任务
"daily_start": 4 //每天4点开始
},
{
"name": "每周任务",
"entry": "每周任务",
"periodic": 2, //每周任务
"weekly_start": 2, //每周二开始
"daily_start": 4 //每天4点开始
},
{
"name": "正常任务",
"entry": "正常任务"
}
]
}
- 目前支持 钉钉,飞书,SMTP,WxPusher 四种通知方式
- 需要启用对应node的
Focus
功能 - 在
pipeline
文件夹同级目录下新建focus_msg.json
文件 - 格式为
{
"node名": {
"focus_tip": "任务执行前显示在右侧的内容",
"focus_tip_color": "#000000",
"focus_succeeded": ["任务执行成功后显示在右侧的内容", "成功"],
"focus_succeeded_color": ["(0,255,0)", "(0,255,0,50)"],
"focus_failed": "任务执行失败后显示在右侧的内容",
"focus_failed_color": "red"
}
}
- 其中
node名
为pipeline中的节点名` - 如果希望通过
option
来控制focus
的显示,可以在option
-cases
中的对应选项内添加focus_msg_override
字段 - 格式为
{
"option": {
"选项组": {
"cases": [
{
"name": "选项",
"pipeline_override": {},
"focus_msg_override": {
"node名": {
"focus_tip": "任务执行前显示在右侧的内容",
"focus_tip_color": "#000000",
"focus_succeeded": ["任务执行成功后显示在右侧的内容", "成功"],
"focus_succeeded_color": ["(0,255,0)", "(0,255,0,50)"],
"focus_failed": "任务执行失败后显示在右侧的内容",
"focus_failed_color": "red"
}
}
}
]
}
}
}
- 什么是自定义动作/识别器
- 要求自定义动作/识别器使用python3.12
- 如果自定义动作/识别器中含有第三方库,需要将第三方库安装到
_internal
(windows和Macos)或者MFW-PyQt6根目录
(linux) - 将自定义动作/识别器文件按照要求命名和放置
- 要求的结构:这是例子
项目文件夹/custom/
├── action/
│ ├── 动作1
│ │ └── main.py
│ └── 动作2
│ └── main.py
└── Recognition/
├── 识别器1
│ └── main.py
└── 识别器2
└── main.py
- 其中,动作1,动作2,识别器1,识别器2为在pipeline中所使用的名字,比如
"我的自定义任务": {
"recognition": "Custom",
"custom_recognition": "识别器1",
"action": "Custom",
"custom_action": "动作1"
}
- main.py中要求对象名和文件夹相同,比如
class 识别器1(CustomRecognition):
def analyze(context, ...):
# 获取图片,然后进行自己的图像操作
image = context.tasker.controller.cached_image
# 返回图像分析结果
return AnalyzeResult(box=(10, 10, 100, 100))
- 编写
costom.json
并放置于custom文件夹内 - 这是一个例子
- 内容为
{
"动作名字1": {
"file_path": "{custom_path}/任意位置/任意名字_动作1.py",
"class": "动作对象1",
"type": "action"
},
"动作名字2": {
"file_path": "{custom_path}/任意位置/任意名字_动作1.py",
"class": "动作对象2",
"type": "action"
},
"识别器名字1": {
"file_path": "{custom_path}/任意位置/任意名字_识别器1.py",
"class": "识别器对象1",
"type": "recognition"
},
"识别器名字2": {
"file_path": "{custom_path}/任意位置/任意名字_识别器2.py",
"class": "识别器对象2",
"type": "recognition"
}
}
- 其中,动作名字1,动作名字2,识别器名字1,识别器名字2为在pipeline中所使用的名字,比如
"我的自定义任务": {
"recognition": "Custom",
"custom_recognition": "识别器名字1",
"action": "Custom",
"custom_action": "动作名字1"
}
- 动作对象1,动作对象2,识别器对象1,识别器对象2为python文件中定义的对象名,比如
class 动作对象1(CustomAction):
def apply(context,...):
# 获取图片,然后进行自己的图像操作
image = context.tasker.controller.cached_image
# 返回图像分析结果
- custom路径中的{custom_path}为MFW-PyQt6根目录中的custom文件夹
### Custom 程序配置
- 创建
./config/custom.json
- 内容为
{
"option1": {
"optionname": "option1",
"optiontype": "switch",
"optioncontent": false,
"text": {
"title": "开关",
"content": "这是一个开关"
}
},
"option2": {
"optionname": "option2",
"optiontype": "combox",
"optioncontent": [
"content1",
"content2",
"content3"
],
"text": {
"title": "下拉框",
"content": "这是一个下拉框"
}
},
"option3": {
"optionname": "option3",
"optiontype": "lineedit",
"optioncontent": "content3",
"text": {
"title": "输入框",
"content": "这是一个输入框"
}
}
}
- 处理后的数据会保存至
./config/custom_config.json
以供custom程序读取。
MFW-PyQt6 使用 GPL-3.0 许可证 开源。
- PyQt-Fluent-Widgets
A fluent design widgets library based on C++ Qt/PyQt/PySide. Make Qt Great Again. - MaaFramework
基于图像识别的自动化黑盒测试框架。 - MirrorChyan
Mirror酱更新服务
感谢所有为 MFW-PyQt6 做出贡献的开发者。