parsehub 2.0.18__tar.gz → 2.0.20__tar.gz

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.
Files changed (71) hide show
  1. {parsehub-2.0.18/src/parsehub.egg-info → parsehub-2.0.20}/PKG-INFO +102 -93
  2. {parsehub-2.0.18 → parsehub-2.0.20}/README.md +98 -92
  3. {parsehub-2.0.18 → parsehub-2.0.20}/pyproject.toml +7 -1
  4. parsehub-2.0.20/src/parsehub/cli.py +703 -0
  5. parsehub-2.0.20/src/parsehub/cli_config.py +235 -0
  6. {parsehub-2.0.18 → parsehub-2.0.20/src/parsehub.egg-info}/PKG-INFO +102 -93
  7. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub.egg-info/SOURCES.txt +2 -0
  8. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub.egg-info/requires.txt +4 -0
  9. parsehub-2.0.20/test/test_cli.py +491 -0
  10. parsehub-2.0.20/test/test_cli_config.py +49 -0
  11. parsehub-2.0.18/src/parsehub/cli.py +0 -313
  12. parsehub-2.0.18/test/test_cli.py +0 -283
  13. {parsehub-2.0.18 → parsehub-2.0.20}/LICENSE +0 -0
  14. {parsehub-2.0.18 → parsehub-2.0.20}/setup.cfg +0 -0
  15. {parsehub-2.0.18 → parsehub-2.0.20}/src/__init__.py +0 -0
  16. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/__init__.py +0 -0
  17. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/config/__init__.py +0 -0
  18. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/config/config.py +0 -0
  19. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/errors.py +0 -0
  20. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/__init__.py +0 -0
  21. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/base/__init__.py +0 -0
  22. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/base/base.py +0 -0
  23. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/base/ytdlp.py +0 -0
  24. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/__init__.py +0 -0
  25. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/bilibili.py +0 -0
  26. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/coolapk.py +0 -0
  27. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/douyin.py +0 -0
  28. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/facebook.py +0 -0
  29. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/instagram.py +0 -0
  30. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/kuaishou.py +0 -0
  31. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/pipix.py +0 -0
  32. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/threads.py +0 -0
  33. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/tieba.py +0 -0
  34. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/tiktok.py +0 -0
  35. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/twitter.py +0 -0
  36. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/weibo.py +0 -0
  37. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/weixin.py +0 -0
  38. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/xhs.py +0 -0
  39. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/xiaoheihe.py +0 -0
  40. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/youtube.py +0 -0
  41. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/parsers/parser/zuiyou.py +0 -0
  42. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/__init__.py +0 -0
  43. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/bilibili.py +0 -0
  44. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/coolapk.py +0 -0
  45. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/douyin.py +0 -0
  46. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/instagram.py +0 -0
  47. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/kuaishou.py +0 -0
  48. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/pipix.py +0 -0
  49. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/threads.py +0 -0
  50. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/tieba.py +0 -0
  51. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/tiktok.py +0 -0
  52. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/twitter.py +0 -0
  53. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/weibo.py +0 -0
  54. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/weixin.py +0 -0
  55. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/xhs.py +0 -0
  56. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/xiaoheihe.py +0 -0
  57. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/provider_api/zuiyou.py +0 -0
  58. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/types/__init__.py +0 -0
  59. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/types/callback.py +0 -0
  60. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/types/media_file.py +0 -0
  61. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/types/media_ref.py +0 -0
  62. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/types/platform.py +0 -0
  63. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/types/post.py +0 -0
  64. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/types/result.py +0 -0
  65. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/utils/downloader.py +0 -0
  66. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/utils/media_info.py +0 -0
  67. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub/utils/utils.py +0 -0
  68. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub.egg-info/dependency_links.txt +0 -0
  69. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub.egg-info/entry_points.txt +0 -0
  70. {parsehub-2.0.18 → parsehub-2.0.20}/src/parsehub.egg-info/top_level.txt +0 -0
  71. {parsehub-2.0.18 → parsehub-2.0.20}/test/test_core_offline.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: parsehub
