redfox-python-sdk 0.7.4__py3-none-any.whl → 0.7.5__py3-none-any.whl
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.
- redfox/client.py +9 -0
- redfox/endpoints/account.py +50 -0
- redfox/endpoints/ai_search.py +71 -0
- redfox/endpoints/bilibili.py +14 -1
- redfox/endpoints/dongchedi.py +14 -1
- redfox/endpoints/doubao_video.py +60 -0
- redfox/endpoints/facebook.py +84 -0
- redfox/endpoints/gemini_image.py +74 -0
- redfox/endpoints/gpt_image.py +62 -1
- redfox/endpoints/tiktok.py +127 -1
- redfox/endpoints/tools.py +56 -2
- redfox/endpoints/wechat.py +50 -0
- redfox/endpoints/weibo.py +40 -1
- redfox/endpoints/zhihu.py +57 -1
- {redfox_python_sdk-0.7.4.dist-info → redfox_python_sdk-0.7.5.dist-info}/METADATA +89 -23
- redfox_python_sdk-0.7.5.dist-info/RECORD +34 -0
- {redfox_python_sdk-0.7.4.dist-info → redfox_python_sdk-0.7.5.dist-info}/WHEEL +1 -1
- redfox_python_sdk-0.7.4.dist-info/RECORD +0 -31
- {redfox_python_sdk-0.7.4.dist-info → redfox_python_sdk-0.7.5.dist-info}/top_level.txt +0 -0
redfox/client.py
CHANGED
|
@@ -34,6 +34,9 @@ from .endpoints.tools import ToolsAPI
|
|
|
34
34
|
from .endpoints.weibo import WeiboAPI
|
|
35
35
|
from .endpoints.baijiahao import BaijiahaoAPI
|
|
36
36
|
from .endpoints.zhihu import ZhihuAPI
|
|
37
|
+
from .endpoints.facebook import FacebookAPI
|
|
38
|
+
from .endpoints.gemini_image import GeminiImageAPI
|
|
39
|
+
from .endpoints.account import RedFoxAccountAPI
|
|
37
40
|
|
|
38
41
|
logger = logging.getLogger("redfox")
|
|
39
42
|
|
|
@@ -239,6 +242,9 @@ class RedFoxClient(_RequestMixin):
|
|
|
239
242
|
self.weibo = WeiboAPI(self)
|
|
240
243
|
self.baijiahao = BaijiahaoAPI(self)
|
|
241
244
|
self.zhihu = ZhihuAPI(self)
|
|
245
|
+
self.facebook = FacebookAPI(self)
|
|
246
|
+
self.gemini_image = GeminiImageAPI(self)
|
|
247
|
+
self.account = RedFoxAccountAPI(self)
|
|
242
248
|
|
|
243
249
|
def request(
|
|
244
250
|
self,
|
|
@@ -462,6 +468,9 @@ class AsyncRedFoxClient(_RequestMixin):
|
|
|
462
468
|
self.weibo = WeiboAPI(self)
|
|
463
469
|
self.baijiahao = BaijiahaoAPI(self)
|
|
464
470
|
self.zhihu = ZhihuAPI(self)
|
|
471
|
+
self.facebook = FacebookAPI(self)
|
|
472
|
+
self.gemini_image = GeminiImageAPI(self)
|
|
473
|
+
self.account = RedFoxAccountAPI(self)
|
|
465
474
|
|
|
466
475
|
async def request(
|
|
467
476
|
self,
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""红狐平台账户 API 端点(余额 / 调用记录)"""
|
|
2
|
+
|
|
3
|
+
from typing import Optional, Dict, Any
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class RedFoxAccountAPI:
|
|
7
|
+
"""
|
|
8
|
+
红狐平台账户 API 集合
|
|
9
|
+
|
|
10
|
+
包含账户余额查询、接口调用记录查询等接口。
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
def __init__(self, client):
|
|
14
|
+
self._client = client
|
|
15
|
+
|
|
16
|
+
def balance(self, source: str = "用户余额查询-SDK") -> dict:
|
|
17
|
+
"""
|
|
18
|
+
查询账户余额
|
|
19
|
+
|
|
20
|
+
:return: 余额字典,包含 totalAvailablePoints(剩余积分)、
|
|
21
|
+
freeAvailablePoints(剩余免费积分)、paidAvailablePoints(剩余付费积分)
|
|
22
|
+
"""
|
|
23
|
+
return self._client.get(
|
|
24
|
+
"/story/web/points/api-key/balance",
|
|
25
|
+
params={"apiKey": self._client.api_key},
|
|
26
|
+
source=source,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
def consume_flows(
|
|
30
|
+
self,
|
|
31
|
+
page_num: int = 1,
|
|
32
|
+
page_size: int = 20,
|
|
33
|
+
source: str = "接口调用记录查询-SDK",
|
|
34
|
+
) -> dict:
|
|
35
|
+
"""
|
|
36
|
+
查询接口调用记录
|
|
37
|
+
|
|
38
|
+
:param page_num: 页码,默认 1
|
|
39
|
+
:param page_size: 每页条数,默认 20
|
|
40
|
+
:return: 调用记录字典,包含 total/pages/records(含消耗积分、原因、调用时间)
|
|
41
|
+
"""
|
|
42
|
+
return self._client.get(
|
|
43
|
+
"/story/web/points/api-key/consume-flows",
|
|
44
|
+
params={
|
|
45
|
+
"apiKey": self._client.api_key,
|
|
46
|
+
"pageNum": str(page_num),
|
|
47
|
+
"pageSize": str(page_size),
|
|
48
|
+
},
|
|
49
|
+
source=source,
|
|
50
|
+
)
|
redfox/endpoints/ai_search.py
CHANGED
|
@@ -9,6 +9,8 @@ class AISearchAPI:
|
|
|
9
9
|
|
|
10
10
|
支持 Kimi、豆包、Deepseek、元宝、千问、百度六种 AI 搜索引擎。
|
|
11
11
|
每种引擎均为异步模式:先 submit 提交任务,再 result 查询结果。
|
|
12
|
+
|
|
13
|
+
另含 Kimi K3 纯文字搜索,以及豆包/千问含商品卡信息的纯文本搜索。
|
|
12
14
|
"""
|
|
13
15
|
|
|
14
16
|
def __init__(self, client):
|
|
@@ -157,3 +159,72 @@ class AISearchAPI:
|
|
|
157
159
|
return self._client.post(
|
|
158
160
|
"/story/api/deepSearch/bdResult", data={"taskId": task_id}, source=source
|
|
159
161
|
)
|
|
162
|
+
|
|
163
|
+
# ─── Kimi K3 ────────────────────────────────────────────
|
|
164
|
+
|
|
165
|
+
def kimi_k3_submit(self, inquiry_text: str, source: str = "Kimi K3 纯文字搜索-提交任务-SDK") -> dict:
|
|
166
|
+
"""
|
|
167
|
+
kimi-K3 纯文字搜索 - 提交任务
|
|
168
|
+
|
|
169
|
+
:param inquiry_text: 输入文本(必填)
|
|
170
|
+
:return: 包含 taskId 的字典
|
|
171
|
+
"""
|
|
172
|
+
return self._client.post(
|
|
173
|
+
"/story/api/kimi/submitK3", data={"inquiryText": inquiry_text}, source=source
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
# ─── 豆包(含商品卡信息) ─────────────────────────────────
|
|
177
|
+
|
|
178
|
+
def doubao_goods_submit(
|
|
179
|
+
self, inquiry_text: str, source: str = "豆包纯文本搜索(含商品卡)-提交任务-SDK"
|
|
180
|
+
) -> dict:
|
|
181
|
+
"""
|
|
182
|
+
豆包纯文本搜索(含商品卡信息) - 提交任务
|
|
183
|
+
|
|
184
|
+
:param inquiry_text: 搜索文本(必填)
|
|
185
|
+
:return: 包含 taskId 的字典
|
|
186
|
+
"""
|
|
187
|
+
return self._client.post(
|
|
188
|
+
"/story/api/deepSearch/dbaSubmit", data={"inquiryText": inquiry_text}, source=source
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
def doubao_goods_result(
|
|
192
|
+
self, task_id: str, source: str = "豆包纯文本搜索(含商品卡)-查询结果-SDK"
|
|
193
|
+
) -> dict:
|
|
194
|
+
"""
|
|
195
|
+
豆包纯文本搜索(含商品卡信息) - 查询任务结果
|
|
196
|
+
|
|
197
|
+
:param task_id: 任务 ID(由 doubao_goods_submit 返回)
|
|
198
|
+
:return: 任务结果字典,包含参考文档 searchGuid、主回答 content、商品卡 cardData
|
|
199
|
+
"""
|
|
200
|
+
return self._client.post(
|
|
201
|
+
"/story/api/deepSearch/dbaResult", data={"taskId": task_id}, source=source
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
# ─── 千问(含商品卡信息) ─────────────────────────────────
|
|
205
|
+
|
|
206
|
+
def qianwen_goods_submit(
|
|
207
|
+
self, inquiry_text: str, source: str = "千问纯文本搜索(含商品卡)-提交任务-SDK"
|
|
208
|
+
) -> dict:
|
|
209
|
+
"""
|
|
210
|
+
千问纯文本搜索(含商品卡信息) - 提交任务
|
|
211
|
+
|
|
212
|
+
:param inquiry_text: 搜索文本(必填)
|
|
213
|
+
:return: 包含 taskId 的字典
|
|
214
|
+
"""
|
|
215
|
+
return self._client.post(
|
|
216
|
+
"/story/api/deepSearch/qwaSubmit", data={"inquiryText": inquiry_text}, source=source
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
def qianwen_goods_result(
|
|
220
|
+
self, task_id: str, source: str = "千问纯文本搜索(含商品卡)-查询结果-SDK"
|
|
221
|
+
) -> dict:
|
|
222
|
+
"""
|
|
223
|
+
千问纯文本搜索(含商品卡信息) - 查询任务结果
|
|
224
|
+
|
|
225
|
+
:param task_id: 任务 ID(由 qianwen_goods_submit 返回)
|
|
226
|
+
:return: 任务结果字典,包含 AI 导购结果 result、商品卡片 cardData
|
|
227
|
+
"""
|
|
228
|
+
return self._client.post(
|
|
229
|
+
"/story/api/deepSearch/qwaResult", data={"taskId": task_id}, source=source
|
|
230
|
+
)
|
redfox/endpoints/bilibili.py
CHANGED
|
@@ -7,7 +7,7 @@ class BilibiliAPI:
|
|
|
7
7
|
"""
|
|
8
8
|
哔哩哔哩平台 API 集合
|
|
9
9
|
|
|
10
|
-
包含 B
|
|
10
|
+
包含 B 站账号查询、作品搜索、作品详情、视频字幕提取等接口。
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
def __init__(self, client):
|
|
@@ -160,3 +160,16 @@ class BilibiliAPI:
|
|
|
160
160
|
return self._client.post(
|
|
161
161
|
"/story/api/parseWork/bilibiliSubtitle/result", data={"taskId": task_id}, source=source
|
|
162
162
|
)
|
|
163
|
+
|
|
164
|
+
def get_subtitles(self, url: str, source: str = "哔哩哔哩视频字幕提取-SDK") -> dict:
|
|
165
|
+
"""
|
|
166
|
+
哔哩哔哩视频字幕提取
|
|
167
|
+
|
|
168
|
+
输入 B 站视频链接,返回视频信息及各语言、各格式的字幕下载地址。
|
|
169
|
+
|
|
170
|
+
:param url: 视频链接(必填),如 https://www.bilibili.com/video/BV1ZmrxB6Eyy
|
|
171
|
+
:return: 字幕信息字典,包含 title/duration/subtitles(按语言分组)
|
|
172
|
+
"""
|
|
173
|
+
return self._client.post(
|
|
174
|
+
"/story/api/parseWork/videoSubtitle/bili", data={"url": url}, source=source
|
|
175
|
+
)
|
redfox/endpoints/dongchedi.py
CHANGED
|
@@ -7,7 +7,7 @@ class DongchediAPI:
|
|
|
7
7
|
"""
|
|
8
8
|
懂车帝平台 API 集合
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
包含懂车帝作品搜索、作品详情、用户作品列表、用户搜索、账号详情+作品列表等接口。
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
def __init__(self, client):
|
|
@@ -76,3 +76,16 @@ class DongchediAPI:
|
|
|
76
76
|
data={"keyword": keyword, "offset": offset},
|
|
77
77
|
source=source,
|
|
78
78
|
)
|
|
79
|
+
|
|
80
|
+
def get_account_works(self, user_id: str, source: str = "懂车帝账号详情+作品列表-SDK") -> dict:
|
|
81
|
+
"""
|
|
82
|
+
懂车帝账号详情+作品列表
|
|
83
|
+
|
|
84
|
+
:param user_id: 用户 ID(必填)
|
|
85
|
+
:return: 账号详情与作品列表字典,包含 account/workList
|
|
86
|
+
"""
|
|
87
|
+
return self._client.post(
|
|
88
|
+
"/story/api/dongchedi/accountWorks",
|
|
89
|
+
data={"userId": user_id},
|
|
90
|
+
source=source,
|
|
91
|
+
)
|
redfox/endpoints/doubao_video.py
CHANGED
|
@@ -74,3 +74,63 @@ class DoubaoVideoAPI:
|
|
|
74
74
|
data={"taskId": task_id},
|
|
75
75
|
source=source,
|
|
76
76
|
)
|
|
77
|
+
|
|
78
|
+
# ─── Seedance 2.0(新端点) ──────────────────────────────
|
|
79
|
+
|
|
80
|
+
def seedance_submit(
|
|
81
|
+
self,
|
|
82
|
+
prompt: str,
|
|
83
|
+
aspect_ratio: str = "adaptive",
|
|
84
|
+
duration: int = 5,
|
|
85
|
+
resolution: str = "720p",
|
|
86
|
+
generate_audio: bool = True,
|
|
87
|
+
return_last_frame: bool = False,
|
|
88
|
+
image_with_roles: Optional[List[Dict[str, Any]]] = None,
|
|
89
|
+
source: str = "豆包 Seedance 2.0 视频生成(新端点)-SDK",
|
|
90
|
+
) -> dict:
|
|
91
|
+
"""
|
|
92
|
+
提交 Seedance 2.0 视频生成任务(新端点)
|
|
93
|
+
|
|
94
|
+
支持文生视频、首帧/首尾帧图生视频、多模态参考生视频。
|
|
95
|
+
|
|
96
|
+
:param prompt: 生成提示词(必填)
|
|
97
|
+
:param aspect_ratio: 视频宽高比:21:9、16:9、4:3、1:1、3:4、9:16、
|
|
98
|
+
adaptive(由上游根据输入素材自动选择)
|
|
99
|
+
:param duration: 视频时长(秒),取值范围 4-15
|
|
100
|
+
:param resolution: 视频分辨率:480p、720p,默认 720p
|
|
101
|
+
:param generate_audio: 是否自动生成配音/背景音乐
|
|
102
|
+
:param return_last_frame: 是否返回视频最后一帧图片
|
|
103
|
+
:param image_with_roles: 参考图片列表,每项如
|
|
104
|
+
{"url": "图片URL", "role": "first_frame/last_frame/reference_image"},
|
|
105
|
+
first_frame/last_frame 最多 1 张,reference_image 最多 9 张
|
|
106
|
+
:return: 含 taskId 的字典
|
|
107
|
+
"""
|
|
108
|
+
data: Dict[str, Any] = {
|
|
109
|
+
"prompt": prompt,
|
|
110
|
+
"aspectRatio": aspect_ratio,
|
|
111
|
+
"duration": duration,
|
|
112
|
+
"resolution": resolution,
|
|
113
|
+
"generateAudio": generate_audio,
|
|
114
|
+
"returnLastFrame": return_last_frame,
|
|
115
|
+
}
|
|
116
|
+
if image_with_roles:
|
|
117
|
+
data["imageWithRoles"] = image_with_roles
|
|
118
|
+
return self._client.post(
|
|
119
|
+
"/story/api/parseWork/videoGen/seedanceSubmit", data=data, source=source
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
def seedance_result(
|
|
123
|
+
self, task_id: str, source: str = "查询 Seedance 2.0 视频生成结果(新端点)-SDK"
|
|
124
|
+
) -> dict:
|
|
125
|
+
"""
|
|
126
|
+
查询 Seedance 2.0 视频生成结果(新端点)
|
|
127
|
+
|
|
128
|
+
:param task_id: 任务 ID(由 seedance_submit 返回)
|
|
129
|
+
:return: 视频生成结果字典,包含 status/progress/videoUrl/failReason 等。
|
|
130
|
+
status 取值 completed/processing/failed
|
|
131
|
+
"""
|
|
132
|
+
return self._client.post(
|
|
133
|
+
"/story/api/parseWork/videoGen/seedanceResult",
|
|
134
|
+
data={"taskId": task_id},
|
|
135
|
+
source=source,
|
|
136
|
+
)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""Facebook 平台 API 端点"""
|
|
2
|
+
|
|
3
|
+
from typing import Optional, Dict, Any
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class FacebookAPI:
|
|
7
|
+
"""
|
|
8
|
+
Facebook 平台 API 集合
|
|
9
|
+
|
|
10
|
+
包含 Facebook 主页信息、主页帖子列表、帖子详情、帖子评论等接口。
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
def __init__(self, client):
|
|
14
|
+
self._client = client
|
|
15
|
+
|
|
16
|
+
def get_user(self, url: str, source: str = "Facebook获取主页信息-SDK") -> dict:
|
|
17
|
+
"""
|
|
18
|
+
Facebook获取主页信息
|
|
19
|
+
|
|
20
|
+
:param url: Facebook 主页 URL(必填),如 https://www.facebook.com/Meta
|
|
21
|
+
:return: 主页详细信息字典,包含分类、粉丝数、简介等
|
|
22
|
+
"""
|
|
23
|
+
return self._client.post("/story/api/fb/userInfo", data={"url": url}, source=source)
|
|
24
|
+
|
|
25
|
+
def get_user_posts(
|
|
26
|
+
self,
|
|
27
|
+
url: str = None,
|
|
28
|
+
page_id: str = None,
|
|
29
|
+
cursor: str = None,
|
|
30
|
+
source: str = "Facebook获取主页帖子列表-SDK",
|
|
31
|
+
) -> dict:
|
|
32
|
+
"""
|
|
33
|
+
Facebook获取主页帖子列表
|
|
34
|
+
|
|
35
|
+
url 和 page_id 至少传一个,传 page_id 查询更快。
|
|
36
|
+
|
|
37
|
+
:param url: Facebook 主页 URL
|
|
38
|
+
:param page_id: Facebook 主页 ID(由 get_user 接口返回)
|
|
39
|
+
:param cursor: 分页 cursor,传上一页响应中的 paginationToken 翻页
|
|
40
|
+
:return: 帖子列表字典,包含 items/paginationToken
|
|
41
|
+
"""
|
|
42
|
+
data: Dict[str, Any] = {}
|
|
43
|
+
if url:
|
|
44
|
+
data["url"] = url
|
|
45
|
+
if page_id:
|
|
46
|
+
data["pageId"] = page_id
|
|
47
|
+
if cursor:
|
|
48
|
+
data["cursor"] = cursor
|
|
49
|
+
return self._client.post("/story/api/fb/userPosts", data=data, source=source)
|
|
50
|
+
|
|
51
|
+
def get_post(self, url: str, source: str = "Facebook获取帖子详情-SDK") -> dict:
|
|
52
|
+
"""
|
|
53
|
+
Facebook获取帖子详情
|
|
54
|
+
|
|
55
|
+
:param url: Facebook 帖子 URL(必填),如 https://www.facebook.com/reel/1746412686633900
|
|
56
|
+
:return: 帖子详情字典,包含 reactions 细分、预估触达、互动率等
|
|
57
|
+
"""
|
|
58
|
+
return self._client.post("/story/api/fb/postDetail", data={"url": url}, source=source)
|
|
59
|
+
|
|
60
|
+
def get_post_comments(
|
|
61
|
+
self,
|
|
62
|
+
url: str = None,
|
|
63
|
+
feedback_id: str = None,
|
|
64
|
+
cursor: str = None,
|
|
65
|
+
source: str = "Facebook获取帖子评论-SDK",
|
|
66
|
+
) -> dict:
|
|
67
|
+
"""
|
|
68
|
+
Facebook获取帖子评论
|
|
69
|
+
|
|
70
|
+
url 和 feedback_id 至少传一个,传 feedback_id 查询更快。
|
|
71
|
+
|
|
72
|
+
:param url: Facebook 帖子 URL
|
|
73
|
+
:param feedback_id: 评论线程 feedback_id(由 get_post 接口返回)
|
|
74
|
+
:param cursor: 分页 cursor,传上一页响应中的 paginationToken 翻页
|
|
75
|
+
:return: 评论列表字典,包含 comments/paginationToken
|
|
76
|
+
"""
|
|
77
|
+
data: Dict[str, Any] = {}
|
|
78
|
+
if url:
|
|
79
|
+
data["url"] = url
|
|
80
|
+
if feedback_id:
|
|
81
|
+
data["feedbackId"] = feedback_id
|
|
82
|
+
if cursor:
|
|
83
|
+
data["cursor"] = cursor
|
|
84
|
+
return self._client.post("/story/api/fb/postComment", data=data, source=source)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"""Gemini 图片生成工具 API 端点(Nano Banana 2.1)"""
|
|
2
|
+
|
|
3
|
+
from typing import Optional, Dict, Any, List
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GeminiImageAPI:
|
|
7
|
+
"""
|
|
8
|
+
Gemini 图片生成工具 API 集合(Nano Banana 2.1)
|
|
9
|
+
|
|
10
|
+
支持 1K/2K/4K 分辨率输出。异步执行:submit() 返回 taskId,
|
|
11
|
+
再轮询 result() 取 imageUrls。
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
# 服务端支持的输出分辨率档位
|
|
15
|
+
RESOLUTIONS = ("1K", "2K", "4K")
|
|
16
|
+
|
|
17
|
+
# 服务端支持的输出宽高比
|
|
18
|
+
SIZES = (
|
|
19
|
+
"1:1", "3:2", "2:3", "4:3", "3:4", "16:9", "9:16",
|
|
20
|
+
"5:4", "4:5", "21:9", "1:4", "4:1", "1:8", "8:1",
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
# result() 的 status 取值,仅后两者为终态
|
|
24
|
+
TERMINAL_STATUSES = ("completed", "failed")
|
|
25
|
+
|
|
26
|
+
def __init__(self, client):
|
|
27
|
+
self._client = client
|
|
28
|
+
|
|
29
|
+
def submit(
|
|
30
|
+
self,
|
|
31
|
+
prompt: str,
|
|
32
|
+
size: str = "16:9",
|
|
33
|
+
resolution: str = "2K",
|
|
34
|
+
image_urls: Optional[List[str]] = None,
|
|
35
|
+
metadata: Optional[Dict[str, Any]] = None,
|
|
36
|
+
source: str = "Gemini Nano Banana 2.1 图片生成-SDK",
|
|
37
|
+
) -> dict:
|
|
38
|
+
"""
|
|
39
|
+
提交 Gemini Nano Banana 2.1 图片生成任务
|
|
40
|
+
|
|
41
|
+
:param prompt: 图片生成提示词(必填)
|
|
42
|
+
:param size: 输出图像宽高比,支持 1:1、3:2、2:3、4:3、3:4、16:9、9:16、
|
|
43
|
+
5:4、4:5、21:9、1:4、4:1、1:8、8:1
|
|
44
|
+
:param resolution: 输出图像分辨率,支持 1K/2K/4K(大写 K)
|
|
45
|
+
:param image_urls: 参考图片 URL 列表,用于图生图场景,不传则为纯文生图
|
|
46
|
+
:param metadata: 附加元数据,如 {"retouchTool": "crop"}(可选)
|
|
47
|
+
:return: 包含 taskId 的字典
|
|
48
|
+
"""
|
|
49
|
+
data: Dict[str, Any] = {
|
|
50
|
+
"prompt": prompt,
|
|
51
|
+
"size": size,
|
|
52
|
+
"resolution": resolution,
|
|
53
|
+
}
|
|
54
|
+
if image_urls:
|
|
55
|
+
data["imageUrls"] = image_urls
|
|
56
|
+
if metadata is not None:
|
|
57
|
+
data["metadata"] = metadata
|
|
58
|
+
return self._client.post(
|
|
59
|
+
"/story/api/parseWork/imageGen/geminiBanana21Submit", data=data, source=source
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
def result(self, task_id: str, source: str = "查询 Gemini 图片生成任务结果-SDK") -> dict:
|
|
63
|
+
"""
|
|
64
|
+
查询 Gemini Nano Banana 2.1 图片生成结果
|
|
65
|
+
|
|
66
|
+
:param task_id: 任务 ID(由 submit 接口返回)
|
|
67
|
+
:return: 任务结果字典,包含 status/progress/imageUrls/failReason 等。
|
|
68
|
+
status 取值 queued/in_progress/completed/failed,仅后两者为终态
|
|
69
|
+
"""
|
|
70
|
+
return self._client.post(
|
|
71
|
+
"/story/api/parseWork/imageGen/geminiBanana21Result",
|
|
72
|
+
data={"taskId": task_id},
|
|
73
|
+
source=source,
|
|
74
|
+
)
|
redfox/endpoints/gpt_image.py
CHANGED
|
@@ -7,7 +7,7 @@ class GPTImageAPI:
|
|
|
7
7
|
"""
|
|
8
8
|
GPT 图片生成工具 API 集合
|
|
9
9
|
|
|
10
|
-
基于 gpt-image-2
|
|
10
|
+
基于 gpt-image-2 / gpt-image-2.5 模型,支持文生图和参考图生图。
|
|
11
11
|
异步执行:submit() 返回 taskId,再轮询 result() 取 imageUrls。
|
|
12
12
|
"""
|
|
13
13
|
|
|
@@ -71,3 +71,64 @@ class GPTImageAPI:
|
|
|
71
71
|
return self._client.post(
|
|
72
72
|
"/story/api/parseWork/imageGen/gptImage2Result", data={"taskId": task_id}, source=source
|
|
73
73
|
)
|
|
74
|
+
|
|
75
|
+
# ─── GPT-Image-2.5 ──────────────────────────────────────
|
|
76
|
+
|
|
77
|
+
# GPT-Image-2.5 支持的输出分辨率档位
|
|
78
|
+
RESOLUTIONS_25 = ("1K", "2K", "4K")
|
|
79
|
+
|
|
80
|
+
# GPT-Image-2.5 支持的输出宽高比
|
|
81
|
+
SIZES_25 = (
|
|
82
|
+
"1:1", "3:2", "2:3", "4:3", "3:4", "5:4",
|
|
83
|
+
"4:5", "16:9", "9:16", "21:9",
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
def submit_25(
|
|
87
|
+
self,
|
|
88
|
+
prompt: str,
|
|
89
|
+
resolution: str = "1K",
|
|
90
|
+
size: str = "1:1",
|
|
91
|
+
reference_images: Optional[List[str]] = None,
|
|
92
|
+
background: str = None,
|
|
93
|
+
source: str = "GPT-Image-2.5 图片生成-SDK",
|
|
94
|
+
) -> dict:
|
|
95
|
+
"""
|
|
96
|
+
提交 GPT-Image-2.5 图片生成任务
|
|
97
|
+
|
|
98
|
+
支持文生图和参考图生图,异步执行,提交后返回任务 ID。
|
|
99
|
+
|
|
100
|
+
:param prompt: 提示词(必填),使用参考图时,描述需要保留的主体和需要修改的内容
|
|
101
|
+
:param resolution: 分辨率档位:1K/2K/4K,默认 1K
|
|
102
|
+
:param size: 画面比例:1:1、3:2、2:3、4:3、3:4、5:4、4:5、16:9、9:16、21:9,默认 1:1
|
|
103
|
+
:param reference_images: 参考图片 URL 列表(图生图模式),不传则为纯文生图
|
|
104
|
+
:param background: 传入 "transparent" 生成透明背景图片,不传时正常生图
|
|
105
|
+
:return: 包含 taskId 的字典
|
|
106
|
+
"""
|
|
107
|
+
data: Dict[str, Any] = {
|
|
108
|
+
"prompt": prompt,
|
|
109
|
+
"resolution": resolution,
|
|
110
|
+
"size": size,
|
|
111
|
+
}
|
|
112
|
+
if reference_images:
|
|
113
|
+
data["referenceImages"] = reference_images
|
|
114
|
+
if background is not None:
|
|
115
|
+
data["background"] = background
|
|
116
|
+
return self._client.post(
|
|
117
|
+
"/story/api/parseWork/imageGen/gptImage25Submit", data=data, source=source
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
def result_25(
|
|
121
|
+
self, task_id: str, source: str = "查询 GPT-Image-2.5 图片生成任务结果-SDK"
|
|
122
|
+
) -> dict:
|
|
123
|
+
"""
|
|
124
|
+
查询 GPT-Image-2.5 图片生成结果
|
|
125
|
+
|
|
126
|
+
:param task_id: 任务 ID(由 submit_25 接口返回)
|
|
127
|
+
:return: 任务结果字典,包含 status/progress/imageUrls/failReason 等。
|
|
128
|
+
status 取值 queued/in_progress/completed/failed,仅后两者为终态
|
|
129
|
+
"""
|
|
130
|
+
return self._client.post(
|
|
131
|
+
"/story/api/parseWork/imageGen/gptImage25Result",
|
|
132
|
+
data={"taskId": task_id},
|
|
133
|
+
source=source,
|
|
134
|
+
)
|
redfox/endpoints/tiktok.py
CHANGED
|
@@ -7,7 +7,7 @@ class TikTokAPI:
|
|
|
7
7
|
"""
|
|
8
8
|
TikTok 平台 API 集合
|
|
9
9
|
|
|
10
|
-
包含 TikTok
|
|
10
|
+
包含 TikTok 账号搜索、视频搜索、作品详情、话题搜索、评论等接口。
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
def __init__(self, client):
|
|
@@ -106,3 +106,129 @@ class TikTokAPI:
|
|
|
106
106
|
data={"secUserId": sec_user_id},
|
|
107
107
|
source=source,
|
|
108
108
|
)
|
|
109
|
+
|
|
110
|
+
def search_topics(
|
|
111
|
+
self, keyword: str, offset: int = 0, source: str = "TikTok 话题搜索-SDK"
|
|
112
|
+
) -> dict:
|
|
113
|
+
"""
|
|
114
|
+
TikTok 指定关键词话题搜索
|
|
115
|
+
|
|
116
|
+
:param keyword: 搜索关键词(必填)
|
|
117
|
+
:param offset: 偏移量,首次传 0,后续传响应中的 nextCursor
|
|
118
|
+
:return: 话题列表字典,包含 topicList/nextCursor/hasMore
|
|
119
|
+
"""
|
|
120
|
+
return self._client.post(
|
|
121
|
+
"/story/api/tiktok/ability/searchTopic",
|
|
122
|
+
data={"keyword": keyword, "offset": offset},
|
|
123
|
+
source=source,
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
def get_topic_works(
|
|
127
|
+
self,
|
|
128
|
+
ch_id: int,
|
|
129
|
+
cursor: int = 0,
|
|
130
|
+
region: str = None,
|
|
131
|
+
source: str = "获取 TikTok 话题作品数据-SDK",
|
|
132
|
+
) -> dict:
|
|
133
|
+
"""
|
|
134
|
+
获取 TikTok 指定话题作品数据
|
|
135
|
+
|
|
136
|
+
:param ch_id: 话题 ID(必填)
|
|
137
|
+
:param cursor: 翻页游标,第一页传 0
|
|
138
|
+
:param region: 地区,支持 US、GB、FR、JP、VN、SG,默认 US
|
|
139
|
+
:return: 话题作品字典,包含 workList/nextCursor/hasMore
|
|
140
|
+
"""
|
|
141
|
+
data: Dict[str, Any] = {"ch_id": ch_id, "cursor": cursor}
|
|
142
|
+
if region is not None:
|
|
143
|
+
data["region"] = region
|
|
144
|
+
return self._client.post(
|
|
145
|
+
"/story/api/tiktok/ability/topicAwemeList", data=data, source=source
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
def get_user_liked_works(
|
|
149
|
+
self, sec_user_id: str, max_cursor: int = 0, source: str = "获取 TikTok 用户喜欢作品数据-SDK"
|
|
150
|
+
) -> dict:
|
|
151
|
+
"""
|
|
152
|
+
获取 TikTok 用户喜欢作品数据
|
|
153
|
+
|
|
154
|
+
:param sec_user_id: 用户加密 ID(sec_user_id,必填)
|
|
155
|
+
:param max_cursor: 翻页游标,第一页传 0
|
|
156
|
+
:return: 喜欢的作品字典,包含 workList/nextCursor/hasMore
|
|
157
|
+
"""
|
|
158
|
+
return self._client.post(
|
|
159
|
+
"/story/api/tiktok/ability/userFavoriteAwemeList",
|
|
160
|
+
data={"sec_user_id": sec_user_id, "max_cursor": max_cursor},
|
|
161
|
+
source=source,
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
def get_user_following(
|
|
165
|
+
self,
|
|
166
|
+
user_id: str = None,
|
|
167
|
+
sec_user_id: str = None,
|
|
168
|
+
min_time: str = "0",
|
|
169
|
+
page_token: str = "",
|
|
170
|
+
source: str = "获取 TikTok 用户关注列表-SDK",
|
|
171
|
+
) -> dict:
|
|
172
|
+
"""
|
|
173
|
+
获取 TikTok 指定用户的关注列表数据
|
|
174
|
+
|
|
175
|
+
user_id 和 sec_user_id 二选一。
|
|
176
|
+
|
|
177
|
+
:param user_id: 纯数字用户 ID
|
|
178
|
+
:param sec_user_id: 字母数字混合 ID
|
|
179
|
+
:param min_time: 翻页参数,首次传 "0",后续传上次返回的 minTime
|
|
180
|
+
:param page_token: 翻页 token,首次传空字符串,后续传上次返回的 pageToken
|
|
181
|
+
:return: 关注列表字典,包含 followingList/minTime/pageToken
|
|
182
|
+
"""
|
|
183
|
+
data: Dict[str, Any] = {"minTime": str(min_time), "pageToken": str(page_token)}
|
|
184
|
+
if user_id:
|
|
185
|
+
data["userId"] = user_id
|
|
186
|
+
if sec_user_id:
|
|
187
|
+
data["secUserId"] = sec_user_id
|
|
188
|
+
return self._client.post(
|
|
189
|
+
"/story/api/tiktok/ability/userFollowing", data=data, source=source
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
def get_video_comments(
|
|
193
|
+
self, aweme_id: str, cursor: int = 0, source: str = "获取 TikTok 视频评论数据-SDK"
|
|
194
|
+
) -> dict:
|
|
195
|
+
"""
|
|
196
|
+
获取 TikTok 单个视频评论数据
|
|
197
|
+
|
|
198
|
+
:param aweme_id: 作品 ID(必填)
|
|
199
|
+
:param cursor: 翻页游标,第一页传 0
|
|
200
|
+
:return: 评论列表字典,包含 commentList/nextCursor/hasMore
|
|
201
|
+
"""
|
|
202
|
+
return self._client.post(
|
|
203
|
+
"/story/api/tiktok/ability/commentList",
|
|
204
|
+
data={"aweme_id": aweme_id, "cursor": cursor},
|
|
205
|
+
source=source,
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
def get_comment_replies(
|
|
209
|
+
self,
|
|
210
|
+
item_id: str,
|
|
211
|
+
comment_id: str,
|
|
212
|
+
cursor: int = 0,
|
|
213
|
+
count: int = 10,
|
|
214
|
+
source: str = "获取 TikTok 评论回复数据-SDK",
|
|
215
|
+
) -> dict:
|
|
216
|
+
"""
|
|
217
|
+
获取 TikTok 指定视频的评论回复数据
|
|
218
|
+
|
|
219
|
+
:param item_id: 作品 ID(必填)
|
|
220
|
+
:param comment_id: 评论 ID(必填)
|
|
221
|
+
:param cursor: 翻页游标,第一页传 0
|
|
222
|
+
:param count: 每页数量,默认 10
|
|
223
|
+
:return: 评论回复字典,包含 commentList/nextCursor/hasMore
|
|
224
|
+
"""
|
|
225
|
+
return self._client.post(
|
|
226
|
+
"/story/api/tiktok/ability/commentReply",
|
|
227
|
+
data={
|
|
228
|
+
"itemId": item_id,
|
|
229
|
+
"commentId": comment_id,
|
|
230
|
+
"cursor": cursor,
|
|
231
|
+
"count": count,
|
|
232
|
+
},
|
|
233
|
+
source=source,
|
|
234
|
+
)
|
redfox/endpoints/tools.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""通用工具 API 端点(短视频下载 /
|
|
1
|
+
"""通用工具 API 端点(短视频下载 / 文件上传 / 违禁词 / 提文案)"""
|
|
2
2
|
|
|
3
3
|
from typing import Optional, Dict, Any
|
|
4
4
|
|
|
@@ -7,7 +7,8 @@ class ToolsAPI:
|
|
|
7
7
|
"""
|
|
8
8
|
通用工具 API 集合
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
包含多平台短视频下载(去水印)、素材文件上传、多平台违禁词查询、
|
|
11
|
+
视频播放链接提取文案等接口。
|
|
11
12
|
"""
|
|
12
13
|
|
|
13
14
|
def __init__(self, client):
|
|
@@ -157,3 +158,56 @@ class ToolsAPI:
|
|
|
157
158
|
data={"format": format},
|
|
158
159
|
source=source,
|
|
159
160
|
)
|
|
161
|
+
|
|
162
|
+
# ─── 违禁词查询 ─────────────────────────────────────────
|
|
163
|
+
|
|
164
|
+
def sensitive_word_search(
|
|
165
|
+
self, content: str, source: str = "多平台违禁词查询-SDK"
|
|
166
|
+
) -> dict:
|
|
167
|
+
"""
|
|
168
|
+
多平台违禁词查询
|
|
169
|
+
|
|
170
|
+
:param content: 待检测文本(必填),字数需小于 3000 字
|
|
171
|
+
:return: 检测结果字典,包含标注后的 content(违规词用带 class 的
|
|
172
|
+
span 标签包裹)、原始内容、命中的违规词类型列表
|
|
173
|
+
"""
|
|
174
|
+
return self._client.post(
|
|
175
|
+
"/story/api/cozeSkill/sensitiveWordSearch",
|
|
176
|
+
data={"content": content},
|
|
177
|
+
source=source,
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
# ─── 视频播放链接提取文案 ────────────────────────────────
|
|
181
|
+
|
|
182
|
+
def audio_text_extract_submit(
|
|
183
|
+
self, url: str, source: str = "视频播放链接提取文案-提交任务-SDK"
|
|
184
|
+
) -> dict:
|
|
185
|
+
"""
|
|
186
|
+
视频播放链接提取文案 - 提交任务
|
|
187
|
+
|
|
188
|
+
输入可直接访问的视频播放地址,返回任务 ID。
|
|
189
|
+
|
|
190
|
+
:param url: 视频播放链接(必填)
|
|
191
|
+
:return: 包含 taskId 的字典
|
|
192
|
+
"""
|
|
193
|
+
return self._client.post(
|
|
194
|
+
"/story/api/parseWork/audioTextExtract/submit/videoUrl",
|
|
195
|
+
data={"url": url},
|
|
196
|
+
source=source,
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
def audio_text_extract_result(
|
|
200
|
+
self, task_id: str, source: str = "视频播放链接提取文案-查询结果-SDK"
|
|
201
|
+
) -> dict:
|
|
202
|
+
"""
|
|
203
|
+
视频播放链接提取文案 - 查询结果
|
|
204
|
+
|
|
205
|
+
:param task_id: 任务 ID(由 audio_text_extract_submit 返回)
|
|
206
|
+
:return: 提取结果字典,包含完整文案 text 和带时间戳的分句 stampSents。
|
|
207
|
+
status 取值 succeeded/processing/failed
|
|
208
|
+
"""
|
|
209
|
+
return self._client.post(
|
|
210
|
+
"/story/api/parseWork/audioTextExtract/result",
|
|
211
|
+
data={"taskId": task_id},
|
|
212
|
+
source=source,
|
|
213
|
+
)
|
redfox/endpoints/wechat.py
CHANGED
|
@@ -350,3 +350,53 @@ class WechatAPI:
|
|
|
350
350
|
params={"rankDate": rank_date},
|
|
351
351
|
source=source,
|
|
352
352
|
)
|
|
353
|
+
|
|
354
|
+
def get_headline_growth_rank(
|
|
355
|
+
self,
|
|
356
|
+
rank_date: str,
|
|
357
|
+
page: int = 1,
|
|
358
|
+
author_type: str = None,
|
|
359
|
+
sort: str = None,
|
|
360
|
+
source: str = "公众号头条增长榜-SDK",
|
|
361
|
+
) -> dict:
|
|
362
|
+
"""
|
|
363
|
+
公众号头条增长榜
|
|
364
|
+
|
|
365
|
+
榜单每周一下午 16:30 更新上周数据。
|
|
366
|
+
|
|
367
|
+
:param rank_date: 榜单时间(必填),统计周周一,格式 yyyy-MM-dd HH:mm:ss
|
|
368
|
+
:param page: 页码,范围 1 至 5,默认 1
|
|
369
|
+
:param author_type: 作者类别,不传则为全部:人文资讯 知识百科 健康养生
|
|
370
|
+
时尚潮流 美食餐饮 乐活生活 旅游出行 搞笑幽默
|
|
371
|
+
情感心理 体育娱乐 美容美体 文摘精选 民生资讯
|
|
372
|
+
财富理财 科技数码 创投商业 汽车交通 房产楼市
|
|
373
|
+
职场发展 教育考试 学术研究 企业品牌 时事新闻
|
|
374
|
+
:param sort: 排序字段:cur_read=本周头条阅读量,prev_read=上周头条阅读量,
|
|
375
|
+
growth_val=增长值(默认),growth_pct=增长百分比
|
|
376
|
+
:return: 头条增长榜字典
|
|
377
|
+
"""
|
|
378
|
+
data: Dict[str, Any] = {"rank_date": rank_date, "page": page}
|
|
379
|
+
if author_type is not None:
|
|
380
|
+
data["author_type"] = author_type
|
|
381
|
+
if sort is not None:
|
|
382
|
+
data["sort"] = sort
|
|
383
|
+
return self._client.post(
|
|
384
|
+
"/story/api/gzh/heima/rankList", data=data, source=source
|
|
385
|
+
)
|
|
386
|
+
|
|
387
|
+
def get_article_content_realtime(
|
|
388
|
+
self, article_url: str, source: str = "根据作品地址获取公众号作品(实时)-SDK"
|
|
389
|
+
) -> dict:
|
|
390
|
+
"""
|
|
391
|
+
根据作品地址获取公众号作品(实时)
|
|
392
|
+
|
|
393
|
+
通过文章链接实时查询公众号文章详细内容。
|
|
394
|
+
|
|
395
|
+
:param article_url: 文章链接(必填),如 https://mp.weixin.qq.com/s/xxx
|
|
396
|
+
:return: 文章详情字典,包含 articleTitle/articleContent/picUrl 等
|
|
397
|
+
"""
|
|
398
|
+
return self._client.post(
|
|
399
|
+
"/story/api/gzh/ability/temp/article/content",
|
|
400
|
+
data={"articleUrl": article_url},
|
|
401
|
+
source=source,
|
|
402
|
+
)
|
redfox/endpoints/weibo.py
CHANGED
|
@@ -7,12 +7,51 @@ class WeiboAPI:
|
|
|
7
7
|
"""
|
|
8
8
|
微博平台 API 集合
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
包含微博账号搜索、微博内容详情、用户详情、关键词搜索作品、热搜等接口。
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
def __init__(self, client):
|
|
14
14
|
self._client = client
|
|
15
15
|
|
|
16
|
+
def search_works(
|
|
17
|
+
self,
|
|
18
|
+
keyword: str,
|
|
19
|
+
search_type: str = "61",
|
|
20
|
+
page: str = "1",
|
|
21
|
+
ext_param: str = None,
|
|
22
|
+
source: str = "微博关键词搜索作品-SDK",
|
|
23
|
+
) -> dict:
|
|
24
|
+
"""
|
|
25
|
+
微博关键词搜索作品
|
|
26
|
+
|
|
27
|
+
:param keyword: 搜索关键词(必填)
|
|
28
|
+
:param search_type: 搜索类别:1=综合,3=搜索账号,60=热门,61=实时博文
|
|
29
|
+
:param page: 页码(必填)
|
|
30
|
+
:param ext_param: 认证类别:"3"=机构认证,"2"=个人认证,"0"=普通用户;
|
|
31
|
+
不传则为搜索博文
|
|
32
|
+
:return: 搜索结果字典
|
|
33
|
+
"""
|
|
34
|
+
data: Dict[str, Any] = {
|
|
35
|
+
"searchType": str(search_type),
|
|
36
|
+
"page": str(page),
|
|
37
|
+
"keyword": keyword,
|
|
38
|
+
}
|
|
39
|
+
if ext_param is not None:
|
|
40
|
+
data["extParam"] = ext_param
|
|
41
|
+
return self._client.post(
|
|
42
|
+
"/story/api/weibo/ability/searchWork", data=data, source=source
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
def get_hot_search(self, source: str = "微博热搜-SDK") -> dict:
|
|
46
|
+
"""
|
|
47
|
+
微博热搜
|
|
48
|
+
|
|
49
|
+
:return: 热搜列表字典,包含 list/cursor/hasMore/updateTime
|
|
50
|
+
"""
|
|
51
|
+
return self._client.post(
|
|
52
|
+
"/story/api/weibo/ability/hotSearch", data={}, source=source
|
|
53
|
+
)
|
|
54
|
+
|
|
16
55
|
def search_users(self, keyword: str, page: int = 1, source: str = "微博账号搜索-SDK") -> dict:
|
|
17
56
|
"""
|
|
18
57
|
微博账号搜索
|
redfox/endpoints/zhihu.py
CHANGED
|
@@ -7,12 +7,68 @@ class ZhihuAPI:
|
|
|
7
7
|
"""
|
|
8
8
|
知乎平台 API 集合
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
包含知乎关键词搜索作品、文章详情、评论详情、账号详情、搜索热点等接口。
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
def __init__(self, client):
|
|
14
14
|
self._client = client
|
|
15
15
|
|
|
16
|
+
def get_account(self, user_id: str, source: str = "知乎账号详情-SDK") -> dict:
|
|
17
|
+
"""
|
|
18
|
+
知乎账号详情
|
|
19
|
+
|
|
20
|
+
:param user_id: 用户 ID,从知乎主页链接中获取,如 he-jia-lei-80(必填)
|
|
21
|
+
:return: 账号详情字典,包含 nickname/fansNum/headline/ipLocation 等
|
|
22
|
+
"""
|
|
23
|
+
return self._client.post(
|
|
24
|
+
"/story/api/zhihu/ability/accountDetail",
|
|
25
|
+
data={"userId": user_id},
|
|
26
|
+
source=source,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
def get_article(self, article_id: str, source: str = "知乎文章详情-SDK") -> dict:
|
|
30
|
+
"""
|
|
31
|
+
知乎文章详情
|
|
32
|
+
|
|
33
|
+
:param article_id: 文章 ID(必填),如 2074146944805500249
|
|
34
|
+
:return: 文章详情字典,包含 content/likedNum/commentNum/opusUrl 等
|
|
35
|
+
"""
|
|
36
|
+
return self._client.post(
|
|
37
|
+
"/story/api/zhihu/ability/articleDetail",
|
|
38
|
+
data={"articleId": article_id},
|
|
39
|
+
source=source,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
def get_article_comments(
|
|
43
|
+
self,
|
|
44
|
+
article_id: str,
|
|
45
|
+
next_url: str = None,
|
|
46
|
+
source: str = "知乎评论详情-SDK",
|
|
47
|
+
) -> dict:
|
|
48
|
+
"""
|
|
49
|
+
知乎评论详情
|
|
50
|
+
|
|
51
|
+
:param article_id: 文章 ID(必填)
|
|
52
|
+
:param next_url: 翻页地址,传上一页响应中的 nextUrl;为空表示第一页
|
|
53
|
+
:return: 评论列表字典,包含 items/nextUrl
|
|
54
|
+
"""
|
|
55
|
+
data: Dict[str, Any] = {"articleId": article_id}
|
|
56
|
+
if next_url is not None:
|
|
57
|
+
data["nextUrl"] = next_url
|
|
58
|
+
return self._client.post(
|
|
59
|
+
"/story/api/zhihu/ability/articleComment", data=data, source=source
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
def get_hot_search(self, source: str = "知乎搜索热点-SDK") -> dict:
|
|
63
|
+
"""
|
|
64
|
+
获取知乎搜索热点
|
|
65
|
+
|
|
66
|
+
:return: 热点列表字典,包含 title/hotValue/label/rank
|
|
67
|
+
"""
|
|
68
|
+
return self._client.post(
|
|
69
|
+
"/story/api/zhihu/ability/hotSearch", data={}, source=source
|
|
70
|
+
)
|
|
71
|
+
|
|
16
72
|
def search_works(
|
|
17
73
|
self,
|
|
18
74
|
keyword: str,
|
|
@@ -1,26 +1,19 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: redfox-python-sdk
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.5
|
|
4
4
|
Summary: RedFox 红狐数据平台 Python SDK — 同步+异步双客户端,自动重试,零配置
|
|
5
5
|
Home-page: https://redfox.hk
|
|
6
6
|
Author: RedFox
|
|
7
7
|
Author-email: dev@redfox.hk
|
|
8
|
+
License: UNKNOWN
|
|
9
|
+
Platform: UNKNOWN
|
|
8
10
|
Classifier: Development Status :: 4 - Beta
|
|
9
11
|
Classifier: Intended Audience :: Developers
|
|
10
12
|
Classifier: License :: OSI Approved :: MIT License
|
|
11
13
|
Classifier: Programming Language :: Python :: 3
|
|
12
14
|
Requires-Python: >=3.8
|
|
13
15
|
Description-Content-Type: text/markdown
|
|
14
|
-
Requires-Dist: httpx>=0.25.0
|
|
15
|
-
Dynamic: author
|
|
16
|
-
Dynamic: author-email
|
|
17
|
-
Dynamic: classifier
|
|
18
|
-
Dynamic: description
|
|
19
|
-
Dynamic: description-content-type
|
|
20
|
-
Dynamic: home-page
|
|
21
|
-
Dynamic: requires-dist
|
|
22
|
-
Dynamic: requires-python
|
|
23
|
-
Dynamic: summary
|
|
16
|
+
Requires-Dist: httpx (>=0.25.0)
|
|
24
17
|
|
|
25
18
|
# RedFox Python SDK
|
|
26
19
|
|
|
@@ -36,7 +29,7 @@ Dynamic: summary
|
|
|
36
29
|
</a>
|
|
37
30
|
</p>
|
|
38
31
|
|
|
39
|
-
[RedFoxHub](https://redfox.hk/?source=github) Python SDK,提供 [抖音](https://redfox.hk/apis/douyin/0OT1E306)、[小红书](https://redfox.hk/apis/xiaohongshu/4IVIDHEN)、[公众号](https://redfox.hk/apis/gongzhonghao/6C4A77XR)、[B站](https://redfox.hk/apis/bilibili/TIN1NMTZ)、[今日头条](https://redfox.hk/apis/jinritoutiao/28CFGF5I)、[TikTok](https://redfox.hk/apis/tool-tiktok/20070019)、快手、视频号、YouTube、X (Twitter)、Instagram、微博、百家号、知乎、懂车帝、易车、汽车之家
|
|
32
|
+
[RedFoxHub](https://redfox.hk/?source=github) Python SDK,提供 [抖音](https://redfox.hk/apis/douyin/0OT1E306)、[小红书](https://redfox.hk/apis/xiaohongshu/4IVIDHEN)、[公众号](https://redfox.hk/apis/gongzhonghao/6C4A77XR)、[B站](https://redfox.hk/apis/bilibili/TIN1NMTZ)、[今日头条](https://redfox.hk/apis/jinritoutiao/28CFGF5I)、[TikTok](https://redfox.hk/apis/tool-tiktok/20070019)、快手、视频号、YouTube、X (Twitter)、Instagram、Facebook、微博、百家号、知乎、懂车帝、易车、汽车之家 18 大内容平台的数据采集接口,多平台热点榜单聚合接口,短视频去水印下载与素材上传工具、多平台违禁词查询,以及 GPT/Gemini 图片生成、豆包图片/视频生成、AI 搜索(Kimi/豆包/Deepseek/元宝/千问/百度)AI 能力接口。
|
|
40
33
|
|
|
41
34
|
## 为什么选择 RedFoxHub
|
|
42
35
|
|
|
@@ -149,27 +142,30 @@ result = client.ai_search.kimi_result(task_id=task["taskId"])
|
|
|
149
142
|
|------|------|--------|------|
|
|
150
143
|
| 📱 抖音 | `client.douyin` | 16 | 作品/账号搜索(优质库+广域库)、账号信息、作品详情、AI作品搜索、热榜/飙升榜、热门账号、视频提文案 |
|
|
151
144
|
| 📕 小红书 | `client.xiaohongshu` | 15 | 笔记/账号搜索、账号信息、笔记详情、作品列表、AI笔记搜索、评论、日榜/周榜/黑马榜、热门账号、爆款洞察、视频提文案 |
|
|
152
|
-
| 💬 公众号 | `client.wechat` |
|
|
153
|
-
| 📺 B站 | `client.bilibili` |
|
|
145
|
+
| 💬 公众号 | `client.wechat` | 18 | 文章/账号搜索(优质库+广域库)、账号信息、文章详情、作品列表、AI文章搜索、10W+榜、原创榜、实力榜、阅读增长榜、头条增长榜、文章实时详情 |
|
|
146
|
+
| 📺 B站 | `client.bilibili` | 9 | 视频搜索、UP主搜索、UP主信息、UP主作品、视频详情、音频提取、视频提文案、字幕提取 |
|
|
154
147
|
| 📰 今日头条 | `client.toutiao` | 5 | 内容搜索、作品详情、作品评论、账号搜索、账号作品列表 |
|
|
155
|
-
| 🎵 TikTok | `client.tiktok` |
|
|
148
|
+
| 🎵 TikTok | `client.tiktok` | 10 | 用户搜索、视频搜索、作品详情、用户作品、用户喜欢作品、关注列表、话题搜索、话题作品、视频评论、评论回复 |
|
|
156
149
|
| 🎬 快手 | `client.kuaishou` | 6 | 作品搜索、作品详情、账号作品、账号搜索、视频提文案 |
|
|
157
150
|
| 💚 视频号 | `client.wechat_channels` | 7 | 作品搜索、作品详情、账号作品、链接实时详情、账号搜索、链接提文案 |
|
|
158
151
|
| ▶️ YouTube | `client.youtube` | 5 | 视频搜索、视频详情、视频评论、视频提文案(字幕提取)、字幕详情 |
|
|
159
152
|
| 🐦 X (Twitter) | `client.twitter` | 7 | 推文搜索、推文详情、用户信息、推文评论、关注列表、用户发帖、热门账号榜 |
|
|
160
153
|
| 📸 Instagram | `client.instagram` | 4 | 综合搜索、帖子详情、帖子评论、用户信息 |
|
|
161
|
-
|
|
|
154
|
+
| 👥 Facebook | `client.facebook` | 4 | 主页信息、主页帖子列表、帖子详情、帖子评论 |
|
|
155
|
+
| 🔵 微博 | `client.weibo` | 5 | 账号搜索、内容详情、用户详情、关键词搜索作品、微博热搜 |
|
|
162
156
|
| 📰 百家号 | `client.baijiahao` | 5 | 账号搜索、作品搜索、视频详情、作品内容 html、账号信息 |
|
|
163
|
-
| 💡 知乎 | `client.zhihu` |
|
|
164
|
-
| 🚗 懂车帝 | `client.dongchedi` |
|
|
157
|
+
| 💡 知乎 | `client.zhihu` | 5 | 关键词搜索作品、文章详情、评论详情、账号详情、搜索热点 |
|
|
158
|
+
| 🚗 懂车帝 | `client.dongchedi` | 5 | 作品搜索、作品详情、用户作品、用户搜索、账号详情+作品列表 |
|
|
165
159
|
| 🚙 易车 | `client.yiche` | 6 | 作品搜索、文章详情、文章详情V2、视频详情、账号作品、账号搜索 |
|
|
166
160
|
| 🚘 汽车之家 | `client.autohome` | 4 | 作品搜索、文章详情、视频详情、账号作品 |
|
|
167
161
|
| 🔥 热点榜单 | `client.hotspot` | 3 | 各平台热点榜、全网热搜查询、全网聚合热点 TOP10 |
|
|
168
|
-
| 🖼️ GPT 图片 | `client.gpt_image` |
|
|
162
|
+
| 🖼️ GPT 图片 | `client.gpt_image` | 4 | GPT-Image-2/2.5 图片生成及结果查询 |
|
|
163
|
+
| 🍌 Gemini 图片 | `client.gemini_image` | 2 | Nano Banana 2.1 图片生成、结果查询 |
|
|
169
164
|
| 🎨 豆包图片 | `client.doubao_image` | 4 | Pro/Lite 图片生成及查询 |
|
|
170
|
-
| 🎬 豆包视频 | `client.doubao_video` |
|
|
171
|
-
| 🔍 AI 搜索 | `client.ai_search` |
|
|
172
|
-
| 🛠️ 通用工具 | `client.tools` |
|
|
165
|
+
| 🎬 豆包视频 | `client.doubao_video` | 4 | Seedance 2.0 视频生成及结果查询(新旧端点) |
|
|
166
|
+
| 🔍 AI 搜索 | `client.ai_search` | 17 | Kimi/豆包/Deepseek/元宝/千问/百度 搜索、Kimi K3、豆包/千问商品卡搜索 |
|
|
167
|
+
| 🛠️ 通用工具 | `client.tools` | 15 | 多平台短视频去水印下载、图片/素材上传、多平台违禁词查询、视频播放链接提文案 |
|
|
168
|
+
| 💰 账户 | `client.account` | 2 | 余额查询、接口调用记录查询 |
|
|
173
169
|
|
|
174
170
|
## API 参考
|
|
175
171
|
|
|
@@ -702,6 +698,74 @@ task = client.doubao_video.submit(
|
|
|
702
698
|
result = client.doubao_video.result(task_id=task["taskId"])
|
|
703
699
|
```
|
|
704
700
|
|
|
701
|
+
### Seedance 视频生成(新端点)
|
|
702
|
+
|
|
703
|
+
```python
|
|
704
|
+
# 文生视频
|
|
705
|
+
task = client.doubao_video.seedance_submit(
|
|
706
|
+
prompt="一只猫在窗台晒太阳,暖色调",
|
|
707
|
+
aspect_ratio="16:9",
|
|
708
|
+
duration=5,
|
|
709
|
+
resolution="720p",
|
|
710
|
+
generate_audio=True,
|
|
711
|
+
)
|
|
712
|
+
result = client.doubao_video.seedance_result(task_id=task["taskId"])
|
|
713
|
+
|
|
714
|
+
# 图生视频(首帧图)
|
|
715
|
+
task = client.doubao_video.seedance_submit(
|
|
716
|
+
prompt="让画面动起来",
|
|
717
|
+
aspect_ratio="adaptive",
|
|
718
|
+
duration=5,
|
|
719
|
+
image_with_roles=[{"url": "https://example.com/photo.jpg", "role": "first_frame"}],
|
|
720
|
+
)
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
### Gemini 图片生成
|
|
724
|
+
|
|
725
|
+
```python
|
|
726
|
+
# 文生图
|
|
727
|
+
task = client.gemini_image.submit(
|
|
728
|
+
prompt="一只可爱的橘猫在晒太阳",
|
|
729
|
+
size="1:1",
|
|
730
|
+
resolution="2K",
|
|
731
|
+
)
|
|
732
|
+
result = client.gemini_image.result(task_id=task["taskId"])
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
### Facebook
|
|
736
|
+
|
|
737
|
+
```python
|
|
738
|
+
# 获取主页信息
|
|
739
|
+
client.facebook.get_user(url="https://www.facebook.com/Meta")
|
|
740
|
+
|
|
741
|
+
# 获取主页帖子列表(cursor 翻页)
|
|
742
|
+
posts = client.facebook.get_user_posts(url="https://www.facebook.com/Meta")
|
|
743
|
+
client.facebook.get_user_posts(page_id="xxx", cursor=posts["paginationToken"])
|
|
744
|
+
|
|
745
|
+
# 获取帖子详情
|
|
746
|
+
client.facebook.get_post(url="https://www.facebook.com/reel/1746412686633900")
|
|
747
|
+
|
|
748
|
+
# 获取帖子评论
|
|
749
|
+
client.facebook.get_post_comments(feedback_id="xxx")
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
### 账户
|
|
753
|
+
|
|
754
|
+
```python
|
|
755
|
+
# 查询余额
|
|
756
|
+
client.account.balance()
|
|
757
|
+
|
|
758
|
+
# 查询接口调用记录
|
|
759
|
+
client.account.consume_flows(page_num=1, page_size=20)
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
### 违禁词查询
|
|
763
|
+
|
|
764
|
+
```python
|
|
765
|
+
# 多平台违禁词查询(小于 3000 字)
|
|
766
|
+
client.tools.sensitive_word_search(content="这是一段待检测的文案")
|
|
767
|
+
```
|
|
768
|
+
|
|
705
769
|
## 错误处理
|
|
706
770
|
|
|
707
771
|
SDK 提供三种异常类型:
|
|
@@ -727,3 +791,5 @@ except RedFoxAPIError as e:
|
|
|
727
791
|
## 许可证
|
|
728
792
|
|
|
729
793
|
MIT License
|
|
794
|
+
|
|
795
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
redfox/__init__.py,sha256=i94jHbHnhwp7pbxxVPZV1MqjB6ZbFTzJM_hosgV4PNU,348
|
|
2
|
+
redfox/client.py,sha256=qGQKSaIPj-xNoebWIVTRZ3GnRxygTL9b4mNoa3co78E,22562
|
|
3
|
+
redfox/exceptions.py,sha256=QWosa7FXJbxNPenMx1CRIPj7z8SFmmtg2_8Qjzika1E,668
|
|
4
|
+
redfox/endpoints/__init__.py,sha256=sjtHfb6bkX_wdd_ryRajkPrBRnno2HMiwys0DcNIqSA,19
|
|
5
|
+
redfox/endpoints/account.py,sha256=mA8C7wQis_yYQaykiQsA0qP8pYTffHk9FW_Ue8Wfkdc,1515
|
|
6
|
+
redfox/endpoints/ai_search.py,sha256=x5Xcipnp5G0slBjKeyDSjK4_CJO-8GeJToCnOG0hTMk,9234
|
|
7
|
+
redfox/endpoints/autohome.py,sha256=YByWaZbIlA45dUrTJ9vMQCDnDGfieYol64K9bCaYti8,2676
|
|
8
|
+
redfox/endpoints/baijiahao.py,sha256=AK-Dq95SWQNs5LldMjsbLR511U_vV4pLlQDGRnORQFc,2813
|
|
9
|
+
redfox/endpoints/bilibili.py,sha256=AqbOPLvEhk6Y-bTYQfxjTSbJkGDEFHcEcxPZ2eotbw0,6318
|
|
10
|
+
redfox/endpoints/dongchedi.py,sha256=8-wDcof8RMbFg3LwesWP7AsMNyQLkkpKxqakaCZ6Lmw,3044
|
|
11
|
+
redfox/endpoints/doubao_image.py,sha256=byzBiYhZx5U93TdyAT2N6kN76hR4K3Fgmpv7QEs7YQo,4654
|
|
12
|
+
redfox/endpoints/doubao_video.py,sha256=jQ6dP_OU7GjID7QkmW8y0ZGW5xehoSm28r17Y1_zkhg,5515
|
|
13
|
+
redfox/endpoints/douyin.py,sha256=gE-cAAPeMxERNYhTau_RkPgaJ1PAa1SNXI4x_OXBr1Q,14530
|
|
14
|
+
redfox/endpoints/facebook.py,sha256=yF-KWsyBH1ZRTV0KlzECtcOMte0I189jsmwp0Ji5UKE,2949
|
|
15
|
+
redfox/endpoints/gemini_image.py,sha256=UVCxTXj_e_9SeAaxn3qPcw5FcBYu3d-t_GguyCIbvkA,2675
|
|
16
|
+
redfox/endpoints/gpt_image.py,sha256=g4G-7K2UhT4C67pOvOAACxel-aAUGrCoKgkMX0_RvZI,5128
|
|
17
|
+
redfox/endpoints/hotspot.py,sha256=VRa9apbYeD3p7ORav9jtItexriM8yLil9dkrI44UBBs,2966
|
|
18
|
+
redfox/endpoints/instagram.py,sha256=kWjCGmjepnMD-vZjW_vMYylerLSEcKaNh4pDjPfhrc4,2916
|
|
19
|
+
redfox/endpoints/kuaishou.py,sha256=D4_YD3kHYtF9Sn1dek_rNoe5i4eoauyYAsr_kfdY6qQ,4699
|
|
20
|
+
redfox/endpoints/tiktok.py,sha256=2WIN7dp85HAZ8SloFxyOI0YoYkv3m3MJBok2pdyxToY,8334
|
|
21
|
+
redfox/endpoints/tools.py,sha256=9do0XDZC-j1opW2w9DqdOKPcB0JZsUHkji4WGFsWckM,8056
|
|
22
|
+
redfox/endpoints/toutiao.py,sha256=E8RPF79pzfu_CFnbEDWqfflPj8joMTkofBcvA7FPn5A,3250
|
|
23
|
+
redfox/endpoints/twitter.py,sha256=-oHX4jQYDmf_2p1GK3cCacLR1rq2OeHcmbq4hCR-PAw,5369
|
|
24
|
+
redfox/endpoints/wechat.py,sha256=ixnMS4z6gfUR5mPml_zyIF7plBGLL1NdqHlnr8rRBts,15269
|
|
25
|
+
redfox/endpoints/wechat_channels.py,sha256=caedmf85EsbCebVuvIEecavy6kPrVqkeBmSu_Y_zJ0Q,4798
|
|
26
|
+
redfox/endpoints/weibo.py,sha256=qhGTbhamyCAf-l9iETwWvnEOEl3UqWtk_mfl6-ltyyw,2862
|
|
27
|
+
redfox/endpoints/xiaohongshu.py,sha256=61FHiLCB-no-bmEzNsw15G2qZT9DG61aKaDrJc8OYmc,13229
|
|
28
|
+
redfox/endpoints/yiche.py,sha256=x3oN1NQesm9mQ1-T-GMbBNNaPg1KtB0_rwmmVdQqVXg,3139
|
|
29
|
+
redfox/endpoints/youtube.py,sha256=RXklsFGbA5DMtdlRiLsDwMN6z5vz13xNAlb-u9vou68,3911
|
|
30
|
+
redfox/endpoints/zhihu.py,sha256=ffgXAoAfrn4OvtwmIxHE8aisK6yK9gk4uMxgHRsqbB8,3491
|
|
31
|
+
redfox_python_sdk-0.7.5.dist-info/METADATA,sha256=J8aAsPGywYr6pMT_oJ-CEHeI5Rb_5CACvAAIUM35lgE,27539
|
|
32
|
+
redfox_python_sdk-0.7.5.dist-info/WHEEL,sha256=U88EhGIw8Sj2_phqajeu_EAi3RAo8-C6zV3REsWbWbs,92
|
|
33
|
+
redfox_python_sdk-0.7.5.dist-info/top_level.txt,sha256=cOIfFv-M-TaEjpiRQy-OygdvvuHeZrlQSoRWMj0DaEM,7
|
|
34
|
+
redfox_python_sdk-0.7.5.dist-info/RECORD,,
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
redfox/__init__.py,sha256=i94jHbHnhwp7pbxxVPZV1MqjB6ZbFTzJM_hosgV4PNU,348
|
|
2
|
-
redfox/client.py,sha256=b9azvZEkme8AxDyULQWDkqU4sRzqTYbdZxdFD9vrcpQ,22145
|
|
3
|
-
redfox/exceptions.py,sha256=QWosa7FXJbxNPenMx1CRIPj7z8SFmmtg2_8Qjzika1E,668
|
|
4
|
-
redfox/endpoints/__init__.py,sha256=sjtHfb6bkX_wdd_ryRajkPrBRnno2HMiwys0DcNIqSA,19
|
|
5
|
-
redfox/endpoints/ai_search.py,sha256=x9ghI7jJ4rDqP4mSVCDR-D--ZjJ41dFD-YtlovaIzhs,6206
|
|
6
|
-
redfox/endpoints/autohome.py,sha256=YByWaZbIlA45dUrTJ9vMQCDnDGfieYol64K9bCaYti8,2676
|
|
7
|
-
redfox/endpoints/baijiahao.py,sha256=AK-Dq95SWQNs5LldMjsbLR511U_vV4pLlQDGRnORQFc,2813
|
|
8
|
-
redfox/endpoints/bilibili.py,sha256=WagxjUVAKaY5gwqwnYJIZsjQBhu9XAa03tY694zZjTQ,5712
|
|
9
|
-
redfox/endpoints/dongchedi.py,sha256=A51aSmrios63zzVt8fPmSyPrfrttkYGZO9NvNL48_Sc,2555
|
|
10
|
-
redfox/endpoints/doubao_image.py,sha256=byzBiYhZx5U93TdyAT2N6kN76hR4K3Fgmpv7QEs7YQo,4654
|
|
11
|
-
redfox/endpoints/doubao_video.py,sha256=wrJ9WMu9X_qBC3MXH5NYPy91ml5CB5P81m8IFtkRVpg,2929
|
|
12
|
-
redfox/endpoints/douyin.py,sha256=gE-cAAPeMxERNYhTau_RkPgaJ1PAa1SNXI4x_OXBr1Q,14530
|
|
13
|
-
redfox/endpoints/gpt_image.py,sha256=JZTL6z2g2kV7W0VL8JICWaR-_ZQ5gEpsiQEWUZto3cs,2722
|
|
14
|
-
redfox/endpoints/hotspot.py,sha256=VRa9apbYeD3p7ORav9jtItexriM8yLil9dkrI44UBBs,2966
|
|
15
|
-
redfox/endpoints/instagram.py,sha256=kWjCGmjepnMD-vZjW_vMYylerLSEcKaNh4pDjPfhrc4,2916
|
|
16
|
-
redfox/endpoints/kuaishou.py,sha256=D4_YD3kHYtF9Sn1dek_rNoe5i4eoauyYAsr_kfdY6qQ,4699
|
|
17
|
-
redfox/endpoints/tiktok.py,sha256=6i6yZV9H3LgIJ0LeGXPGPnKd1h9MV0T95GYAwmeaVu8,3780
|
|
18
|
-
redfox/endpoints/tools.py,sha256=lQDs28ozXVzIGcALu4CHYiFfgbAhQaaekIBhPIXTLxM,5879
|
|
19
|
-
redfox/endpoints/toutiao.py,sha256=E8RPF79pzfu_CFnbEDWqfflPj8joMTkofBcvA7FPn5A,3250
|
|
20
|
-
redfox/endpoints/twitter.py,sha256=-oHX4jQYDmf_2p1GK3cCacLR1rq2OeHcmbq4hCR-PAw,5369
|
|
21
|
-
redfox/endpoints/wechat.py,sha256=Rc3uG4kC1gcFW3rKfeHT6BxZCx4U_A1KXLcWPE7DYGE,13083
|
|
22
|
-
redfox/endpoints/wechat_channels.py,sha256=caedmf85EsbCebVuvIEecavy6kPrVqkeBmSu_Y_zJ0Q,4798
|
|
23
|
-
redfox/endpoints/weibo.py,sha256=s9feBGEN9hEsh9CL1Po_qx04auLlfw4P1nnTtutQwOU,1514
|
|
24
|
-
redfox/endpoints/xiaohongshu.py,sha256=61FHiLCB-no-bmEzNsw15G2qZT9DG61aKaDrJc8OYmc,13229
|
|
25
|
-
redfox/endpoints/yiche.py,sha256=x3oN1NQesm9mQ1-T-GMbBNNaPg1KtB0_rwmmVdQqVXg,3139
|
|
26
|
-
redfox/endpoints/youtube.py,sha256=RXklsFGbA5DMtdlRiLsDwMN6z5vz13xNAlb-u9vou68,3911
|
|
27
|
-
redfox/endpoints/zhihu.py,sha256=lLPYMv_HpA7L9B8LIrCB_TSUQ7AJzSld6MwfWNuHZxg,1466
|
|
28
|
-
redfox_python_sdk-0.7.4.dist-info/METADATA,sha256=Iyt175hI0CJvgo4FplJNGXaki_6VtmMj5Fmqy6_j7v4,25340
|
|
29
|
-
redfox_python_sdk-0.7.4.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
|
|
30
|
-
redfox_python_sdk-0.7.4.dist-info/top_level.txt,sha256=cOIfFv-M-TaEjpiRQy-OygdvvuHeZrlQSoRWMj0DaEM,7
|
|
31
|
-
redfox_python_sdk-0.7.4.dist-info/RECORD,,
|
|
File without changes
|