package com.supervision.ai.service.hub;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.supervision.ai.service.hub.dto.heygem.*;
import com.supervision.ai.service.hub.service.HeygemApiService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@Slf4j
@SpringBootTest
public class HeygemApiServiceTest {

    @Autowired
    private HeygemApiService heygemApiService;
    @Test
    public void preprocessAndTranTest() {
        TranReqDTO tranReqDTO = new TranReqDTO();
        tranReqDTO.setFormat("wav");
        tranReqDTO.setLang("zh");
        tranReqDTO.setReference_audio("origin_audio/format_20250325102100472.wav");
        TranResDTO test = heygemApiService.preprocessAndTran(tranReqDTO);
        log.info("preprocessAndTranTest:{}", JSONUtil.toJsonStr(test));
        // {"code":0,"msg":"success","reference_audio_text":"爸爸鱼竿女主我爱爸爸爱办法,而我爱不如果播放奥特曼二就别把爱来。嗯,我看18.5 啊,75 ,为啥不是真的想得爱的,是是空与佛,你在干什么?徒儿不是就是穷,不是穷。","asr_format_audio_url":"/code/sessions/20250328/4c8a1e68fdc24e2f99480770b8a5a3d1/format_denoise_format_20250325102100472_part0.wav"}
    }

    @Test
    public void textToAudioTest() {

        TextToAudioReqDTO textToAudioReqDTO = new TextToAudioReqDTO();
        textToAudioReqDTO.setSpeaker("zs");
        textToAudioReqDTO.setText("你好,我是伏小羲");
        textToAudioReqDTO.setReference_audio("/code/sessions/20250328/4c8a1e68fdc24e2f99480770b8a5a3d1/format_denoise_format_20250325102100472_part0.wav");
        textToAudioReqDTO.setReference_text("爸爸鱼竿女主我爱爸爸爱办法,而我爱不如果播放奥特曼二就别把爱来。嗯,我看18.5 啊,75 ,为啥不是真的想得爱的,是是空与佛,你在干什么?徒儿不是就是穷,不是穷。");

        TextToAudioResDTO textToAudioResDTO = heygemApiService.textToAudio(textToAudioReqDTO);
        if (StrUtil.equals("0",textToAudioResDTO.getStatusCode())){
            String videoPath = "F:\\tmp\\heyGem\\test.wav";
            log.info("textToAudioTest:正确响应回音频数据...音频保存位置:{}",videoPath);
            FileUtil.writeBytes(textToAudioResDTO.getAudio(), videoPath);
        }else {
            log.info("textToAudioTest:错误响应回音频数据,详情:{}",JSONUtil.toJsonStr(textToAudioResDTO));
        }
    }

    @Test
    public void submitVideoGenerateTaskTest() {
        VideoGenerateReqDTO videoGenerateReqDTO = new VideoGenerateReqDTO();
        videoGenerateReqDTO.setAudio_url("476154b5-2603-498f-aa6e-28fcbe7472b8_format.wav");// 存放在tmp目录下
        videoGenerateReqDTO.setVideo_url("外国男主播.mp4");
        videoGenerateReqDTO.setCode("123456789");
        Response<Object> objectResponse = heygemApiService.submitVideoGenerateTask(videoGenerateReqDTO);

        log.info("submitVideoGenerateTaskTest:{}", JSONUtil.toJsonStr(objectResponse));
    }

    @Test
    public void getTaskStatusTest() {

        Response<TaskStatusResDTO> taskStatusResDTOResponse = heygemApiService.queryTaskStatus("123456789");
        log.info("getTaskStatusTest:{}", JSONUtil.toJsonStr(taskStatusResDTOResponse));
    }
}