Files
Podcast-Generator/server/ext/doubao-voice-list.py
hex2077 d3bd3fdff2 refactor: 更新音频文件路径和UI样式调整
fix: 修正TTS提供商配置中的null值问题
chore: 清理无用文件和更新输入文本内容
2025-08-20 14:18:18 +08:00

72 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import requests
import json
# --- 配置 ---
# 请将这里的URL替换为你要获取数据的实际URL
URL = "https://lf3-config.bytetcc.com/obj/tcc-config-web/tcc-v2-data-lab.speech.tts_middle_layer-default" # <--- 替换成你的URL
OUTPUT_FILENAME = "data_from_url_volc_bigtts.json"
# 设置请求超时(秒),防止程序因网络问题无限期等待
TIMEOUT = 10
print(f"准备从URL获取数据: {URL}")
# --- 主逻辑 ---
try:
# 1. 发送GET请求到URL
# a. requests.get() 发送请求
# b. timeout=TIMEOUT 是一个好习惯,避免程序卡死
response = requests.get(URL, timeout=TIMEOUT)
# 2. 检查响应状态码,确保请求成功 (例如 200 OK)
# response.raise_for_status() 会在响应码为 4xx 或 5xx (客户端/服务器错误) 时抛出异常
response.raise_for_status()
print("✅ HTTP请求成功状态码: 200 OK")
# 3. 解析最外层的JSON
# requests库的 .json() 方法可以直接将响应内容解析为Python字典
# 这完成了我们的第一次解析
outer_data = response.json()
# 4. 从解析后的字典中提取内层的JSON字符串
# 这一步可能会因为键不存在而抛出KeyError
volc_bigtts_string = outer_data['data']['volc_bigtts']
# 5. 解析内层的JSON字符串得到最终的JSON数组Python列表
# 这一步可能会因为字符串格式不正确而抛出JSONDecodeError
final_json_array = json.loads(volc_bigtts_string)
print("✅ 成功解析嵌套的JSON数据。")
print("解析出的数组内容:", final_json_array)
# 6. 将最终的JSON数组写入本地文件
with open(OUTPUT_FILENAME, 'w', encoding='utf-8') as f:
json.dump(final_json_array, f, indent=4, ensure_ascii=False)
print(f"\n🎉 成功将数据写入文件: {OUTPUT_FILENAME}")
# --- 错误处理 ---
# 将不同类型的错误分开捕获,可以提供更清晰的错误信息
except requests.exceptions.HTTPError as errh:
# 捕获HTTP错误如 404 Not Found, 500 Internal Server Error
print(f"❌ HTTP错误: {errh}")
except requests.exceptions.ConnectionError as errc:
# 捕获连接错误如DNS查询失败、拒绝连接等
print(f"❌ 连接错误: {errc}")
except requests.exceptions.Timeout as errt:
# 捕获请求超时
print(f"❌ 请求超时: {errt}")
except requests.exceptions.RequestException as err:
# 捕获requests库可能抛出的其他所有异常
print(f"❌ 请求发生未知错误: {err}")
except json.JSONDecodeError:
# 捕获JSON解析错误
# 可能发生在 response.json() 或 json.loads()
print("❌ JSON解析失败。从URL返回的数据或内层字符串不是有效的JSON格式。")
# 如果需要调试,可以打印原始响应内容
# print("原始响应内容:", response.text)
except KeyError:
# 捕获键错误
print("❌ JSON结构不符合预期找不到 'data''volc_bigtts' 键。")
except Exception as e:
# 捕获所有其他未预料到的异常
print(f"❌ 发生未知错误: {e}")