zhangyong před 4 měsíci
rodič
revize
15ad206cc4
3 změnil soubory, kde provedl 248 přidání a 151 odebrání
  1. 158 143
      carry_video/carry_video.py
  2. 2 8
      common/ffmpeg.py
  3. 88 0
      common/gpt4o_mini_help.py

+ 158 - 143
carry_video/carry_video.py

@@ -325,176 +325,191 @@ class CarryViode:
             ]))
             self.insert_pq(REDIS_NAME, data, oss_object_key, title, tags, tag_transport_channel, channel_mark)
         if data["transform_rule"] == "仅改造" or data["transform_rule"] == "是":
-            width, height = FFmpeg.get_w_h_size(video_path)
-            if width < height:  # 判断是否需要修改为竖屏
-                video_path = FFmpeg.update_video_h_w(video_path, file_path)
-            logger.info(f"[+] {REDIS_NAME}的{data}视频更改分辨率处理")
-            video_path = FFmpeg.video_640(video_path, file_path)
-            if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
-                in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
-                logger.error(f"[+] {REDIS_NAME}的{data}视频更改分辨率失败")
-                AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                     "改造失败,片尾拼接失败", "3001", str(data))
-                text = (
-                    f"**负责人**: {data['name']}\n"
-                    f"**内容**: {data}\n"
-                    f"**失败信息**: 视频更改分辨率失败\n"
-                )
-                Feishu.finish_bot(text,
-                                  "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
-                                  "【 搬运&改造效率工具失败通知 】")
-                return
-            logger.info(f"[+] {REDIS_NAME}的{data}视频更改分辨率处理成功")
-            if data["video_clipping"]:  # 判断是否需要裁剪
-                video_path = FFmpeg.video_crop(video_path, file_path)
-            if data["video_clipping_time"]:  # 判断是否需要指定视频时长
-                video_path = FFmpeg.video_ggduration(video_path, file_path, data["video_clipping_time"])
-
-            if data['trailer_share']:
-                if data['trailer_share'] ==  "AI片尾引导":
-                    pw_srt_text = GPT4oMini.get_ai_mini_pw(title)
-                else:
-                    pw_srt_text = str(data['trailer_share'])
-                voice = data['trailer_share_audio']
-                if voice:
-                    if ',' in voice:
-                        voices = voice.split(',')
-                    else:
-                        voices = [voice]
-                    voice = random.choice(voices)
-                else:
-                    voice = "zhifeng_emo"
-                pw_url = TTS.get_pw_zm(pw_srt_text, voice)
-                if not pw_url:
-                    logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取失败")
-                    data["transform_rule"] = "仅改造"
-                    in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
-                    AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"],
-                                         "改造失败,片尾获取失败", "3001", str(data))
-                    text = (
-                        f"**负责人**: {data['name']}\n"
-                        f"**内容**: {data}\n"
-                        f"**失败信息**: 获取片尾失败\n"
-                    )
-                    Feishu.finish_bot(text,
-                                      "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
-                                      "【 搬运&改造效率工具失败通知 】")
-                    return
-                logger.info(f"[+] {REDIS_NAME}的{data}数据片尾获取成功")
-                pw_srt = TTS.getSrt(pw_url)
-                if not pw_srt:
-                    data["transform_rule"] = "仅改造"
+            try:
+                width, height = FFmpeg.get_w_h_size(video_path)
+                if width < height:  # 判断是否需要修改为竖屏
+                    video_path = FFmpeg.update_video_h_w(video_path, file_path)
+                logger.info(f"[+] {REDIS_NAME}的{data}视频更改分辨率处理")
+                video_path = FFmpeg.video_640(video_path, file_path)
+                if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
                     in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
-                    logger.error(f"[+] {REDIS_NAME}的{data}数据片尾音频srt获取失败")
+                    logger.error(f"[+] {REDIS_NAME}的{data}视频更改分辨率失败")
                     AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
