Ver código fonte

feat:添加监控

zhaohaipeng 3 semanas atrás
pai
commit
5b111e87c7
4 arquivos alterados com 128 adições e 0 exclusões
  1. 1 0
      enums/automation_job.py
  2. 45 0
      script/tts_test.py
  3. 0 0
      script/video_analyse_test.py
  4. 82 0
      util/sse_client.py

+ 1 - 0
enums/automation_job.py

@@ -15,6 +15,7 @@ class AutomationJobCronInfo(Enum):
     account_tencent_huxuan = ("腾讯互选平台账号供给(其他)", "account_tencent_huxuan", "other", 9)
     workflow_schedule = ("基于需求的供给workflow", "workflow_schedule", "other", 6)
     workflow_schedule_history_homochronous = ("基于需求的供给workflow(历史同期)", "workflow_schedule", "history_homochronous", 9)
+    workflow_schedule_zhu_yue = ("基于需求的供给workflow(逐月)", "workflow_schedule", "zhu_yue", 9)
 
     def __init__(self, task_name, crawler_mode, video_source, task_start_hour):
         self.task_name = task_name

+ 45 - 0
script/tts_test.py

@@ -0,0 +1,45 @@
+from pathlib import Path
+from typing import List, Dict, Any
+
+import pandas as pd
+
+from util import file_util
+
+base_dir = "/Users/zhao/Desktop/tzld/TTS"
+
+test_sample_csv = f"{base_dir}/test_sample.csv"
+reference_path = f"{base_dir}/audio"
+
+
+def read_test_sample(csv_file: Path) -> List[Dict[str, Any]]:
+    if csv_file.exists():
+        df = pd.read_csv(csv_file)
+        return df.to_dict(orient="records")
+    else:
+        return []
+
+
+def reference_audio_download(audio_url: str, local_file_path: str):
+    file_util.download_file(audio_url, local_file_path)
+
+
+def main():
+    df = pd.read_csv(test_sample_csv)
+
+    speaker_counts = df["speaker"].value_counts()
+    print(f"{'speaker':<30} count")
+    print("-" * 38)
+    for speaker, count in speaker_counts.items():
+        print(f"{speaker:<30} {count}")
+
+    # test_sample_list = read_test_sample(Path(test_sample_csv))
+    # for item in test_sample_list:
+    #     speaker = item["speaker"]
+    #     audio_url = item["audio_url"]
+    #     result = item["result"]
+    #     txt = item["txt"]
+    #     reference_audio_download(audio_url, local_file_path=f"{reference_path}/{speaker}.mp3")
+
+
+if __name__ == '__main__':
+    main()

+ 0 - 0
video_analyse_test.py → script/video_analyse_test.py


+ 82 - 0
util/sse_client.py

@@ -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)