"use strict";const e=require("../../common/vendor.js"),s=require("../../config/api.js"),t={data:()=>({imageUrl:"",imageFile:null,prompt:"",promptPlaceholder:"描述你想要的视频效果,支持中文,例如:一个人在微笑着说话,背景是温馨的客厅",duration:10,durations:[2,3,4,5,6,8,10,12],videoName:"",generating:!1,progress:0,progressText:"准备中...",generatedVideo:"",message:{text:"",type:"info"}}),methods:{chooseImage(){e.index.chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:s=>{const t=s.tempFilePaths[0],r=s.tempFiles&&s.tempFiles[0]?s.tempFiles[0]:null,o=e=>{this.imageUrl=e,this.imageFile=r,this.showMessage("照片已选择","success")};e.index.getFileInfo({filePath:t,success:s=>{const r=2097152;if(s.size&&s.size>r){this.showMessage("图片超过2MB,正在自动压缩...","info");const s=[60,40,20],i=(t,a)=>{t>=s.length?this.showMessage("图片压缩后仍超过2MB,请换一张更小的图片(建议拍照/截图后再上传)","error"):e.index.compressImage({src:a,quality:s[t],success:s=>{e.index.getFileInfo({filePath:s.tempFilePath,success:e=>{e.size&&e.size<=r?o(s.tempFilePath):i(t+1,s.tempFilePath)},fail:e=>{console.error("获取压缩后文件信息失败:",e),i(t+1,s.tempFilePath)}})},fail:e=>{console.error("压缩图片失败:",e),this.showMessage("图片过大且压缩失败,请换一张更小的图片","error")}})};i(0,t)}else o(t)},fail:e=>{console.error("获取文件信息失败:",e),o(t)}})},fail:e=>{console.error("选择图片失败:",e),this.showMessage("选择图片失败","error")}})},async generateVideo(){if(this.imageUrl){this.generating=!0,this.progress=0,this.progressText="正在上传照片...";try{this.progress=10,this.progressText="照片上传中...";const e=await s.uploadFile({url:"/api/photo-revival/volcengine-video",filePath:this.imageUrl,name:"photo",formData:{text:"",prompt:this.prompt||"",duration:this.duration,name:this.videoName||"火山引擎视频"}});this.progress=30,this.progressText="视频生成中,请稍候...";const t=setInterval((()=>{this.progress<90&&(this.progress+=2)}),2e3);setTimeout((()=>{if(clearInterval(t),this.progress=100,this.progressText="视频生成完成!","success"!==e.status)throw new Error(e.message||"视频生成失败");this.generatedVideo=s.API_BASE+e.videoUrl,this.showMessage("视频生成成功!","success"),this.generating=!1}),3e3)}catch(e){console.error("生成视频失败:",e),this.showMessage("生成失败: "+(e.message||"未知错误"),"error"),this.generating=!1,this.progress=0}}else this.showMessage("请先上传照片","error")},saveToAlbum(){this.generatedVideo?e.index.downloadFile({url:this.generatedVideo,success:s=>{200===s.statusCode&&e.index.saveVideoToPhotosAlbum({filePath:s.tempFilePath,success:()=>{this.showMessage("已保存到相册","success")},fail:e=>{console.error("保存失败:",e),this.showMessage("保存失败,请检查相册权限","error")}})},fail:e=>{console.error("下载失败:",e),this.showMessage("下载失败","error")}}):this.showMessage("没有可保存的视频","error")},reset(){this.imageUrl="",this.imageFile=null,this.prompt="",this.duration=10,this.videoName="",this.generatedVideo="",this.progress=0,this.progressText="准备中...",this.message.text=""},showMessage(e,s="info"){this.message={text:e,type:s},setTimeout((()=>{this.message.text=""}),3e3)}}};const r=e._export_sfc(t,[["render",function(s,t,r,o,i,a){return e.e({a:i.message.text},i.message.text?{b:e.t(i.message.text),c:e.n(i.message.type)}:{},{d:i.imageUrl},i.imageUrl?{e:i.imageUrl}:{},{f:e.o(((...e)=>a.chooseImage&&a.chooseImage(...e))),g:i.promptPlaceholder,h:i.prompt,i:e.o((e=>i.prompt=e.detail.value)),j:e.t(i.prompt.length),k:e.f(i.durations,((s,t,r)=>({a:e.t(s),b:s,c:e.n(i.duration===s?"active":""),d:e.o((e=>i.duration=s),s)}))),l:i.videoName,m:e.o((e=>i.videoName=e.detail.value)),n:i.generating},(i.generating,{}),{o:!i.imageUrl||i.generating,p:e.o(((...e)=>a.generateVideo&&a.generateVideo(...e))),q:i.generating},i.generating?{r:e.t(i.progressText),s:i.progress+"%"}:{},{t:i.generatedVideo},i.generatedVideo?{v:i.generatedVideo,w:e.o(((...e)=>a.saveToAlbum&&a.saveToAlbum(...e))),x:e.o(((...e)=>a.reset&&a.reset(...e)))}:{})}],["__scopeId","data-v-041223dc"]]);wx.createPage(r);