parsehub 2.0.38__tar.gz → 2.0.40__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.
- {parsehub-2.0.38/src/parsehub.egg-info → parsehub-2.0.40}/PKG-INFO +20 -19
- {parsehub-2.0.38 → parsehub-2.0.40}/README.md +19 -18
- {parsehub-2.0.38 → parsehub-2.0.40}/pyproject.toml +1 -1
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/base/ytdlp.py +2 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/bilibili.py +1 -1
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/instagram.py +1 -1
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/youtube.py +1 -1
- {parsehub-2.0.38 → parsehub-2.0.40/src/parsehub.egg-info}/PKG-INFO +20 -19
- {parsehub-2.0.38 → parsehub-2.0.40}/LICENSE +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/setup.cfg +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/__init__.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/__init__.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/cli.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/cli_config.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/config/__init__.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/config/config.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/errors.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/__init__.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/base/__init__.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/base/base.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/__init__.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/coolapk.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/douyin.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/facebook.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/kuaishou.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/pipix.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/snapchat.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/threads.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/tieba.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/tiktok.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/twitter.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/weibo.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/weixin.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/xhs.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/xiaoheihe.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/parsers/parser/zuiyou.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/__init__.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/bilibili.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/coolapk.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/douyin.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/instagram.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/kuaishou.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/pipix.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/threads.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/tieba.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/tiktok.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/twitter.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/weibo.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/weixin.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/xhs.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/xiaoheihe.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/provider_api/zuiyou.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/types/__init__.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/types/callback.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/types/media_file.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/types/media_ref.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/types/platform.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/types/post.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/types/result.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/utils/downloader.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/utils/helpers.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub/utils/media_info.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub.egg-info/SOURCES.txt +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub.egg-info/dependency_links.txt +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub.egg-info/entry_points.txt +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub.egg-info/requires.txt +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/src/parsehub.egg-info/top_level.txt +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/test/test_cli.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/test/test_cli_config.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/test/test_core_offline.py +0 -0
- {parsehub-2.0.38 → parsehub-2.0.40}/test/test_downloader.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: parsehub
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.40
|
|
4
4
|
Summary: 轻量、异步、开箱即用的社交媒体聚合解析库
|
|
5
5
|
Author-email: 梓澪 <zilingmio@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -70,24 +70,25 @@ Dynamic: license-file
|
|
|
70
70
|
## 🌐 支持平台
|
|
71
71
|
|
|
72
72
|
| 平台 | 视频 | 图文 | 其他 |
|
|
73
|
-
|
|
74
|
-
| **Twitter / X** | ✅ | ✅
|
|
75
|
-
| **Instagram** | ✅ | ✅
|
|
76
|
-
| **YouTube** | ✅ |
|
|
77
|
-
| **Facebook** | ✅ |
|
|
78
|
-
| **Threads** | ✅ | ✅
|
|
79
|
-
| **Bilibili** | ✅ |
|
|
80
|
-
| **抖音** | ✅ | ✅
|
|
81
|
-
| **TikTok** | ✅ | ✅
|
|
82
|
-
| **微博** | ✅ | ✅
|
|
83
|
-
| **小红书** | ✅ | ✅
|
|
84
|
-
| **贴吧** | ✅ | ✅
|
|
85
|
-
| **微信公众号** | | ✅
|
|
86
|
-
| **快手** | ✅ |
|
|
87
|
-
| **酷安** | | ✅
|
|
88
|
-
| **皮皮虾** | ✅ | ✅
|
|
89
|
-
| **最右** | ✅ | ✅
|
|
90
|
-
| **小黑盒** | ✅ | ✅
|
|
73
|
+
|-----------------|:--:|:-:|-------|
|
|
74
|
+
| **Twitter / X** | ✅ | ✅ | |
|
|
75
|
+
| **Instagram** | ✅ | ✅ | |
|
|
76
|
+
| **YouTube** | ✅ | | 🎵 音乐 |
|
|
77
|
+
| **Facebook** | ✅ | | |
|
|
78
|
+
| **Threads** | ✅ | ✅ | |
|
|
79
|
+
| **Bilibili** | ✅ | | 📝 动态 |
|
|
80
|
+
| **抖音** | ✅ | ✅ | |
|
|
81
|
+
| **TikTok** | ✅ | ✅ | |
|
|
82
|
+
| **微博** | ✅ | ✅ | |
|
|
83
|
+
| **小红书** | ✅ | ✅ | |
|
|
84
|
+
| **贴吧** | ✅ | ✅ | |
|
|
85
|
+
| **微信公众号** | | ✅ | |
|
|
86
|
+
| **快手** | ✅ | | |
|
|
87
|
+
| **酷安** | | ✅ | |
|
|
88
|
+
| **皮皮虾** | ✅ | ✅ | |
|
|
89
|
+
| **最右** | ✅ | ✅ | |
|
|
90
|
+
| **小黑盒** | ✅ | ✅ | |
|
|
91
|
+
| **Snapchat** | ✅ | | |
|
|
91
92
|
|
|
92
93
|
## 📦 安装
|
|
93
94
|
|
|
@@ -29,24 +29,25 @@
|
|
|
29
29
|
## 🌐 支持平台
|
|
30
30
|
|
|
31
31
|
| 平台 | 视频 | 图文 | 其他 |
|
|
32
|
-
|
|
33
|
-
| **Twitter / X** | ✅ | ✅
|
|
34
|
-
| **Instagram** | ✅ | ✅
|
|
35
|
-
| **YouTube** | ✅ |
|
|
36
|
-
| **Facebook** | ✅ |
|
|
37
|
-
| **Threads** | ✅ | ✅
|
|
38
|
-
| **Bilibili** | ✅ |
|
|
39
|
-
| **抖音** | ✅ | ✅
|
|
40
|
-
| **TikTok** | ✅ | ✅
|
|
41
|
-
| **微博** | ✅ | ✅
|
|
42
|
-
| **小红书** | ✅ | ✅
|
|
43
|
-
| **贴吧** | ✅ | ✅
|
|
44
|
-
| **微信公众号** | | ✅
|
|
45
|
-
| **快手** | ✅ |
|
|
46
|
-
| **酷安** | | ✅
|
|
47
|
-
| **皮皮虾** | ✅ | ✅
|
|
48
|
-
| **最右** | ✅ | ✅
|
|
49
|
-
| **小黑盒** | ✅ | ✅
|
|
32
|
+
|-----------------|:--:|:-:|-------|
|
|
33
|
+
| **Twitter / X** | ✅ | ✅ | |
|
|
34
|
+
| **Instagram** | ✅ | ✅ | |
|
|
35
|
+
| **YouTube** | ✅ | | 🎵 音乐 |
|
|
36
|
+
| **Facebook** | ✅ | | |
|
|
37
|
+
| **Threads** | ✅ | ✅ | |
|
|
38
|
+
| **Bilibili** | ✅ | | 📝 动态 |
|
|
39
|
+
| **抖音** | ✅ | ✅ | |
|
|
40
|
+
| **TikTok** | ✅ | ✅ | |
|
|
41
|
+
| **微博** | ✅ | ✅ | |
|
|
42
|
+
| **小红书** | ✅ | ✅ | |
|
|
43
|
+
| **贴吧** | ✅ | ✅ | |
|
|
44
|
+
| **微信公众号** | | ✅ | |
|
|
45
|
+
| **快手** | ✅ | | |
|
|
46
|
+
| **酷安** | | ✅ | |
|
|
47
|
+
| **皮皮虾** | ✅ | ✅ | |
|
|
48
|
+
| **最右** | ✅ | ✅ | |
|
|
49
|
+
| **小黑盒** | ✅ | ✅ | |
|
|
50
|
+
| **Snapchat** | ✅ | | |
|
|
50
51
|
|
|
51
52
|
## 📦 安装
|
|
52
53
|
|
|
@@ -4,6 +4,7 @@ from dataclasses import dataclass
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from typing import Any, cast
|
|
6
6
|
|
|
7
|
+
from loguru import logger
|
|
7
8
|
from yt_dlp import YoutubeDL
|
|
8
9
|
|
|
9
10
|
from ...types import (
|
|
@@ -32,6 +33,7 @@ def switch_ytdlp_proxy(ydl: YoutubeDL, proxy: str | None) -> None:
|
|
|
32
33
|
director.close()
|
|
33
34
|
|
|
34
35
|
|
|
36
|
+
@logger.catch
|
|
35
37
|
def download_video(yto_params: dict[str, Any], url: str, proxy: str | None = None) -> None:
|
|
36
38
|
"""在独立线程中下载视频"""
|
|
37
39
|
try:
|
|
@@ -165,7 +165,7 @@ class BiliParse(YtParser):
|
|
|
165
165
|
@property
|
|
166
166
|
def params(self) -> dict[str, Any]:
|
|
167
167
|
sub: dict[str, Any] = {
|
|
168
|
-
"format": "mp4+bestvideo[height<=1080]+bestaudio",
|
|
168
|
+
"format": "mp4+bestvideo[height<=1080]+bestaudio/mp4+bestvideo+bestaudio/mp4+best",
|
|
169
169
|
}
|
|
170
170
|
p = sub | super().params
|
|
171
171
|
return p
|
|
@@ -72,7 +72,7 @@ class InstagramParser(BaseParser):
|
|
|
72
72
|
@staticmethod
|
|
73
73
|
def get_short_code(url: str) -> str | None:
|
|
74
74
|
url = url.removesuffix("/")
|
|
75
|
-
shortcode = re.search(r"/(
|
|
75
|
+
shortcode = re.search(r"/(p|reel|reels|share|.*/p|.*/reel)/(.*)", url)
|
|
76
76
|
return shortcode.group(2).split("/")[0] if shortcode else None
|
|
77
77
|
|
|
78
78
|
|
|
@@ -15,7 +15,7 @@ class YtbParse(YtParser):
|
|
|
15
15
|
@property
|
|
16
16
|
def params(self) -> dict[str, Any]:
|
|
17
17
|
sub: dict[str, Any] = {
|
|
18
|
-
"format": "mp4+bestvideo[height<=1080]+bestaudio",
|
|
18
|
+
"format": "mp4+bestvideo[height<=1080]+bestaudio/mp4+bestvideo+bestaudio/mp4+best",
|
|
19
19
|
# "writesubtitles": True, # 下载字幕
|
|
20
20
|
# "writeautomaticsub": True, # 下载自动生成的字幕
|
|
21
21
|
# "subtitlesformat": "ttml", # 字幕格式
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: parsehub
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.40
|
|
4
4
|
Summary: 轻量、异步、开箱即用的社交媒体聚合解析库
|
|
5
5
|
Author-email: 梓澪 <zilingmio@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -70,24 +70,25 @@ Dynamic: license-file
|
|
|
70
70
|
## 🌐 支持平台
|
|
71
71
|
|
|
72
72
|
| 平台 | 视频 | 图文 | 其他 |
|
|
73
|
-
|
|
74
|
-
| **Twitter / X** | ✅ | ✅
|
|
75
|
-
| **Instagram** | ✅ | ✅
|
|
76
|
-
| **YouTube** | ✅ |
|
|
77
|
-
| **Facebook** | ✅ |
|
|
78
|
-
| **Threads** | ✅ | ✅
|
|
79
|
-
| **Bilibili** | ✅ |
|
|
80
|
-
| **抖音** | ✅ | ✅
|
|
81
|
-
| **TikTok** | ✅ | ✅
|
|
82
|
-
| **微博** | ✅ | ✅
|
|
83
|
-
| **小红书** | ✅ | ✅
|
|
84
|
-
| **贴吧** | ✅ | ✅
|
|
85
|
-
| **微信公众号** | | ✅
|
|
86
|
-
| **快手** | ✅ |
|
|
87
|
-
| **酷安** | | ✅
|
|
88
|
-
| **皮皮虾** | ✅ | ✅
|
|
89
|
-
| **最右** | ✅ | ✅
|
|
90
|
-
| **小黑盒** | ✅ | ✅
|
|
73
|
+
|-----------------|:--:|:-:|-------|
|
|
74
|
+
| **Twitter / X** | ✅ | ✅ | |
|
|
75
|
+
| **Instagram** | ✅ | ✅ | |
|
|
76
|
+
| **YouTube** | ✅ | | 🎵 音乐 |
|
|
77
|
+
| **Facebook** | ✅ | | |
|
|
78
|
+
| **Threads** | ✅ | ✅ | |
|
|
79
|
+
| **Bilibili** | ✅ | | 📝 动态 |
|
|
80
|
+
| **抖音** | ✅ | ✅ | |
|
|
81
|
+
| **TikTok** | ✅ | ✅ | |
|
|
82
|
+
| **微博** | ✅ | ✅ | |
|
|
83
|
+
| **小红书** | ✅ | ✅ | |
|
|
84
|
+
| **贴吧** | ✅ | ✅ | |
|
|
85
|
+
| **微信公众号** | | ✅ | |
|
|
86
|
+
| **快手** | ✅ | | |
|
|
87
|
+
| **酷安** | | ✅ | |
|
|
88
|
+
| **皮皮虾** | ✅ | ✅ | |
|
|
89
|
+
| **最右** | ✅ | ✅ | |
|
|
90
|
+
| **小黑盒** | ✅ | ✅ | |
|
|
91
|
+
| **Snapchat** | ✅ | | |
|
|
91
92
|
|
|
92
93
|
## 📦 安装
|
|
93
94
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|