请求合并TikTok视频ID解析与数据获取代码实现无水印下载
解决方案
下面是合并后的完整代码,同时优化了响应解析逻辑,能直接提取并输出关键信息(包括无水印视频链接):
import requests import json def get_tiktok_data(aweme_id): # 构造API请求URL api_url = f"https://api16-normal-useast5.us.tiktokv.com/aweme/v1/aweme/detail/?aweme_id={aweme_id}" # 添加请求头,模拟浏览器访问,避免被拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } try: # 发送GET请求 response = requests.get(api_url, headers=headers) response.raise_for_status() # 检查请求是否成功 data = response.json() # 提取关键信息 aweme_info = data.get("aweme_detail", {}) if not aweme_info: print("未找到视频相关数据") return # 无水印视频链接(优先取无水印的play_addr) video_url = aweme_info.get("video", {}).get("play_addr", {}).get("url_list", [])[0] if aweme_info.get("video") else "未获取到无水印视频链接" # 作者头像 avatar_url = aweme_info.get("author", {}).get("avatar_thumb", {}).get("url_list", [])[0] if aweme_info.get("author") else "未获取到作者头像链接" # 音频链接 audio_url = aweme_info.get("music", {}).get("play_url", {}).get("url_list", [])[0] if aweme_info.get("music") else "未获取到音频链接" # 视频标题 title = aweme_info.get("desc", "无标题") # 输出信息 print("=== TikTok视频信息 ===") print(f"视频标题: {title}") print(f"无水印视频链接: {video_url}") print(f"作者头像链接: {avatar_url}") print(f"音频链接: {audio_url}") except requests.exceptions.RequestException as e: print(f"请求出错: {e}") except json.JSONDecodeError: print("响应解析失败,可能API返回格式异常") except IndexError: print("数据字段缺失,无法提取对应信息") if __name__ == "__main__": # 获取用户输入的视频ID try: aweme_id = input("请输入TikTok视频ID >>> ") # 验证输入是否为有效数字(TikTok视频ID是整数) int(aweme_id) get_tiktok_data(aweme_id) except ValueError: print("请输入有效的整数视频ID")
关键优化点说明
- 请求头添加:TikTok的API会拦截无标识的请求,添加
User-Agent模拟浏览器访问,提升请求成功率 - 错误处理:加入请求异常、JSON解析异常、字段缺失的捕获处理,避免程序直接崩溃
- 结构化输出:不再打印原始的JSON响应,而是提取用户关心的核心字段,输出更清晰
- 输入验证:检查用户输入的是否为有效整数,避免无效请求
使用说明
- 确保已经安装
requests库:如果没安装,执行命令pip install requests - 运行代码,输入TikTok视频ID(比如
7165099726885457178) - 终端会输出整理后的视频关键信息,直接复制无水印链接即可下载视频
内容的提问来源于stack exchange,提问作者Gayathra Sandeepana
相关产品推荐
相关产品推荐

