forked from hhj/subscript_template
init project
This commit is contained in:
commit
6a4904ebb3
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
__pycache__
|
13
README.md
Normal file
13
README.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# 小新记账订阅模板
|
||||||
|
|
||||||
|
### 规则编写
|
||||||
|
APP对应规则写在apps目录下
|
||||||
|
|
||||||
|
- 文件名格式为包名点分割末尾字符
|
||||||
|
|
||||||
|
### 生成订阅JSON文件
|
||||||
|
```
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
生成完毕之后目标JSON文件在`dist`目录,文件名格式为`${VERSION}.json`
|
29
apps/hhjapp.py
Normal file
29
apps/hhjapp.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
hhjapp = {
|
||||||
|
"packageName": "tech.cqxqg.hhjapp",
|
||||||
|
"name": "小新记账",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"key": 0,
|
||||||
|
"selector": "[text='记账']",
|
||||||
|
"action": "click",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": 1,
|
||||||
|
"selector": "[desc='备注'] + Button + EditText",
|
||||||
|
"action": "click",
|
||||||
|
"actionDelay": 50,
|
||||||
|
"activityId": "tech.cqxqg.hhjapp.MainActivity",
|
||||||
|
"classId": "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": 2,
|
||||||
|
"selecotr": "[desc='备注'] + Button + EditText]",
|
||||||
|
"preAction": 1,
|
||||||
|
"action": "setText",
|
||||||
|
"args": "自动填充内容",
|
||||||
|
"activityId": "tech.cqxqg.hhjapp.MainActivity",
|
||||||
|
"classId": "",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
32
dist/0.0.1_alpha.json
vendored
Normal file
32
dist/0.0.1_alpha.json
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"version": "0.0.1_alpha",
|
||||||
|
"apps": {
|
||||||
|
"hhjapp": {
|
||||||
|
"hhjapp": {
|
||||||
|
"packageName": "tech.cqxqg.hhjapp",
|
||||||
|
"name": "小新记账",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"key": 0,
|
||||||
|
"selector": "[text='记账']",
|
||||||
|
"action": "click"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": 1,
|
||||||
|
"selector": "[desc='备注'] + Button + EditText",
|
||||||
|
"action": "click",
|
||||||
|
"actionDelay": 50
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": 2,
|
||||||
|
"selecotr": "[desc='备注'] + Button + EditText]",
|
||||||
|
"preAction": 1,
|
||||||
|
"action": "setText",
|
||||||
|
"args": "自动填充内容"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
30
main.py
Normal file
30
main.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import os
|
||||||
|
import json
|
||||||
|
from subscription import get_subscription, version
|
||||||
|
|
||||||
|
|
||||||
|
targetFile = "dist/%s.json" % version
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print(
|
||||||
|
"""
|
||||||
|
------------------------------------------------------
|
||||||
|
\tGenerating subscription.json
|
||||||
|
------------------------------------------------------
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
os.makedirs(os.path.dirname(targetFile), exist_ok=True)
|
||||||
|
with open(targetFile, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(get_subscription(), f, ensure_ascii=False, indent=4)
|
||||||
|
print(
|
||||||
|
"""
|
||||||
|
------------------------------------------------------
|
||||||
|
\tDone
|
||||||
|
------------------------------------------------------
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
47
subscription.py
Normal file
47
subscription.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import importlib.util
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
version = "0.0.1_alpha"
|
||||||
|
|
||||||
|
|
||||||
|
def get_subscription():
|
||||||
|
apps_folder = "apps"
|
||||||
|
apps = get_global_vars_from_apps(apps_folder)
|
||||||
|
return {
|
||||||
|
"version": version,
|
||||||
|
"apps": apps,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_global_vars_from_apps(apps_folder):
|
||||||
|
global_vars = {}
|
||||||
|
|
||||||
|
for filename in os.listdir(apps_folder):
|
||||||
|
if filename.endswith(".py"):
|
||||||
|
module_name = filename[:-3]
|
||||||
|
file_path = os.path.join(apps_folder, filename)
|
||||||
|
|
||||||
|
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
||||||
|
module = importlib.util.module_from_spec(spec)
|
||||||
|
spec.loader.exec_module(module)
|
||||||
|
|
||||||
|
module_globals = {
|
||||||
|
key: value
|
||||||
|
for key, value in vars(module).items()
|
||||||
|
if not key.startswith("__")
|
||||||
|
}
|
||||||
|
print(
|
||||||
|
"Scanned packageName: %s" % module_globals[module_name]["packageName"]
|
||||||
|
)
|
||||||
|
global_vars[module_name] = module_globals
|
||||||
|
|
||||||
|
return global_vars
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
apps_folder = "apps"
|
||||||
|
apps = get_global_vars_from_apps(apps_folder)
|
||||||
|
print(apps)
|
||||||
|
for app, info in apps:
|
||||||
|
print("%s: %s" % (app, info))
|
Loading…
Reference in New Issue
Block a user