@9000ai/cli 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,273 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import argparse
4
- import sys
5
- from pathlib import Path
6
-
7
- REPO_ROOT = Path(__file__).resolve().parents[2]
8
- HUB_ROOT = REPO_ROOT / "9000AI-hub-9000AI"
9
- if str(HUB_ROOT) not in sys.path:
10
- sys.path.insert(0, str(HUB_ROOT))
11
-
12
- from shared.runner import ( # noqa: E402
13
- ModuleSpec,
14
- configure_stdout_encoding,
15
- load_json_file,
16
- print_json,
17
- request_json,
18
- resolve_api_key,
19
- resolve_base_url,
20
- save_local_config,
21
- )
22
-
23
- SKILL_ROOT = Path(__file__).resolve().parents[1]
24
- MODULE_SPEC = ModuleSpec(
25
- module="douyin-monitor",
26
- skill_root=SKILL_ROOT,
27
- )
28
-
29
-
30
- def build_parser() -> argparse.ArgumentParser:
31
- parser = argparse.ArgumentParser(description="Douyin monitor API client")
32
- parser.add_argument("--base-url", default=None)
33
- parser.add_argument("--api-key", default=None)
34
- subparsers = parser.add_subparsers(dest="command", required=True)
35
-
36
- subparsers.add_parser("configure", help="写入本地配置文件")
37
- subparsers.add_parser("whoami", help="查看当前 key 对应的调用方")
38
- subparsers.add_parser("capabilities", help="查看当前 key 开通的能力")
39
- subparsers.add_parser("list-creators", help="查看监控对象列表")
40
-
41
- create_creator = subparsers.add_parser("create-creator", help="新增监控对象")
42
- create_creator.add_argument("--json-file", required=True)
43
-
44
- get_creator = subparsers.add_parser("get-creator", help="查看单个监控对象")
45
- get_creator.add_argument("--creator-id", required=True)
46
-
47
- update_creator = subparsers.add_parser("update-creator", help="修改监控对象")
48
- update_creator.add_argument("--creator-id", required=True)
49
- update_creator.add_argument("--json-file", required=True)
50
-
51
- delete_creator = subparsers.add_parser("delete-creator", help="删除监控对象")
52
- delete_creator.add_argument("--creator-id", required=True)
53
-
54
- enable_creator = subparsers.add_parser("enable-creator", help="启用监控对象")
55
- enable_creator.add_argument("--creator-id", required=True)
56
-
57
- disable_creator = subparsers.add_parser("disable-creator", help="停用监控对象")
58
- disable_creator.add_argument("--creator-id", required=True)
59
-
60
- reset_creator = subparsers.add_parser("reset-creator", help="重置监控对象状态")
61
- reset_creator.add_argument("--creator-id", required=True)
62
-
63
- submit = subparsers.add_parser("submit", help="提交主页监控任务")
64
- submit.add_argument("--json-file", required=True)
65
-
66
- list_runs = subparsers.add_parser("list-runs", help="查看运行历史")
67
- list_runs.add_argument("--page", type=int, default=1)
68
- list_runs.add_argument("--page-size", type=int, default=20)
69
- list_runs.add_argument("--status", default=None)
70
-
71
- run_detail = subparsers.add_parser("run-detail", help="查看单次运行详情")
72
- run_detail.add_argument("--run-id", required=True)
73
-
74
- task = subparsers.add_parser("task", help="查看任务状态")
75
- task.add_argument("--task-id", required=True)
76
-
77
- results = subparsers.add_parser("results", help="查看任务结果")
78
- results.add_argument("--task-id", required=True)
79
- return parser
80
-
81
-
82
- def main() -> None:
83
- configure_stdout_encoding()
84
- parser = build_parser()
85
- args = parser.parse_args()
86
-
87
- if args.command == "configure":
88
- if not args.base_url or not args.api_key:
89
- raise SystemExit("configure 需要同时传 --base-url 和 --api-key")
90
- save_local_config(MODULE_SPEC, base_url=args.base_url, api_key=args.api_key)
91
- print_json({"message": "配置已写入", "config_path": str(MODULE_SPEC.config_path)})
92
- return
93
-
94
- base_url = resolve_base_url(MODULE_SPEC, args.base_url)
95
- api_key = resolve_api_key(MODULE_SPEC, args.api_key)
96
-
97
- if args.command == "whoami":
98
- print_json(
99
- request_json(MODULE_SPEC, method="GET", base_url=base_url, api_key=api_key, path="/api/v1/auth/me")
100
- )
101
- return
102
-
103
- if args.command == "capabilities":
104
- print_json(
105
- request_json(
106
- MODULE_SPEC,
107
- method="GET",
108
- base_url=base_url,
109
- api_key=api_key,
110
- path="/api/v1/auth/capability-permissions",
111
- )
112
- )
113
- return
114
-
115
- if args.command == "list-creators":
116
- print_json(
117
- request_json(
118
- MODULE_SPEC,
119
- method="GET",
120
- base_url=base_url,
121
- api_key=api_key,
122
- path="/api/v1/douyin/monitor/creators",
123
- )
124
- )
125
- return
126
-
127
- if args.command == "create-creator":
128
- print_json(
129
- request_json(
130
- MODULE_SPEC,
131
- method="POST",
132
- base_url=base_url,
133
- api_key=api_key,
134
- path="/api/v1/douyin/monitor/creators",
135
- payload=load_json_file(args.json_file),
136
- )
137
- )
138
- return
139
-
140
- if args.command == "get-creator":
141
- print_json(
142
- request_json(
143
- MODULE_SPEC,
144
- method="GET",
145
- base_url=base_url,
146
- api_key=api_key,
147
- path=f"/api/v1/douyin/monitor/creators/{args.creator_id}",
148
- )
149
- )
150
- return
151
-
152
- if args.command == "update-creator":
153
- print_json(
154
- request_json(
155
- MODULE_SPEC,
156
- method="PATCH",
157
- base_url=base_url,
158
- api_key=api_key,
159
- path=f"/api/v1/douyin/monitor/creators/{args.creator_id}",
160
- payload=load_json_file(args.json_file),
161
- )
162
- )
163
- return
164
-
165
- if args.command == "delete-creator":
166
- print_json(
167
- request_json(
168
- MODULE_SPEC,
169
- method="DELETE",
170
- base_url=base_url,
171
- api_key=api_key,
172
- path=f"/api/v1/douyin/monitor/creators/{args.creator_id}",
173
- )
174
- )
175
- return
176
-
177
- if args.command == "enable-creator":
178
- print_json(
179
- request_json(
180
- MODULE_SPEC,
181
- method="POST",
182
- base_url=base_url,
183
- api_key=api_key,
184
- path=f"/api/v1/douyin/monitor/creators/{args.creator_id}/enable",
185
- )
186
- )
187
- return
188
-
189
- if args.command == "disable-creator":
190
- print_json(
191
- request_json(
192
- MODULE_SPEC,
193
- method="POST",
194
- base_url=base_url,
195
- api_key=api_key,
196
- path=f"/api/v1/douyin/monitor/creators/{args.creator_id}/disable",
197
- )
198
- )
199
- return
200
-
201
- if args.command == "reset-creator":
202
- print_json(
203
- request_json(
204
- MODULE_SPEC,
205
- method="POST",
206
- base_url=base_url,
207
- api_key=api_key,
208
- path=f"/api/v1/douyin/monitor/creators/{args.creator_id}/reset",
209
- )
210
- )
211
- return
212
-
213
- if args.command == "submit":
214
- print_json(
215
- request_json(
216
- MODULE_SPEC,
217
- method="POST",
218
- base_url=base_url,
219
- api_key=api_key,
220
- path="/api/v1/douyin/monitor/run",
221
- payload=load_json_file(args.json_file),
222
- )
223
- )
224
- return
225
-
226
- if args.command == "list-runs":
227
- query = f"/api/v1/douyin/monitor/runs?page={args.page}&page_size={args.page_size}"
228
- if args.status:
229
- query += f"&status={args.status}"
230
- print_json(
231
- request_json(MODULE_SPEC, method="GET", base_url=base_url, api_key=api_key, path=query)
232
- )
233
- return
234
-
235
- if args.command == "run-detail":
236
- print_json(
237
- request_json(
238
- MODULE_SPEC,
239
- method="GET",
240
- base_url=base_url,
241
- api_key=api_key,
242
- path=f"/api/v1/douyin/monitor/runs/{args.run_id}",
243
- )
244
- )
245
- return
246
-
247
- if args.command == "task":
248
- print_json(
249
- request_json(
250
- MODULE_SPEC,
251
- method="GET",
252
- base_url=base_url,
253
- api_key=api_key,
254
- path=f"/api/v1/tasks/{args.task_id}",
255
- )
256
- )
257
- return
258
-
259
- if args.command == "results":
260
- print_json(
261
- request_json(
262
- MODULE_SPEC,
263
- method="GET",
264
- base_url=base_url,
265
- api_key=api_key,
266
- path=f"/api/v1/tasks/{args.task_id}/results",
267
- )
268
- )
269
- return
270
-
271
-
272
- if __name__ == "__main__":
273
- main()
@@ -1,3 +0,0 @@
1
- display_name: douyin-topic-discovery-9000AI
2
- short_description: 通过 /douyin-topic-discovery-9000AI 获取热点榜和搜索流结果,并落到本地 output 文件
3
- default_prompt: 帮我通过 /douyin-topic-discovery-9000AI 查抖音热点榜或搜索流,把结果落到 output 文件里,再给我一个简短摘要。