using AntDesign; using AntDesign.TableModels; using FFmpeg.NET.Services; using Learn.VideoAnalysis.Controllers.Dto; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.DataProtection.KeyManagement; using Microsoft.JSInterop; using SqlSugar; using System.Linq.Expressions; using System.Threading.Tasks; using VideoAnalysisCore.AICore.GPT.Dto; using VideoAnalysisCore.AICore.SherpaOnnx; using VideoAnalysisCore.Common; using VideoAnalysisCore.Model.Enum; using VideoAnalysisCore.Model; using VideoAnalysisCore.Model.Dto; using static System.Runtime.InteropServices.JavaScript.JSType; namespace Learn.VideoAnalysis.Components.Pages { public partial class VideoTaskShow : ComponentBase { /// /// 任务id /// [Parameter] public long? taskId { get; set; } [Inject] private ConfirmService ComfirmService { get; set; } = default!; [Inject] private IHttpContextAccessor HttpContext { get; set; } = default!; [Inject] private Repository taskDB { get; set; } = default!; [Inject] private IJSRuntime JSRuntime { get; set; } = default!; private VideoTask nowTask { get; set; } = default!; private string videoPath { get; set; } = default!; /// /// 字幕 /// private SenseVoiceRes[] captionsArr { get; set; } = default!; /// /// 分段 /// private VideoKnowRes[] videoKnows { get; set; } = default!; /// /// 在渲染页面之后 /// /// /// protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { } } public string getF(VideoKnowRes segment) { var sf = ((int)((segment.StartTime ?? 0) / 60)).ToString().PadLeft(2,'0'); var sm = ((int)((segment.StartTime ?? 0) % 60)).ToString().PadLeft(2, '0'); return $"{sf}:{sm}"; //var ef = ((int)((segment.EndTime ?? 0) / 60)).ToString().PadLeft(2, '0'); //var em = ((int)((segment.EndTime ?? 0) % 60)).ToString().PadLeft(2, '0'); //return $"{sf}:{sm} - {ef}: {em}"; } /// /// 初始化 /// protected override async void OnInitialized() { if (this.taskId is null) return; long taskId = this.taskId.Value; nowTask = await taskDB.GetFirstAsync(s => s.Id == taskId); if(nowTask is null) return; captionsArr = RedisExpand.Redis.HMGet(RedisExpandKey.Task(taskId), "Captions").FirstOrDefault(); videoKnows = RedisExpand.Redis.HMGet(RedisExpandKey.Task(taskId), "VideoKnows").FirstOrDefault(); videoPath = AppCommon.GetVideoPath(nowTask.Id.ToString()); await JSRuntime.InvokeVoidAsync("setDB", captionsArr,videoKnows, videoPath); StateHasChanged(); } private async Task Comfirm(string message) { return await ComfirmService.Show(message, "提示", ConfirmButtons.YesNo, ConfirmIcon.Warning) == ConfirmResult.Yes; } } }