diff --git a/cli-manifest.json b/cli-manifest.json index e79ac2eb1..d1fa195bf 100644 --- a/cli-manifest.json +++ b/cli-manifest.json @@ -9418,6 +9418,45 @@ "sourceFile": "douyin/publish.js", "navigateBefore": "https://creator.douyin.com" }, + { + "site": "douyin", + "name": "search", + "description": "关键词搜索抖音视频", + "access": "read", + "domain": "www.douyin.com", + "strategy": "cookie", + "browser": true, + "args": [ + { + "name": "query", + "type": "str", + "required": true, + "positional": true, + "help": "搜索关键词" + }, + { + "name": "limit", + "type": "int", + "default": 10, + "required": false, + "help": "结果数量 (1-30)" + } + ], + "columns": [ + "rank", + "desc", + "author", + "url", + "plays", + "likes", + "comments", + "shares" + ], + "type": "js", + "modulePath": "douyin/search.js", + "sourceFile": "douyin/search.js", + "navigateBefore": "https://www.douyin.com" + }, { "site": "douyin", "name": "stats", diff --git a/clis/douyin/search.js b/clis/douyin/search.js new file mode 100644 index 000000000..22079c18b --- /dev/null +++ b/clis/douyin/search.js @@ -0,0 +1,308 @@ +/** + * Douyin search — keyword video search on www.douyin.com. + * + * Strategy: DOM extraction from the server-rendered search results page. + * + * Why not XHR interception: + * The `www.douyin.com/search/?type=video` page renders results into + * `