{"id":51596620,"url":"https://github.com/z-mio/ParseHub","last_synced_at":"2026-07-11T19:01:18.853Z","repository":{"id":263823398,"uuid":"891498569","full_name":"z-mio/ParseHub","owner":"z-mio","description":"轻量、异步、开箱即用的社交媒体聚合解析库","archived":false,"fork":false,"pushed_at":"2026-06-27T12:20:25.000Z","size":1894,"stargazers_count":118,"open_issues_count":0,"forks_count":17,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-06-27T14:12:58.902Z","etag":null,"topics":["bilibili","crawler","douyin","facebook","instagram","python","python3","threads","tieba","tiktok","twitter","weibo","xiaoheihe","xiaohongshu","youtube","yt-dlp","zuiyou"],"latest_commit_sha":null,"homepage":"https://t.me/ParseHubot","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/z-mio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-20T12:52:18.000Z","updated_at":"2026-06-27T12:20:05.000Z","dependencies_parsed_at":"2025-01-13T11:26:48.010Z","dependency_job_id":"cf1ac1ec-d307-4a98-a549-b1647394594f","html_url":"https://github.com/z-mio/ParseHub","commit_stats":null,"previous_names":["z-mio/parsehub"],"tags_count":110,"template":false,"template_full_name":null,"purl":"pkg:github/z-mio/ParseHub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z-mio%2FParseHub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z-mio%2FParseHub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z-mio%2FParseHub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z-mio%2FParseHub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/z-mio","download_url":"https://codeload.github.com/z-mio/ParseHub/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z-mio%2FParseHub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35372639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bilibili","crawler","douyin","facebook","instagram","python","python3","threads","tieba","tiktok","twitter","weibo","xiaoheihe","xiaohongshu","youtube","yt-dlp","zuiyou"],"created_at":"2026-07-11T19:01:17.044Z","updated_at":"2026-07-11T19:01:18.846Z","avatar_url":"https://github.com/z-mio.png","language":"Python","funding_links":[],"categories":["Social Media Crawlers"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🔗 ParseHub\n\n**社交媒体聚合解析器**\n\n[![PyPI version](https://img.shields.io/pypi/v/parsehub?color=blue\u0026logo=pypi\u0026logoColor=white)](https://pypi.org/project/parsehub/)\n[![Python](https://img.shields.io/badge/python-3.12+-blue?logo=python\u0026logoColor=white)](https://www.python.org/)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![GitHub stars](https://img.shields.io/github/stars/z-mio/parsehub?style=social)](https://github.com/z-mio/parsehub)\n\n轻量, 异步, 开箱即用的社交媒体解析与媒体下载库, 支持 17+ 平台\n\n[安装](#-安装) · [快速开始](#-快速开始) · [高级用法](#-高级用法) · [TG Bot](https://github.com/z-mio/parse_hub_bot)\n\n\u003c/div\u003e\n\n---\n\n## ✨ 特性\n\n- 🌍 **广泛的平台支持** — 覆盖国内外 17+ 主流社交媒体平台\n- 🧹 **链接清理** — 自动提取分享文案中的链接，并清除可移除的跟踪参数\n- 🎬 **多媒体解析** — 支持视频, 图文, 动图, 实况照片和富文本文章\n- 📦 **同步 / 异步 API** — 同时提供 `async/await` 与 `*_sync` 调用方式\n- 🐚 **CLI 支持** — 命令行原生支持，轻量开箱即用\n- 🤖 **Telegram Bot** — 基于本项目的 Bot 已上线 → [@ParseHuBot](https://t.me/ParsehuBot)\n\n## 🌐 支持平台\n\n| 平台              | 视频 | 图文 | 其他            |\n|-----------------|:--:|:--:|---------------|\n| **Twitter / X** | ✅  | ✅  | 📝 文章         |\n| **Instagram**   | ✅  | ✅  |               |\n| **YouTube**     | ✅  |    | 🎵 音乐         |\n| **Facebook**    | ✅  |    |               |\n| **Threads**     | ✅  | ✅  |               |\n| **Bilibili**    | ✅  |    | 📝 动态         |\n| **抖音**          | ✅  | ✅  | ☀️日常          |\n| **TikTok**      | ✅  | ✅  |               |\n| **微博**          | ✅  | ✅  |               |\n| **小红书**         | ✅  | ✅  |               |\n| **贴吧**          | ✅  | ✅  |               |\n| **微信公众号**       |    | ✅  |               |\n| **快手**          | ✅  |    |               |\n| **酷安**          |    | ✅  |               |\n| **皮皮虾**         | ✅  | ✅  |               |\n| **最右**          | ✅  | ✅  |               |\n| **小黑盒**         | ✅  | ✅  |               |\n| **Snapchat**    | ✅  |    |               |\n| **知乎**          | ✅  | ✅  | 🐶 问答, 专栏, 圈子 |\n\n## 📦 安装\n\n### CLI 安装\n\n```bash\nuv tool install \"parsehub[cli]\"\nph -v\n```\n\n### Python 库安装\n\n```bash\n# uv\nuv add parsehub\n\n# 需要完整 CLI 能力时，可安装 `cli` 扩展\nuv add \"parsehub[cli]\"\n```\n\n## 🚀 快速开始\n\n### CLI\n\n#### 解析链接或分享文案\n\n```bash\nparsehub \"https://example.com/post/1\"\n\n# 短命令等价写法\nph \"https://example.com/post/1\"\n```\n\n#### 下载媒体\n\n```bash\nph d \"https://example.com/post/1\"\n```\n\n#### 常用命令\n\n| 命令                                               | 说明          |\n|--------------------------------------------------|-------------|\n| `ph ls`                                          | 查看支持的平台     |\n| `ph set proxy \u003cplatform\u003e \u003cproxy\u003e`                | 设置解析代理和下载代理 |\n| `ph set proxy \u003cplatform\u003e \u003cproxy\u003e --for download` | 只设置下载代理     |\n| `ph set cookie \u003cplatform\u003e`                       | 保存平台 Cookie |\n| `ph set list`                                    | 查看配置列表      |\n| `ph set show \u003cplatform\u003e`                         | 查看平台配置      |\n\n配置会自动按平台应用到后续解析和下载; 临时覆盖时仍可直接传参数:\n\n```bash\nph \"https://example.com/post/1\" --proxy http://127.0.0.1:7890\nph d \"https://example.com/post/1\" --parse-proxy http://127.0.0.1:7890 --cookie \"key=value\"\n```\n\n---\n\n### Python API\n\n#### 同步解析\n\n```python\nfrom parsehub import ParseHub\n\nph = ParseHub()\nresult = ph.parse_sync(\"https://www.xiaoheihe.cn/app/bbs/link/174972336\")\nprint(result)\n\ndr = result.download_sync()\nprint(dr)\n\n```\n\n#### 异步解析\n\n```python\nimport asyncio\nfrom parsehub import ParseHub\n\n\nasync def main():\n    ph = ParseHub()\n    result = await ph.parse(\"https://tieba.baidu.com/p/9939510114\")\n    print(result)\n\n    dr = await result.download()\n    print(dr)\n\n\nasyncio.run(main())\n```\n\n#### 下载媒体\n\n```python\nfrom parsehub import ParseHub\n\nph = ParseHub()\nresult = ph.download_sync(\"https://www.xiaoheihe.cn/app/bbs/link/174972336\")\nprint(result)\n```\n\n## 🔑 高级用法\n\n### Cookie 登录与代理\n\n需要登录态的平台可传 Cookie, 解析入口使用 `cookie` / `proxy`, 下载入口使用 `parse_cookie` / `parse_proxy` 作为解析阶段参数\n\n当前支持 Cookie 的平台:\n\n- `Twitter / X`\n- `Instagram`\n- `YouTube`\n- `Bilibili`\n- `抖音`\n- `TikTok`\n- `快手`\n- `小红书`\n- `知乎`\n\n```python\nfrom parsehub import ParseHub\n\nph = ParseHub()\nresult = ph.parse_sync(\n    \"https://example.com\",\n    cookie=\"key1=value1; key2=value2\",\n    proxy=\"http://127.0.0.1:7890\",\n)\n```\n\nCookie 支持多种格式:\n\n```python\n# Cookie header 字符串\nph.parse_sync(\"https://example.com\", cookie=\"key1=value1; key2=value2\")\n\n# JSON 字符串\nph.parse_sync(\"https://example.com\", cookie='{\"key1\": \"value1\", \"key2\": \"value2\"}')\n\n# 字典\nph.parse_sync(\"https://example.com\", cookie={\"key1\": \"value1\", \"key2\": \"value2\"})\n```\n\n---\n\n### 下载进度回调\n\n```python\nfrom parsehub import ParseHub\nfrom parsehub.types import ProgressUnit\n\n\nclass ProgressTracker:\n    async def __call__(self, current: int, total: int, unit: ProgressUnit, *args, task_name: str = \"\", **kwargs):\n        print(f\"[{task_name}] {current}/{total} ({unit})\")\n\n\nresult = ParseHub().download_sync(\n    \"https://example.com\",\n    path=\"./downloads\",\n    callback=ProgressTracker(),\n    callback_args=(\"extra_arg\",),\n    callback_kwargs={\"task_name\": \"demo\"},\n)\n```\n\n`unit` 值:\n\n- `bytes`: 单文件下载时的字节进度\n- `count`: 多文件下载时的文件数量进度\n\n---\n\n### 保存 metadata.json\n\n```python\nfrom parsehub import ParseHub\n\nresult = ParseHub().download_sync(\n    \"https://example.com\",\n    path=\"./downloads\",\n    save_metadata=True,\n)\n\nprint(result.output_dir / \"metadata.json\")\n```\n\n---\n\n### 全局配置\n\n```python\nfrom pathlib import Path\nfrom parsehub.config import GlobalConfig\n\nGlobalConfig.default_save_dir = Path(\"./downloads\")\n```\n\n---\n\n### 错误处理\n\n```python\nfrom parsehub import ParseHub\nfrom parsehub.errors import ParseError, UnknownPlatform\n\ntry:\n    result = ParseHub().parse_sync(\"https://example.com\")\nexcept UnknownPlatform:\n    print(\"暂不支持该平台\")\nexcept ParseError as exc:\n    print(f\"解析失败: {exc}\")\n```\n\n---\n\n## 🤝 参与贡献\n\n欢迎提交 Pull Request 或 Issue!\n\n- Bug 反馈请附上相关 URL 和日志信息\n\n### 开发规范\n\n提交代码前请至少执行:\n\n```bash\nruff format \u0026\u0026 ruff check --fix \u0026\u0026 uv run mypy\nuv run pytest\n```\n\n## 🤝 参考项目\n\n- [Evil0ctal/Douyin_TikTok_Download_API](https://github.com/Evil0ctal/Douyin_TikTok_Download_API)\n- [yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp)\n- [instaloader/instaloader](https://github.com/instaloader/instaloader)\n- [SocialSisterYi/bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect)\n- [Nemo2011/bilibili-api](https://github.com/Nemo2011/bilibili-api)\n- [cv-cat/ZhihuApis](https://github.com/cv-cat/ZhihuApis)\n\n## 📜 开源协议\n\n本项目基于 [MIT License](LICENSE) 开源\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**如果这个项目对你有帮助，欢迎点个 ⭐ Star!**\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz-mio%2FParseHub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fz-mio%2FParseHub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz-mio%2FParseHub/lists"}