-                                         "改造失败,片尾音频下载失败", "3001", str(data))
-                    text = (
-                        f"**负责人**: {data['name']}\n"
-                        f"**内容**: {data}\n"
-                        f"**失败信息**: 片尾音频下载失败\n"
-                    )
-                    Feishu.finish_bot(text,
-                                      "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
-                                      "【 搬运&改造效率工具失败通知 】")
-                    return
-                pw_mp3_path = TTS.download_mp3(pw_url, file_path)
-                if not pw_mp3_path:
-                    data["transform_rule"] = "仅改造"
-                    in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
-                    logger.error(f"[+] {REDIS_NAME}的{data}数据片尾音频下载失败")
-                    AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
-                                         "改造失败,片尾音频下载失败", "3001", str(data))
-                    text = (
-                        f"**负责人**: {data['name']}\n"
-                        f"**内容**: {data}\n"
-                        f"**失败信息**: 片尾音频下载失败\n"
-                    )
-                    Feishu.finish_bot(text,
-                                      "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
-                                      "【 搬运&改造效率工具失败通知 】")
-                    return
-                logger.info(f"[+] {REDIS_NAME}的{data}数据片尾音频下载成功")
-                jpg_path = FFmpeg.video_png(video_path, file_path)  # 生成视频最后一帧jpg
-                if not os.path.exists(jpg_path) or os.path.getsize(jpg_path) == 0:
-                    data["transform_rule"] = "仅改造"
-                    in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
-                    logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧失败")
-                    AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
-                                         "改造失败,获取最后一帧失败", "3001", str(data))
-                    text = (
-                        f"**负责人**: {data['name']}\n"
-                        f"**内容**: {data}\n"
-                        f"**失败信息**: 获取视频最后一帧失败\n"
-                    )
-                    Feishu.finish_bot(text,
-                                      "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
-                                      "【 搬运&改造效率工具失败通知 】")
-                    return
-                logger.info(f"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧成功")
-                pw_path = FFmpeg.pw_video(jpg_path, file_path, pw_mp3_path, pw_srt)  # 生成片尾视频
-                if not os.path.exists(pw_path) or os.path.getsize(pw_path) == 0:
-                    data["transform_rule"] = "仅改造"
-                    in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
-                    logger.error(f"[+] {REDIS_NAME}的{data}数据片尾拼接失败")
-                    AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
                                          "改造失败,片尾拼接失败", "3001", str(data))
                     text = (
                         f"**负责人**: {data['name']}\n"
                         f"**内容**: {data}\n"
-                        f"**失败信息**: 片尾拼接失败\n"
+                        f"**失败信息**: 视频更改分辨率失败\n"
                     )
                     Feishu.finish_bot(text,
                                       "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
                                       "【 搬运&改造效率工具失败通知 】")
                     return
