From 66bd44137898bfa364907e432ed588b5a8f94c95 Mon Sep 17 00:00:00 2001 From: jianzhichu Date: Tue, 30 Dec 2025 09:27:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E6=97=A0=E6=95=88=E7=9A=84?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E5=90=8C=E6=AD=A5=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controllers/VideoController.cs | 11 ++++++++ Properties/PublishProfiles/docker.pubxml.user | 2 +- appsettings.json | 2 +- dto/DeleteInvalidVideoDto.cs | 9 +++++++ service/DouyinVideoService.cs | 27 +++++++++++++++++++ 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 dto/DeleteInvalidVideoDto.cs diff --git a/Controllers/VideoController.cs b/Controllers/VideoController.cs index a5e8104..8d5760f 100644 --- a/Controllers/VideoController.cs +++ b/Controllers/VideoController.cs @@ -259,5 +259,16 @@ namespace dy.net.Controllers { return ApiResult.Success(await douyinVideoService.GetLastSyncTop(top)); } + + /// + /// 删除无效视频记录 + /// + /// + [HttpGet("removeInvalid")] + public async Task RemoveInvalidVideo() + { + var data = await douyinVideoService.DeleteInvalidVideo(); + return Ok(data); + } } } diff --git a/Properties/PublishProfiles/docker.pubxml.user b/Properties/PublishProfiles/docker.pubxml.user index 86d64df..064ad1f 100644 --- a/Properties/PublishProfiles/docker.pubxml.user +++ b/Properties/PublishProfiles/docker.pubxml.user @@ -3,7 +3,7 @@ <_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\ - True|2025-12-29T10:57:29.7032246Z||;True|2025-12-27T14:52:24.4780776+08:00||;False|2025-12-27T14:52:19.5635794+08:00||;True|2025-12-27T14:48:01.6252748+08:00||;False|2025-12-27T14:47:55.7976192+08:00||;True|2025-12-27T14:38:23.9723838+08:00||;True|2025-12-27T13:00:29.8583858+08:00||;True|2025-12-26T22:18:42.4015637+08:00||;True|2025-12-26T22:10:58.5274572+08:00||;True|2025-12-26T22:06:26.3129600+08:00||;True|2025-12-26T22:03:55.6718618+08:00||;False|2025-12-26T22:03:48.3809954+08:00||;True|2025-12-26T22:02:33.1840390+08:00||;True|2025-12-26T22:01:16.1660100+08:00||;True|2025-12-25T00:50:26.1116465+08:00||;True|2025-12-25T00:48:27.3087708+08:00||;True|2025-12-25T00:47:38.4835720+08:00||; + True|2025-12-30T01:19:08.3178124Z||;True|2025-12-29T18:57:29.7032246+08:00||;True|2025-12-27T14:52:24.4780776+08:00||;False|2025-12-27T14:52:19.5635794+08:00||;True|2025-12-27T14:48:01.6252748+08:00||;False|2025-12-27T14:47:55.7976192+08:00||;True|2025-12-27T14:38:23.9723838+08:00||;True|2025-12-27T13:00:29.8583858+08:00||;True|2025-12-26T22:18:42.4015637+08:00||;True|2025-12-26T22:10:58.5274572+08:00||;True|2025-12-26T22:06:26.3129600+08:00||;True|2025-12-26T22:03:55.6718618+08:00||;False|2025-12-26T22:03:48.3809954+08:00||;True|2025-12-26T22:02:33.1840390+08:00||;True|2025-12-26T22:01:16.1660100+08:00||;True|2025-12-25T00:50:26.1116465+08:00||;True|2025-12-25T00:48:27.3087708+08:00||;True|2025-12-25T00:47:38.4835720+08:00||; \ No newline at end of file diff --git a/appsettings.json b/appsettings.json index 4185de1..38c48d6 100644 --- a/appsettings.json +++ b/appsettings.json @@ -1,7 +1,7 @@ { "deploy": "docker", //fn,docker "dbconn": "", - "tagName": "beta_1.9.3", //arm,beta + "tagName": "beta_1.9.4", //arm,beta "dbtype": "Sqlite", "fnVersion": "1.0.0" } \ No newline at end of file diff --git a/dto/DeleteInvalidVideoDto.cs b/dto/DeleteInvalidVideoDto.cs new file mode 100644 index 0000000..5910587 --- /dev/null +++ b/dto/DeleteInvalidVideoDto.cs @@ -0,0 +1,9 @@ +namespace dy.net.dto +{ + public class DeleteInvalidVideoDto + { + public string AwId { get; set; } + public string Title { get; set; } + public string Path { get; set; } + } +} diff --git a/service/DouyinVideoService.cs b/service/DouyinVideoService.cs index defeeaf..0e3ff62 100644 --- a/service/DouyinVideoService.cs +++ b/service/DouyinVideoService.cs @@ -318,5 +318,32 @@ namespace dy.net.service return await _dyCollectVideoRepository.GetTopsOrderBySyncTime(top); } + + /// + /// 删除无效记录(记录存在,用户手动把目录下的视频删了的情况,视频记录依然存在) + /// + /// + public async Task> DeleteInvalidVideo() + { + var videos=await _dyCollectVideoRepository.GetAllAsync(); + List vList = new List(); + + List douyinVideoIds=new List(); + foreach (var v in videos) + { + if (!File.Exists(v.VideoSavePath)) + { + douyinVideoIds.Add(v.Id); + vList.Add(new DeleteInvalidVideoDto { AwId = v.AwemeId, Title = v.VideoTitle, Path = v.VideoSavePath }); + } + } + + if (douyinVideoIds.Any()) + { + await _dyCollectVideoRepository.DeleteByIdsAsync(douyinVideoIds); + } + + return vList; + } } }