Skip to content

Commit 677e37b

Browse files
authored
feat(xiaoyuzhou): add episode download and transcript support (#1031)
* feat(xiaoyuzhou): add episode audio download * feat(xiaoyuzhou): add transcript download support * docs(xiaoyuzhou): clarify credential file requirement * fix(xiaoyuzhou): remove env credential fallback
1 parent d48c71b commit 677e37b

14 files changed

Lines changed: 1022 additions & 8 deletions

File tree

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,12 @@ To load the source Browser Bridge extension:
205205
| **xiaoe** | `courses` `detail` `catalog` `play-url` `content` |
206206
| **quark** | `ls` `mkdir` `mv` `rename` `rm` `save` `share-tree` |
207207
| **uiverse** | `code` `preview` |
208+
| **xiaoyuzhou** | `podcast` `podcast-episodes` `episode` `download` `transcript*` |
208209

209210
87+ adapters in total — **[→ see all supported sites & commands](./docs/adapters/index.md)**
210211

212+
`*` `opencli xiaoyuzhou transcript` requires local Xiaoyuzhou credentials in `~/.opencli/xiaoyuzhou.json`.
213+
211214
## CLI Hub
212215

213216
OpenCLI acts as a universal hub for your existing command-line tools — unified discovery, pure passthrough execution, and auto-install (if a tool isn't installed, OpenCLI runs `brew install <tool>` automatically before re-running the command).
@@ -257,6 +260,7 @@ OpenCLI supports downloading images, videos, and articles from supported platfor
257260
| **douban** | Images | Poster / still image lists |
258261
| **pixiv** | Images | Original-quality illustrations, multi-page |
259262
| **1688** | Images, Videos | Downloads page-visible product media from item pages |
263+
| **xiaoyuzhou** | Audio, Transcript | Downloads episode audio from public pages and transcript JSON/text with local credentials |
260264
| **zhihu** | Articles (Markdown) | Exports with optional image download |
261265
| **weixin** | Articles (Markdown) | WeChat Official Account articles |
262266

@@ -268,8 +272,12 @@ opencli xiaohongshu download "https://xhslink.com/..." --output ./xhs
268272
opencli bilibili download BV1xxx --output ./bilibili
269273
opencli twitter download elonmusk --limit 20 --output ./twitter
270274
opencli 1688 download 841141931191 --output ./1688-downloads
275+
opencli xiaoyuzhou download 69b3b675772ac2295bfc01d0 --output ./xiaoyuzhou
276+
opencli xiaoyuzhou transcript 69dd0c98e2c8be31551f6a33 --output ./xiaoyuzhou-transcripts
271277
```
272278

279+
`opencli xiaoyuzhou transcript` requires local Xiaoyuzhou credentials in `~/.opencli/xiaoyuzhou.json`.
280+
273281
## Output Formats
274282

275283
All built-in commands support `--format` / `-f` with `table` (default), `json`, `yaml`, `md`, and `csv`.

README.zh-CN.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ npm link
208208
| **quark** | `ls` `mkdir` `mv` `rename` `rm` `save` `share-tree` | 浏览器 |
209209
| **uiverse** | `code` `preview` | 浏览器 |
210210
| **apple-podcasts** | `search` `episodes` `top` | 公开 |
211-
| **xiaoyuzhou** | `podcast` `podcast-episodes` `episode` | 公开 |
211+
| **xiaoyuzhou** | `podcast` `podcast-episodes` `episode` `download` `transcript*` | 公开 |
212212
| **zhihu** | `hot` `search` `question` `download` `follow` `like` `favorite` `comment` `answer` | 浏览器 |
213213
| **weixin** | `download` | 浏览器 |
214214
| **youtube** | `search` `video` `transcript` | 浏览器 |
@@ -268,6 +268,8 @@ npm link
268268

269269
87+ 适配器 — **[→ 查看完整命令列表](./docs/adapters/index.md)**
270270

271+
`*` `opencli xiaoyuzhou transcript` 需要本地小宇宙凭证:`~/.opencli/xiaoyuzhou.json`
272+
271273
### 外部 CLI 枢纽
272274

273275
OpenCLI 也可以作为你现有命令行工具的统一入口,负责发现、自动安装和纯透传执行。
@@ -320,6 +322,7 @@ OpenCLI 支持从各平台下载图片、视频和文章。
320322
| **Twitter/X** | 图片、视频 | 从用户媒体页或单条推文下载 |
321323
| **Pixiv** | 图片 | 下载原始画质插画,支持多页作品 |
322324
| **1688** | 图片、视频 | 下载商品页中可见的商品素材 |
325+
| **小宇宙** | 音频、转录 | 从公开单集数据下载音频,并使用本地凭证下载转录 JSON / 文本 |
323326
| **知乎** | 文章(Markdown) | 导出文章,可选下载图片到本地 |
324327
| **微信公众号** | 文章(Markdown) | 导出微信公众号文章为 Markdown |
325328
| **豆瓣** | 图片 | 下载电影条目的海报 / 剧照图片 |
@@ -358,6 +361,12 @@ opencli douban download 30382501 --output ./douban
358361
# 下载 1688 商品页中的图片 / 视频素材
359362
opencli 1688 download 841141931191 --output ./1688-downloads
360363

364+
# 下载小宇宙单集音频
365+
opencli xiaoyuzhou download 69b3b675772ac2295bfc01d0 --output ./xiaoyuzhou
366+
367+
# 下载小宇宙单集转录
368+
opencli xiaoyuzhou transcript 69dd0c98e2c8be31551f6a33 --output ./xiaoyuzhou-transcripts
369+
361370
# 导出知乎文章为 Markdown
362371
opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./zhihu
363372

@@ -368,6 +377,8 @@ opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --download-images
368377
opencli weixin download --url "https://mp.weixin.qq.com/s/xxx" --output ./weixin
369378
```
370379

380+
`opencli xiaoyuzhou transcript` 需要本地小宇宙凭证:`~/.opencli/xiaoyuzhou.json`
381+
371382

372383

373384
## 输出格式

cli-manifest.json

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15969,6 +15969,89 @@
1596915969
"sourceFile": "xiaohongshu/user.js",
1597015970
"navigateBefore": false
1597115971
},
15972+
{
15973+
"site": "xiaoyuzhou",
15974+
"name": "download",
15975+
"description": "Download Xiaoyuzhou episode audio",
15976+
"domain": "www.xiaoyuzhoufm.com",
15977+
"strategy": "public",
15978+
"browser": false,
15979+
"args": [
15980+
{
15981+
"name": "id",
15982+
"type": "str",
15983+
"required": true,
15984+
"positional": true,
15985+
"help": "Episode ID (eid from podcast-episodes output)"
15986+
},
15987+
{
15988+
"name": "output",
15989+
"type": "str",
15990+
"default": "./xiaoyuzhou-downloads",
15991+
"required": false,
15992+
"help": "Output directory"
15993+
}
15994+
],
15995+
"columns": [
15996+
"title",
15997+
"podcast",
15998+
"status",
15999+
"size",
16000+
"file"
16001+
],
16002+
"type": "js",
16003+
"modulePath": "xiaoyuzhou/download.js",
16004+
"sourceFile": "xiaoyuzhou/download.js"
16005+
},
16006+
{
16007+
"site": "xiaoyuzhou",
16008+
"name": "transcript",
16009+
"description": "Download Xiaoyuzhou transcript as JSON and text (requires local credentials)",
16010+
"domain": "www.xiaoyuzhoufm.com",
16011+
"strategy": "public",
16012+
"browser": false,
16013+
"args": [
16014+
{
16015+
"name": "id",
16016+
"type": "str",
16017+
"required": true,
16018+
"positional": true,
16019+
"help": "Episode ID (eid from podcast-episodes output)"
16020+
},
16021+
{
16022+
"name": "output",
16023+
"type": "str",
16024+
"default": "./xiaoyuzhou-transcripts",
16025+
"required": false,
16026+
"help": "Output directory"
16027+
},
16028+
{
16029+
"name": "json",
16030+
"type": "boolean",
16031+
"default": true,
16032+
"required": false,
16033+
"help": "Save transcript JSON file"
16034+
},
16035+
{
16036+
"name": "text",
16037+
"type": "boolean",
16038+
"default": true,
16039+
"required": false,
16040+
"help": "Save extracted transcript text file"
16041+
}
16042+
],
16043+
"columns": [
16044+
"title",
16045+
"podcast",
16046+
"status",
16047+
"segments",
16048+
"json_file",
16049+
"text_file"
16050+
],
16051+
"type": "js",
16052+
"modulePath": "xiaoyuzhou/transcript.js",
16053+
"sourceFile": "xiaoyuzhou/transcript.js"
16054+
},
1597216055
{
1597316056
"site": "xiaoyuzhou",
1597416057
"name": "episode",

0 commit comments

Comments
 (0)