mirror of
https://github.com/Evil0ctal/Douyin_TikTok_Download_API.git
synced 2025-04-20 11:35:01 +08:00
🔧: Fix TikTok APP API -> V4.0.7
This commit is contained in:
parent
f366393542
commit
46561948a1
@ -10,8 +10,7 @@ TikTokAPPCrawler = TikTokAPPCrawler()
|
|||||||
# 获取单个作品数据
|
# 获取单个作品数据
|
||||||
@router.get("/fetch_one_video",
|
@router.get("/fetch_one_video",
|
||||||
response_model=ResponseModel,
|
response_model=ResponseModel,
|
||||||
summary="获取单个作品数据/Get single video data",
|
summary="获取单个作品数据/Get single video data"
|
||||||
deprecated=True
|
|
||||||
)
|
)
|
||||||
async def fetch_one_video(request: Request,
|
async def fetch_one_video(request: Request,
|
||||||
aweme_id: str = Query(example="7350810998023949599", description="作品id/Video id")):
|
aweme_id: str = Query(example="7350810998023949599", description="作品id/Video id")):
|
||||||
|
@ -30,8 +30,8 @@ API:
|
|||||||
Redoc_URL: /redoc # API documentation URL | API文档URL
|
Redoc_URL: /redoc # API documentation URL | API文档URL
|
||||||
|
|
||||||
# API Information
|
# API Information
|
||||||
Version: V4.0.6 # API version | API版本
|
Version: V4.0.7 # API version | API版本
|
||||||
Update_Time: 2024/08/19 # API update time | API更新时间
|
Update_Time: 2024/09/14 # API update time | API更新时间
|
||||||
Environment: Demo # API environment | API环境
|
Environment: Demo # API environment | API环境
|
||||||
|
|
||||||
# Download Configuration
|
# Download Configuration
|
||||||
|
@ -57,10 +57,14 @@ class HybridCrawler:
|
|||||||
elif "tiktok" in url:
|
elif "tiktok" in url:
|
||||||
platform = "tiktok"
|
platform = "tiktok"
|
||||||
aweme_id = await self.TikTokWebCrawler.get_aweme_id(url)
|
aweme_id = await self.TikTokWebCrawler.get_aweme_id(url)
|
||||||
data = await self.TikTokWebCrawler.fetch_one_video(aweme_id)
|
|
||||||
data = data.get("itemInfo").get("itemStruct")
|
# 2024-09-14: Switch to TikTokAPPCrawler instead of TikTokWebCrawler
|
||||||
|
# data = await self.TikTokWebCrawler.fetch_one_video(aweme_id)
|
||||||
|
# data = data.get("itemInfo").get("itemStruct")
|
||||||
|
|
||||||
|
data = await self.TikTokAPPCrawler.fetch_one_video(aweme_id)
|
||||||
# $.imagePost exists if aweme_type is photo
|
# $.imagePost exists if aweme_type is photo
|
||||||
aweme_type = 150 if data.get("imagePost") else 1
|
aweme_type = data.get("aweme_type")
|
||||||
else:
|
else:
|
||||||
raise ValueError("hybrid_parsing_single_video: Cannot judge the video source from the URL.")
|
raise ValueError("hybrid_parsing_single_video: Cannot judge the video source from the URL.")
|
||||||
|
|
||||||
@ -85,6 +89,7 @@ class HybridCrawler:
|
|||||||
}
|
}
|
||||||
# 判断链接类型/Judge link type
|
# 判断链接类型/Judge link type
|
||||||
url_type = url_type_code_dict.get(aweme_type, 'video')
|
url_type = url_type_code_dict.get(aweme_type, 'video')
|
||||||
|
# print(f"url_type: {url_type}")
|
||||||
|
|
||||||
"""
|
"""
|
||||||
以下为(视频||图片)数据处理的四个方法,如果你需要自定义数据处理请在这里修改.
|
以下为(视频||图片)数据处理的四个方法,如果你需要自定义数据处理请在这里修改.
|
||||||
@ -158,14 +163,17 @@ class HybridCrawler:
|
|||||||
# TikTok视频数据处理/TikTok video data processing
|
# TikTok视频数据处理/TikTok video data processing
|
||||||
if url_type == 'video':
|
if url_type == 'video':
|
||||||
# 将信息储存在字典中/Store information in a dictionary
|
# 将信息储存在字典中/Store information in a dictionary
|
||||||
wm_video = data['video']['downloadAddr']
|
# wm_video = data['video']['downloadAddr']
|
||||||
|
wm_video = data['video']['download_addr']['url_list'][0]
|
||||||
api_data = {
|
api_data = {
|
||||||
'video_data':
|
'video_data':
|
||||||
{
|
{
|
||||||
'wm_video_url': wm_video,
|
'wm_video_url': wm_video,
|
||||||
'wm_video_url_HQ': wm_video,
|
'wm_video_url_HQ': wm_video,
|
||||||
'nwm_video_url': data['video']['playAddr'],
|
# 'nwm_video_url': data['video']['playAddr'],
|
||||||
'nwm_video_url_HQ': data['video']['bitrateInfo'][0]['PlayAddr']['UrlList'][0]
|
'nwm_video_url': data['video']['play_addr']['url_list'][0],
|
||||||
|
# 'nwm_video_url_HQ': data['video']['bitrateInfo'][0]['PlayAddr']['UrlList'][0]
|
||||||
|
'nwm_video_url_HQ': data['video']['bit_rate'][0]['play_addr']['url_list'][0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# TikTok图片数据处理/TikTok image data processing
|
# TikTok图片数据处理/TikTok image data processing
|
||||||
@ -174,9 +182,9 @@ class HybridCrawler:
|
|||||||
no_watermark_image_list = []
|
no_watermark_image_list = []
|
||||||
# 有水印图片列表/With watermark image list
|
# 有水印图片列表/With watermark image list
|
||||||
watermark_image_list = []
|
watermark_image_list = []
|
||||||
for i in data['imagePost']['images']:
|
for i in data['image_post_info']['images']:
|
||||||
no_watermark_image_list.append(i['imageURL']['urlList'][0])
|
no_watermark_image_list.append(i['display_image']['url_list'][0])
|
||||||
# watermark_image_list.append(i['owner_watermark_image']['url_list'][0])
|
watermark_image_list.append(i['owner_watermark_image']['url_list'][0])
|
||||||
api_data = {
|
api_data = {
|
||||||
'image_data':
|
'image_data':
|
||||||
{
|
{
|
||||||
@ -191,7 +199,7 @@ class HybridCrawler:
|
|||||||
async def main(self):
|
async def main(self):
|
||||||
# 测试混合解析单一视频接口/Test hybrid parsing single video endpoint
|
# 测试混合解析单一视频接口/Test hybrid parsing single video endpoint
|
||||||
# url = "https://v.douyin.com/L4FJNR3/"
|
# url = "https://v.douyin.com/L4FJNR3/"
|
||||||
url = "https://www.tiktok.com/@evil0ctal/video/7156033831819037994"
|
url = "https://www.tiktok.com/@taylorswift/video/7359655005701311786"
|
||||||
# url = "https://www.tiktok.com/@minecraft/photo/7369296852669205791"
|
# url = "https://www.tiktok.com/@minecraft/photo/7369296852669205791"
|
||||||
minimal = True
|
minimal = True
|
||||||
result = await self.hybrid_parsing_single_video(url, minimal=minimal)
|
result = await self.hybrid_parsing_single_video(url, minimal=minimal)
|
||||||
|
@ -69,6 +69,7 @@ class TikTokAPPCrawler:
|
|||||||
"User-Agent": tiktok_config["headers"]["User-Agent"],
|
"User-Agent": tiktok_config["headers"]["User-Agent"],
|
||||||
"Referer": tiktok_config["headers"]["Referer"],
|
"Referer": tiktok_config["headers"]["Referer"],
|
||||||
"Cookie": tiktok_config["headers"]["Cookie"],
|
"Cookie": tiktok_config["headers"]["Cookie"],
|
||||||
|
"x-ladon": "Hello From Evil0ctal!",
|
||||||
},
|
},
|
||||||
"proxies": {"http://": None, "https://": None},
|
"proxies": {"http://": None, "https://": None},
|
||||||
}
|
}
|
||||||
@ -77,7 +78,7 @@ class TikTokAPPCrawler:
|
|||||||
"""-------------------------------------------------------handler接口列表-------------------------------------------------------"""
|
"""-------------------------------------------------------handler接口列表-------------------------------------------------------"""
|
||||||
|
|
||||||
# 获取单个作品数据
|
# 获取单个作品数据
|
||||||
@deprecated("TikTok APP fetch_one_video is deprecated and will be removed in a future release. Use Web API instead. | TikTok APP fetch_one_video 已弃用,将在将来的版本中删除。请改用Web API。")
|
# @deprecated("TikTok APP fetch_one_video is deprecated and will be removed in a future release. Use Web API instead. | TikTok APP fetch_one_video 已弃用,将在将来的版本中删除。请改用Web API。")
|
||||||
async def fetch_one_video(self, aweme_id: str):
|
async def fetch_one_video(self, aweme_id: str):
|
||||||
# 获取TikTok的实时Cookie
|
# 获取TikTok的实时Cookie
|
||||||
kwargs = await self.get_tiktok_headers()
|
kwargs = await self.get_tiktok_headers()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user