|
|
@@ -0,0 +1,82 @@
|
|
|
+import json
|
|
|
+import uuid
|
|
|
+
|
|
|
+import requests
|
|
|
+
|
|
|
+
|
|
|
+def sse_request(url, headers=None, params=None, json_data=None, method="POST"):
|
|
|
+ """
|
|
|
+ 调用 SSE 接口,逐事件 yield 出解析后的字典。
|
|
|
+
|
|
|
+ Args:
|
|
|
+ url: 接口地址
|
|
|
+ headers: 请求头
|
|
|
+ params: URL 查询参数
|
|
|
+ json_data: POST 的 JSON body
|
|
|
+ method: "POST" 或 "GET"
|
|
|
+
|
|
|
+ Yields:
|
|
|
+ dict: {"event": "...", "data": ..., "id": "..."}
|
|
|
+ """
|
|
|
+ headers = headers or {}
|
|
|
+ headers.setdefault("Accept", "text/event-stream")
|
|
|
+ headers.setdefault("Content-Type", "application/json")
|
|
|
+
|
|
|
+ session = requests.Session()
|
|
|
+ response = None
|
|
|
+
|
|
|
+ try:
|
|
|
+ if method.upper() == "GET":
|
|
|
+ response = session.get(url, headers=headers, params=params, stream=True)
|
|
|
+ else:
|
|
|
+ response = session.post(url, headers=headers, params=params, json=json_data, stream=True)
|
|
|
+
|
|
|
+ response.raise_for_status()
|
|
|
+
|
|
|
+ event = None
|
|
|
+ data_buf = []
|
|
|
+ event_id = None
|
|
|
+
|
|
|
+ for line in response.iter_lines(decode_unicode=True):
|
|
|
+ if line is None:
|
|
|
+ continue
|
|
|
+ if line.startswith("id:"):
|
|
|
+ event_id = line[3:].strip()
|
|
|
+ elif line.startswith("event:"):
|
|
|
+ event = line[6:].strip()
|
|
|
+ elif line.startswith("data:"):
|
|
|
+ data_buf.append(line[5:].strip())
|
|
|
+ elif line == "": # 空行 = 事件结束
|
|
|
+ if data_buf:
|
|
|
+ raw = "\n".join(data_buf)
|
|
|
+ try:
|
|
|
+ parsed_data = json.loads(raw)
|
|
|
+ except json.JSONDecodeError:
|
|
|
+ parsed_data = raw
|
|
|
+ yield {"event": event, "data": parsed_data, "id": event_id}
|
|
|
+ event = None
|
|
|
+ data_buf = []
|
|
|
+ event_id = None
|
|
|
+
|
|
|
+ finally:
|
|
|
+ if response is not None:
|
|
|
+ response.close()
|
|
|
+ session.close()
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ headers = {
|
|
|
+ "X-Api-Key": "941b57b2-f4c7-411e-9cf6-ebba6e6f1dee",
|
|
|
+ "X-Api-Resource-Id": "seed-icl-2.0",
|
|
|
+ "X-Api-Request-Id": uuid.uuid4().hex.replace("-", "")
|
|
|
+ }
|
|
|
+ params = {
|
|
|
+ "req_params": {
|
|
|
+ "text": "这个视频真是说到咱们心坎里去了!一位80岁的老教授,用她一生的智慧,总结了晚年幸福的10个“不要”,每一条都让人醍醐灌顶,听完让人倍感振奋!这可不是空话套话,句句都是大实话,真是一语点醒梦中人啊!尤其是身体健康、金钱和子女相处这些事,咱们上了年纪的人,哪个没遇到过困惑?\n\n如果你也觉得说得太对了,赶紧点击下方黄色按钮转发到你所有的微信群里,再点击下方绿色按钮发给身边的亲人朋友!你这一发,也许就点醒了身边的老伴、兄弟姐妹,或是你家里的长辈,让他们少走弯路,少吃亏,晚年能过得舒心又体面!想想看,要是他们早点听到这些忠告,是不是就能避免很多烦恼和矛盾?\n\n视频里说的这些,都是咱们普遍会遇到的经历和痛点,很多问题可能我们现在就正面临着呢,听了老教授的话,瞬间感觉心里亮堂多了!比如不要轻易借钱给别人,不要卖掉老房子,不要盲目去免费旅游,这都是血淋淋的教训啊!咱们这代人,吃了一辈子的苦,到老了就图个安稳和自在,这些经验教训可都是宝贵的财富!\n\n所以,别让这份难得的智慧在我们手里断了,让它像火炬一样传递下去,照亮更多人的晚年生活!您的每一次分享,都是一份善举,一份对亲友的真心关爱。快快转",
|
|
|
+ "speaker": "S_7lCIz2422",
|
|
|
+ "audio_params": {
|
|
|
+ "format": "mp3"
|
|
|
+ },
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sse_request("https://openspeech.bytedance.com/api/v3/tts/unidirectional/sse", headers, {}, params)
|