-                logger.info(f"[+] {REDIS_NAME}的{data}数据合并开始拼接")
-                video_path = FFmpeg.h_b_video(video_path, pw_path, file_path)
-                video_path = FFmpeg.single_video(video_path, file_path, data["video_share"])
-                if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
-                    data["transform_rule"] = "仅改造"
-                    in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
-                    logger.error(f"[+] {REDIS_NAME}的{data}数据添加片中字幕失败")
-                    AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
-                                         "改造失败,添加片中字幕失败", "3001", str(data))
+                logger.info(f"[+] {REDIS_NAME}的{data}视频更改分辨率处理成功")
+                if data["video_clipping"]:  # 判断是否需要裁剪
+                    video_path = FFmpeg.video_crop(video_path, file_path)
+                if data["video_clipping_time"]:  # 判断是否需要指定视频时长
+                    video_path = FFmpeg.video_ggduration(video_path, file_path, data["video_clipping_time"])
+
+                if data['trailer_share']:
+                    if data['trailer_share'] ==  "AI片尾引导":
+                        pw_srt_text = GPT4oMini.get_ai_mini_pw(title)
+                    else:
+                        pw_srt_text = str(data['trailer_share'])
+                    voice = data['trailer_share_audio']
+                    if voice:
+                        if ',' in voice:
+                            voices = voice.split(',')
+                        else:
+                            voices = [voice]
+                        voice = random.choice(voices)
+                    else:
+                        voice = "zhifeng_emo"
+                    pw_url = TTS.get_pw_zm(pw_srt_text, voice)
+                    if not pw_url:
+                        logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取失败")
+                        data["transform_rule"] = "仅改造"
+                        in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
+                        AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"],
+                                             "改造失败,片尾获取失败", "3001", str(data))
+                        text = (
+                            f"**负责人**: {data['name']}\n"
+                            f"**内容**: {data}\n"
+                            f"**失败信息**: 获取片尾失败\n"
+                        )
+                        Feishu.finish_bot(text,
+                                          "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                          "【 搬运&改造效率工具失败通知 】")
+                        return
+                    logger.info(f"[+] {REDIS_NAME}的{data}数据片尾获取成功")
+                    pw_srt = TTS.getSrt(pw_url)
+                    if not pw_srt:
+                        data["transform_rule"] = "仅改造"
+                        in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
+                        logger.error(f"[+] {REDIS_NAME}的{data}数据片尾音频srt获取失败")
+                        AliyunLogger.logging(data["name"], "效率工具", tag_transport_channel, data["video_url"],
+                                             "改造失败,片尾音频下载失败", "3001", str(data))
+                        text = (
+                            f"**负责人**: {data['name']}\n"
+                            f"**内容**: {data}\n"
+                            f"**失败信息**: 片尾音频下载失败\n"
+                        )
+                        Feishu.finish_bot(text,
+                                          "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                          "【 搬运&改造效率工具失败通知 】")
+                        return
+                    pw_mp3_path = TTS.download_mp3(pw_url, file_path)
+                    if not pw_mp3_path:
+                        data["transform_rule"] = "仅改造"
+                        in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
+                        logger.error(f"[+] {REDIS_NAME}的{data}数据片尾音频下载失败")
+                        AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
+                                             "改造失败,片尾音频下载失败", "3001", str(data))
+                        text = (
+                            f"**负责人**: {data['name']}\n"
+                            f"**内容**: {data}\n"
+                            f"**失败信息**: 片尾音频下载失败\n"
+                        )
+                        Feishu.finish_bot(text,
+                                          "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                          "【 搬运&改造效率工具失败通知 】")
+                        return
+                    logger.info(f"[+] {REDIS_NAME}的{data}数据片尾音频下载成功")
+                    jpg_path = FFmpeg.video_png(video_path, file_path)  # 生成视频最后一帧jpg
+                    if not os.path.exists(jpg_path) or os.path.getsize(jpg_path) == 0:
+                        data["transform_rule"] = "仅改造"
+                        in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
+                        logger.error(f"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧失败")
+                        AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
+                                             "改造失败,获取最后一帧失败", "3001", str(data))
+                        text = (
+                            f"**负责人**: {data['name']}\n"
+                            f"**内容**: {data}\n"
+                            f"**失败信息**: 获取视频最后一帧失败\n"
+                        )
+                        Feishu.finish_bot(text,
+                                          "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                          "【 搬运&改造效率工具失败通知 】")
+                        return
+                    logger.info(f"[+] {REDIS_NAME}的{data}数据片尾获取最后一帧成功")
+                    pw_path = FFmpeg.pw_video(jpg_path, file_path, pw_mp3_path, pw_srt)  # 生成片尾视频
+                    if not os.path.exists(pw_path) or os.path.getsize(pw_path) == 0:
+                        data["transform_rule"] = "仅改造"
+                        in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
+                        logger.error(f"[+] {REDIS_NAME}的{data}数据片尾拼接失败")
+                        AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
+                                             "改造失败,片尾拼接失败", "3001", str(data))
+                        text = (
+                            f"**负责人**: {data['name']}\n"
+                            f"**内容**: {data}\n"
+                            f"**失败信息**: 片尾拼接失败\n"
+                        )
+                        Feishu.finish_bot(text,
+                                          "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                          "【 搬运&改造效率工具失败通知 】")
+                        return
+                    logger.info(f"[+] {REDIS_NAME}的{data}数据合并开始拼接")
+                    video_path = FFmpeg.h_b_video(video_path, pw_path, file_path)
+                    video_path = FFmpeg.single_video(video_path, file_path, data["video_share"])
+                    if not os.path.exists(video_path) or os.path.getsize(video_path) == 0:
+                        data["transform_rule"] = "仅改造"
+                        in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
+                        logger.error(f"[+] {REDIS_NAME}的{data}数据添加片中字幕失败")
+                        AliyunLogger.logging(data["name"], "效率工具",tag_transport_channel, data["video_url"],
+                                             "改造失败,添加片中字幕失败", "3001", str(data))
+                        text = (
+                            f"**负责人**: {data['name']}\n"
+                            f"**内容**: {data}\n"
+                            f"**失败信息**: 视频片中增加字幕失败\n"
+                        )
+                        Feishu.finish_bot(text,
+                                          "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
+                                          "【 搬运&改造效率工具失败通知 】")
+                        return
+                    logger.info(f"[+] {REDIS_NAME}的{data}数据添加片中字幕成功")
+                logger.info(f"[+] {REDIS_NAME}的{data}数据开始发送oss")
+                oss_object_key = Oss.stitching_sync_upload_oss(video_path, str(uuid.uuid4()))  # 视频发送OSS
+                status = oss_object_key.get("status")
+                if status != 200:
+                    logger.error(f"[+] {REDIS_NAME}的{data}数据发送oss失败")
+                    AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"],
+                                         "改造失败,发送oss失败", "3001", str(data))
                     text = (
                         f"**负责人**: {data['name']}\n"
                         f"**内容**: {data}\n"
-                        f"**失败信息**: 视频片中增加字幕失败\n"
+                        f"**失败信息**: 视频发送OSS失败\n"
                     )
                     Feishu.finish_bot(text,
                                       "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
                                       "【 搬运&改造效率工具失败通知 】")
                     return
-                logger.info(f"[+] {REDIS_NAME}的{data}数据添加片中字幕成功")
-            logger.info(f"[+] {REDIS_NAME}的{data}数据开始发送oss")
-            oss_object_key = Oss.stitching_sync_upload_oss(video_path, str(uuid.uuid4()))  # 视频发送OSS
-            status = oss_object_key.get("status")
-            if status != 200:
-                logger.error(f"[+] {REDIS_NAME}的{data}数据发送oss失败")
-                AliyunLogger.logging(data["name"],"效率工具", tag_transport_channel, data["video_url"],
-                                     "改造失败,发送oss失败", "3001", str(data))
+                logger.info(f"[+] {REDIS_NAME}的{data}数据发送oss成功")
+                oss_object_key = oss_object_key.get("oss_object_key")
+
+                tags = ','.join(filter(None, [
+                    data['pq_label'],
+                    channel_mark,
+                    tag_transport_channel,
+                    data['tag_transport_scene'],
+                    data['tag_transport_keyword'],
+                    "搬运改造"
+                ]))
+                self.insert_pq(REDIS_NAME, data, oss_object_key, title, tags, tag_transport_channel, channel_mark)
+                return
+            except Exception as e:
+                data["transform_rule"] = "仅改造"
+                in_carry_video_data(REDIS_NAME, json.dumps(data, ensure_ascii=False, indent=4))
+                logger.error(f"[+] 视频改造失败{e}")
                 text = (
                     f"**负责人**: {data['name']}\n"
                     f"**内容**: {data}\n"
-                    f"**失败信息**: 视频发送OSS失败\n"
+                    f"**失败信息**: 视频改造失败\n"
                 )
                 Feishu.finish_bot(text,
                                   "https://open.feishu.cn/open-apis/bot/v2/hook/65bc5463-dee9-46d0-bc2d-ec6c49a8f3cd",
                                   "【 搬运&改造效率工具失败通知 】")
                 return
-            logger.info(f"[+] {REDIS_NAME}的{data}数据发送oss成功")
-            oss_object_key = oss_object_key.get("oss_object_key")
-
-            tags = ','.join(filter(None, [
-                data['pq_label'],
-                channel_mark,
-                tag_transport_channel,
-                data['tag_transport_scene'],
-                data['tag_transport_keyword'],
-                "搬运改造"
-            ]))
-            self.insert_pq(REDIS_NAME, data, oss_object_key, title, tags, tag_transport_channel, channel_mark)
-            return
+                return
 
 
 

+ 2 - 8
common/ffmpeg.py

@@ -122,14 +122,8 @@ class FFmpeg():
         """
         # 获取视频的原始宽高信息
         jpg_url = file_path + 'png.jpg'
-        # 获取视频时长
-        total_duration = cls.get_video_duration(video_path)
-        if total_duration == 0:
-            return jpg_url
-        time_offset = total_duration - 1  # 提取倒数第一秒的帧
-        # 获取视频最后一秒,生成.jpg
         cls.asyncio_run_subprocess(
-            ['ffmpeg', '-ss', str(time_offset), '-i', video_path, '-t', str(total_duration), '-vf', 'fps=1,scale=360:640', "-y", jpg_url], timeout=120)
+            ["ffmpeg", "-sseof", "-1", '-i', video_path, '-frames:v', '1',  "-y", jpg_url], timeout=120)
         return jpg_url
 
     """
@@ -324,6 +318,6 @@ class FFmpeg():
 
 
 if __name__ == '__main__':
-    FFmpeg.get_w_h_size("/Users/z/Downloads/c2ce4ba6-fdb3-4e1b-bdba-dc05cb292abfvideo.mp4")
+    FFmpeg.video_png("/Users/z/Downloads/c2ce4ba6-fdb3-4e1b-bdba-dc05cb292abfvideo.mp4", "/Users/z/Downloads/")
 
 

+ 88 - 0
common/gpt4o_mini_help.py

@@ -57,3 +57,91 @@ class GPT4oMini:
         except Exception as e:
             pw_srt_text = '老友们,这个视频说的太好了,请你在看完之后,不要私藏,分享给身边的亲人朋友,转发传递这份美好,这不仅是分享一个好视频,更是在传递一份深厚的祝福和好运,愿每个看到这消息的人,都能收获健康长寿和平安,希望您在看完后能够回传给我,并且把这条视频再传给3个群和3个好友,祝愿你我,健健康康,平平安安,因为3个数字代表着健康和平安,这么好的视频,千万不要在你的手里终止了,分享给群友们,他们看到以后一定会感谢你的,感谢分享,感谢传递'
             return pw_srt_text
+
+    @classmethod
+    def get_ai_mini_title(cls, title):
+        url = "http://aigc-api.cybertogether.net//aigc/dev/test/gpt"
+        payload = json.dumps({
+            "imageList": [],
+            "model": "gpt-4o-mini-2024-07-18",
+            "prompt": (
+                "CONTEXT"
+                "你是一名短视频标题优化专家,任务是为短视频生成吸引力高且符合规范的标题。"
+                "OBJECTIVE"
+                "基于优秀标题要求及示例,生成新的、吸引用户注意的标题。"
+                "TIME"
+                "在标题生成请求提出后的1分钟内生成。"
+                "ACTOR"
+                "短视频标题优化专家"
+                "RESOURCES"
+                "- 原标题列表"
+                "- 优秀标题示例"
+                "- 标题生成规范和约束条件"
+                "RESPONSE"
+                "为每个原标题生成符合规范的新标题。"
+                "生成示例标题案例及要求"
+                "1. 标题开头包含醒目emoji🔴,整体字符长度必须控制在10-25个字"
+                "2. 识别需要修改的标题中可能感兴趣的人群,并在标题中表现出来。人群示例如:群友们、退休人员、50~70后等"
+                "3. 标题中可增加一些对内容的观点/态度,用人格化的方式表达,示例:太香了、老外至今难以相信"
+                "4. 标题结尾可以根据标题内容增加一些引导语,格式参考示例但不必局限于示例。示例:你们见过吗、你听对不对、说的太好了、请听、太神奇了"
+                "5. 对于包含#话题和@人的标题,若标题中包含其他元素,则去除#话题和@人元素后利用其他元素生成标题。若标题去除#话题和@人外无其他元素,则仅利用#话题的内容生成标题"
+                "Goodcase示例:"
+                "⭕老外至今难以相信,中国人竟能把大桥建到天上,穿入云中"
+                "🔴未来酒店体验,群友们,请看!"
+                "⭕六七十年代的《忠字舞》,你们见过吗?"
+                "🔴哈哈哈!大哥说的太好了!太真实了"
+                "🔴今天,请记住那1700个集体赴死的年轻人,平均23岁!"
+                "🔴这才叫老同学聚会,到了这个年纪,还能聚在一起真不容易!"
+                "🔴百善孝为先,心凉了捂不热了"
+                "🔴养儿不如养狗,一件真实的事!"
+                "🔴让人受益的一段话,写得真好!"
+                "🔴“处暑三劝”!发给最好的朋友劝一劝!"
+                "🔴世间公道自在人心,善恶有报,人生智慧建议收藏!"
+                "🔴坐着电梯登上山顶!这怕是只有中国人敢想敢做!"
+                "🔴人老了!就应该这样去活!"
+                "生成约束"
+                "1. 标题不能包含#话题标签和@人名。"
+                "2. 不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金。"
+                "3. 标题内不能使用强引导分享点击的词句,如:快来看看、大家都听一听、值得一看、都看看吧、你也来看看吧、大家注意、都听听等。"
+                "4. 不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述,避免使用“震惊国人”、“速看”、“太震撼了”等类似描述。"
+                "5. 标题需要简洁、清晰,不要使用网络流行语,如:太燃了、佛系、躺平、内卷等。"
+                "badcase示例:"
+                "🌸绝对不能错过,快打开看看,越快越好"
+                        "所有老年人一定要看"
+                        "天大的好消息,5月开始实施❗"
+                        "就在刚刚,中国突然传出重磅消息,所有人都不敢相信! 🚩"
+                        "丧尽天良!为什么生病的人越来越多,原来吃的是这些 🎈"
+                        "今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔"
+                        "好消息来了,千万别划走!"
+                        "紧急!已爆发,错过就晚了😱"
+            f"请分析该标题,标题为:{title},返回新的标题。"
+            ),
+            "responseFormat": {
+                "type": "json_schema",
+                "json_schema": {
+                    "strict": True,
+                    "name": "share_script_result",
+                    "schema": {
+                        "type": "object",
+                        "properties": {
+                            "新标题": {
+                                "type": "string",
+                                "description": "生成新的标题"
+                            }
+                        },
+                        "required": ["新标题"],
+                        "additionalProperties": False
+                    }
+                }
+            }
+        })
+        headers = {'Content-Type': 'application/json'}
+        try:
+            response = requests.post(url, headers=headers, data=payload)
+            response_data = response.json()
+
+            data = json.loads(response_data.get('data', '{}'))
+            new_title = data["新标题"]
+            return new_title
+        except Exception as e:
+            return "这个视频,分享给我的老友,祝愿您能幸福安康"