From 8847ae987be7abc431261d510f888da00fb7cc78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com> Date: Fri, 21 Mar 2025 16:49:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=8C=85=E6=9C=AA=E5=A4=84=E7=90=86=E7=9A=84=E8=A7=86=E9=A2=91?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96=20=E4=B8=8B=E8=BD=BD=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E6=97=B6=E5=9F=BA=E4=BA=8E=E4=BB=BB=E5=8A=A1=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E8=8E=B7=E5=8F=96=E8=B5=84=E6=BA=90=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Pages/VideoTaskPage.razor.cs | 7 +- VideoAnalysis/Controllers/ApiController.cs | 3 +- VideoAnalysis/Controllers/Dto/ApiDto.cs | 45 +++++++++++ VideoAnalysis/Controllers/LJZK_Controller.cs | 68 +++++++++++++++- VideoAnalysis/Expand/CoravelExpand.cs | 5 +- VideoAnalysis/appsettings.Production.json | 6 ++ VideoAnalysis/appsettings.json | 6 ++ .../AICore/GPT/DeepSeek/DeepSeek_GPT.cs | 13 +++- VideoAnalysisCore/Common/AppCommon.cs | 23 ++++++ VideoAnalysisCore/Common/DownloadFile.cs | 60 +++++++++++---- VideoAnalysisCore/Job/NodePackageJob.cs | 77 +++++++++++++++++++ VideoAnalysisCore/Job/NodeSubscriptionJob.cs | 18 +---- VideoAnalysisCore/Model/NodePackageInfo.cs | 61 +++++++++++++++ 13 files changed, 350 insertions(+), 42 deletions(-) create mode 100644 VideoAnalysisCore/Job/NodePackageJob.cs create mode 100644 VideoAnalysisCore/Model/NodePackageInfo.cs diff --git a/VideoAnalysis/Components/Pages/VideoTaskPage.razor.cs b/VideoAnalysis/Components/Pages/VideoTaskPage.razor.cs index bcf24d4..c9610b3 100644 --- a/VideoAnalysis/Components/Pages/VideoTaskPage.razor.cs +++ b/VideoAnalysis/Components/Pages/VideoTaskPage.razor.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.DataProtection.KeyManagement; using SqlSugar; +using System.Data.Common; using System.Linq.Expressions; using System.Threading.Tasks; using VideoAnalysisCore.Common; @@ -68,7 +69,9 @@ namespace Learn.VideoAnalysis.Components.Pages async void ReStart() { await RedisExpand.SetTaskErrorMessage(reStartTask.Id, null); - RedisExpand.InsertChannel((RedisChannelEnum)selectEnum, reStartTask.Id); + _=Task.Run(() => + RedisExpand.InsertChannel((RedisChannelEnum)selectEnum, reStartTask.Id) + ); modalShow = false; } private QueryModel lastQuery = null; @@ -106,7 +109,7 @@ namespace Learn.VideoAnalysis.Components.Pages .Select() .OrderByDescending(s => s.Id) .ToPageListAsync(query.PageIndex , query.PageSize, _total); - + tableLoading = false; StateHasChanged(); diff --git a/VideoAnalysis/Controllers/ApiController.cs b/VideoAnalysis/Controllers/ApiController.cs index 7ccd672..02df074 100644 --- a/VideoAnalysis/Controllers/ApiController.cs +++ b/VideoAnalysis/Controllers/ApiController.cs @@ -10,6 +10,7 @@ using VideoAnalysisCore.AICore.GPT.ChatGPT; using VideoAnalysisCore.AICore.GPT; using System.Text.Json; using VideoAnalysisCore.Model.Enum; +using Yitter.IdGenerator; namespace Learn.VideoAnalysis.Controllers { @@ -157,6 +158,7 @@ namespace Learn.VideoAnalysis.Controllers // 自动映射属性到哈希 var task = new VideoTask() { + Id=YitIdHelper.NextId(), ComeFrom = GetClientIpAddress(), MediaUrl = req.MediaUrl, ApiToken = req.ApiToken, @@ -167,7 +169,6 @@ namespace Learn.VideoAnalysis.Controllers MediaName = req.Name }; //入库 - task.Id = await videoTaskDB.InsertReturnBigIdentityAsync(task); var hashEntries = task.GetType() .GetProperties(BindingFlags.Public | BindingFlags.Instance) .ToDictionary(s => s.Name, s => s.GetValue(task)); diff --git a/VideoAnalysis/Controllers/Dto/ApiDto.cs b/VideoAnalysis/Controllers/Dto/ApiDto.cs index 2a6139a..8479e49 100644 --- a/VideoAnalysis/Controllers/Dto/ApiDto.cs +++ b/VideoAnalysis/Controllers/Dto/ApiDto.cs @@ -7,6 +7,51 @@ using VideoAnalysisCore.Model.Enum; namespace Learn.VideoAnalysis.Controllers.Dto { + /// + /// 瑙嗛鍒楄〃椤 + /// + public class StructurePageContentAnalyzeItem + { + /// + /// 褰曟挱鍐呭缂栧彿 + /// + public long StructurePageContentId { get; set; } + + /// + /// 绱犳潗ID + /// + public long MaterialId { get; set; } + + /// + /// 瑙嗛缂栫爜 + /// + public string VideoCode { get; set; } + /// + /// 瑙嗛鏂囦欢鍚嶇О + /// + public string VideoName { get; set; } + } + public class NodePackageReq + { + /// + /// 濯掍綋璺緞 + /// + [Required(ErrorMessage = "鏂囦欢鑺傜偣ID鏄繀濉」")] + public long NodeId { get; set; } + /// + /// 浠诲姟绫诲瀷 + /// + public TaskTypeEnum? TaskType { get; set; } + /// + /// 瀛︾绫诲瀷 + /// + public SubjectEnum? SubjectType { get; set; } + /// + /// 瑙嗛鍒楄〃 + /// + [Required(ErrorMessage = "鏂囦欢鑺傜偣ID鏄繀濉」")] + public List AnalyzeItems { get; set; } + } /// /// 瑙嗛澶勭悊 璇锋眰 /// diff --git a/VideoAnalysis/Controllers/LJZK_Controller.cs b/VideoAnalysis/Controllers/LJZK_Controller.cs index 879e8eb..ebe1515 100644 --- a/VideoAnalysis/Controllers/LJZK_Controller.cs +++ b/VideoAnalysis/Controllers/LJZK_Controller.cs @@ -11,6 +11,10 @@ using VideoAnalysisCore.AICore.GPT; using System.Text.Json; using Microsoft.AspNetCore.Authorization; using VideoAnalysisCore.Model.Enum; +using FFmpeg.NET.Services; +using static FFmpeg.NET.MetaData; +using static System.Runtime.InteropServices.JavaScript.JSType; +using Yitter.IdGenerator; namespace Learn.VideoAnalysis.Controllers { @@ -26,9 +30,12 @@ namespace Learn.VideoAnalysis.Controllers private readonly Repository nodesubscriptionDB; private readonly Repository videoTaskDB; private readonly Repository videoKonwPointDB; + private readonly Repository nodePackageInfoDB; private readonly IBserGPT chatGPT; public LJZK_Controller(ILogger logger, - IMapper mp, IBserGPT chatGPT, Repository nodesubscriptionDB, Repository videoTaskDB = null, Repository videoKonwPointDB = null) + IMapper mp, IBserGPT chatGPT, Repository nodesubscriptionDB, + Repository videoTaskDB = null, Repository videoKonwPointDB = null + , Repository nodePackageInfoDB = null) { _logger = logger; this.mp = mp; @@ -36,6 +43,7 @@ namespace Learn.VideoAnalysis.Controllers this.nodesubscriptionDB = nodesubscriptionDB; this.videoTaskDB = videoTaskDB; this.videoKonwPointDB = videoKonwPointDB; + this.nodePackageInfoDB = nodePackageInfoDB; } @@ -47,7 +55,7 @@ namespace Learn.VideoAnalysis.Controllers [HttpPost(Name = "NodeSubscription")] public async Task NodeSubscription(NodeMonitoringReq req) { - if(req is null || req.NodeId ==0) + if (req is null || req.NodeId == 0) return BadRequest("无效的提交数据"); if (nodesubscriptionDB.IsAny(s => s.NodeId == req.NodeId)) return BadRequest("重复添加了节点监控任务" + req.NodeId); @@ -55,12 +63,64 @@ namespace Learn.VideoAnalysis.Controllers { NodeId = req.NodeId, TaskType = req.Type ?? default, - Subject = req.Subject?? default, - + Subject = req.Subject ?? default, + }); return Ok(res); } + /// + /// 蓝鲸智库_文件包订阅 + /// + /// 请求体 + /// + [HttpPost(Name = "NodePackage")] + public async Task NodePackage(NodePackageReq req) + { + if (req is null || req.NodeId == 0) + return BadRequest("无效的提交数据"); + if (req.AnalyzeItems is null || req.AnalyzeItems.Count() == 0) + return BadRequest("无效视频列表数据"); + var videos = new List(req.AnalyzeItems.Count); + var nodePackages = new List(req.AnalyzeItems.Count); + var videoIdArr = videoTaskDB.AsQueryable().Select(v => v.TagId).Distinct().ToArray(); + foreach (var s in req.AnalyzeItems) + { + var np = new NodePackageInfo() + { + MaterialId = s.MaterialId, + VideoCode = s.VideoCode, + NodeId = req.NodeId, + StructurePageContentId = s.StructurePageContentId, + }; + nodePackages.Add(np); + + if (videoIdArr.Contains(s.VideoCode)) + { + Console.WriteLine($"重复任务"); + continue; + } + videos.Add(new VideoTask() + { + Id = YitIdHelper.NextId(), + ComeFrom = "127.0.0.1", + ApiToken = "", + Type = req.TaskType, + Subject = req.SubjectType, + Tag = req.NodeId.ToString(), + TagId = s.VideoCode, + MediaUrl =string.Empty, + MediaName = s.VideoName + }); + } + + await nodePackageInfoDB.InsertRangeAsync(nodePackages); + await videoTaskDB.InsertRangeAsync(videos); + var ids = videos.Select(s => s.Id).ToArray(); + RedisExpand.JoinQueue(ids); + return Ok(); + } + /// /// 获取任务类型 /// diff --git a/VideoAnalysis/Expand/CoravelExpand.cs b/VideoAnalysis/Expand/CoravelExpand.cs index 5502b5d..482bac2 100644 --- a/VideoAnalysis/Expand/CoravelExpand.cs +++ b/VideoAnalysis/Expand/CoravelExpand.cs @@ -20,6 +20,7 @@ namespace Learn.VideoAnalysis.Expand service.AddScheduler(); service.AddTransient(); service.AddTransient(); + service.AddTransient(); } public static void UseCoravelExpand(this IServiceProvider provider) { @@ -27,7 +28,9 @@ namespace Learn.VideoAnalysis.Expand { //姣5鍒嗛挓鎵ц涓娆 鏈鐞嗚棰戞壂鎻 scheduler.Schedule().EveryFiveMinutes(); - //姣忓ぉ02:10 + //鏂囦欢鍖呭垎鏋 + scheduler.Schedule().HourlyAt(20); + //浠诲姟缂撳瓨娓呯悊 // scheduler.Schedule().HourlyAt(10); }); } diff --git a/VideoAnalysis/appsettings.Production.json b/VideoAnalysis/appsettings.Production.json index 98c56fe..0b309e4 100644 --- a/VideoAnalysis/appsettings.Production.json +++ b/VideoAnalysis/appsettings.Production.json @@ -6,6 +6,12 @@ } }, "AppConfig": { + "Subsystem": { + "钃濋哺鏅哄簱": { + "APIUrl": "https://zyapi.23544.com", + "Token": "" + } + }, "Redis": { "ConnectionString": "172.28.0.1,password=qwe123!@#,defaultDatabase=3" }, diff --git a/VideoAnalysis/appsettings.json b/VideoAnalysis/appsettings.json index ddfd483..8ac68a1 100644 --- a/VideoAnalysis/appsettings.json +++ b/VideoAnalysis/appsettings.json @@ -12,6 +12,12 @@ "Account": "admin", "Password": "q1w2e3!@#" }, + "Subsystem": { + "钃濋哺鏅哄簱": { + "APIUrl": "http://192.168.2.117:6400", + "Token": "" + } + }, "Redis": { "ConnectionString": "127.0.0.1:6379,password=Woshiren123,defaultDatabase=10" }, diff --git a/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs b/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs index fe87210..ae470db 100644 --- a/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs +++ b/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs @@ -12,6 +12,7 @@ using VideoAnalysisCore.AICore.SherpaOnnx; using VideoAnalysisCore.Model.钃濋哺鏅哄簱; using VideoAnalysisCore.Model.Enum; using Mapster; +using System.Linq; namespace VideoAnalysisCore.AICore.GPT.DeepSeek { @@ -77,14 +78,20 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek // " 杩欐槸涓鍫傝鐨勬爣棰,璇蜂綘鍩轰簬鏍囬甯垜鍒嗘瀽鍑鸿繖鍫傝鎵璁叉巿鐨勫唴瀹逛笌鏈鎭板綋鐨勬巿璇剧珷鑺(鍏宠仈鏈璐村垏鐨勭珷鑺,淇濈暀涓涓珷鑺!)." + // $"绔犺妭鑼冨洿闄愬畾鍦╗{string.Join(',', xkwKnows)}]鑼冨洿鍐." + // $"杈撳嚭鏍煎紡 json瀛楃涓 瀵硅薄鏍煎紡{fileNameResFormat}"; + var rCaptionArr = string.Join(',', captionsArr + .Where((s,i)=>i%3==0) + .Take((int)(captionsArr?.Length??0 / 2.2)) + .Select(s => s.Text)); - var fileNamePostMessages = title + - " 杩欐槸涓鍫傝鐨勯儴鍒嗘巿璇惧瓧骞,璇蜂綘鍩轰簬瀛楀箷鍐呭甯垜鍒嗘瀽鍑鸿繖鍫傝鎵璁叉巿鐨勫唴瀹逛笌鏈鎭板綋鐨勬巿璇剧珷鑺(鍏宠仈鏈璐村垏鐨勭珷鑺,淇濈暀涓涓珷鑺!)." + + var fileNamePostMessages = + "杩欐槸涓鍫傝鐨勯儴鍒嗘巿璇惧瓧骞,璇蜂綘鍩轰簬瀛楀箷鍐呭甯垜鍒嗘瀽鍑鸿繖鍫傝鎵璁叉巿鐨勫唴瀹逛笌鏈鎭板綋鐨勬巿璇剧珷鑺(鍏宠仈鏈璐村垏鐨勭珷鑺,淇濈暀涓涓珷鑺!)." + $"绔犺妭鑼冨洿闄愬畾鍦╗{string.Join(',', xkwKnows)}]鑼冨洿鍐." + + $"浠ヤ笅鏄寘鍚椂闂寸殑瑙嗛瀛楀箷鏂囨湰銆" + + $"瀛楀箷鍒楄〃 {rCaptionArr}銆" + $"杈撳嚭鏍煎紡 json瀛楃涓 瀵硅薄鏍煎紡{fileNameResFormat}"; var fileNameInfoRes = await ChatAsync - (task, fileNamePostMessages, null);//, "deepseek-chat"); + (task, fileNamePostMessages, null); var captions = ExpandFunction.GetSpeakerCaptions(captionsArr, speakerArr); diff --git a/VideoAnalysisCore/Common/AppCommon.cs b/VideoAnalysisCore/Common/AppCommon.cs index 9317202..a903798 100644 --- a/VideoAnalysisCore/Common/AppCommon.cs +++ b/VideoAnalysisCore/Common/AppCommon.cs @@ -8,6 +8,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.Reflection.PortableExecutable; using System.Runtime.Loader; using System.Text; using System.Text.Json; @@ -414,6 +415,24 @@ namespace VideoAnalysisCore.Common public long ConfigId { get; set; } } + + + /// + /// 瀛愮郴缁熼厤缃 + /// + public class SubsystemInfo + { + public string APIUrl { get; set; } = string.Empty; + public string Token { get; set; } = string.Empty; + } + + /// + /// 瀛愮郴缁熼厤缃 + /// + public class SubsystemConfig + { + public SubsystemInfo 钃濋哺鏅哄簱 { get; set; } = new SubsystemInfo(); + } /// /// 搴旂敤绋嬪簭閰嶇疆 /// @@ -428,6 +447,10 @@ namespace VideoAnalysisCore.Common /// public AdminConfig Admin { get; set; } = new AdminConfig(); /// + /// 瀛愮郴缁 + /// + public SubsystemConfig Subsystem { get; set; } = new SubsystemConfig(); + /// /// redis /// public RedisConfig Redis { get; set; } = new RedisConfig(); diff --git a/VideoAnalysisCore/Common/DownloadFile.cs b/VideoAnalysisCore/Common/DownloadFile.cs index 04a6fb6..9ef3e88 100644 --- a/VideoAnalysisCore/Common/DownloadFile.cs +++ b/VideoAnalysisCore/Common/DownloadFile.cs @@ -12,6 +12,7 @@ using System.Threading.Tasks; using VideoAnalysisCore.Job; using VideoAnalysisCore.Model; using VideoAnalysisCore.Model.Enum; +using AlibabaCloud.SDK.Vod20170321; namespace VideoAnalysisCore.Common { @@ -24,22 +25,9 @@ namespace VideoAnalysisCore.Common public static void AddDownloadFileExpand(this IServiceCollection services, int DownloadSpeed) { DownloadFile.DownloadSpeed = DownloadSpeed; - services.AddSingleton(); - } + services.AddTransient(); - } - /// - /// - /// - public class DownloadFile - { - static DownloadConfiguration Opt { get; set; } = default!; - public static int DownloadSpeed { get; set; } = default!; - private readonly Repository videoTaskDB; - - public DownloadFile(Repository videoTaskDB) - { - Opt = new DownloadConfiguration() + DownloadFile.Opt = new DownloadConfiguration() { // 閫氬父锛屼富鏈烘敮鎸佺殑鏈澶у间负8000瀛楄妭锛岄粯璁ゅ兼槸8000 BufferBlockSize = 10240, @@ -91,7 +79,23 @@ namespace VideoAnalysisCore.Common //} } }; + } + + } + /// + /// + /// + public class DownloadFile + { + public static DownloadConfiguration Opt { get; set; } = default!; + public static int DownloadSpeed { get; set; } = default!; + private readonly Repository videoTaskDB; + private readonly Client vodClient; + + public DownloadFile(Repository videoTaskDB, Client vodClient) + { this.videoTaskDB = videoTaskDB; + this.vodClient = vodClient; } // 鏍规嵁 Content-Type 鏄犲皠鏂囦欢鍚庣紑 @@ -122,11 +126,35 @@ namespace VideoAnalysisCore.Common { var taskId = long.Parse(task); //鑾峰彇璧勬簮鏂囦欢 鍦板潃 - var taskInfo =await videoTaskDB.AsQueryable() + var taskInfo = await videoTaskDB.AsQueryable() .Where(s => s.Id == taskId).FirstAsync(); if (taskInfo is null || string.IsNullOrEmpty(taskInfo.MediaName) || taskInfo.MediaName.Contains("鏁欑爺")) throw new Exception($"浠诲姟涓簄ull/鏄暀鐮旇棰/娌℃湁瑙嗛璇剧▼鍚嶇О"); var fileUrl = taskInfo.MediaUrl; + if (string.IsNullOrEmpty(fileUrl)) + { + switch (taskInfo.Type) + { + case TaskTypeEnum.钃濋哺鏅哄簱_瑙嗛鍒嗘: + case TaskTypeEnum.钃濋哺鏅哄簱_涓亴瑙嗛鍒嗘: + + var videoInfo = await vodClient.GetPlayInfoAsync(new AlibabaCloud.SDK.Vod20170321.Models.GetPlayInfoRequest() + { + VideoId = taskInfo.TagId, + Formats = "mp4", + OutputType = "cdn", + AuthTimeout = 3600 * 24 * 12, + }); + if (videoInfo is null || videoInfo.StatusCode != 200 && !videoInfo.Body.PlayInfoList.PlayInfo.Any()) + throw new Exception($"{DateTime.Now} 瑙嗛璁㈤槄=>鑾峰彇闃块噷浜戣棰戜俊鎭け璐 VideoCode {taskInfo.TagId} StatusCode {videoInfo?.StatusCode}"); + fileUrl = videoInfo.Body.PlayInfoList.PlayInfo.First().PlayURL; + break; + case TaskTypeEnum.鏁欑爺浼氳_瑙嗛鍒嗘瀽: + break; + default: + break; + } + } if (string.IsNullOrEmpty(fileUrl)) throw new Exception($"浠诲姟id[{task}] 璧勬簮鍦板潃鏃犳晥 {fileUrl}"); diff --git a/VideoAnalysisCore/Job/NodePackageJob.cs b/VideoAnalysisCore/Job/NodePackageJob.cs new file mode 100644 index 0000000..852dc1e --- /dev/null +++ b/VideoAnalysisCore/Job/NodePackageJob.cs @@ -0,0 +1,77 @@ +锘縰sing AlibabaCloud.SDK.Vod20170321; +using Coravel.Invocable; +using Microsoft.AspNetCore.Http; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http.Json; +using System.Reflection; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using UserCenter.Model.Enum; +using VideoAnalysisCore.Common; +using VideoAnalysisCore.Model; +using VideoAnalysisCore.Model.Dto; +using VideoAnalysisCore.Model.钃濋哺鏅哄簱; +using Yitter.IdGenerator; + +namespace VideoAnalysisCore.Job +{ + /// + /// [钃濋哺鏅哄簱] 鏌ユ壘鏂囦欢鍖呮湭澶勭悊鐨勮棰 + /// + public class NodePackageJob : IInvocable + { + /// + /// 姣忎釜鎵弿鏂囦欢鍖呮瘡娆″彇鍑簕20}涓 + /// + private readonly int TopLength = 20; + private readonly Repository nodePackageInfoDB; + private readonly Repository attachmentsDB; + private readonly Repository videoTaskDB; + public NodePackageJob(Repository videoTaskDB, + Repository nodePackageInfoDB, Repository videotaskDB) + { + this.attachmentsDB = videoTaskDB; + this.nodePackageInfoDB = nodePackageInfoDB; + this.videoTaskDB = videotaskDB; + } + public async Task Invoke() + { + Console.WriteLine($"{DateTime.Now} Invoke=>鏂囦欢鍖呬换鍔"); + + var taskArr = await nodePackageInfoDB.AsQueryable() + .Where(s => s.SuccessTime == null) + .ToArrayAsync(); + var videoIdArr = await videoTaskDB.AsQueryable() + .Where(s => s.EndTime != null) + .Select(s => s.TagId) + .ToArrayAsync(); + var postData = new List(); + foreach (var item in taskArr) + { + if (videoIdArr.Contains(item.VideoCode)) + { + postData.Add(item); + item.SuccessTime = DateTime.Now; + } + } + Console.WriteLine($"{DateTime.Now} Invoke=>鏂囦欢鍖呬换鍔 宸插畬鎴愪换鍔″洖璋 鏁伴噺{postData.Count}"); + if (postData.Count() == 0) + return; + var responseMessage = await new HttpClient() + .PostAsJsonAsync(AppCommon.Config.Subsystem.钃濋哺鏅哄簱.APIUrl + "/api/callback/platform/videosAnalyze", postData); + if (responseMessage.IsSuccessStatusCode) + { + var res = await responseMessage.Content.ReadAsStringAsync(); + Console.WriteLine($"{DateTime.Now} Invoke=>鏂囦欢鍖呬换鍔 鍥炶皟缁撴灉 {res}"); + + await nodePackageInfoDB.AsUpdateable(postData) + .UpdateColumns(it => new { it.SuccessTime }) + .ExecuteCommandAsync(); + } + } + } +} diff --git a/VideoAnalysisCore/Job/NodeSubscriptionJob.cs b/VideoAnalysisCore/Job/NodeSubscriptionJob.cs index 2a7fc83..c7a20cd 100644 --- a/VideoAnalysisCore/Job/NodeSubscriptionJob.cs +++ b/VideoAnalysisCore/Job/NodeSubscriptionJob.cs @@ -1,5 +1,4 @@ -锘縰sing AlibabaCloud.SDK.Vod20170321; -using Coravel.Invocable; +锘縰sing Coravel.Invocable; using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; @@ -28,13 +27,11 @@ namespace VideoAnalysisCore.Job private readonly Repository nodesubscriptionDB; private readonly Repository attachmentsDB; private readonly Repository videotaskDB; - private readonly Client vodClient; - public NodeSubscriptionJob(Repository videoTaskDB, Repository nodesubscriptionDB, Repository videotaskDB, Client vodClient) + public NodeSubscriptionJob(Repository videoTaskDB, Repository nodesubscriptionDB, Repository videotaskDB) { this.attachmentsDB = videoTaskDB; this.nodesubscriptionDB = nodesubscriptionDB; this.videotaskDB = videotaskDB; - this.vodClient = vodClient; } public async Task Invoke() { @@ -81,15 +78,6 @@ namespace VideoAnalysisCore.Job var videos = new List(data.Count); foreach (var s in data) { - var videoInfo = await vodClient.GetPlayInfoAsync(new AlibabaCloud.SDK.Vod20170321.Models.GetPlayInfoRequest() - { - VideoId = s.VideoCode, Formats="mp4",OutputType = "cdn", AuthTimeout = 3600 * 24 * 3, - }); - if (videoInfo is null || videoInfo.StatusCode != 200 && !videoInfo.Body.PlayInfoList.PlayInfo.Any()) - { - Console.WriteLine($"{DateTime.Now} 瑙嗛璁㈤槄=>鑾峰彇闃块噷浜戣棰戜俊鎭け璐 VideoCode {s.VideoCode} StatusCode {videoInfo?.StatusCode}"); - continue; - } videos.Add(new VideoTask() { Id = YitIdHelper.NextId(), @@ -99,7 +87,7 @@ namespace VideoAnalysisCore.Job Subject = item.Subject, Tag = item.NodeId.ToString(), TagId = s.VideoCode, - MediaUrl = videoInfo.Body.PlayInfoList.PlayInfo.First().PlayURL, + MediaUrl = string.Empty, MediaName = s.Name }); } diff --git a/VideoAnalysisCore/Model/NodePackageInfo.cs b/VideoAnalysisCore/Model/NodePackageInfo.cs new file mode 100644 index 0000000..96b4785 --- /dev/null +++ b/VideoAnalysisCore/Model/NodePackageInfo.cs @@ -0,0 +1,61 @@ +锘縰sing AntDesign; +using SqlSugar; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Net; +using UserCenter.Model.Enum; +using VideoAnalysisCore.AICore.SherpaOnnx; +using VideoAnalysisCore.Model.Enum; +using VideoAnalysisCore.Model.Interface; +using Whisper.net; + +namespace VideoAnalysisCore.Model +{ + /// + /// [钃濋哺鏅哄簱]鏂囦欢鑺傜偣璁㈤槄 + /// + [SugarTable("nodepackageinfo")] + public class NodePackageInfo : IDB + { + /// + /// Id + /// + [SugarColumn(IsPrimaryKey = true)] + [DisplayName("缂栧彿")] + public long Id { get; set; } + /// + /// 鏂囦欢鑺傜偣Id + /// + [DisplayName("鏂囦欢鑺傜偣Id"), Required] + public long NodeId { get; set; } + /// + /// 鏂囦欢鑺傜偣瀛樺偍ID + /// + [DisplayName("鏂囦欢鑺傜偣瀛樺偍ID"), Required] + [SugarColumn(Length = 32)] + public string VideoCode { get; set; } + + /// + /// 褰曟挱鍐呭缂栧彿 + /// + public long StructurePageContentId { get; set; } + + /// + /// 绱犳潗ID + /// + public long MaterialId { get; set; } + /// + /// 瀹屾垚鏃堕棿 + /// + [SugarColumn(IsNullable = true)] + public DateTime? SuccessTime { get; set; } + + /// + /// 鍒涘缓鏃堕棿 + /// + [DisplayName("鍒涘缓鏃堕棿")] + public DateTime CreateTime { get; set; } =DateTime.Now; + + } +}