3
- Version: 2.0.18
3
+ Version: 2.0.20
4
4
  Summary: 轻量、异步、开箱即用的社交媒体聚合解析库
5
5
  Author-email: 梓澪 <zilingmio@gmail.com>
6
6
  License: MIT
@@ -35,6 +35,9 @@ Requires-Dist: python-slugify[unidecode]>=8.0.4
35
35
  Requires-Dist: opencv-python-headless>=4.13.0.92
36
36
  Requires-Dist: cryptography>=46.0.6
37
37
  Requires-Dist: gmssl>=3.2.2
38
+ Provides-Extra: cli
39
+ Requires-Dist: argcomplete>=3.6.3; extra == "cli"
40
+ Requires-Dist: platformdirs>=4.5.1; extra == "cli"
38
41
  Dynamic: license-file
39
42
 
40
43
  <div align="center">
@@ -50,7 +53,7 @@ Dynamic: license-file
50
53
 
51
54
  轻量、异步、开箱即用的社交媒体解析与媒体下载库,支持 17+ 平台。
52
55
 
53
- [支持平台](#-支持平台) · [安装](#-安装) · [快速开始](#-快速开始) · [API](#-api-速览) · [高级用法](#-高级用法) · [TG Bot](https://github.com/z-mio/parse_hub_bot)
56
+ [安装](#-安装) · [CLI 快速使用](#-cli-快速使用) · [Python API](#-python-api-快速使用) · [支持平台](#-支持平台) · [高级用法](#-高级用法) · [TG Bot](https://github.com/z-mio/parse_hub_bot)
54
57
 
55
58
  </div>
56
59
 
@@ -64,43 +67,94 @@ Dynamic: license-file
64
67
  - 📦 **同步 / 异步 API** — 同时提供 `async/await` 与 `*_sync` 调用方式
65
68
  - 🤖 **Telegram Bot** — 基于本项目的 Bot 已上线 → [@ParseHuBot](https://t.me/ParsehuBot)
66
69
 
67
- ## 🌐 支持平台
70
+ ## 📦 安装
68
71
 
69
- | 平台 | 视频 | 图文 | 其他 |
70
- |:----------------|:--:|:--:|:------|
71
- | **Twitter / X** | ✅ | ✅ | |
72
- | **Instagram** | ✅ | ✅ | |
73
- | **YouTube** | ✅ | | 🎵 音乐 |
74
- | **Facebook** | ✅ | | |
75
- | **Threads** | ✅ | ✅ | |
76
- | **Bilibili** | ✅ | | 📝 动态 |
77
- | **抖音** | ✅ | ✅ | |
78
- | **TikTok** | ✅ | ✅ | |
79
- | **微博** | ✅ | ✅ | |
80
- | **小红书** | ✅ | ✅ | |
81
- | **贴吧** | ✅ | ✅ | |
82
- | **微信公众号** | | ✅ | |
83
- | **快手** | ✅ | | |
84
- | **酷安** | | ✅ | |
85
- | **皮皮虾** | ✅ | ✅ | |
86
- | **最右** | ✅ | ✅ | |
87
- | **小黑盒** | ✅ | ✅ | |
72
+ > Python 3.12
88
73
 
89
- > 可通过 `ParseHub().get_platforms()` 获取当前版本实际注册的平台列表。
74
+ ### 安装为命令行工具
90
75
 
91
- ## 📦 安装
76
+ 如果主要把 ParseHub 当作 CLI 使用,推荐用 `pipx` 安装隔离的命令行环境:
77
+
78
+ ```bash
79
+ pipx install "parsehub[cli]"
80
+ ph --help
81
+ ```
82
+
83
+ ### 安装为 Python 库
84
+
85
+ 如果要在项目代码中调用 Python API:
92
86
 
93
87
  ```bash
94
- # uv (推荐)
88
+ # uv
95
89
  uv add parsehub
96
90
 
97
91
  # pip
98
92
  pip install parsehub
99
93
  ```
100
94
 
101
- > 要求 Python 3.12
95
+ 项目内也需要完整 CLI 配置能力时,可安装 `cli` 扩展:
96
+
97
+ ```bash
98
+ # uv
99
+ uv add "parsehub[cli]"
100
+
101
+ # pip
102
+ pip install "parsehub[cli]"
103
+ ```
104
+
105
+ ## 🚀 CLI 快速使用
106
+
107
+ 解析链接或分享文案:
108
+
109
+ ```bash
110
+ parsehub "https://example.com/post/1"
111
+
112
+ # 短命令等价写法
113
+ ph "https://example.com/post/1"
114
+ ```
115
+
116
+ 下载媒体:
117
+
118
+ ```bash
119
+ parsehub download "https://example.com/post/1" -o ./downloads
120
+
121
+ # 短命令等价写法
122
+ ph d "https://example.com/post/1" -o ./downloads
123
+ ```
124
+
125
+ 查看支持的平台:
126
+
127
+ ```bash
128
+ ph platforms
129
+ # 或
130
+ ph ls
131
+ ```
132
+
133
+ 配置某个平台的代理和 Cookie:
102
134
 
103
- ## 🚀 快速开始
135
+ ```bash
136
+ # 同时设置解析代理和下载代理
137
+ ph set proxy xhs http://127.0.0.1:7890
138
+
139
+ # 只设置下载代理
140
+ ph set proxy xhs http://127.0.0.1:7891 --for download
141
+
142
+ # 保存 Cookie,输入时不会显示在终端里
143
+ ph set cookie xhs
144
+
145
+ # 查看配置状态
146
+ ph set list
147
+ ph set show xhs
148
+ ```
149
+
150
+ 配置会自动按平台应用到后续解析和下载;临时覆盖时仍可直接传参数:
151
+
152
+ ```bash
153
+ ph "https://example.com/post/1" --proxy http://127.0.0.1:7890
154
+ ph d "https://example.com/post/1" --parse-proxy http://127.0.0.1:7890 --cookie "key=value"
155
+ ```
156
+
157
+ ## 🐍 Python API 快速使用
104
158
 
105
159
  ### 同步解析
106
160
 
@@ -161,74 +215,29 @@ downloaded = ph.download_sync(
161
215
  )
162
216
  ```
163
217
 
164
- ## 🧩 API 速览
165
-
166
- ### 解析
167
-
168
- ```python
169
- await ph.parse(url, proxy=None, cookie=None)
170
- ph.parse_sync(url, proxy=None, cookie=None)
171
- ```
172
-
173
- - `url`:分享文案或分享链接,支持自动提取文本中的第一个链接
174
- - `proxy`:解析阶段使用的代理
175
- - `cookie`:解析阶段使用的 Cookie,支持字符串、JSON 字符串或字典
176
-
177
- ### 下载
178
-
179
- ```python
180
- await ph.download(
181
- url,
182
- path=None,
183
- callback=None,
184
- callback_args=(),
185
- callback_kwargs=None,
186
- proxy=None,
187
- parse_proxy=None,
188
- parse_cookie=None,
189
- save_metadata=False,
190
- )
191
-
192
- ph.download_sync(
193
- url,
194
- path=None,
195
- callback=None,
196
- callback_args=(),
197
- callback_kwargs=None,
198
- proxy=None,
199
- parse_proxy=None,
200
- parse_cookie=None,
201
- save_metadata=False,
202
- )
203
- ```
204
-
205
- - `path`:下载保存目录,默认使用 `GlobalConfig.default_save_dir`
206
- - `proxy`:下载媒体时使用的代理
207
- - `parse_proxy` / `parse_cookie`:下载前解析链接时使用的代理和 Cookie
208
- - `save_metadata`:是否在输出目录保存 `metadata.json`
209
-
210
- ### 工具方法
211
-
212
- ```python
213
- ph.get_platform(url)
214
- ph.get_platforms()
215
- await ph.get_raw_url(url, proxy=None, clean_all=True)
216
- ```
217
-
218
- - `get_platform()`:返回匹配到的平台枚举,未匹配时返回 `None`
219
- - `get_platforms()`:返回所有已注册平台的 `id`、名称和支持类型
220
- - `get_raw_url()`:获取清理后的原始链接
218
+ ## 🌐 支持平台
221
219
 
222
- ### 解析结果
220
+ | 平台 | 视频 | 图文 | 其他 |
221
+ |:----------------|:--:|:--:|:------|
222
+ | **Twitter / X** | ✅ | ✅ | |
223
+ | **Instagram** | ✅ | ✅ | |
224
+ | **YouTube** | ✅ | | 🎵 音乐 |
225
+ | **Facebook** | ✅ | | |
226
+ | **Threads** | ✅ | ✅ | |
227
+ | **Bilibili** | ✅ | | 📝 动态 |
228
+ | **抖音** | ✅ | ✅ | |
229
+ | **TikTok** | ✅ | ✅ | |
230
+ | **微博** | ✅ | ✅ | |
231
+ | **小红书** | ✅ | ✅ | |
232
+ | **贴吧** | ✅ | ✅ | |
233
+ | **微信公众号** | | ✅ | |
234
+ | **快手** | ✅ | | |
235
+ | **酷安** | | ✅ | |
236
+ | **皮皮虾** | ✅ | ✅ | |
237
+ | **最右** | ✅ | ✅ | |
238
+ | **小黑盒** | ✅ | ✅ | |
223
239
 
224
- - `result.platform`:平台枚举
225
- - `result.type`:内容类型,如 `video`、`image`、`multimedia`、`richtext`
226
- - `result.title`:标题
227
- - `result.content`:纯文本正文
228
- - `result.raw_url`:清理后的原始链接
229
- - `result.media`:媒体引用或媒体引用列表
230
- - `result.to_dict()`:转为可序列化字典
231
- - `result.download()` / `result.download_sync()`:下载当前解析结果中的媒体
240
+ > 可通过 `ph ls` 或 `ParseHub().get_platforms()` 获取当前版本实际注册的平台列表。
232
241
 
233
242
  ## 🔑 高级用法
234
243
 
@@ -11,7 +11,7 @@
11
11
 
12
12
  轻量、异步、开箱即用的社交媒体解析与媒体下载库,支持 17+ 平台。
13
13
 
14
- [支持平台](#-支持平台) · [安装](#-安装) · [快速开始](#-快速开始) · [API](#-api-速览) · [高级用法](#-高级用法) · [TG Bot](https://github.com/z-mio/parse_hub_bot)
14
+ [安装](#-安装) · [CLI 快速使用](#-cli-快速使用) · [Python API](#-python-api-快速使用) · [支持平台](#-支持平台) · [高级用法](#-高级用法) · [TG Bot](https://github.com/z-mio/parse_hub_bot)
15
15
 
16
16
  </div>
17
17
 
@@ -25,43 +25,94 @@
25
25
  - 📦 **同步 / 异步 API** — 同时提供 `async/await` 与 `*_sync` 调用方式
26
26
  - 🤖 **Telegram Bot** — 基于本项目的 Bot 已上线 → [@ParseHuBot](https://t.me/ParsehuBot)
27
27
 
28
- ## 🌐 支持平台
28
+ ## 📦 安装
29
29
 
30
- | 平台 | 视频 | 图文 | 其他 |
31
- |:----------------|:--:|:--:|:------|
32
- | **Twitter / X** | ✅ | ✅ | |
33
- | **Instagram** | ✅ | ✅ | |
34
- | **YouTube** | ✅ | | 🎵 音乐 |
35
- | **Facebook** | ✅ | | |
36
- | **Threads** | ✅ | ✅ | |
37
- | **Bilibili** | ✅ | | 📝 动态 |
38
- | **抖音** | ✅ | ✅ | |
39
- | **TikTok** | ✅ | ✅ | |
40
- | **微博** | ✅ | ✅ | |
41
- | **小红书** | ✅ | ✅ | |
42
- | **贴吧** | ✅ | ✅ | |
43
- | **微信公众号** | | ✅ | |
44
- | **快手** | ✅ | | |
45
- | **酷安** | | ✅ | |
46
- | **皮皮虾** | ✅ | ✅ | |
47
- | **最右** | ✅ | ✅ | |
48
- | **小黑盒** | ✅ | ✅ | |
30
+ > Python 3.12
49
31
 
50
- > 可通过 `ParseHub().get_platforms()` 获取当前版本实际注册的平台列表。
32
+ ### 安装为命令行工具
51
33
 
52
- ## 📦 安装
34
+ 如果主要把 ParseHub 当作 CLI 使用,推荐用 `pipx` 安装隔离的命令行环境:
35
+
36
+ ```bash
37
+ pipx install "parsehub[cli]"
38
+ ph --help
39
+ ```
40
+
41
+ ### 安装为 Python 库
42
+
43
+ 如果要在项目代码中调用 Python API:
53
44
 
54
45
  ```bash
55
- # uv (推荐)
46
+ # uv
56
47
  uv add parsehub
57
48
 
58
49
  # pip
59
50
  pip install parsehub
60
51
  ```
61
52
 
62
- > 要求 Python 3.12
53
+ 项目内也需要完整 CLI 配置能力时,可安装 `cli` 扩展:
54
+
55
+ ```bash
56
+ # uv
57
+ uv add "parsehub[cli]"
58
+
59
+ # pip
60
+ pip install "parsehub[cli]"
61
+ ```
62
+
63
+ ## 🚀 CLI 快速使用
64
+
65
+ 解析链接或分享文案:
66
+
67
+ ```bash
68
+ parsehub "https://example.com/post/1"
69
+
70
+ # 短命令等价写法
71
+ ph "https://example.com/post/1"
72
+ ```
73
+
74
+ 下载媒体:
75
+
76
+ ```bash
77
+ parsehub download "https://example.com/post/1" -o ./downloads
78
+
79
+ # 短命令等价写法
80
+ ph d "https://example.com/post/1" -o ./downloads
81
+ ```
82
+
83
+ 查看支持的平台:
84
+
85
+ ```bash
86
+ ph platforms
87
+ # 或
88
+ ph ls
89
+ ```
90
+
91
+ 配置某个平台的代理和 Cookie:
63
92
 
64
- ## 🚀 快速开始
93
+ ```bash
94
+ # 同时设置解析代理和下载代理
95
+ ph set proxy xhs http://127.0.0.1:7890
96
+
97
+ # 只设置下载代理
98
+ ph set proxy xhs http://127.0.0.1:7891 --for download
99
+
100
+ # 保存 Cookie,输入时不会显示在终端里
101
+ ph set cookie xhs
102
+
103
+ # 查看配置状态
104
+ ph set list
105
+ ph set show xhs
106
+ ```
107
+
108
+ 配置会自动按平台应用到后续解析和下载;临时覆盖时仍可直接传参数:
109
+
110
+ ```bash
111
+ ph "https://example.com/post/1" --proxy http://127.0.0.1:7890
112
+ ph d "https://example.com/post/1" --parse-proxy http://127.0.0.1:7890 --cookie "key=value"
113
+ ```
114
+
115
+ ## 🐍 Python API 快速使用
65
116
 
66
117
  ### 同步解析
67
118
 
@@ -122,74 +173,29 @@ downloaded = ph.download_sync(
122
173
  )
123
174
  ```
124
175
 
125
- ## 🧩 API 速览
126
-
127
- ### 解析
128
-
129
- ```python
130
- await ph.parse(url, proxy=None, cookie=None)
131
- ph.parse_sync(url, proxy=None, cookie=None)
132
- ```
133
-
134
- - `url`:分享文案或分享链接,支持自动提取文本中的第一个链接
135
- - `proxy`:解析阶段使用的代理
136
- - `cookie`:解析阶段使用的 Cookie,支持字符串、JSON 字符串或字典
137
-
138
- ### 下载
139
-
140
- ```python
141
- await ph.download(
142
- url,
143
- path=None,
144
- callback=None,
145
- callback_args=(),
146
- callback_kwargs=None,
147
- proxy=None,
148
- parse_proxy=None,
149
- parse_cookie=None,
150
- save_metadata=False,
151
- )
152
-
153
- ph.download_sync(
154
- url,
155
- path=None,
156
- callback=None,
157
- callback_args=(),
158
- callback_kwargs=None,
159
- proxy=None,
160
- parse_proxy=None,
161
- parse_cookie=None,
162
- save_metadata=False,
163
- )
164
- ```
165
-
166
- - `path`:下载保存目录,默认使用 `GlobalConfig.default_save_dir`
167
- - `proxy`:下载媒体时使用的代理
168
- - `parse_proxy` / `parse_cookie`:下载前解析链接时使用的代理和 Cookie
169
- - `save_metadata`:是否在输出目录保存 `metadata.json`
170
-
171
- ### 工具方法
172
-
173
- ```python
174
- ph.get_platform(url)
175
- ph.get_platforms()
176
- await ph.get_raw_url(url, proxy=None, clean_all=True)
177
- ```
178
-
179
- - `get_platform()`:返回匹配到的平台枚举,未匹配时返回 `None`
180
- - `get_platforms()`:返回所有已注册平台的 `id`、名称和支持类型
181
- - `get_raw_url()`:获取清理后的原始链接
176
+ ## 🌐 支持平台
182
177
 
183
- ### 解析结果
178
+ | 平台 | 视频 | 图文 | 其他 |
179
+ |:----------------|:--:|:--:|:------|
180
+ | **Twitter / X** | ✅ | ✅ | |
181
+ | **Instagram** | ✅ | ✅ | |
182
+ | **YouTube** | ✅ | | 🎵 音乐 |
183
+ | **Facebook** | ✅ | | |
184
+ | **Threads** | ✅ | ✅ | |
185
+ | **Bilibili** | ✅ | | 📝 动态 |
186
+ | **抖音** | ✅ | ✅ | |
187
+ | **TikTok** | ✅ | ✅ | |
188
+ | **微博** | ✅ | ✅ | |
189
+ | **小红书** | ✅ | ✅ | |
190
+ | **贴吧** | ✅ | ✅ | |
191
+ | **微信公众号** | | ✅ | |
192
+ | **快手** | ✅ | | |
193
+ | **酷安** | | ✅ | |
194
+ | **皮皮虾** | ✅ | ✅ | |
195
+ | **最右** | ✅ | ✅ | |
196
+ | **小黑盒** | ✅ | ✅ | |
184
197
 
185
- - `result.platform`:平台枚举
186
- - `result.type`:内容类型,如 `video`、`image`、`multimedia`、`richtext`
187
- - `result.title`:标题
188
- - `result.content`:纯文本正文
189
- - `result.raw_url`:清理后的原始链接
190
- - `result.media`:媒体引用或媒体引用列表
191
- - `result.to_dict()`:转为可序列化字典
192
- - `result.download()` / `result.download_sync()`:下载当前解析结果中的媒体
198
+ > 可通过 `ph ls` 或 `ParseHub().get_platforms()` 获取当前版本实际注册的平台列表。
193
199
 
194
200
  ## 🔑 高级用法
195
201
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "parsehub"
3
- version = "2.0.18"
3
+ version = "2.0.20"
4
4
  description = "轻量、异步、开箱即用的社交媒体聚合解析库"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12.0"
@@ -44,6 +44,12 @@ dependencies = [
44
44
  parsehub = "parsehub.cli:main"
45
45
  ph = "parsehub.cli:main"
46
46
 
47
+ [project.optional-dependencies]
48
+ cli = [
49
+ "argcomplete>=3.6.3",
50
+ "platformdirs>=4.5.1",
51
+ ]
52
+
47
53
  [dependency-groups]
48
54
  dev = [
49
55
  "ruff>=0.14.14",