mirror of
https://github.com/jackwener/OpenCLI.git
synced 2026-09-14 18:25:42 +08:00
ab44d9f542
* fix(xiaoyuzhou): migrate from broken SSR scraping to authenticated API (fixes #1023) Xiaoyuzhou removed SSR rendering — /podcast/<id> and /episode/<id> pages now return 404, breaking fetchPageProps() which scraped __NEXT_DATA__. Migrate podcast, podcast-episodes, episode, and download commands to use the existing authenticated API client (requestXiaoyuzhouJson) that transcript.js already uses successfully. Changes: - podcast.js: use /v1/podcast/get API endpoint - podcast-episodes.js: use /v1/podcast/listEpisode API endpoint - episode.js: use /v1/episode/get API endpoint - download.js: use /v1/episode/get API endpoint - utils.js: remove unused fetchPageProps, keep format helpers - Update all affected tests (download.test.js, utils.test.js) - Change strategy from PUBLIC to LOCAL (requires credentials) * fix(xiaoyuzhou): align local strategy contract * fix(xiaoyuzhou): align local api metadata --------- Co-authored-by: jackwener <jakevingoo@gmail.com>
82 lines
2.6 KiB
Markdown
82 lines
2.6 KiB
Markdown
# Download Support
|
|
|
|
OpenCLI supports downloading images, videos, and articles from supported platforms.
|
|
|
|
## Supported Platforms
|
|
|
|
| Platform | Content Types | Notes |
|
|
|----------|---------------|-------|
|
|
| **xiaohongshu** | Images, Videos | Downloads all media from a note |
|
|
| **bilibili** | Videos | Requires `yt-dlp` installed |
|
|
| **twitter** | Images, Videos | Downloads from user media tab or single tweet |
|
|
| **douban** | Images | Downloads poster / still image lists from movie subjects |
|
|
| **xiaoyuzhou** | Audio, Transcript | Downloads episode audio and transcript JSON/text with local credentials |
|
|
| **zhihu** | Articles (Markdown) | Exports articles with optional image download |
|
|
| **weixin** | Articles (Markdown) | Exports WeChat Official Account articles |
|
|
|
|
## Prerequisites
|
|
|
|
For video downloads from streaming platforms, install `yt-dlp`:
|
|
|
|
```bash
|
|
# Install yt-dlp
|
|
pip install yt-dlp
|
|
# or
|
|
brew install yt-dlp
|
|
```
|
|
|
|
## Usage Examples
|
|
|
|
```bash
|
|
# Download images/videos from Xiaohongshu note
|
|
opencli xiaohongshu download "https://www.xiaohongshu.com/search_result/<id>?xsec_token=..." --output ./xhs
|
|
opencli xiaohongshu download "https://xhslink.com/..." --output ./xhs
|
|
|
|
# Download Bilibili video (requires yt-dlp)
|
|
opencli bilibili download --bvid BV1xxx --output ./bilibili
|
|
opencli bilibili download --bvid BV1xxx --quality 1080p
|
|
|
|
# Download Twitter media from user
|
|
opencli twitter download elonmusk --limit 20 --output ./twitter
|
|
|
|
# Download single tweet media
|
|
opencli twitter download --tweet-url "https://x.com/user/status/123" --output ./twitter
|
|
|
|
# Download Douban posters / stills
|
|
opencli douban download 30382501 --output ./douban
|
|
|
|
# Download Xiaoyuzhou episode audio
|
|
opencli xiaoyuzhou download 69b3b675772ac2295bfc01d0 --output ./xiaoyuzhou
|
|
|
|
# Download Xiaoyuzhou transcript JSON + text
|
|
opencli xiaoyuzhou transcript 69dd0c98e2c8be31551f6a33 --output ./xiaoyuzhou-transcripts
|
|
|
|
# Export Zhihu article to Markdown
|
|
opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./zhihu
|
|
|
|
# Export with local images
|
|
opencli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --download-images
|
|
|
|
# Export WeChat article to Markdown
|
|
opencli weixin download --url "https://mp.weixin.qq.com/s/xxx" --output ./weixin
|
|
```
|
|
|
|
`opencli xiaoyuzhou download` and `transcript` require local Xiaoyuzhou credentials in `~/.opencli/xiaoyuzhou.json`.
|
|
|
|
## Pipeline Step
|
|
|
|
The `download` step can be used in pipeline adapters:
|
|
|
|
::: v-pre
|
|
```yaml
|
|
pipeline:
|
|
- fetch: https://api.example.com/media
|
|
- download:
|
|
url: ${{ item.imageUrl }}
|
|
dir: ./downloads
|
|
filename: ${{ item.title | sanitize }}.jpg
|
|
concurrency: 5
|
|
skip_existing: true
|
|
```
|
|
:::
|