@yizhuan-cli/cli 0.1.9 → 0.1.10-beta.0
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.
- package/README.md +2 -2
- package/package.json +1 -1
- package/resources/yizhuan-cli/manifest.json +3 -3
- package/src/doctor.js +2 -2
- package/src/index.js +26 -2
package/README.md
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
需要 Node.js 22 或更高版本。
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npm install -g @yizhuan-cli/cli@0.1.
|
|
10
|
+
npm install -g @yizhuan-cli/cli@0.1.10-beta.0
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
如果发布在私有 npm registry,请加上对应 registry:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
npm install -g @yizhuan-cli/cli@0.1.
|
|
16
|
+
npm install -g @yizhuan-cli/cli@0.1.10-beta.0 --registry=https://your-private-registry.example
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## 配置
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "yizhuan-cli",
|
|
4
|
-
"version": "0.1.
|
|
5
|
-
"compatibleCliVersion": "0.1.
|
|
6
|
-
"source": "npm:@yizhuan-cli/cli@0.1.
|
|
4
|
+
"version": "0.1.10-beta.0",
|
|
5
|
+
"compatibleCliVersion": "0.1.10-beta.0",
|
|
6
|
+
"source": "npm:@yizhuan-cli/cli@0.1.10-beta.0",
|
|
7
7
|
"digestAlgorithm": "sha256",
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
package/src/doctor.js
CHANGED
|
@@ -52,9 +52,9 @@ export function inspectLocalEnvironment(
|
|
|
52
52
|
? check('pass', 'node', `Node.js ${nodeVersion} 满足 >=${minimumNode}`)
|
|
53
53
|
: check('fail', 'node', `Node.js ${nodeVersion} 不满足 ${packageJson.engines?.node || '版本要求'}`, `安装 Node.js ${minimumNode || 22} 或更高版本。`))
|
|
54
54
|
|
|
55
|
-
checks.push(packageJson.version === '0.1.
|
|
55
|
+
checks.push(packageJson.version === '0.1.10-beta.0'
|
|
56
56
|
? check('pass', 'cli_version', `CLI ${packageJson.version}`)
|
|
57
|
-
: check('fail', 'cli_version', `CLI 版本为 ${packageJson.version},预期 0.1.
|
|
57
|
+
: check('fail', 'cli_version', `CLI 版本为 ${packageJson.version},预期 0.1.10-beta.0`, '安装 @yizhuan-cli/cli@0.1.10-beta.0。'))
|
|
58
58
|
|
|
59
59
|
if (!exists(configPath)) {
|
|
60
60
|
checks.push(check('fail', 'config', `配置不存在:${configPath}`, '运行 yizhuan config init。'))
|
package/src/index.js
CHANGED
|
@@ -25,6 +25,7 @@ const ABILITIES = new Set([
|
|
|
25
25
|
'work_query',
|
|
26
26
|
'membership_info',
|
|
27
27
|
'favorites_query'
|
|
28
|
+
,'detection'
|
|
28
29
|
])
|
|
29
30
|
|
|
30
31
|
const PARAM_FLAG_KEYS = [
|
|
@@ -67,6 +68,7 @@ Examples:
|
|
|
67
68
|
yizhuan execute --ability accounts --params '{"mode":"public_search","platform":"toutiao","keyword":"张三"}'
|
|
68
69
|
yizhuan execute --ability radar --params '{"mode":"following"}'
|
|
69
70
|
yizhuan execute --ability radar --mode timeline --timeRange 7d
|
|
71
|
+
yizhuan execute --ability detection --json-file detection.json
|
|
70
72
|
yizhuan execute --ability radar --params '{"mode":"unfollow","articleId":"205169870"}'
|
|
71
73
|
|
|
72
74
|
Notes:
|
|
@@ -84,6 +86,7 @@ Abilities:
|
|
|
84
86
|
membership 会员查询
|
|
85
87
|
favorites 收藏查询
|
|
86
88
|
public_author_search 作者全网搜索,兼容低层能力
|
|
89
|
+
detection 一键检测(原创/风险)
|
|
87
90
|
|
|
88
91
|
Config:
|
|
89
92
|
${CONFIG_PATH}
|
|
@@ -366,8 +369,29 @@ async function execute(args) {
|
|
|
366
369
|
throw new Error(`请求失败 HTTP ${response.status}:${text}`)
|
|
367
370
|
}
|
|
368
371
|
|
|
369
|
-
|
|
370
|
-
|
|
372
|
+
let result = payloadResult(JSON.parse(text))
|
|
373
|
+
const requestParams = buildExecuteParams(args)
|
|
374
|
+
if (ability === 'detection' && requestParams?.wait === true && result?.status === 'pending' && result?.data?.id) {
|
|
375
|
+
const timeoutSeconds = Number(requestParams.timeoutSeconds) > 0 ? Number(requestParams.timeoutSeconds) : 120
|
|
376
|
+
const deadline = Date.now() + timeoutSeconds * 1000
|
|
377
|
+
while (Date.now() < deadline && result.status === 'pending') {
|
|
378
|
+
await new Promise((resolve) => setTimeout(resolve, Math.max(500, Number(result.data.pollAfterSeconds || 3) * 1000)))
|
|
379
|
+
if (Date.now() >= deadline) break
|
|
380
|
+
const poll = await fetch(`${config.apiBaseUrl}/api/cli.execute`, {
|
|
381
|
+
method: 'POST',
|
|
382
|
+
headers: { authorization: config.apiKey, 'content-type': 'application/json', 'x-device-type': 'pc' },
|
|
383
|
+
body: JSON.stringify({ json: { ability: 'detection', params: { mode: 'get', id: result.data.id } } })
|
|
384
|
+
})
|
|
385
|
+
const pollText = await poll.text()
|
|
386
|
+
if (!poll.ok) throw new Error(`请求失败 HTTP ${poll.status}:${pollText}`)
|
|
387
|
+
result = payloadResult(JSON.parse(pollText))
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
console.log(JSON.stringify(result, null, 2))
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
function payloadResult(payload) {
|
|
394
|
+
return payload.result?.data?.json ?? payload
|
|
371
395
|
}
|
|
372
396
|
|
|
373
397
|
function renderQuery(payload, format) {
|