@jackwener/opencli 1.6.1 → 1.6.2
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/CONTRIBUTING.md +1 -1
- package/README.md +27 -45
- package/README.zh-CN.md +32 -34
- package/autoresearch/browse-tasks.json +18 -20
- package/autoresearch/commands/debug.ts +163 -0
- package/autoresearch/commands/fix.ts +145 -0
- package/autoresearch/commands/plan.ts +88 -0
- package/autoresearch/commands/run.ts +138 -0
- package/autoresearch/config.ts +82 -0
- package/autoresearch/engine.ts +359 -0
- package/autoresearch/eval-all.ts +127 -0
- package/autoresearch/eval-browse.ts +1 -1
- package/autoresearch/eval-publish.ts +238 -0
- package/autoresearch/eval-save.ts +249 -0
- package/autoresearch/eval-skill.ts +14 -8
- package/autoresearch/eval-v2ex.ts +220 -0
- package/autoresearch/eval-zhihu.ts +230 -0
- package/autoresearch/logger.ts +69 -0
- package/autoresearch/presets/combined-reliability.ts +27 -0
- package/autoresearch/presets/index.ts +23 -0
- package/autoresearch/presets/operate-reliability.ts +24 -0
- package/autoresearch/presets/save-reliability.ts +26 -0
- package/autoresearch/presets/skill-quality.ts +20 -0
- package/autoresearch/presets/v2ex-reliability.ts +24 -0
- package/autoresearch/presets/zhihu-reliability.ts +25 -0
- package/autoresearch/publish-tasks.json +345 -0
- package/autoresearch/run-save.sh +11 -0
- package/autoresearch/save-adapters/xhs-explore-deep.ts +64 -0
- package/autoresearch/save-adapters/xhs-note-comments.ts +61 -0
- package/autoresearch/save-adapters/xhs-search-full.ts +62 -0
- package/autoresearch/save-adapters/zhihu-hot-detail.ts +52 -0
- package/autoresearch/save-adapters/zhihu-question-full.ts +57 -0
- package/autoresearch/save-adapters/zhihu-search-detail.ts +53 -0
- package/autoresearch/save-tasks.json +281 -0
- package/autoresearch/v2ex-tasks.json +899 -0
- package/autoresearch/zhihu-tasks.json +848 -0
- package/dist/browser/base-page.d.ts +4 -2
- package/dist/browser/base-page.js +37 -4
- package/dist/browser/bridge.js +10 -8
- package/dist/browser/cdp.js +2 -6
- package/dist/browser/daemon-client.d.ts +11 -1
- package/dist/browser/daemon-client.js +3 -0
- package/dist/browser/dom-helpers.d.ts +4 -2
- package/dist/browser/dom-helpers.js +42 -31
- package/dist/browser/dom-snapshot.js +23 -1
- package/dist/browser/page.d.ts +7 -2
- package/dist/browser/page.js +112 -30
- package/dist/browser.test.js +1 -1
- package/dist/build-manifest.d.ts +1 -0
- package/dist/build-manifest.js +1 -0
- package/dist/cli-manifest.json +1135 -184
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +48 -7
- package/dist/cli.test.d.ts +1 -0
- package/dist/cli.test.js +88 -0
- package/dist/clis/1688/item.d.ts +70 -0
- package/dist/clis/1688/item.js +187 -0
- package/dist/clis/1688/item.test.d.ts +1 -0
- package/dist/clis/1688/item.test.js +67 -0
- package/dist/clis/1688/search.d.ts +56 -0
- package/dist/clis/1688/search.js +309 -0
- package/dist/clis/1688/search.test.d.ts +1 -0
- package/dist/clis/1688/search.test.js +75 -0
- package/dist/clis/1688/shared.d.ts +112 -0
- package/dist/clis/1688/shared.js +514 -0
- package/dist/clis/1688/shared.test.d.ts +1 -0
- package/dist/clis/1688/shared.test.js +57 -0
- package/dist/clis/1688/store.d.ts +45 -0
- package/dist/clis/1688/store.js +226 -0
- package/dist/clis/1688/store.test.d.ts +1 -0
- package/dist/clis/1688/store.test.js +62 -0
- package/dist/clis/amazon/bestsellers.d.ts +0 -20
- package/dist/clis/amazon/bestsellers.js +6 -129
- package/dist/clis/amazon/bestsellers.test.js +12 -3
- package/dist/clis/amazon/movers-shakers.d.ts +1 -0
- package/dist/clis/amazon/movers-shakers.js +7 -0
- package/dist/clis/amazon/new-releases.d.ts +1 -0
- package/dist/clis/amazon/new-releases.js +7 -0
- package/dist/clis/amazon/rankings.d.ts +59 -0
- package/dist/clis/amazon/rankings.js +226 -0
- package/dist/clis/amazon/rankings.test.d.ts +1 -0
- package/dist/clis/amazon/rankings.test.js +41 -0
- package/dist/clis/amazon/shared.d.ts +11 -0
- package/dist/clis/amazon/shared.js +121 -11
- package/dist/clis/amazon/shared.test.js +11 -0
- package/dist/clis/bilibili/comments.js +2 -2
- package/dist/clis/bilibili/comments.test.js +3 -2
- package/dist/clis/bilibili/download.js +2 -1
- package/dist/clis/bilibili/subtitle.js +4 -3
- package/dist/clis/bilibili/subtitle.test.js +2 -1
- package/dist/clis/bilibili/utils.d.ts +5 -0
- package/dist/clis/bilibili/utils.js +30 -0
- package/dist/clis/bilibili/utils.test.d.ts +1 -0
- package/dist/clis/bilibili/utils.test.js +17 -0
- package/dist/clis/douban/marks.js +1 -1
- package/dist/clis/douban/subject.yaml +50 -19
- package/dist/clis/doubao/utils.js +32 -12
- package/dist/clis/douyin/_shared/browser-fetch.test.js +0 -1
- package/dist/clis/douyin/_shared/transcode.test.js +0 -2
- package/dist/clis/douyin/draft.test.js +0 -2
- package/dist/clis/facebook/search.test.js +0 -2
- package/dist/clis/gemini/ask.js +9 -3
- package/dist/clis/gemini/ask.test.d.ts +1 -0
- package/dist/clis/gemini/ask.test.js +100 -0
- package/dist/clis/gemini/reply-state.test.d.ts +1 -0
- package/dist/clis/gemini/reply-state.test.js +641 -0
- package/dist/clis/gemini/utils.d.ts +44 -1
- package/dist/clis/gemini/utils.js +528 -61
- package/dist/clis/gemini/utils.test.js +149 -2
- package/dist/clis/hupu/detail.d.ts +1 -0
- package/dist/clis/hupu/detail.js +72 -0
- package/dist/clis/hupu/hot.yaml +43 -0
- package/dist/clis/hupu/like.d.ts +1 -0
- package/dist/clis/hupu/like.js +75 -0
- package/dist/clis/hupu/reply.d.ts +1 -0
- package/dist/clis/hupu/reply.js +71 -0
- package/dist/clis/hupu/search.d.ts +1 -0
- package/dist/clis/hupu/search.js +59 -0
- package/dist/clis/hupu/unlike.d.ts +1 -0
- package/dist/clis/hupu/unlike.js +75 -0
- package/dist/clis/hupu/utils.d.ts +20 -0
- package/dist/clis/hupu/utils.js +319 -0
- package/dist/clis/instagram/_shared/private-publish.d.ts +138 -0
- package/dist/clis/instagram/_shared/private-publish.js +1030 -0
- package/dist/clis/instagram/_shared/private-publish.test.d.ts +1 -0
- package/dist/clis/instagram/_shared/private-publish.test.js +705 -0
- package/dist/clis/instagram/_shared/protocol-capture.d.ts +26 -0
- package/dist/clis/instagram/_shared/protocol-capture.js +282 -0
- package/dist/clis/instagram/_shared/protocol-capture.test.d.ts +1 -0
- package/dist/clis/instagram/_shared/protocol-capture.test.js +114 -0
- package/dist/clis/instagram/_shared/runtime-info.d.ts +9 -0
- package/dist/clis/instagram/_shared/runtime-info.js +81 -0
- package/dist/clis/instagram/note.d.ts +1 -0
- package/dist/clis/instagram/note.js +222 -0
- package/dist/clis/instagram/note.test.d.ts +1 -0
- package/dist/clis/instagram/note.test.js +81 -0
- package/dist/clis/instagram/post.d.ts +4 -0
- package/dist/clis/instagram/post.js +1496 -0
- package/dist/clis/instagram/post.test.d.ts +1 -0
- package/dist/clis/instagram/post.test.js +1647 -0
- package/dist/clis/instagram/reel.d.ts +1 -0
- package/dist/clis/instagram/reel.js +826 -0
- package/dist/clis/instagram/reel.test.d.ts +1 -0
- package/dist/clis/instagram/reel.test.js +167 -0
- package/dist/clis/instagram/story.d.ts +1 -0
- package/dist/clis/instagram/story.js +115 -0
- package/dist/clis/instagram/story.test.d.ts +1 -0
- package/dist/clis/instagram/story.test.js +167 -0
- package/dist/clis/sinafinance/stock-rank.d.ts +4 -0
- package/dist/clis/sinafinance/stock-rank.js +65 -0
- package/dist/clis/substack/utils.test.js +0 -2
- package/dist/clis/twitter/post.js +72 -45
- package/dist/clis/twitter/post.test.d.ts +1 -0
- package/dist/clis/twitter/post.test.js +116 -0
- package/dist/clis/twitter/reply.d.ts +12 -0
- package/dist/clis/twitter/reply.js +257 -35
- package/dist/clis/twitter/reply.test.d.ts +1 -0
- package/dist/clis/twitter/reply.test.js +151 -0
- package/dist/clis/xianyu/chat.d.ts +7 -0
- package/dist/clis/xianyu/chat.js +146 -0
- package/dist/clis/xianyu/chat.test.d.ts +1 -0
- package/dist/clis/xianyu/chat.test.js +15 -0
- package/dist/clis/xianyu/item.d.ts +7 -0
- package/dist/clis/xianyu/item.js +152 -0
- package/dist/clis/xianyu/item.test.d.ts +1 -0
- package/dist/clis/xianyu/item.test.js +56 -0
- package/dist/clis/xianyu/search.d.ts +10 -0
- package/dist/clis/xianyu/search.js +134 -0
- package/dist/clis/xianyu/search.test.d.ts +1 -0
- package/dist/clis/xianyu/search.test.js +17 -0
- package/dist/clis/xianyu/utils.d.ts +1 -0
- package/dist/clis/xianyu/utils.js +8 -0
- package/dist/clis/xiaoe/catalog.yaml +129 -0
- package/dist/clis/xiaoe/content.yaml +43 -0
- package/dist/clis/xiaoe/courses.yaml +73 -0
- package/dist/clis/xiaoe/detail.yaml +39 -0
- package/dist/clis/xiaoe/play-url.yaml +124 -0
- package/dist/clis/xiaohongshu/comments.test.js +0 -2
- package/dist/clis/xiaohongshu/creator-note-detail.test.js +0 -2
- package/dist/clis/xiaohongshu/creator-notes.test.js +0 -2
- package/dist/clis/xiaohongshu/download.test.js +0 -2
- package/dist/clis/xiaohongshu/note.test.js +0 -2
- package/dist/clis/xiaohongshu/publish.test.js +0 -2
- package/dist/clis/xiaohongshu/search.js +29 -20
- package/dist/clis/xiaohongshu/search.test.js +56 -48
- package/dist/clis/yuanbao/ask.d.ts +21 -0
- package/dist/clis/yuanbao/ask.js +427 -0
- package/dist/clis/yuanbao/ask.test.d.ts +1 -0
- package/dist/clis/yuanbao/ask.test.js +124 -0
- package/dist/clis/yuanbao/new.d.ts +1 -0
- package/dist/clis/yuanbao/new.js +70 -0
- package/dist/clis/yuanbao/new.test.d.ts +1 -0
- package/dist/clis/yuanbao/new.test.js +30 -0
- package/dist/clis/yuanbao/shared.d.ts +13 -0
- package/dist/clis/yuanbao/shared.js +49 -0
- package/dist/clis/zhihu/question.js +30 -19
- package/dist/clis/zhihu/question.test.js +34 -16
- package/dist/commanderAdapter.js +8 -4
- package/dist/commanderAdapter.test.js +42 -0
- package/dist/completion.js +3 -1
- package/dist/completion.test.d.ts +1 -0
- package/dist/completion.test.js +23 -0
- package/dist/doctor.js +1 -1
- package/dist/electron-apps.d.ts +2 -0
- package/dist/electron-apps.js +7 -1
- package/dist/errors.js +1 -1
- package/dist/execution.js +25 -35
- package/dist/explore.js +1 -1
- package/dist/launcher.d.ts +4 -0
- package/dist/launcher.js +64 -8
- package/dist/launcher.test.js +88 -7
- package/dist/output.d.ts +2 -0
- package/dist/output.js +10 -1
- package/dist/output.test.d.ts +0 -3
- package/dist/output.test.js +59 -92
- package/dist/pipeline/executor.test.js +0 -2
- package/dist/pipeline/steps/download.test.js +0 -2
- package/dist/registry.d.ts +2 -0
- package/dist/serialization.d.ts +1 -0
- package/dist/serialization.js +1 -0
- package/dist/types.d.ts +9 -2
- package/docs/.vitepress/config.mts +4 -0
- package/docs/adapters/browser/1688.md +52 -0
- package/docs/adapters/browser/36kr.md +2 -1
- package/docs/adapters/browser/doubao.md +5 -1
- package/docs/adapters/browser/hupu.md +53 -0
- package/docs/adapters/browser/sinafinance.md +32 -2
- package/docs/adapters/browser/weibo.md +6 -1
- package/docs/adapters/browser/wikipedia.md +2 -0
- package/docs/adapters/browser/xianyu.md +42 -0
- package/docs/adapters/browser/xiaoe.md +44 -0
- package/docs/adapters/browser/yuanbao.md +64 -0
- package/docs/adapters/index.md +14 -5
- package/docs/comparison.md +1 -1
- package/docs/developer/ai-workflow.md +2 -2
- package/docs/developer/contributing.md +1 -1
- package/docs/developer/testing.md +2 -0
- package/docs/guide/plugins.md +1 -0
- package/docs/guide/troubleshooting.md +11 -0
- package/docs/superpowers/specs/2026-04-03-v2ex-autoresearch-design.md +41 -0
- package/docs/zh/guide/plugins.md +1 -0
- package/extension/dist/background.js +1127 -0
- package/extension/src/background.test.ts +39 -0
- package/extension/src/background.ts +223 -34
- package/extension/src/cdp.ts +194 -4
- package/extension/src/protocol.ts +22 -1
- package/package.json +3 -2
- package/scripts/postinstall.js +1 -1
- package/skills/opencli-explorer/SKILL.md +1 -1
- package/skills/opencli-oneshot/SKILL.md +2 -2
- package/skills/opencli-operate/SKILL.md +120 -27
- package/skills/opencli-usage/SKILL.md +31 -20
- package/skills/opencli-usage/browser.md +114 -16
- package/skills/opencli-usage/public-api.md +32 -3
- package/skills/smart-search/SKILL.md +156 -0
- package/skills/smart-search/references/sources-ai.md +74 -0
- package/skills/smart-search/references/sources-info.md +43 -0
- package/skills/smart-search/references/sources-media.md +50 -0
- package/skills/smart-search/references/sources-other.md +42 -0
- package/skills/smart-search/references/sources-shopping.md +31 -0
- package/skills/smart-search/references/sources-social.md +51 -0
- package/skills/smart-search/references/sources-tech.md +42 -0
- package/skills/smart-search/references/sources-travel.md +20 -0
- package/src/browser/base-page.ts +41 -6
- package/src/browser/bridge.ts +11 -8
- package/src/browser/cdp.ts +1 -8
- package/src/browser/daemon-client.ts +11 -1
- package/src/browser/dom-helpers.ts +43 -31
- package/src/browser/dom-snapshot.ts +23 -1
- package/src/browser/page.ts +115 -31
- package/src/browser.test.ts +1 -1
- package/src/build-manifest.ts +2 -0
- package/src/cli.test.ts +133 -0
- package/src/cli.ts +73 -11
- package/src/clis/1688/item.test.ts +69 -0
- package/src/clis/1688/item.ts +282 -0
- package/src/clis/1688/search.test.ts +81 -0
- package/src/clis/1688/search.ts +402 -0
- package/src/clis/1688/shared.test.ts +75 -0
- package/src/clis/1688/shared.ts +623 -0
- package/src/clis/1688/store.test.ts +69 -0
- package/src/clis/1688/store.ts +300 -0
- package/src/clis/amazon/bestsellers.test.ts +12 -3
- package/src/clis/amazon/bestsellers.ts +6 -178
- package/src/clis/amazon/movers-shakers.ts +8 -0
- package/src/clis/amazon/new-releases.ts +8 -0
- package/src/clis/amazon/rankings.test.ts +47 -0
- package/src/clis/amazon/rankings.ts +312 -0
- package/src/clis/amazon/shared.test.ts +16 -0
- package/src/clis/amazon/shared.ts +134 -12
- package/src/clis/bilibili/comments.test.ts +4 -3
- package/src/clis/bilibili/comments.ts +2 -2
- package/src/clis/bilibili/download.ts +2 -1
- package/src/clis/bilibili/subtitle.test.ts +2 -1
- package/src/clis/bilibili/subtitle.ts +4 -3
- package/src/clis/bilibili/utils.test.ts +21 -0
- package/src/clis/bilibili/utils.ts +27 -0
- package/src/clis/douban/marks.ts +1 -1
- package/src/clis/douban/subject.yaml +50 -19
- package/src/clis/doubao/utils.ts +32 -12
- package/src/clis/douyin/_shared/browser-fetch.test.ts +0 -1
- package/src/clis/douyin/_shared/transcode.test.ts +0 -2
- package/src/clis/douyin/draft.test.ts +0 -2
- package/src/clis/facebook/search.test.ts +0 -2
- package/src/clis/gemini/ask.test.ts +116 -0
- package/src/clis/gemini/ask.ts +10 -3
- package/src/clis/gemini/reply-state.test.ts +708 -0
- package/src/clis/gemini/utils.test.ts +184 -2
- package/src/clis/gemini/utils.ts +588 -60
- package/src/clis/hupu/detail.ts +126 -0
- package/src/clis/hupu/hot.yaml +43 -0
- package/src/clis/hupu/like.ts +76 -0
- package/src/clis/hupu/reply.ts +76 -0
- package/src/clis/hupu/search.ts +95 -0
- package/src/clis/hupu/unlike.ts +76 -0
- package/src/clis/hupu/utils.ts +381 -0
- package/src/clis/instagram/_shared/private-publish.test.ts +827 -0
- package/src/clis/instagram/_shared/private-publish.ts +1303 -0
- package/src/clis/instagram/_shared/protocol-capture.test.ts +148 -0
- package/src/clis/instagram/_shared/protocol-capture.ts +321 -0
- package/src/clis/instagram/_shared/runtime-info.ts +91 -0
- package/src/clis/instagram/note.test.ts +96 -0
- package/src/clis/instagram/note.ts +254 -0
- package/src/clis/instagram/post.test.ts +1716 -0
- package/src/clis/instagram/post.ts +1620 -0
- package/src/clis/instagram/reel.test.ts +191 -0
- package/src/clis/instagram/reel.ts +886 -0
- package/src/clis/instagram/story.test.ts +191 -0
- package/src/clis/instagram/story.ts +151 -0
- package/src/clis/sinafinance/stock-rank.ts +68 -0
- package/src/clis/substack/utils.test.ts +0 -2
- package/src/clis/twitter/post.test.ts +157 -0
- package/src/clis/twitter/post.ts +82 -48
- package/src/clis/twitter/reply.test.ts +177 -0
- package/src/clis/twitter/reply.ts +285 -39
- package/src/clis/xianyu/chat.test.ts +20 -0
- package/src/clis/xianyu/chat.ts +175 -0
- package/src/clis/xianyu/item.test.ts +67 -0
- package/src/clis/xianyu/item.ts +172 -0
- package/src/clis/xianyu/search.test.ts +22 -0
- package/src/clis/xianyu/search.ts +151 -0
- package/src/clis/xianyu/utils.ts +9 -0
- package/src/clis/xiaoe/catalog.yaml +129 -0
- package/src/clis/xiaoe/content.yaml +43 -0
- package/src/clis/xiaoe/courses.yaml +73 -0
- package/src/clis/xiaoe/detail.yaml +39 -0
- package/src/clis/xiaoe/play-url.yaml +124 -0
- package/src/clis/xiaohongshu/comments.test.ts +0 -2
- package/src/clis/xiaohongshu/creator-note-detail.test.ts +0 -2
- package/src/clis/xiaohongshu/creator-notes.test.ts +0 -2
- package/src/clis/xiaohongshu/download.test.ts +0 -2
- package/src/clis/xiaohongshu/note.test.ts +0 -2
- package/src/clis/xiaohongshu/publish.test.ts +0 -2
- package/src/clis/xiaohongshu/search.test.ts +59 -48
- package/src/clis/xiaohongshu/search.ts +31 -21
- package/src/clis/yuanbao/ask.test.ts +156 -0
- package/src/clis/yuanbao/ask.ts +522 -0
- package/src/clis/yuanbao/new.test.ts +36 -0
- package/src/clis/yuanbao/new.ts +81 -0
- package/src/clis/yuanbao/shared.ts +57 -0
- package/src/clis/zhihu/question.test.ts +42 -17
- package/src/clis/zhihu/question.ts +31 -26
- package/src/commanderAdapter.test.ts +51 -0
- package/src/commanderAdapter.ts +8 -4
- package/src/completion.test.ts +30 -0
- package/src/completion.ts +3 -1
- package/src/doctor.ts +1 -1
- package/src/electron-apps.ts +9 -1
- package/src/errors.ts +1 -1
- package/src/execution.ts +26 -30
- package/src/explore.ts +1 -1
- package/src/launcher.test.ts +121 -7
- package/src/launcher.ts +87 -9
- package/src/output.test.ts +50 -90
- package/src/output.ts +10 -1
- package/src/pipeline/executor.test.ts +0 -2
- package/src/pipeline/steps/download.test.ts +0 -2
- package/src/registry.ts +2 -0
- package/src/serialization.ts +2 -0
- package/src/types.ts +9 -2
- package/tests/e2e/browser-auth.test.ts +9 -0
- package/CLI-EXPLORER.md +0 -724
- package/CLI-ONESHOT.md +0 -216
- package/SKILL.md +0 -59
package/dist/cli-manifest.json
CHANGED
|
@@ -1,4 +1,93 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"site": "1688",
|
|
4
|
+
"name": "item",
|
|
5
|
+
"description": "1688 商品详情(公开商品字段、价格阶梯、卖家基础信息)",
|
|
6
|
+
"domain": "www.1688.com",
|
|
7
|
+
"strategy": "cookie",
|
|
8
|
+
"browser": true,
|
|
9
|
+
"args": [
|
|
10
|
+
{
|
|
11
|
+
"name": "input",
|
|
12
|
+
"type": "str",
|
|
13
|
+
"required": true,
|
|
14
|
+
"positional": true,
|
|
15
|
+
"help": "1688 商品 URL 或 offer ID(如 887904326744)"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"columns": [
|
|
19
|
+
"offer_id",
|
|
20
|
+
"title",
|
|
21
|
+
"price_text",
|
|
22
|
+
"moq_text",
|
|
23
|
+
"seller_name",
|
|
24
|
+
"origin_place"
|
|
25
|
+
],
|
|
26
|
+
"type": "ts",
|
|
27
|
+
"modulePath": "1688/item.js",
|
|
28
|
+
"navigateBefore": false
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"site": "1688",
|
|
32
|
+
"name": "search",
|
|
33
|
+
"description": "1688 商品搜索(结果候选、卖家链接、价格/MOQ/销量文本)",
|
|
34
|
+
"domain": "www.1688.com",
|
|
35
|
+
"strategy": "cookie",
|
|
36
|
+
"browser": true,
|
|
37
|
+
"args": [
|
|
38
|
+
{
|
|
39
|
+
"name": "query",
|
|
40
|
+
"type": "str",
|
|
41
|
+
"required": true,
|
|
42
|
+
"positional": true,
|
|
43
|
+
"help": "搜索关键词,如 \"置物架\""
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "limit",
|
|
47
|
+
"type": "int",
|
|
48
|
+
"default": 20,
|
|
49
|
+
"required": false,
|
|
50
|
+
"help": "结果数量上限(默认 20,最大 100)"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"columns": [
|
|
54
|
+
"rank",
|
|
55
|
+
"title",
|
|
56
|
+
"price_text",
|
|
57
|
+
"moq_text",
|
|
58
|
+
"seller_name",
|
|
59
|
+
"location"
|
|
60
|
+
],
|
|
61
|
+
"type": "ts",
|
|
62
|
+
"modulePath": "1688/search.js",
|
|
63
|
+
"navigateBefore": false
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"site": "1688",
|
|
67
|
+
"name": "store",
|
|
68
|
+
"description": "1688 店铺/供应商公开信息(联系方式、主营、入驻年限、公开服务信号)",
|
|
69
|
+
"domain": "www.1688.com",
|
|
70
|
+
"strategy": "cookie",
|
|
71
|
+
"browser": true,
|
|
72
|
+
"args": [
|
|
73
|
+
{
|
|
74
|
+
"name": "input",
|
|
75
|
+
"type": "str",
|
|
76
|
+
"required": true,
|
|
77
|
+
"positional": true,
|
|
78
|
+
"help": "1688 店铺 URL 或 member ID(如 b2b-22154705262941f196)"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"columns": [
|
|
82
|
+
"store_name",
|
|
83
|
+
"years_on_platform_text",
|
|
84
|
+
"location",
|
|
85
|
+
"return_rate_text"
|
|
86
|
+
],
|
|
87
|
+
"type": "ts",
|
|
88
|
+
"modulePath": "1688/store.js",
|
|
89
|
+
"navigateBefore": false
|
|
90
|
+
},
|
|
2
91
|
{
|
|
3
92
|
"site": "36kr",
|
|
4
93
|
"name": "article",
|
|
@@ -124,7 +213,7 @@
|
|
|
124
213
|
"type": "str",
|
|
125
214
|
"required": false,
|
|
126
215
|
"positional": true,
|
|
127
|
-
"help": "
|
|
216
|
+
"help": "Ranking URL or supported Amazon path. Omit to use the list root."
|
|
128
217
|
},
|
|
129
218
|
{
|
|
130
219
|
"name": "limit",
|
|
@@ -135,6 +224,7 @@
|
|
|
135
224
|
}
|
|
136
225
|
],
|
|
137
226
|
"columns": [
|
|
227
|
+
"list_type",
|
|
138
228
|
"rank",
|
|
139
229
|
"asin",
|
|
140
230
|
"title",
|
|
@@ -178,6 +268,78 @@
|
|
|
178
268
|
"modulePath": "amazon/discussion.js",
|
|
179
269
|
"navigateBefore": false
|
|
180
270
|
},
|
|
271
|
+
{
|
|
272
|
+
"site": "amazon",
|
|
273
|
+
"name": "movers-shakers",
|
|
274
|
+
"description": "Amazon Movers & Shakers pages for short-term growth signals",
|
|
275
|
+
"domain": "amazon.com",
|
|
276
|
+
"strategy": "cookie",
|
|
277
|
+
"browser": true,
|
|
278
|
+
"args": [
|
|
279
|
+
{
|
|
280
|
+
"name": "input",
|
|
281
|
+
"type": "str",
|
|
282
|
+
"required": false,
|
|
283
|
+
"positional": true,
|
|
284
|
+
"help": "Ranking URL or supported Amazon path. Omit to use the list root."
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"name": "limit",
|
|
288
|
+
"type": "int",
|
|
289
|
+
"default": 100,
|
|
290
|
+
"required": false,
|
|
291
|
+
"help": "Maximum number of ranked items to return (default 100)"
|
|
292
|
+
}
|
|
293
|
+
],
|
|
294
|
+
"columns": [
|
|
295
|
+
"list_type",
|
|
296
|
+
"rank",
|
|
297
|
+
"asin",
|
|
298
|
+
"title",
|
|
299
|
+
"price_text",
|
|
300
|
+
"rating_value",
|
|
301
|
+
"review_count"
|
|
302
|
+
],
|
|
303
|
+
"type": "ts",
|
|
304
|
+
"modulePath": "amazon/movers-shakers.js",
|
|
305
|
+
"navigateBefore": false
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"site": "amazon",
|
|
309
|
+
"name": "new-releases",
|
|
310
|
+
"description": "Amazon New Releases pages for early momentum discovery",
|
|
311
|
+
"domain": "amazon.com",
|
|
312
|
+
"strategy": "cookie",
|
|
313
|
+
"browser": true,
|
|
314
|
+
"args": [
|
|
315
|
+
{
|
|
316
|
+
"name": "input",
|
|
317
|
+
"type": "str",
|
|
318
|
+
"required": false,
|
|
319
|
+
"positional": true,
|
|
320
|
+
"help": "Ranking URL or supported Amazon path. Omit to use the list root."
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"name": "limit",
|
|
324
|
+
"type": "int",
|
|
325
|
+
"default": 100,
|
|
326
|
+
"required": false,
|
|
327
|
+
"help": "Maximum number of ranked items to return (default 100)"
|
|
328
|
+
}
|
|
329
|
+
],
|
|
330
|
+
"columns": [
|
|
331
|
+
"list_type",
|
|
332
|
+
"rank",
|
|
333
|
+
"asin",
|
|
334
|
+
"title",
|
|
335
|
+
"price_text",
|
|
336
|
+
"rating_value",
|
|
337
|
+
"review_count"
|
|
338
|
+
],
|
|
339
|
+
"type": "ts",
|
|
340
|
+
"modulePath": "amazon/new-releases.js",
|
|
341
|
+
"navigateBefore": false
|
|
342
|
+
},
|
|
181
343
|
{
|
|
182
344
|
"site": "amazon",
|
|
183
345
|
"name": "offer",
|
|
@@ -4093,6 +4255,8 @@
|
|
|
4093
4255
|
"genres",
|
|
4094
4256
|
"directors",
|
|
4095
4257
|
"casts",
|
|
4258
|
+
"country",
|
|
4259
|
+
"duration",
|
|
4096
4260
|
"summary",
|
|
4097
4261
|
"url"
|
|
4098
4262
|
],
|
|
@@ -4101,7 +4265,7 @@
|
|
|
4101
4265
|
"navigate": "https://movie.douban.com/subject/${{ args.id }}"
|
|
4102
4266
|
},
|
|
4103
4267
|
{
|
|
4104
|
-
"evaluate": "(async () => {\n const id = '${{ args.id }}';\n
|
|
4268
|
+
"evaluate": "(async () => {\n const id = '${{ args.id }}';\n\n // Wait for page to load\n await new Promise(r => setTimeout(r, 2000));\n\n // Extract title - v:itemreviewed contains \"中文名 OriginalName\"\n const titleEl = document.querySelector('span[property=\"v:itemreviewed\"]');\n const fullTitle = titleEl?.textContent?.trim() || '';\n\n // Split title and originalTitle\n // Douban format: \"中文名 OriginalName\" - split by first space that separates CJK from non-CJK\n let title = fullTitle;\n let originalTitle = '';\n const titleMatch = fullTitle.match(/^([\\u4e00-\\u9fff\\u3000-\\u303f\\uff00-\\uffef]+(?:\\s*[\\u4e00-\\u9fff\\u3000-\\u303f\\uff00-\\uffef·::!?]+)*)\\s+(.+)$/);\n if (titleMatch) {\n title = titleMatch[1].trim();\n originalTitle = titleMatch[2].trim();\n }\n\n // Extract year\n const yearEl = document.querySelector('.year');\n const year = yearEl?.textContent?.trim().replace(/[()()]/g, '') || '';\n\n // Extract rating\n const ratingEl = document.querySelector('strong[property=\"v:average\"]');\n const rating = parseFloat(ratingEl?.textContent || '0');\n\n // Extract rating count\n const ratingCountEl = document.querySelector('span[property=\"v:votes\"]');\n const ratingCount = parseInt(ratingCountEl?.textContent || '0', 10);\n\n // Extract genres\n const genreEls = document.querySelectorAll('span[property=\"v:genre\"]');\n const genres = Array.from(genreEls).map(el => el.textContent?.trim()).filter(Boolean).join(',');\n\n // Extract directors\n const directorEls = document.querySelectorAll('a[rel=\"v:directedBy\"]');\n const directors = Array.from(directorEls).map(el => el.textContent?.trim()).filter(Boolean).join(',');\n\n // Extract casts\n const castEls = document.querySelectorAll('a[rel=\"v:starring\"]');\n const casts = Array.from(castEls).slice(0, 5).map(el => el.textContent?.trim()).filter(Boolean);\n\n // Extract info section for country and duration\n const infoEl = document.querySelector('#info');\n const infoText = infoEl?.textContent || '';\n\n // Extract country/region from #info as list\n let country = [];\n const countryMatch = infoText.match(/制片国家\\/地区:\\s*([^\\n]+)/);\n if (countryMatch) {\n country = countryMatch[1].trim().split(/\\s*\\/\\s*/).filter(Boolean);\n }\n\n // Extract duration from #info as pure number in min\n const durationEl = document.querySelector('span[property=\"v:runtime\"]');\n let durationRaw = durationEl?.textContent?.trim() || '';\n if (!durationRaw) {\n const durationMatch = infoText.match(/片长:\\s*([^\\n]+)/);\n if (durationMatch) {\n durationRaw = durationMatch[1].trim();\n }\n }\n const durationNumMatch = durationRaw.match(/(\\d+)/);\n const duration = durationNumMatch ? parseInt(durationNumMatch[1], 10) : null;\n\n // Extract summary\n const summaryEl = document.querySelector('span[property=\"v:summary\"]');\n const summary = summaryEl?.textContent?.trim() || '';\n\n return [{\n id,\n title,\n originalTitle,\n year,\n rating,\n ratingCount,\n genres,\n directors,\n casts,\n country,\n duration,\n summary: summary.substring(0, 200),\n url: `https://movie.douban.com/subject/${id}`\n }];\n})()\n"
|
|
4105
4269
|
}
|
|
4106
4270
|
],
|
|
4107
4271
|
"type": "yaml"
|
|
@@ -5445,7 +5609,7 @@
|
|
|
5445
5609
|
{
|
|
5446
5610
|
"name": "op",
|
|
5447
5611
|
"type": "str",
|
|
5448
|
-
"default": "/
|
|
5612
|
+
"default": "/home/runner/tmp/gemini-images",
|
|
5449
5613
|
"required": false,
|
|
5450
5614
|
"help": "Output directory shorthand"
|
|
5451
5615
|
},
|
|
@@ -6195,136 +6359,386 @@
|
|
|
6195
6359
|
"modulePath": "hf/top.js"
|
|
6196
6360
|
},
|
|
6197
6361
|
{
|
|
6198
|
-
"site": "
|
|
6199
|
-
"name": "
|
|
6200
|
-
"description": "
|
|
6201
|
-
"domain": "
|
|
6362
|
+
"site": "hupu",
|
|
6363
|
+
"name": "detail",
|
|
6364
|
+
"description": "获取虎扑帖子详情 (使用Next.js JSON数据)",
|
|
6365
|
+
"domain": "bbs.hupu.com",
|
|
6202
6366
|
"strategy": "public",
|
|
6203
6367
|
"browser": true,
|
|
6204
6368
|
"args": [
|
|
6205
6369
|
{
|
|
6206
|
-
"name": "
|
|
6370
|
+
"name": "tid",
|
|
6207
6371
|
"type": "str",
|
|
6208
6372
|
"required": true,
|
|
6209
6373
|
"positional": true,
|
|
6210
|
-
"help": "
|
|
6374
|
+
"help": "帖子ID(9位数字)"
|
|
6211
6375
|
},
|
|
6212
6376
|
{
|
|
6213
|
-
"name": "
|
|
6214
|
-
"type": "
|
|
6215
|
-
"default":
|
|
6377
|
+
"name": "replies",
|
|
6378
|
+
"type": "boolean",
|
|
6379
|
+
"default": false,
|
|
6216
6380
|
"required": false,
|
|
6217
|
-
"help": "
|
|
6381
|
+
"help": "是否包含热门回复"
|
|
6218
6382
|
}
|
|
6219
6383
|
],
|
|
6220
6384
|
"columns": [
|
|
6221
|
-
"
|
|
6222
|
-
"
|
|
6385
|
+
"title",
|
|
6386
|
+
"author",
|
|
6387
|
+
"content",
|
|
6388
|
+
"replies",
|
|
6389
|
+
"lights",
|
|
6390
|
+
"url"
|
|
6223
6391
|
],
|
|
6224
6392
|
"type": "ts",
|
|
6225
|
-
"modulePath": "
|
|
6393
|
+
"modulePath": "hupu/detail.js",
|
|
6394
|
+
"navigateBefore": false
|
|
6226
6395
|
},
|
|
6227
6396
|
{
|
|
6228
|
-
"site": "
|
|
6229
|
-
"name": "
|
|
6230
|
-
"description": "
|
|
6231
|
-
"domain": "
|
|
6232
|
-
"strategy": "
|
|
6397
|
+
"site": "hupu",
|
|
6398
|
+
"name": "hot",
|
|
6399
|
+
"description": "虎扑热门帖子",
|
|
6400
|
+
"domain": "bbs.hupu.com",
|
|
6401
|
+
"strategy": "cookie",
|
|
6233
6402
|
"browser": true,
|
|
6234
6403
|
"args": [
|
|
6235
|
-
{
|
|
6236
|
-
"name": "id",
|
|
6237
|
-
"type": "str",
|
|
6238
|
-
"required": true,
|
|
6239
|
-
"positional": true,
|
|
6240
|
-
"help": "IMDb title ID (tt1375666) or URL"
|
|
6241
|
-
},
|
|
6242
6404
|
{
|
|
6243
6405
|
"name": "limit",
|
|
6244
6406
|
"type": "int",
|
|
6245
|
-
"default":
|
|
6407
|
+
"default": 20,
|
|
6246
6408
|
"required": false,
|
|
6247
|
-
"
|
|
6409
|
+
"positional": false,
|
|
6410
|
+
"help": "Number of hot posts"
|
|
6248
6411
|
}
|
|
6249
6412
|
],
|
|
6250
6413
|
"columns": [
|
|
6251
6414
|
"rank",
|
|
6252
6415
|
"title",
|
|
6253
|
-
"
|
|
6254
|
-
"author",
|
|
6255
|
-
"date",
|
|
6256
|
-
"text"
|
|
6416
|
+
"url"
|
|
6257
6417
|
],
|
|
6258
|
-
"
|
|
6259
|
-
|
|
6418
|
+
"pipeline": [
|
|
6419
|
+
{
|
|
6420
|
+
"navigate": "https://bbs.hupu.com/"
|
|
6421
|
+
},
|
|
6422
|
+
{
|
|
6423
|
+
"evaluate": "(async () => {\n // 从HTML中提取帖子信息(适配新的HTML结构)\n const html = document.documentElement.outerHTML;\n const posts = [];\n\n // 匹配当前虎扑页面结构的正则表达式\n // 结构: <a href=\"/638249612.html\"...><span class=\"t-title\">标题</span></a>\n const regex = /<a[^>]*href=\"\\/(\\d{9})\\.html\"[^>]*><span[^>]*class=\"t-title\"[^>]*>([^<]+)<\\/span><\\/a>/g;\n let match;\n\n while ((match = regex.exec(html)) !== null && posts.length < ${{ args.limit }}) {\n posts.push({\n tid: match[1],\n title: match[2].trim()\n });\n }\n\n return posts;\n})()\n"
|
|
6424
|
+
},
|
|
6425
|
+
{
|
|
6426
|
+
"map": {
|
|
6427
|
+
"rank": "${{ index + 1 }}",
|
|
6428
|
+
"title": "${{ item.title }}",
|
|
6429
|
+
"url": "https://bbs.hupu.com/${{ item.tid }}.html"
|
|
6430
|
+
}
|
|
6431
|
+
},
|
|
6432
|
+
{
|
|
6433
|
+
"limit": "${{ args.limit }}"
|
|
6434
|
+
}
|
|
6435
|
+
],
|
|
6436
|
+
"type": "yaml"
|
|
6260
6437
|
},
|
|
6261
6438
|
{
|
|
6262
|
-
"site": "
|
|
6263
|
-
"name": "
|
|
6264
|
-
"description": "
|
|
6265
|
-
"domain": "
|
|
6266
|
-
"strategy": "
|
|
6439
|
+
"site": "hupu",
|
|
6440
|
+
"name": "like",
|
|
6441
|
+
"description": "点赞虎扑回复 (需要登录)",
|
|
6442
|
+
"domain": "bbs.hupu.com",
|
|
6443
|
+
"strategy": "cookie",
|
|
6267
6444
|
"browser": true,
|
|
6268
6445
|
"args": [
|
|
6269
6446
|
{
|
|
6270
|
-
"name": "
|
|
6447
|
+
"name": "tid",
|
|
6271
6448
|
"type": "str",
|
|
6272
6449
|
"required": true,
|
|
6273
6450
|
"positional": true,
|
|
6274
|
-
"help": "
|
|
6451
|
+
"help": "帖子ID(9位数字)"
|
|
6275
6452
|
},
|
|
6276
6453
|
{
|
|
6277
|
-
"name": "
|
|
6278
|
-
"type": "
|
|
6279
|
-
"
|
|
6280
|
-
"
|
|
6281
|
-
"help": "
|
|
6454
|
+
"name": "pid",
|
|
6455
|
+
"type": "str",
|
|
6456
|
+
"required": true,
|
|
6457
|
+
"positional": true,
|
|
6458
|
+
"help": "回复ID"
|
|
6459
|
+
},
|
|
6460
|
+
{
|
|
6461
|
+
"name": "fid",
|
|
6462
|
+
"type": "str",
|
|
6463
|
+
"required": true,
|
|
6464
|
+
"help": "板块ID(如278汽车区)"
|
|
6282
6465
|
}
|
|
6283
6466
|
],
|
|
6284
6467
|
"columns": [
|
|
6285
|
-
"
|
|
6286
|
-
"
|
|
6287
|
-
"title",
|
|
6288
|
-
"year",
|
|
6289
|
-
"type",
|
|
6290
|
-
"url"
|
|
6468
|
+
"status",
|
|
6469
|
+
"message"
|
|
6291
6470
|
],
|
|
6292
6471
|
"type": "ts",
|
|
6293
|
-
"modulePath": "
|
|
6472
|
+
"modulePath": "hupu/like.js",
|
|
6473
|
+
"navigateBefore": false
|
|
6294
6474
|
},
|
|
6295
6475
|
{
|
|
6296
|
-
"site": "
|
|
6297
|
-
"name": "
|
|
6298
|
-
"description": "
|
|
6299
|
-
"domain": "
|
|
6300
|
-
"strategy": "
|
|
6476
|
+
"site": "hupu",
|
|
6477
|
+
"name": "reply",
|
|
6478
|
+
"description": "回复虎扑帖子 (需要登录)",
|
|
6479
|
+
"domain": "bbs.hupu.com",
|
|
6480
|
+
"strategy": "cookie",
|
|
6301
6481
|
"browser": true,
|
|
6302
6482
|
"args": [
|
|
6303
6483
|
{
|
|
6304
|
-
"name": "
|
|
6484
|
+
"name": "tid",
|
|
6305
6485
|
"type": "str",
|
|
6306
6486
|
"required": true,
|
|
6307
6487
|
"positional": true,
|
|
6308
|
-
"help": "
|
|
6488
|
+
"help": "帖子ID(9位数字)"
|
|
6489
|
+
},
|
|
6490
|
+
{
|
|
6491
|
+
"name": "topic_id",
|
|
6492
|
+
"type": "str",
|
|
6493
|
+
"required": true,
|
|
6494
|
+
"help": "板块ID,即接口中的 topicId(如 502 篮球资讯)"
|
|
6495
|
+
},
|
|
6496
|
+
{
|
|
6497
|
+
"name": "text",
|
|
6498
|
+
"type": "str",
|
|
6499
|
+
"required": true,
|
|
6500
|
+
"positional": true,
|
|
6501
|
+
"help": "回复内容"
|
|
6502
|
+
},
|
|
6503
|
+
{
|
|
6504
|
+
"name": "quote_id",
|
|
6505
|
+
"type": "str",
|
|
6506
|
+
"required": false,
|
|
6507
|
+
"help": "被引用回复的 pid;填写后会以“回复某条热门回复”的方式发言"
|
|
6309
6508
|
}
|
|
6310
6509
|
],
|
|
6311
6510
|
"columns": [
|
|
6312
|
-
"
|
|
6313
|
-
"
|
|
6511
|
+
"status",
|
|
6512
|
+
"message"
|
|
6314
6513
|
],
|
|
6315
6514
|
"type": "ts",
|
|
6316
|
-
"modulePath": "
|
|
6515
|
+
"modulePath": "hupu/reply.js",
|
|
6516
|
+
"navigateBefore": false
|
|
6317
6517
|
},
|
|
6318
6518
|
{
|
|
6319
|
-
"site": "
|
|
6320
|
-
"name": "
|
|
6321
|
-
"description": "
|
|
6322
|
-
"domain": "
|
|
6519
|
+
"site": "hupu",
|
|
6520
|
+
"name": "search",
|
|
6521
|
+
"description": "搜索虎扑帖子 (使用官方API)",
|
|
6522
|
+
"domain": "bbs.hupu.com",
|
|
6323
6523
|
"strategy": "public",
|
|
6324
6524
|
"browser": true,
|
|
6325
6525
|
"args": [
|
|
6326
6526
|
{
|
|
6327
|
-
"name": "
|
|
6527
|
+
"name": "query",
|
|
6528
|
+
"type": "str",
|
|
6529
|
+
"required": true,
|
|
6530
|
+
"positional": true,
|
|
6531
|
+
"help": "搜索关键词"
|
|
6532
|
+
},
|
|
6533
|
+
{
|
|
6534
|
+
"name": "page",
|
|
6535
|
+
"type": "int",
|
|
6536
|
+
"default": 1,
|
|
6537
|
+
"required": false,
|
|
6538
|
+
"help": "结果页码"
|
|
6539
|
+
},
|
|
6540
|
+
{
|
|
6541
|
+
"name": "limit",
|
|
6542
|
+
"type": "int",
|
|
6543
|
+
"default": 20,
|
|
6544
|
+
"required": false,
|
|
6545
|
+
"help": "返回结果数量"
|
|
6546
|
+
},
|
|
6547
|
+
{
|
|
6548
|
+
"name": "forum",
|
|
6549
|
+
"type": "str",
|
|
6550
|
+
"required": false,
|
|
6551
|
+
"help": "板块ID过滤 (可选)"
|
|
6552
|
+
},
|
|
6553
|
+
{
|
|
6554
|
+
"name": "sort",
|
|
6555
|
+
"type": "str",
|
|
6556
|
+
"default": "general",
|
|
6557
|
+
"required": false,
|
|
6558
|
+
"help": "排序方式: general/createtime/replytime/light/reply"
|
|
6559
|
+
}
|
|
6560
|
+
],
|
|
6561
|
+
"columns": [
|
|
6562
|
+
"rank",
|
|
6563
|
+
"title",
|
|
6564
|
+
"author",
|
|
6565
|
+
"replies",
|
|
6566
|
+
"lights",
|
|
6567
|
+
"forum",
|
|
6568
|
+
"url"
|
|
6569
|
+
],
|
|
6570
|
+
"type": "ts",
|
|
6571
|
+
"modulePath": "hupu/search.js",
|
|
6572
|
+
"navigateBefore": false
|
|
6573
|
+
},
|
|
6574
|
+
{
|
|
6575
|
+
"site": "hupu",
|
|
6576
|
+
"name": "unlike",
|
|
6577
|
+
"description": "取消点赞虎扑回复 (需要登录)",
|
|
6578
|
+
"domain": "bbs.hupu.com",
|
|
6579
|
+
"strategy": "cookie",
|
|
6580
|
+
"browser": true,
|
|
6581
|
+
"args": [
|
|
6582
|
+
{
|
|
6583
|
+
"name": "tid",
|
|
6584
|
+
"type": "str",
|
|
6585
|
+
"required": true,
|
|
6586
|
+
"positional": true,
|
|
6587
|
+
"help": "帖子ID(9位数字)"
|
|
6588
|
+
},
|
|
6589
|
+
{
|
|
6590
|
+
"name": "pid",
|
|
6591
|
+
"type": "str",
|
|
6592
|
+
"required": true,
|
|
6593
|
+
"positional": true,
|
|
6594
|
+
"help": "回复ID"
|
|
6595
|
+
},
|
|
6596
|
+
{
|
|
6597
|
+
"name": "fid",
|
|
6598
|
+
"type": "str",
|
|
6599
|
+
"required": true,
|
|
6600
|
+
"help": "板块ID(如278汽车区)"
|
|
6601
|
+
}
|
|
6602
|
+
],
|
|
6603
|
+
"columns": [
|
|
6604
|
+
"status",
|
|
6605
|
+
"message"
|
|
6606
|
+
],
|
|
6607
|
+
"type": "ts",
|
|
6608
|
+
"modulePath": "hupu/unlike.js",
|
|
6609
|
+
"navigateBefore": false
|
|
6610
|
+
},
|
|
6611
|
+
{
|
|
6612
|
+
"site": "imdb",
|
|
6613
|
+
"name": "person",
|
|
6614
|
+
"description": "Get actor or director info",
|
|
6615
|
+
"domain": "www.imdb.com",
|
|
6616
|
+
"strategy": "public",
|
|
6617
|
+
"browser": true,
|
|
6618
|
+
"args": [
|
|
6619
|
+
{
|
|
6620
|
+
"name": "id",
|
|
6621
|
+
"type": "str",
|
|
6622
|
+
"required": true,
|
|
6623
|
+
"positional": true,
|
|
6624
|
+
"help": "IMDb person ID (nm0634240) or URL"
|
|
6625
|
+
},
|
|
6626
|
+
{
|
|
6627
|
+
"name": "limit",
|
|
6628
|
+
"type": "int",
|
|
6629
|
+
"default": 10,
|
|
6630
|
+
"required": false,
|
|
6631
|
+
"help": "Max filmography entries"
|
|
6632
|
+
}
|
|
6633
|
+
],
|
|
6634
|
+
"columns": [
|
|
6635
|
+
"field",
|
|
6636
|
+
"value"
|
|
6637
|
+
],
|
|
6638
|
+
"type": "ts",
|
|
6639
|
+
"modulePath": "imdb/person.js"
|
|
6640
|
+
},
|
|
6641
|
+
{
|
|
6642
|
+
"site": "imdb",
|
|
6643
|
+
"name": "reviews",
|
|
6644
|
+
"description": "Get user reviews for a movie or TV show",
|
|
6645
|
+
"domain": "www.imdb.com",
|
|
6646
|
+
"strategy": "public",
|
|
6647
|
+
"browser": true,
|
|
6648
|
+
"args": [
|
|
6649
|
+
{
|
|
6650
|
+
"name": "id",
|
|
6651
|
+
"type": "str",
|
|
6652
|
+
"required": true,
|
|
6653
|
+
"positional": true,
|
|
6654
|
+
"help": "IMDb title ID (tt1375666) or URL"
|
|
6655
|
+
},
|
|
6656
|
+
{
|
|
6657
|
+
"name": "limit",
|
|
6658
|
+
"type": "int",
|
|
6659
|
+
"default": 10,
|
|
6660
|
+
"required": false,
|
|
6661
|
+
"help": "Number of reviews"
|
|
6662
|
+
}
|
|
6663
|
+
],
|
|
6664
|
+
"columns": [
|
|
6665
|
+
"rank",
|
|
6666
|
+
"title",
|
|
6667
|
+
"rating",
|
|
6668
|
+
"author",
|
|
6669
|
+
"date",
|
|
6670
|
+
"text"
|
|
6671
|
+
],
|
|
6672
|
+
"type": "ts",
|
|
6673
|
+
"modulePath": "imdb/reviews.js"
|
|
6674
|
+
},
|
|
6675
|
+
{
|
|
6676
|
+
"site": "imdb",
|
|
6677
|
+
"name": "search",
|
|
6678
|
+
"description": "Search IMDb for movies, TV shows, and people",
|
|
6679
|
+
"domain": "www.imdb.com",
|
|
6680
|
+
"strategy": "public",
|
|
6681
|
+
"browser": true,
|
|
6682
|
+
"args": [
|
|
6683
|
+
{
|
|
6684
|
+
"name": "query",
|
|
6685
|
+
"type": "str",
|
|
6686
|
+
"required": true,
|
|
6687
|
+
"positional": true,
|
|
6688
|
+
"help": "Search query"
|
|
6689
|
+
},
|
|
6690
|
+
{
|
|
6691
|
+
"name": "limit",
|
|
6692
|
+
"type": "int",
|
|
6693
|
+
"default": 20,
|
|
6694
|
+
"required": false,
|
|
6695
|
+
"help": "Number of results"
|
|
6696
|
+
}
|
|
6697
|
+
],
|
|
6698
|
+
"columns": [
|
|
6699
|
+
"rank",
|
|
6700
|
+
"id",
|
|
6701
|
+
"title",
|
|
6702
|
+
"year",
|
|
6703
|
+
"type",
|
|
6704
|
+
"url"
|
|
6705
|
+
],
|
|
6706
|
+
"type": "ts",
|
|
6707
|
+
"modulePath": "imdb/search.js"
|
|
6708
|
+
},
|
|
6709
|
+
{
|
|
6710
|
+
"site": "imdb",
|
|
6711
|
+
"name": "title",
|
|
6712
|
+
"description": "Get movie or TV show details",
|
|
6713
|
+
"domain": "www.imdb.com",
|
|
6714
|
+
"strategy": "public",
|
|
6715
|
+
"browser": true,
|
|
6716
|
+
"args": [
|
|
6717
|
+
{
|
|
6718
|
+
"name": "id",
|
|
6719
|
+
"type": "str",
|
|
6720
|
+
"required": true,
|
|
6721
|
+
"positional": true,
|
|
6722
|
+
"help": "IMDb title ID (tt1375666) or URL"
|
|
6723
|
+
}
|
|
6724
|
+
],
|
|
6725
|
+
"columns": [
|
|
6726
|
+
"field",
|
|
6727
|
+
"value"
|
|
6728
|
+
],
|
|
6729
|
+
"type": "ts",
|
|
6730
|
+
"modulePath": "imdb/title.js"
|
|
6731
|
+
},
|
|
6732
|
+
{
|
|
6733
|
+
"site": "imdb",
|
|
6734
|
+
"name": "top",
|
|
6735
|
+
"description": "IMDb Top 250 Movies",
|
|
6736
|
+
"domain": "www.imdb.com",
|
|
6737
|
+
"strategy": "public",
|
|
6738
|
+
"browser": true,
|
|
6739
|
+
"args": [
|
|
6740
|
+
{
|
|
6741
|
+
"name": "limit",
|
|
6328
6742
|
"type": "int",
|
|
6329
6743
|
"default": 20,
|
|
6330
6744
|
"required": false,
|
|
@@ -6432,7 +6846,7 @@
|
|
|
6432
6846
|
{
|
|
6433
6847
|
"name": "path",
|
|
6434
6848
|
"type": "str",
|
|
6435
|
-
"default": "/
|
|
6849
|
+
"default": "/home/runner/Downloads/Instagram",
|
|
6436
6850
|
"required": false,
|
|
6437
6851
|
"help": "Download directory"
|
|
6438
6852
|
}
|
|
@@ -6627,6 +7041,63 @@
|
|
|
6627
7041
|
],
|
|
6628
7042
|
"type": "yaml"
|
|
6629
7043
|
},
|
|
7044
|
+
{
|
|
7045
|
+
"site": "instagram",
|
|
7046
|
+
"name": "note",
|
|
7047
|
+
"description": "Publish a text Instagram note",
|
|
7048
|
+
"domain": "www.instagram.com",
|
|
7049
|
+
"strategy": "ui",
|
|
7050
|
+
"browser": true,
|
|
7051
|
+
"args": [
|
|
7052
|
+
{
|
|
7053
|
+
"name": "content",
|
|
7054
|
+
"type": "str",
|
|
7055
|
+
"required": true,
|
|
7056
|
+
"positional": true,
|
|
7057
|
+
"help": "Note text (max 60 characters)"
|
|
7058
|
+
}
|
|
7059
|
+
],
|
|
7060
|
+
"columns": [
|
|
7061
|
+
"status",
|
|
7062
|
+
"detail",
|
|
7063
|
+
"noteId"
|
|
7064
|
+
],
|
|
7065
|
+
"timeout": 120,
|
|
7066
|
+
"type": "ts",
|
|
7067
|
+
"modulePath": "instagram/note.js"
|
|
7068
|
+
},
|
|
7069
|
+
{
|
|
7070
|
+
"site": "instagram",
|
|
7071
|
+
"name": "post",
|
|
7072
|
+
"description": "Post an Instagram feed image or mixed-media carousel",
|
|
7073
|
+
"domain": "www.instagram.com",
|
|
7074
|
+
"strategy": "ui",
|
|
7075
|
+
"browser": true,
|
|
7076
|
+
"args": [
|
|
7077
|
+
{
|
|
7078
|
+
"name": "media",
|
|
7079
|
+
"type": "str",
|
|
7080
|
+
"required": false,
|
|
7081
|
+
"valueRequired": true,
|
|
7082
|
+
"help": "Comma-separated media paths (images/videos, up to 10)"
|
|
7083
|
+
},
|
|
7084
|
+
{
|
|
7085
|
+
"name": "content",
|
|
7086
|
+
"type": "str",
|
|
7087
|
+
"required": false,
|
|
7088
|
+
"positional": true,
|
|
7089
|
+
"help": "Caption text"
|
|
7090
|
+
}
|
|
7091
|
+
],
|
|
7092
|
+
"columns": [
|
|
7093
|
+
"status",
|
|
7094
|
+
"detail",
|
|
7095
|
+
"url"
|
|
7096
|
+
],
|
|
7097
|
+
"timeout": 300,
|
|
7098
|
+
"type": "ts",
|
|
7099
|
+
"modulePath": "instagram/post.js"
|
|
7100
|
+
},
|
|
6630
7101
|
{
|
|
6631
7102
|
"site": "instagram",
|
|
6632
7103
|
"name": "profile",
|
|
@@ -6662,6 +7133,38 @@
|
|
|
6662
7133
|
],
|
|
6663
7134
|
"type": "yaml"
|
|
6664
7135
|
},
|
|
7136
|
+
{
|
|
7137
|
+
"site": "instagram",
|
|
7138
|
+
"name": "reel",
|
|
7139
|
+
"description": "Post an Instagram reel video",
|
|
7140
|
+
"domain": "www.instagram.com",
|
|
7141
|
+
"strategy": "ui",
|
|
7142
|
+
"browser": true,
|
|
7143
|
+
"args": [
|
|
7144
|
+
{
|
|
7145
|
+
"name": "video",
|
|
7146
|
+
"type": "str",
|
|
7147
|
+
"required": false,
|
|
7148
|
+
"valueRequired": true,
|
|
7149
|
+
"help": "Path to a single .mp4 video file"
|
|
7150
|
+
},
|
|
7151
|
+
{
|
|
7152
|
+
"name": "content",
|
|
7153
|
+
"type": "str",
|
|
7154
|
+
"required": false,
|
|
7155
|
+
"positional": true,
|
|
7156
|
+
"help": "Caption text"
|
|
7157
|
+
}
|
|
7158
|
+
],
|
|
7159
|
+
"columns": [
|
|
7160
|
+
"status",
|
|
7161
|
+
"detail",
|
|
7162
|
+
"url"
|
|
7163
|
+
],
|
|
7164
|
+
"timeout": 600,
|
|
7165
|
+
"type": "ts",
|
|
7166
|
+
"modulePath": "instagram/reel.js"
|
|
7167
|
+
},
|
|
6665
7168
|
{
|
|
6666
7169
|
"site": "instagram",
|
|
6667
7170
|
"name": "save",
|
|
@@ -6778,6 +7281,31 @@
|
|
|
6778
7281
|
],
|
|
6779
7282
|
"type": "yaml"
|
|
6780
7283
|
},
|
|
7284
|
+
{
|
|
7285
|
+
"site": "instagram",
|
|
7286
|
+
"name": "story",
|
|
7287
|
+
"description": "Post a single Instagram story image or video",
|
|
7288
|
+
"domain": "www.instagram.com",
|
|
7289
|
+
"strategy": "ui",
|
|
7290
|
+
"browser": true,
|
|
7291
|
+
"args": [
|
|
7292
|
+
{
|
|
7293
|
+
"name": "media",
|
|
7294
|
+
"type": "str",
|
|
7295
|
+
"required": false,
|
|
7296
|
+
"valueRequired": true,
|
|
7297
|
+
"help": "Path to a single story image or video file"
|
|
7298
|
+
}
|
|
7299
|
+
],
|
|
7300
|
+
"columns": [
|
|
7301
|
+
"status",
|
|
7302
|
+
"detail",
|
|
7303
|
+
"url"
|
|
7304
|
+
],
|
|
7305
|
+
"timeout": 300,
|
|
7306
|
+
"type": "ts",
|
|
7307
|
+
"modulePath": "instagram/story.js"
|
|
7308
|
+
},
|
|
6781
7309
|
{
|
|
6782
7310
|
"site": "instagram",
|
|
6783
7311
|
"name": "unfollow",
|
|
@@ -10523,7 +11051,43 @@
|
|
|
10523
11051
|
"MarketCap"
|
|
10524
11052
|
],
|
|
10525
11053
|
"type": "ts",
|
|
10526
|
-
"modulePath": "sinafinance/stock.js"
|
|
11054
|
+
"modulePath": "sinafinance/stock.js"
|
|
11055
|
+
},
|
|
11056
|
+
{
|
|
11057
|
+
"site": "sinafinance",
|
|
11058
|
+
"name": "stock-rank",
|
|
11059
|
+
"description": "新浪财经热搜榜",
|
|
11060
|
+
"domain": "finance.sina.cn",
|
|
11061
|
+
"strategy": "cookie",
|
|
11062
|
+
"browser": true,
|
|
11063
|
+
"args": [
|
|
11064
|
+
{
|
|
11065
|
+
"name": "market",
|
|
11066
|
+
"type": "string",
|
|
11067
|
+
"default": "cn",
|
|
11068
|
+
"required": false,
|
|
11069
|
+
"help": "Market: cn (A股), hk (港股), us (美股), wh (外汇), ft (期货)",
|
|
11070
|
+
"choices": [
|
|
11071
|
+
"cn",
|
|
11072
|
+
"hk",
|
|
11073
|
+
"us",
|
|
11074
|
+
"wh",
|
|
11075
|
+
"ft"
|
|
11076
|
+
]
|
|
11077
|
+
}
|
|
11078
|
+
],
|
|
11079
|
+
"columns": [
|
|
11080
|
+
"rank",
|
|
11081
|
+
"name",
|
|
11082
|
+
"symbol",
|
|
11083
|
+
"market",
|
|
11084
|
+
"price",
|
|
11085
|
+
"change",
|
|
11086
|
+
"url"
|
|
11087
|
+
],
|
|
11088
|
+
"type": "ts",
|
|
11089
|
+
"modulePath": "sinafinance/stock-rank.js",
|
|
11090
|
+
"navigateBefore": false
|
|
10527
11091
|
},
|
|
10528
11092
|
{
|
|
10529
11093
|
"site": "smzdm",
|
|
@@ -12247,6 +12811,12 @@
|
|
|
12247
12811
|
"required": true,
|
|
12248
12812
|
"positional": true,
|
|
12249
12813
|
"help": "The text content of the tweet"
|
|
12814
|
+
},
|
|
12815
|
+
{
|
|
12816
|
+
"name": "images",
|
|
12817
|
+
"type": "string",
|
|
12818
|
+
"required": false,
|
|
12819
|
+
"help": "Image paths, comma-separated, max 4 (jpg/png/gif/webp)"
|
|
12250
12820
|
}
|
|
12251
12821
|
],
|
|
12252
12822
|
"columns": [
|
|
@@ -12292,7 +12862,7 @@
|
|
|
12292
12862
|
{
|
|
12293
12863
|
"site": "twitter",
|
|
12294
12864
|
"name": "reply",
|
|
12295
|
-
"description": "Reply to a specific tweet",
|
|
12865
|
+
"description": "Reply to a specific tweet, optionally with a local or remote image",
|
|
12296
12866
|
"domain": "x.com",
|
|
12297
12867
|
"strategy": "ui",
|
|
12298
12868
|
"browser": true,
|
|
@@ -12310,6 +12880,18 @@
|
|
|
12310
12880
|
"required": true,
|
|
12311
12881
|
"positional": true,
|
|
12312
12882
|
"help": "The text content of your reply"
|
|
12883
|
+
},
|
|
12884
|
+
{
|
|
12885
|
+
"name": "image",
|
|
12886
|
+
"type": "str",
|
|
12887
|
+
"required": false,
|
|
12888
|
+
"help": "Optional local image path to attach to the reply"
|
|
12889
|
+
},
|
|
12890
|
+
{
|
|
12891
|
+
"name": "image-url",
|
|
12892
|
+
"type": "str",
|
|
12893
|
+
"required": false,
|
|
12894
|
+
"help": "Optional remote image URL to download and attach to the reply"
|
|
12313
12895
|
}
|
|
12314
12896
|
],
|
|
12315
12897
|
"columns": [
|
|
@@ -13448,23 +14030,275 @@
|
|
|
13448
14030
|
}
|
|
13449
14031
|
],
|
|
13450
14032
|
"columns": [
|
|
13451
|
-
"rank",
|
|
14033
|
+
"rank",
|
|
14034
|
+
"title",
|
|
14035
|
+
"author",
|
|
14036
|
+
"category",
|
|
14037
|
+
"readingCount",
|
|
14038
|
+
"bookId"
|
|
14039
|
+
],
|
|
14040
|
+
"type": "ts",
|
|
14041
|
+
"modulePath": "weread/ranking.js"
|
|
14042
|
+
},
|
|
14043
|
+
{
|
|
14044
|
+
"site": "weread",
|
|
14045
|
+
"name": "search",
|
|
14046
|
+
"description": "Search books on WeRead",
|
|
14047
|
+
"domain": "weread.qq.com",
|
|
14048
|
+
"strategy": "public",
|
|
14049
|
+
"browser": false,
|
|
14050
|
+
"args": [
|
|
14051
|
+
{
|
|
14052
|
+
"name": "query",
|
|
14053
|
+
"type": "str",
|
|
14054
|
+
"required": true,
|
|
14055
|
+
"positional": true,
|
|
14056
|
+
"help": "Search keyword"
|
|
14057
|
+
},
|
|
14058
|
+
{
|
|
14059
|
+
"name": "limit",
|
|
14060
|
+
"type": "int",
|
|
14061
|
+
"default": 10,
|
|
14062
|
+
"required": false,
|
|
14063
|
+
"help": "Max results"
|
|
14064
|
+
}
|
|
14065
|
+
],
|
|
14066
|
+
"columns": [
|
|
14067
|
+
"rank",
|
|
14068
|
+
"title",
|
|
14069
|
+
"author",
|
|
14070
|
+
"bookId",
|
|
14071
|
+
"url"
|
|
14072
|
+
],
|
|
14073
|
+
"type": "ts",
|
|
14074
|
+
"modulePath": "weread/search.js"
|
|
14075
|
+
},
|
|
14076
|
+
{
|
|
14077
|
+
"site": "weread",
|
|
14078
|
+
"name": "shelf",
|
|
14079
|
+
"description": "List books on your WeRead bookshelf",
|
|
14080
|
+
"domain": "weread.qq.com",
|
|
14081
|
+
"strategy": "cookie",
|
|
14082
|
+
"browser": true,
|
|
14083
|
+
"args": [
|
|
14084
|
+
{
|
|
14085
|
+
"name": "limit",
|
|
14086
|
+
"type": "int",
|
|
14087
|
+
"default": 20,
|
|
14088
|
+
"required": false,
|
|
14089
|
+
"help": "Max results"
|
|
14090
|
+
}
|
|
14091
|
+
],
|
|
14092
|
+
"columns": [
|
|
14093
|
+
"title",
|
|
14094
|
+
"author",
|
|
14095
|
+
"progress",
|
|
14096
|
+
"bookId"
|
|
14097
|
+
],
|
|
14098
|
+
"type": "ts",
|
|
14099
|
+
"modulePath": "weread/shelf.js"
|
|
14100
|
+
},
|
|
14101
|
+
{
|
|
14102
|
+
"site": "wikipedia",
|
|
14103
|
+
"name": "random",
|
|
14104
|
+
"description": "Get a random Wikipedia article",
|
|
14105
|
+
"strategy": "public",
|
|
14106
|
+
"browser": false,
|
|
14107
|
+
"args": [
|
|
14108
|
+
{
|
|
14109
|
+
"name": "lang",
|
|
14110
|
+
"type": "str",
|
|
14111
|
+
"default": "en",
|
|
14112
|
+
"required": false,
|
|
14113
|
+
"help": "Language code (e.g. en, zh, ja)"
|
|
14114
|
+
}
|
|
14115
|
+
],
|
|
14116
|
+
"columns": [
|
|
14117
|
+
"title",
|
|
14118
|
+
"description",
|
|
14119
|
+
"extract",
|
|
14120
|
+
"url"
|
|
14121
|
+
],
|
|
14122
|
+
"type": "ts",
|
|
14123
|
+
"modulePath": "wikipedia/random.js"
|
|
14124
|
+
},
|
|
14125
|
+
{
|
|
14126
|
+
"site": "wikipedia",
|
|
14127
|
+
"name": "search",
|
|
14128
|
+
"description": "Search Wikipedia articles",
|
|
14129
|
+
"strategy": "public",
|
|
14130
|
+
"browser": false,
|
|
14131
|
+
"args": [
|
|
14132
|
+
{
|
|
14133
|
+
"name": "query",
|
|
14134
|
+
"type": "str",
|
|
14135
|
+
"required": true,
|
|
14136
|
+
"positional": true,
|
|
14137
|
+
"help": "Search keyword"
|
|
14138
|
+
},
|
|
14139
|
+
{
|
|
14140
|
+
"name": "limit",
|
|
14141
|
+
"type": "int",
|
|
14142
|
+
"default": 10,
|
|
14143
|
+
"required": false,
|
|
14144
|
+
"help": "Max results"
|
|
14145
|
+
},
|
|
14146
|
+
{
|
|
14147
|
+
"name": "lang",
|
|
14148
|
+
"type": "str",
|
|
14149
|
+
"default": "en",
|
|
14150
|
+
"required": false,
|
|
14151
|
+
"help": "Language code (e.g. en, zh, ja)"
|
|
14152
|
+
}
|
|
14153
|
+
],
|
|
14154
|
+
"columns": [
|
|
14155
|
+
"title",
|
|
14156
|
+
"snippet",
|
|
14157
|
+
"url"
|
|
14158
|
+
],
|
|
14159
|
+
"type": "ts",
|
|
14160
|
+
"modulePath": "wikipedia/search.js"
|
|
14161
|
+
},
|
|
14162
|
+
{
|
|
14163
|
+
"site": "wikipedia",
|
|
14164
|
+
"name": "summary",
|
|
14165
|
+
"description": "Get Wikipedia article summary",
|
|
14166
|
+
"strategy": "public",
|
|
14167
|
+
"browser": false,
|
|
14168
|
+
"args": [
|
|
14169
|
+
{
|
|
14170
|
+
"name": "title",
|
|
14171
|
+
"type": "str",
|
|
14172
|
+
"required": true,
|
|
14173
|
+
"positional": true,
|
|
14174
|
+
"help": "Article title (e.g. \"Transformer (machine learning model)\")"
|
|
14175
|
+
},
|
|
14176
|
+
{
|
|
14177
|
+
"name": "lang",
|
|
14178
|
+
"type": "str",
|
|
14179
|
+
"default": "en",
|
|
14180
|
+
"required": false,
|
|
14181
|
+
"help": "Language code (e.g. en, zh, ja)"
|
|
14182
|
+
}
|
|
14183
|
+
],
|
|
14184
|
+
"columns": [
|
|
14185
|
+
"title",
|
|
14186
|
+
"description",
|
|
14187
|
+
"extract",
|
|
14188
|
+
"url"
|
|
14189
|
+
],
|
|
14190
|
+
"type": "ts",
|
|
14191
|
+
"modulePath": "wikipedia/summary.js"
|
|
14192
|
+
},
|
|
14193
|
+
{
|
|
14194
|
+
"site": "wikipedia",
|
|
14195
|
+
"name": "trending",
|
|
14196
|
+
"description": "Most-read Wikipedia articles (yesterday)",
|
|
14197
|
+
"strategy": "public",
|
|
14198
|
+
"browser": false,
|
|
14199
|
+
"args": [
|
|
14200
|
+
{
|
|
14201
|
+
"name": "limit",
|
|
14202
|
+
"type": "int",
|
|
14203
|
+
"default": 10,
|
|
14204
|
+
"required": false,
|
|
14205
|
+
"help": "Max results"
|
|
14206
|
+
},
|
|
14207
|
+
{
|
|
14208
|
+
"name": "lang",
|
|
14209
|
+
"type": "str",
|
|
14210
|
+
"default": "en",
|
|
14211
|
+
"required": false,
|
|
14212
|
+
"help": "Language code (e.g. en, zh, ja)"
|
|
14213
|
+
}
|
|
14214
|
+
],
|
|
14215
|
+
"columns": [
|
|
14216
|
+
"rank",
|
|
14217
|
+
"title",
|
|
14218
|
+
"description",
|
|
14219
|
+
"views"
|
|
14220
|
+
],
|
|
14221
|
+
"type": "ts",
|
|
14222
|
+
"modulePath": "wikipedia/trending.js"
|
|
14223
|
+
},
|
|
14224
|
+
{
|
|
14225
|
+
"site": "xianyu",
|
|
14226
|
+
"name": "chat",
|
|
14227
|
+
"description": "打开闲鱼聊一聊会话,并可选发送消息",
|
|
14228
|
+
"domain": "www.goofish.com",
|
|
14229
|
+
"strategy": "cookie",
|
|
14230
|
+
"browser": true,
|
|
14231
|
+
"args": [
|
|
14232
|
+
{
|
|
14233
|
+
"name": "item_id",
|
|
14234
|
+
"type": "str",
|
|
14235
|
+
"required": true,
|
|
14236
|
+
"positional": true,
|
|
14237
|
+
"help": "闲鱼商品 item_id"
|
|
14238
|
+
},
|
|
14239
|
+
{
|
|
14240
|
+
"name": "user_id",
|
|
14241
|
+
"type": "str",
|
|
14242
|
+
"required": true,
|
|
14243
|
+
"positional": true,
|
|
14244
|
+
"help": "聊一聊对方的 user_id / peerUserId"
|
|
14245
|
+
},
|
|
14246
|
+
{
|
|
14247
|
+
"name": "text",
|
|
14248
|
+
"type": "str",
|
|
14249
|
+
"required": false,
|
|
14250
|
+
"help": "Message to send after opening the chat"
|
|
14251
|
+
}
|
|
14252
|
+
],
|
|
14253
|
+
"columns": [
|
|
14254
|
+
"status",
|
|
14255
|
+
"peer_name",
|
|
14256
|
+
"item_title",
|
|
14257
|
+
"price",
|
|
14258
|
+
"location",
|
|
14259
|
+
"message"
|
|
14260
|
+
],
|
|
14261
|
+
"type": "ts",
|
|
14262
|
+
"modulePath": "xianyu/chat.js",
|
|
14263
|
+
"navigateBefore": false
|
|
14264
|
+
},
|
|
14265
|
+
{
|
|
14266
|
+
"site": "xianyu",
|
|
14267
|
+
"name": "item",
|
|
14268
|
+
"description": "查看闲鱼商品详情",
|
|
14269
|
+
"domain": "www.goofish.com",
|
|
14270
|
+
"strategy": "cookie",
|
|
14271
|
+
"browser": true,
|
|
14272
|
+
"args": [
|
|
14273
|
+
{
|
|
14274
|
+
"name": "item_id",
|
|
14275
|
+
"type": "str",
|
|
14276
|
+
"required": true,
|
|
14277
|
+
"positional": true,
|
|
14278
|
+
"help": "闲鱼商品 item_id"
|
|
14279
|
+
}
|
|
14280
|
+
],
|
|
14281
|
+
"columns": [
|
|
14282
|
+
"item_id",
|
|
13452
14283
|
"title",
|
|
13453
|
-
"
|
|
13454
|
-
"
|
|
13455
|
-
"
|
|
13456
|
-
"
|
|
14284
|
+
"price",
|
|
14285
|
+
"condition",
|
|
14286
|
+
"brand",
|
|
14287
|
+
"location",
|
|
14288
|
+
"seller_name",
|
|
14289
|
+
"want_count"
|
|
13457
14290
|
],
|
|
13458
14291
|
"type": "ts",
|
|
13459
|
-
"modulePath": "
|
|
14292
|
+
"modulePath": "xianyu/item.js",
|
|
14293
|
+
"navigateBefore": false
|
|
13460
14294
|
},
|
|
13461
14295
|
{
|
|
13462
|
-
"site": "
|
|
14296
|
+
"site": "xianyu",
|
|
13463
14297
|
"name": "search",
|
|
13464
|
-
"description": "
|
|
13465
|
-
"domain": "
|
|
13466
|
-
"strategy": "
|
|
13467
|
-
"browser":
|
|
14298
|
+
"description": "搜索闲鱼商品",
|
|
14299
|
+
"domain": "www.goofish.com",
|
|
14300
|
+
"strategy": "cookie",
|
|
14301
|
+
"browser": true,
|
|
13468
14302
|
"args": [
|
|
13469
14303
|
{
|
|
13470
14304
|
"name": "query",
|
|
@@ -13476,168 +14310,223 @@
|
|
|
13476
14310
|
{
|
|
13477
14311
|
"name": "limit",
|
|
13478
14312
|
"type": "int",
|
|
13479
|
-
"default":
|
|
14313
|
+
"default": 20,
|
|
13480
14314
|
"required": false,
|
|
13481
|
-
"help": "
|
|
14315
|
+
"help": "Number of results to return"
|
|
13482
14316
|
}
|
|
13483
14317
|
],
|
|
13484
14318
|
"columns": [
|
|
14319
|
+
"item_id",
|
|
13485
14320
|
"rank",
|
|
13486
14321
|
"title",
|
|
13487
|
-
"
|
|
13488
|
-
"
|
|
14322
|
+
"price",
|
|
14323
|
+
"condition",
|
|
14324
|
+
"brand",
|
|
14325
|
+
"location",
|
|
14326
|
+
"badge",
|
|
13489
14327
|
"url"
|
|
13490
14328
|
],
|
|
13491
14329
|
"type": "ts",
|
|
13492
|
-
"modulePath": "
|
|
14330
|
+
"modulePath": "xianyu/search.js",
|
|
14331
|
+
"navigateBefore": false
|
|
13493
14332
|
},
|
|
13494
14333
|
{
|
|
13495
|
-
"site": "
|
|
13496
|
-
"name": "
|
|
13497
|
-
"description": "
|
|
13498
|
-
"domain": "
|
|
14334
|
+
"site": "xiaoe",
|
|
14335
|
+
"name": "catalog",
|
|
14336
|
+
"description": "小鹅通课程目录(支持普通课程、专栏、大专栏)",
|
|
14337
|
+
"domain": "h5.xet.citv.cn",
|
|
13499
14338
|
"strategy": "cookie",
|
|
13500
14339
|
"browser": true,
|
|
13501
14340
|
"args": [
|
|
13502
14341
|
{
|
|
13503
|
-
"name": "
|
|
13504
|
-
"type": "
|
|
13505
|
-
"
|
|
13506
|
-
"
|
|
13507
|
-
"help": "
|
|
14342
|
+
"name": "url",
|
|
14343
|
+
"type": "str",
|
|
14344
|
+
"required": true,
|
|
14345
|
+
"positional": true,
|
|
14346
|
+
"help": "课程页面 URL"
|
|
13508
14347
|
}
|
|
13509
14348
|
],
|
|
13510
14349
|
"columns": [
|
|
14350
|
+
"ch",
|
|
14351
|
+
"chapter",
|
|
14352
|
+
"no",
|
|
13511
14353
|
"title",
|
|
13512
|
-
"
|
|
13513
|
-
"
|
|
13514
|
-
"
|
|
14354
|
+
"type",
|
|
14355
|
+
"resource_id",
|
|
14356
|
+
"status"
|
|
13515
14357
|
],
|
|
13516
|
-
"
|
|
13517
|
-
|
|
14358
|
+
"pipeline": [
|
|
14359
|
+
{
|
|
14360
|
+
"navigate": "${{ args.url }}"
|
|
14361
|
+
},
|
|
14362
|
+
{
|
|
14363
|
+
"wait": 8
|
|
14364
|
+
},
|
|
14365
|
+
{
|
|
14366
|
+
"evaluate": "(async () => {\n var el = document.querySelector('#app');\n var store = (el && el.__vue__) ? el.__vue__.$store : null;\n if (!store) return [];\n var coreInfo = store.state.coreInfo || {};\n var resourceType = coreInfo.resource_type || 0;\n var origin = window.location.origin;\n var courseName = coreInfo.resource_name || '';\n\n function typeLabel(t) {\n return {1:'图文',2:'直播',3:'音频',4:'视频',6:'专栏',8:'大专栏'}[Number(t)] || String(t||'');\n }\n function buildUrl(item) {\n var u = item.jump_url || item.h5_url || item.url || '';\n return (u && !u.startsWith('http')) ? origin + u : u;\n }\n function clickTab(name) {\n var tabs = document.querySelectorAll('span, div');\n for (var i = 0; i < tabs.length; i++) {\n if (tabs[i].children.length === 0 && tabs[i].textContent.trim() === name) {\n tabs[i].click(); return;\n }\n }\n }\n\n clickTab('目录');\n await new Promise(function(r) { setTimeout(r, 2000); });\n\n // ===== 专栏 / 大专栏 =====\n if (resourceType === 6 || resourceType === 8) {\n await new Promise(function(r) { setTimeout(r, 1000); });\n var listData = [];\n var walkList = function(vm, depth) {\n if (!vm || depth > 6 || listData.length > 0) return;\n var d = vm.$data || {};\n var keys = ['columnList', 'SingleItemList', 'chapterChildren'];\n for (var ki = 0; ki < keys.length; ki++) {\n var arr = d[keys[ki]];\n if (arr && Array.isArray(arr) && arr.length > 0 && arr[0].resource_id) {\n for (var j = 0; j < arr.length; j++) {\n var item = arr[j];\n if (!item.resource_id || !/^[pvlai]_/.test(item.resource_id)) continue;\n listData.push({\n ch: 1, chapter: courseName, no: j + 1,\n title: item.resource_title || item.title || item.chapter_title || '',\n type: typeLabel(item.resource_type || item.chapter_type),\n resource_id: item.resource_id,\n url: buildUrl(item),\n status: item.finished_state === 1 ? '已完成' : (item.resource_count ? item.resource_count + '节' : ''),\n });\n }\n return;\n }\n }\n if (vm.$children) {\n for (var c = 0; c < vm.$children.length; c++) walkList(vm.$children[c], depth + 1);\n }\n };\n walkList(el.__vue__, 0);\n return listData;\n }\n\n // ===== 普通课程 =====\n var chapters = document.querySelectorAll('.chapter_box');\n for (var ci = 0; ci < chapters.length; ci++) {\n var vue = chapters[ci].__vue__;\n if (vue && typeof vue.getSecitonList === 'function' && (!vue.isShowSecitonsList || !vue.chapterChildren.length)) {\n if (vue.isShowSecitonsList) vue.isShowSecitonsList = false;\n try { vue.getSecitonList(); } catch(e) {}\n await new Promise(function(r) { setTimeout(r, 1500); });\n }\n }\n await new Promise(function(r) { setTimeout(r, 3000); });\n\n var result = [];\n chapters = document.querySelectorAll('.chapter_box');\n for (var cj = 0; cj < chapters.length; cj++) {\n var v = chapters[cj].__vue__;\n if (!v) continue;\n var chTitle = (v.chapterItem && v.chapterItem.chapter_title) || '';\n var children = v.chapterChildren || [];\n for (var ck = 0; ck < children.length; ck++) {\n var child = children[ck];\n var resId = child.resource_id || child.chapter_id || '';\n var chType = child.chapter_type || child.resource_type || 0;\n var urlPath = {1:'/v1/course/text/',2:'/v2/course/alive/',3:'/v1/course/audio/',4:'/v1/course/video/'}[Number(chType)];\n result.push({\n ch: cj + 1, chapter: chTitle, no: ck + 1,\n title: child.chapter_title || child.resource_title || '',\n type: typeLabel(chType),\n resource_id: resId,\n url: urlPath ? origin + urlPath + resId + '?type=2' : '',\n status: child.is_finish === 1 ? '已完成' : (child.learn_progress > 0 ? child.learn_progress + '%' : '未学'),\n });\n }\n }\n return result;\n})()\n"
|
|
14367
|
+
},
|
|
14368
|
+
{
|
|
14369
|
+
"map": {
|
|
14370
|
+
"ch": "${{ item.ch }}",
|
|
14371
|
+
"chapter": "${{ item.chapter }}",
|
|
14372
|
+
"no": "${{ item.no }}",
|
|
14373
|
+
"title": "${{ item.title }}",
|
|
14374
|
+
"type": "${{ item.type }}",
|
|
14375
|
+
"resource_id": "${{ item.resource_id }}",
|
|
14376
|
+
"url": "${{ item.url }}",
|
|
14377
|
+
"status": "${{ item.status }}"
|
|
14378
|
+
}
|
|
14379
|
+
}
|
|
14380
|
+
],
|
|
14381
|
+
"type": "yaml"
|
|
13518
14382
|
},
|
|
13519
14383
|
{
|
|
13520
|
-
"site": "
|
|
13521
|
-
"name": "
|
|
13522
|
-
"description": "
|
|
13523
|
-
"
|
|
13524
|
-
"
|
|
14384
|
+
"site": "xiaoe",
|
|
14385
|
+
"name": "content",
|
|
14386
|
+
"description": "提取小鹅通图文页面内容为文本",
|
|
14387
|
+
"domain": "h5.xet.citv.cn",
|
|
14388
|
+
"strategy": "cookie",
|
|
14389
|
+
"browser": true,
|
|
13525
14390
|
"args": [
|
|
13526
14391
|
{
|
|
13527
|
-
"name": "
|
|
14392
|
+
"name": "url",
|
|
13528
14393
|
"type": "str",
|
|
13529
|
-
"
|
|
13530
|
-
"
|
|
13531
|
-
"help": "
|
|
14394
|
+
"required": true,
|
|
14395
|
+
"positional": true,
|
|
14396
|
+
"help": "页面 URL"
|
|
13532
14397
|
}
|
|
13533
14398
|
],
|
|
13534
14399
|
"columns": [
|
|
13535
14400
|
"title",
|
|
13536
|
-
"
|
|
13537
|
-
"
|
|
13538
|
-
"url"
|
|
14401
|
+
"content_length",
|
|
14402
|
+
"image_count"
|
|
13539
14403
|
],
|
|
13540
|
-
"
|
|
13541
|
-
"modulePath": "wikipedia/random.js"
|
|
13542
|
-
},
|
|
13543
|
-
{
|
|
13544
|
-
"site": "wikipedia",
|
|
13545
|
-
"name": "search",
|
|
13546
|
-
"description": "Search Wikipedia articles",
|
|
13547
|
-
"strategy": "public",
|
|
13548
|
-
"browser": false,
|
|
13549
|
-
"args": [
|
|
14404
|
+
"pipeline": [
|
|
13550
14405
|
{
|
|
13551
|
-
"
|
|
13552
|
-
"type": "str",
|
|
13553
|
-
"required": true,
|
|
13554
|
-
"positional": true,
|
|
13555
|
-
"help": "Search keyword"
|
|
14406
|
+
"navigate": "${{ args.url }}"
|
|
13556
14407
|
},
|
|
13557
14408
|
{
|
|
13558
|
-
"
|
|
13559
|
-
"type": "int",
|
|
13560
|
-
"default": 10,
|
|
13561
|
-
"required": false,
|
|
13562
|
-
"help": "Max results"
|
|
14409
|
+
"wait": 6
|
|
13563
14410
|
},
|
|
13564
14411
|
{
|
|
13565
|
-
"
|
|
13566
|
-
"type": "str",
|
|
13567
|
-
"default": "en",
|
|
13568
|
-
"required": false,
|
|
13569
|
-
"help": "Language code (e.g. en, zh, ja)"
|
|
14412
|
+
"evaluate": "(() => {\n var selectors = ['.rich-text-wrap','.content-wrap','.article-content','.text-content',\n '.course-detail','.detail-content','[class*=\"richtext\"]','[class*=\"rich-text\"]','.ql-editor'];\n var content = '';\n for (var i = 0; i < selectors.length; i++) {\n var el = document.querySelector(selectors[i]);\n if (el && el.innerText.trim().length > 50) { content = el.innerText.trim(); break; }\n }\n if (!content) content = (document.querySelector('main') || document.querySelector('#app') || document.body).innerText.trim();\n\n var images = [];\n document.querySelectorAll('img').forEach(function(img) {\n if (img.src && !img.src.startsWith('data:') && img.src.includes('xiaoe')) images.push(img.src);\n });\n return [{\n title: document.title,\n content: content,\n content_length: content.length,\n image_count: images.length,\n images: JSON.stringify(images.slice(0, 20)),\n }];\n})()\n"
|
|
13570
14413
|
}
|
|
13571
14414
|
],
|
|
14415
|
+
"type": "yaml"
|
|
14416
|
+
},
|
|
14417
|
+
{
|
|
14418
|
+
"site": "xiaoe",
|
|
14419
|
+
"name": "courses",
|
|
14420
|
+
"description": "列出已购小鹅通课程(含 URL 和店铺名)",
|
|
14421
|
+
"domain": "study.xiaoe-tech.com",
|
|
14422
|
+
"strategy": "cookie",
|
|
14423
|
+
"browser": true,
|
|
14424
|
+
"args": [],
|
|
13572
14425
|
"columns": [
|
|
13573
14426
|
"title",
|
|
13574
|
-
"
|
|
14427
|
+
"shop",
|
|
13575
14428
|
"url"
|
|
13576
14429
|
],
|
|
13577
|
-
"
|
|
13578
|
-
|
|
14430
|
+
"pipeline": [
|
|
14431
|
+
{
|
|
14432
|
+
"navigate": "https://study.xiaoe-tech.com/"
|
|
14433
|
+
},
|
|
14434
|
+
{
|
|
14435
|
+
"wait": 8
|
|
14436
|
+
},
|
|
14437
|
+
{
|
|
14438
|
+
"evaluate": "(async () => {\n // 切换到「内容」tab\n var tabs = document.querySelectorAll('span, div');\n for (var i = 0; i < tabs.length; i++) {\n if (tabs[i].children.length === 0 && tabs[i].textContent.trim() === '内容') {\n tabs[i].click();\n break;\n }\n }\n await new Promise(function(r) { setTimeout(r, 2000); });\n\n // 匹配课程卡片标题与 Vue 数据\n function matchEntry(title, vm, depth) {\n if (!vm || depth > 5) return null;\n var d = vm.$data || {};\n for (var k in d) {\n if (!Array.isArray(d[k])) continue;\n for (var j = 0; j < d[k].length; j++) {\n var e = d[k][j];\n if (!e || typeof e !== 'object') continue;\n var t = e.title || e.resource_name || '';\n if (t && title.includes(t.substring(0, 10))) return e;\n }\n }\n return vm.$parent ? matchEntry(title, vm.$parent, depth + 1) : null;\n }\n\n // 构造课程 URL\n function buildUrl(entry) {\n if (entry.h5_url) return entry.h5_url;\n if (entry.url) return entry.url;\n if (entry.app_id && entry.resource_id) {\n var base = 'https://' + entry.app_id + '.h5.xet.citv.cn';\n if (entry.resource_type === 6) return base + '/v1/course/column/' + entry.resource_id + '?type=3';\n return base + '/p/course/ecourse/' + entry.resource_id;\n }\n return '';\n }\n\n var cards = document.querySelectorAll('.course-card-list');\n var results = [];\n for (var c = 0; c < cards.length; c++) {\n var titleEl = cards[c].querySelector('.card-title-box');\n var title = titleEl ? titleEl.textContent.trim() : '';\n if (!title) continue;\n var entry = matchEntry(title, cards[c].__vue__, 0);\n results.push({\n title: title,\n shop: entry ? (entry.shop_name || entry.app_name || '') : '',\n url: entry ? buildUrl(entry) : '',\n });\n }\n return results;\n})()\n"
|
|
14439
|
+
},
|
|
14440
|
+
{
|
|
14441
|
+
"map": {
|
|
14442
|
+
"title": "${{ item.title }}",
|
|
14443
|
+
"shop": "${{ item.shop }}",
|
|
14444
|
+
"url": "${{ item.url }}"
|
|
14445
|
+
}
|
|
14446
|
+
}
|
|
14447
|
+
],
|
|
14448
|
+
"type": "yaml"
|
|
13579
14449
|
},
|
|
13580
14450
|
{
|
|
13581
|
-
"site": "
|
|
13582
|
-
"name": "
|
|
13583
|
-
"description": "
|
|
13584
|
-
"
|
|
13585
|
-
"
|
|
14451
|
+
"site": "xiaoe",
|
|
14452
|
+
"name": "detail",
|
|
14453
|
+
"description": "小鹅通课程详情(名称、价格、学员数、店铺)",
|
|
14454
|
+
"domain": "h5.xet.citv.cn",
|
|
14455
|
+
"strategy": "cookie",
|
|
14456
|
+
"browser": true,
|
|
13586
14457
|
"args": [
|
|
13587
14458
|
{
|
|
13588
|
-
"name": "
|
|
14459
|
+
"name": "url",
|
|
13589
14460
|
"type": "str",
|
|
13590
14461
|
"required": true,
|
|
13591
14462
|
"positional": true,
|
|
13592
|
-
"help": "
|
|
13593
|
-
},
|
|
13594
|
-
{
|
|
13595
|
-
"name": "lang",
|
|
13596
|
-
"type": "str",
|
|
13597
|
-
"default": "en",
|
|
13598
|
-
"required": false,
|
|
13599
|
-
"help": "Language code (e.g. en, zh, ja)"
|
|
14463
|
+
"help": "课程页面 URL"
|
|
13600
14464
|
}
|
|
13601
14465
|
],
|
|
13602
14466
|
"columns": [
|
|
13603
|
-
"
|
|
13604
|
-
"
|
|
13605
|
-
"
|
|
13606
|
-
"
|
|
14467
|
+
"name",
|
|
14468
|
+
"price",
|
|
14469
|
+
"original_price",
|
|
14470
|
+
"user_count",
|
|
14471
|
+
"shop_name"
|
|
13607
14472
|
],
|
|
13608
|
-
"
|
|
13609
|
-
|
|
14473
|
+
"pipeline": [
|
|
14474
|
+
{
|
|
14475
|
+
"navigate": "${{ args.url }}"
|
|
14476
|
+
},
|
|
14477
|
+
{
|
|
14478
|
+
"wait": 5
|
|
14479
|
+
},
|
|
14480
|
+
{
|
|
14481
|
+
"evaluate": "(() => {\n var vm = (document.querySelector('#app') || {}).__vue__;\n if (!vm || !vm.$store) return [];\n var core = vm.$store.state.coreInfo || {};\n var goods = vm.$store.state.goodsInfo || {};\n var shop = ((vm.$store.state.compositeInfo || {}).shop_conf) || {};\n return [{\n name: core.resource_name || '',\n resource_id: core.resource_id || '',\n resource_type: core.resource_type || '',\n cover: core.resource_img || '',\n user_count: core.user_count || 0,\n price: goods.price ? (goods.price / 100).toFixed(2) : '0',\n original_price: goods.line_price ? (goods.line_price / 100).toFixed(2) : '0',\n is_free: goods.is_free || 0,\n shop_name: shop.shop_name || '',\n }];\n})()\n"
|
|
14482
|
+
}
|
|
14483
|
+
],
|
|
14484
|
+
"type": "yaml"
|
|
13610
14485
|
},
|
|
13611
14486
|
{
|
|
13612
|
-
"site": "
|
|
13613
|
-
"name": "
|
|
13614
|
-
"description": "
|
|
13615
|
-
"
|
|
13616
|
-
"
|
|
14487
|
+
"site": "xiaoe",
|
|
14488
|
+
"name": "play-url",
|
|
14489
|
+
"description": "小鹅通视频/音频/直播回放 M3U8 播放地址",
|
|
14490
|
+
"domain": "h5.xet.citv.cn",
|
|
14491
|
+
"strategy": "cookie",
|
|
14492
|
+
"browser": true,
|
|
13617
14493
|
"args": [
|
|
13618
14494
|
{
|
|
13619
|
-
"name": "
|
|
13620
|
-
"type": "int",
|
|
13621
|
-
"default": 10,
|
|
13622
|
-
"required": false,
|
|
13623
|
-
"help": "Max results"
|
|
13624
|
-
},
|
|
13625
|
-
{
|
|
13626
|
-
"name": "lang",
|
|
14495
|
+
"name": "url",
|
|
13627
14496
|
"type": "str",
|
|
13628
|
-
"
|
|
13629
|
-
"
|
|
13630
|
-
"help": "
|
|
14497
|
+
"required": true,
|
|
14498
|
+
"positional": true,
|
|
14499
|
+
"help": "小节页面 URL"
|
|
13631
14500
|
}
|
|
13632
14501
|
],
|
|
13633
14502
|
"columns": [
|
|
13634
|
-
"rank",
|
|
13635
14503
|
"title",
|
|
13636
|
-
"
|
|
13637
|
-
"
|
|
14504
|
+
"resource_id",
|
|
14505
|
+
"m3u8_url",
|
|
14506
|
+
"duration_sec",
|
|
14507
|
+
"method"
|
|
13638
14508
|
],
|
|
13639
|
-
"
|
|
13640
|
-
|
|
14509
|
+
"pipeline": [
|
|
14510
|
+
{
|
|
14511
|
+
"navigate": "${{ args.url }}"
|
|
14512
|
+
},
|
|
14513
|
+
{
|
|
14514
|
+
"wait": 2
|
|
14515
|
+
},
|
|
14516
|
+
{
|
|
14517
|
+
"evaluate": "(async () => {\n var pageUrl = window.location.href;\n var origin = window.location.origin;\n var resourceId = (pageUrl.match(/[val]_[a-f0-9]+/) || [])[0] || '';\n var productId = (pageUrl.match(/product_id=([^&]+)/) || [])[1] || '';\n var appId = (origin.match(/(app[a-z0-9]+)\\./) || [])[1] || '';\n var isLive = resourceId.startsWith('l_') || pageUrl.includes('/alive/');\n var m3u8Url = '', method = '', title = document.title, duration = 0;\n\n // 深度搜索 Vue 组件树找 M3U8\n function searchVueM3u8() {\n var el = document.querySelector('#app');\n if (!el || !el.__vue__) return '';\n var walk = function(vm, d) {\n if (!vm || d > 10) return '';\n var data = vm.$data || {};\n for (var k in data) {\n if (k[0] === '_' || k[0] === '$') continue;\n var v = data[k];\n if (typeof v === 'string' && v.includes('.m3u8')) return v;\n if (typeof v === 'object' && v) {\n try {\n var s = JSON.stringify(v);\n var m = s.match(/https?:[^\"]*\\.m3u8[^\"]*/);\n if (m) return m[0].replace(/\\\\\\//g, '/');\n } catch(e) {}\n }\n }\n if (vm.$children) {\n for (var c = 0; c < vm.$children.length; c++) {\n var f = walk(vm.$children[c], d + 1);\n if (f) return f;\n }\n }\n return '';\n };\n return walk(el.__vue__, 0);\n }\n\n // ===== 视频课: detail_info → getPlayUrl =====\n if (!isLive && resourceId.startsWith('v_')) {\n try {\n var detailRes = await fetch(origin + '/xe.course.business.video.detail_info.get/2.0.0', {\n method: 'POST', credentials: 'include',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n 'bizData[resource_id]': resourceId,\n 'bizData[product_id]': productId || resourceId,\n 'bizData[opr_sys]': 'MacIntel',\n }),\n });\n var detail = await detailRes.json();\n var vi = (detail.data || {}).video_info || {};\n title = vi.file_name || title;\n duration = vi.video_length || 0;\n if (vi.play_sign) {\n var userId = (document.cookie.match(/ctx_user_id=([^;]+)/) || [])[1] || window.__user_id || '';\n var playRes = await fetch(origin + '/xe.material-center.play/getPlayUrl', {\n method: 'POST', credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n org_app_id: appId, app_id: vi.material_app_id || appId,\n user_id: userId, play_sign: [vi.play_sign],\n play_line: 'A', opr_sys: 'MacIntel',\n }),\n });\n var playData = await playRes.json();\n if (playData.code === 0 && playData.data) {\n var m = JSON.stringify(playData.data).match(/https?:[^\"]*\\.m3u8[^\"]*/);\n if (m) { m3u8Url = m[0].replace(/\\\\u0026/g, '&').replace(/\\\\\\//g, '/'); method = 'api_direct'; }\n }\n }\n } catch(e) {}\n }\n\n // ===== 兜底: Performance API + Vue 搜索轮询 =====\n if (!m3u8Url) {\n for (var attempt = 0; attempt < 30; attempt++) {\n var entries = performance.getEntriesByType('resource');\n for (var i = 0; i < entries.length; i++) {\n if (entries[i].name.includes('.m3u8')) { m3u8Url = entries[i].name; method = 'perf_api'; break; }\n }\n if (!m3u8Url) { m3u8Url = searchVueM3u8(); if (m3u8Url) method = 'vue_search'; }\n if (m3u8Url) break;\n await new Promise(function(r) { setTimeout(r, 500); });\n }\n }\n\n if (!duration) {\n var vid = document.querySelector('video'), aud = document.querySelector('audio');\n if (vid && vid.duration && !isNaN(vid.duration)) duration = Math.round(vid.duration);\n if (aud && aud.duration && !isNaN(aud.duration)) duration = Math.round(aud.duration);\n }\n\n return [{ title: title, resource_id: resourceId, m3u8_url: m3u8Url, duration_sec: duration, method: method }];\n})()\n"
|
|
14518
|
+
},
|
|
14519
|
+
{
|
|
14520
|
+
"map": {
|
|
14521
|
+
"title": "${{ item.title }}",
|
|
14522
|
+
"resource_id": "${{ item.resource_id }}",
|
|
14523
|
+
"m3u8_url": "${{ item.m3u8_url }}",
|
|
14524
|
+
"duration_sec": "${{ item.duration_sec }}",
|
|
14525
|
+
"method": "${{ item.method }}"
|
|
14526
|
+
}
|
|
14527
|
+
}
|
|
14528
|
+
],
|
|
14529
|
+
"type": "yaml"
|
|
13641
14530
|
},
|
|
13642
14531
|
{
|
|
13643
14532
|
"site": "xiaohongshu",
|
|
@@ -15412,6 +16301,68 @@
|
|
|
15412
16301
|
"type": "ts",
|
|
15413
16302
|
"modulePath": "youtube/video.js"
|
|
15414
16303
|
},
|
|
16304
|
+
{
|
|
16305
|
+
"site": "yuanbao",
|
|
16306
|
+
"name": "ask",
|
|
16307
|
+
"description": "Send a prompt to Yuanbao web chat and wait for the assistant response",
|
|
16308
|
+
"domain": "yuanbao.tencent.com",
|
|
16309
|
+
"strategy": "cookie",
|
|
16310
|
+
"browser": true,
|
|
16311
|
+
"args": [
|
|
16312
|
+
{
|
|
16313
|
+
"name": "prompt",
|
|
16314
|
+
"type": "str",
|
|
16315
|
+
"required": true,
|
|
16316
|
+
"positional": true,
|
|
16317
|
+
"help": "Prompt to send"
|
|
16318
|
+
},
|
|
16319
|
+
{
|
|
16320
|
+
"name": "timeout",
|
|
16321
|
+
"type": "str",
|
|
16322
|
+
"default": "60",
|
|
16323
|
+
"required": false,
|
|
16324
|
+
"help": "Max seconds to wait (default: 60)"
|
|
16325
|
+
},
|
|
16326
|
+
{
|
|
16327
|
+
"name": "search",
|
|
16328
|
+
"type": "boolean",
|
|
16329
|
+
"default": true,
|
|
16330
|
+
"required": false,
|
|
16331
|
+
"help": "Enable Yuanbao internet search (default: true)"
|
|
16332
|
+
},
|
|
16333
|
+
{
|
|
16334
|
+
"name": "think",
|
|
16335
|
+
"type": "boolean",
|
|
16336
|
+
"default": false,
|
|
16337
|
+
"required": false,
|
|
16338
|
+
"help": "Enable Yuanbao deep thinking (default: false)"
|
|
16339
|
+
}
|
|
16340
|
+
],
|
|
16341
|
+
"columns": [
|
|
16342
|
+
"Role",
|
|
16343
|
+
"Text"
|
|
16344
|
+
],
|
|
16345
|
+
"timeout": 180,
|
|
16346
|
+
"type": "ts",
|
|
16347
|
+
"modulePath": "yuanbao/ask.js",
|
|
16348
|
+
"navigateBefore": false
|
|
16349
|
+
},
|
|
16350
|
+
{
|
|
16351
|
+
"site": "yuanbao",
|
|
16352
|
+
"name": "new",
|
|
16353
|
+
"description": "Start a new conversation in Yuanbao web chat",
|
|
16354
|
+
"domain": "yuanbao.tencent.com",
|
|
16355
|
+
"strategy": "cookie",
|
|
16356
|
+
"browser": true,
|
|
16357
|
+
"args": [],
|
|
16358
|
+
"columns": [
|
|
16359
|
+
"Status",
|
|
16360
|
+
"Action"
|
|
16361
|
+
],
|
|
16362
|
+
"type": "ts",
|
|
16363
|
+
"modulePath": "yuanbao/new.js",
|
|
16364
|
+
"navigateBefore": false
|
|
16365
|
+
},
|
|
15415
16366
|
{
|
|
15416
16367
|
"site": "zhihu",
|
|
15417
16368
|
"name": "download",
|