import os
from volcenginesdkarkruntime import Ark
from .read_folder import read_jsons_in_order

client = Ark(
    base_url="https://ark.cn-beijing.volces.com/api/v3",
    api_key="817dff39-5586-4f9b-acba-55004167c0b1",
)

system_prompt = """
## 角色：你是一个优秀的文本理解与解析专家，同时你也是一个优秀的视频剪辑创作者。
## 任务：请对输入的视频脚本进行深入理解与解析，将视频脚本按照人物服装进行拆分，当人物服装在颜色、款式上有较大的变动，才判定为更换了衣服。
## 背景：我需要将一个长视频按照视频人物所穿衣服来裁切成多个视频片段，要求裁切后的视频片段中主要人物衣服没有更换。当人物服装在颜色、款式上有较大的变动，才判定为更换了衣服。

## 输出格式：
```json
{
    "裁切位置": //<例如：frame_07-frame_08，代表在视频片段编号frame_07和视频片段编号frame_08之间裁切，如果有多个裁切位置，请以列表形式输出>
}

## 注意事项：
- 长视频中的人物是按照时间顺序进行衣服更换的，因此不可能出现01片段和03片段穿同一件衣服，而02片段穿不同的衣服。
- 视频片段编号格式为：frame_00000600，代表这是视频片段的第600秒。
- 一个长视频通常有2到3个裁切位置，一定不可能超过3个裁切位置。
"""

def get_answer(user_prompt):
    completion = client.chat.completions.create(
        model="deepseek-v3-241226",
        messages=[
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": user_prompt},
        ],
    )
    return completion.choices[0].message.content


def text_classifer(user_prompt):

    system_prompt = """
            ## 任务：判断输入的文本是否在讲解衣服特性、属性
            ## 背景知识：
            --- 
            **正例：**
            - 这是假两件的款式
            - 我采用的来自澳大利亚进口的美丽诺羊毛是羊毛中的天花板
            - 采用立体裁切，A字版型
            - 100%新疆长绒棉，亲肤透气，久穿不易起球变形。
            - 高腰A字裙版型，腰线提升视觉比例，下摆微蓬显腿细。
            - 超短上衣+低腰裤组合，五五分身材慎选，易显腿短
            --- 
            **反例：** 没有说明衣服属性、特性的具体内容。
            - 看看喜欢的款式。
            - 你可以去搜去问去找羊毛，
            - 对我们来说工艺更难，
            - 顶梁柱面料。
            - 利亚在冬天的招牌面料自然不可能便宜。
            - 今天水洗绵羊毛的这条背心裙以后来一千五只有一条。
            --- 
            ## 输出格式：{"讲解衣服": //<文本是否在讲解衣服特性、属性，取值范围：是、否>}
            ## 要求：必须以JSON格式输出提取的结果
            ## 注意事项：
            - 如果是讲衣服便宜实惠，则输出：{"讲解衣服": "否"}
            - 如果没有讲解出衣服属性、特性的实质内容，则输出：{"讲解衣服": "否"}
        """

    completion = client.chat.completions.create(
        messages = [
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": user_prompt},
        ],
        model="ep-20241018084532-cgm84", # ep-20241018084532-cgm84 deepseek-v3-241226
        temperature = 0.01,
        max_tokens = 200
    )
    return completion.choices[0].message.content

if __name__ == "__main__":

    file_path = "/data/data/luosy/project/oral/data/img_caption/"
    sorted_files = read_jsons_in_order(file_path)

    clips_content = []
    for filename, content in sorted_files:
        clip_content = str(content)
        clips_content.append(clip_content)

    user_prompt = "\n".join(clips_content)
    


    answer = get_answer(user_prompt)

    print(answer)