diff --git a/Controllers/ConfigController.cs b/Controllers/ConfigController.cs index 114b92e..e91bcf8 100644 --- a/Controllers/ConfigController.cs +++ b/Controllers/ConfigController.cs @@ -148,7 +148,7 @@ namespace dy.net.Controllers [AllowAnonymous] public async Task IsInit() { - var init= await dyCookieService.IsInit(); + var init = await dyCookieService.IsInit(); return ApiResult.Success(init); } @@ -179,7 +179,7 @@ namespace dy.net.Controllers { dyUserCookies.Id = IdGener.GetLong().ToString(); - if(string.IsNullOrWhiteSpace(dyUserCookies.SavePath)) + if (string.IsNullOrWhiteSpace(dyUserCookies.SavePath)) { return ApiResult.Fail("收藏存储路径不能为空"); } @@ -221,10 +221,10 @@ namespace dy.net.Controllers public async Task GetAppPort() { //return ApiResult.Success(10105); - return ApiResult.Success(string.IsNullOrWhiteSpace(Appsettings.Get("appPort"))?10101: Convert.ToInt32(Appsettings.Get("appPort"))); + return ApiResult.Success(string.IsNullOrWhiteSpace(Appsettings.Get("appPort")) ? 10101 : Convert.ToInt32(Appsettings.Get("appPort"))); } - + /// @@ -292,7 +292,7 @@ namespace dy.net.Controllers var data = commonService.GetConfig(); return ApiResult.Success(data); } - + [HttpPost("UpdateConfig")] public async Task UpdateConfig(AppConfig config) @@ -350,15 +350,15 @@ namespace dy.net.Controllers { var deploy = Appsettings.Get("deploy"); - if(string.IsNullOrWhiteSpace(deploy)) + if (string.IsNullOrWhiteSpace(deploy)) { return await GetDockerTagVersions(); } else { - if(deploy== "fn")//飞牛 + if (deploy == "fn")//飞牛 { - return ApiResult.Success(new List { "beta_"+Appsettings.Get("fnVersion") }); + return ApiResult.Success(new List { "beta_" + Appsettings.Get("fnVersion") }); } else { @@ -366,7 +366,7 @@ namespace dy.net.Controllers } } - + } private static async Task GetDockerTagVersions() @@ -387,107 +387,50 @@ namespace dy.net.Controllers } } + /// + /// 查询mp3目录下有没有音频文件 + /// + /// + [HttpGet("mp3List")] + public async Task GetExistMps() + { + var path = Path.Combine(AppContext.BaseDirectory, "mp3"); + if (Directory.Exists(path)) + { + var audioFiles = Directory.GetFiles(path); - ///// - ///// 上传音频文件接口 - ///// - ///// 要上传的音频文件 - ///// 上传结果 - //[HttpPost("UploadAudio")] - //public IActionResult UploadAudio(IFormFile file) - //{ - // // 1. 验证文件是否为空 - // if (file == null || file.Length == 0) - // { - // return BadRequest(new { success = false, message = "请选择要上传的音频文件" }); - // } - - // try - // { - // // 2. 验证文件大小 - // if (file.Length > _maxFileSize) - // { - // return BadRequest(new { success = false, message = $"文件大小超过限制(最大允许 {_maxFileSize / 1024 / 1024}MB)" }); - // } - - // // 3. 获取文件扩展名并验证 - // var fileExtension = Path.GetExtension(file.FileName).ToLower(); - // if (!_allowedAudioExtensions.Contains(fileExtension)) - // { - // return BadRequest(new - // { - // success = false, - // message = $"不支持的音频格式,仅允许:{string.Join(", ", _allowedAudioExtensions)}" - // }); - // } - - // // 4. 验证 MIME 类型(可选但推荐,防止扩展名伪造) - // var contentType = file.ContentType.ToLower(); - // if (!_allowedAudioMimeTypes.Contains(contentType)) - // { - // return BadRequest(new - // { - // success = false, - // message = "文件类型验证失败,请上传合法的音频文件" - // }); - // } - - // //先删除 - // var uploadMp3 = Directory.GetFiles(Path.Combine(AppContext.BaseDirectory, "mp3")) - // .Where(filePath => Path.GetFileNameWithoutExtension(filePath) != "silent_10") - // .FirstOrDefault(); - // if (!string.IsNullOrWhiteSpace(uploadMp3) && System.IO.File.Exists(uploadMp3)) - // { - // System.IO.File.Delete(uploadMp3); - // } - - - // // 5. 生成唯一文件名(避免重复) - // var uniqueFileName = $"dysync_default{fileExtension}"; - - // // 6. 定义文件保存路径(建议配置在 appsettings.json 中,这里简化处理) - // var uploadPath = Path.Combine(AppContext.BaseDirectory, "mp3"); - - // // 确保目录存在 - // if (!Directory.Exists(uploadPath)) - // { - // Directory.CreateDirectory(uploadPath); - // } - - // // 7. 保存文件 - // var filePath = Path.Combine(uploadPath, uniqueFileName); - - // if (System.IO.File.Exists(filePath)) - // { - // System.IO.File.Delete(filePath); - // } - // using (var stream = new FileStream(filePath, FileMode.Create)) - // { - // file.CopyTo(stream); - // } - - // // 8. 返回成功结果(可根据需求返回文件路径/URL 等) - // return ApiResult.Success(new { fileName = uniqueFileName, filePath }); - // } - // catch (Exception ex) - // { - // // 捕获异常并返回错误信息 - // return ApiResult.Fail(ex.Message); - // } - //} - //[AllowAnonymous] - //[HttpGet("defaudio")] - //public async Task GetDefaultAudioUrl() - //{ - // var uploadMp3 = Directory.GetFiles(Path.Combine(AppContext.BaseDirectory, "mp3")) - // .Where(filePath => Path.GetFileNameWithoutExtension(filePath) != "silent_10") - // .FirstOrDefault(); - // if (!string.IsNullOrWhiteSpace(uploadMp3) && System.IO.File.Exists(uploadMp3)) - // { - // return File(System.IO.File.ReadAllBytes(uploadMp3), "application/octet-stream", Path.GetFileName(uploadMp3)); - // } - // return ApiResult.Fail("未上传音频"); - //} + var fileNames = audioFiles.Select(f => new {filename= Path.GetFileName(f) }).Where(x=>x.filename!= "silent_10.mp3").ToList(); + return ApiResult.Success(fileNames); + } + else + { + return ApiResult.Fail("没有找到默认音频文件"); + } + } + /// + /// 播放音频流 + /// + /// + /// + [AllowAnonymous] + [HttpGet("getmp3")] + public async Task GetMp3([FromQuery] string name) + { + var path = Path.Combine(AppContext.BaseDirectory, "mp3", name); + if (System.IO.File.Exists(path)) + { + //返回mp3文件流 + var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read); + return new FileStreamResult(fileStream, "audio/mpeg") + { + FileDownloadName = name + }; + } + else + { + return ApiResult.Fail("文件不存在"); + } + } } } diff --git a/Controllers/VideoController.cs b/Controllers/VideoController.cs index 8b7166d..7af39c8 100644 --- a/Controllers/VideoController.cs +++ b/Controllers/VideoController.cs @@ -5,6 +5,7 @@ using dy.net.utils; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System; +using System.Security.Cryptography; namespace dy.net.Controllers { @@ -174,7 +175,6 @@ namespace dy.net.Controllers /// /// /// - [HttpPost("redown")] public async Task ReDownload(ReDownViedoDto dto) { @@ -195,6 +195,27 @@ namespace dy.net.Controllers } } } + + /// + /// 批量删除 + /// + /// + /// + [HttpPost("vdelete/batch")] + public async Task BathRealDelete(ReDownViedoDto dto) + { + var result = await douyinVideoService.RealDeleteVideos(dto.Ids); + if (result) + { + return ApiResult.Success(true); + } + else + { + return ApiResult.Fail("错误"); + } + } + + /// /// 删除视频-不再下载 /// @@ -209,34 +230,15 @@ namespace dy.net.Controllers } else { - var video = await douyinVideoService.GetById(vid); - if (video == null) + var res = await douyinVideoService.RealDeleteVideos(new List { vid }); + if (res) { - return ApiResult.Fail("请求失败"); + return ApiResult.Success("删除成功"); } else { - var result = await douyinVideoService.ReDownloadViedoAsync(new ReDownViedoDto { Ids = new List { vid } }); - if (result) - { - //加入删除逻辑 - await douyinCommonService.AddDeleteVideo(new DouyinVideoDelete - { - ViedoId = video.AwemeId, - VideoTitle = video.VideoTitle, - VideoSavePath = video.VideoSavePath - }); - - Serilog.Log.Debug($"前面的日志,你错了,这条视频是永久删除..哈哈--{video.VideoTitle}"); - return ApiResult.Success(); - } - else - { - return ApiResult.Fail(); - } - + return ApiResult.Fail("删除失败"); } - } } @@ -249,6 +251,35 @@ namespace dy.net.Controllers { return ApiResult.Success(await douyinCommonService.GetDouyinDeleteVideos()); } + /// + /// 根据博主id删除博主所有视频 + /// + /// + /// + [HttpGet("vdelete/byauthor/{uperUid}")] + public async Task DeleteByAuthor([FromRoute] string uperUid) + { + var videos = await douyinVideoService.GetByAuthorId(uperUid); + if (videos != null && videos.Any()) + { + var res = await douyinVideoService.RealDeleteVideos(videos.Select(x => x.Id).ToList()); + if (res) + { + return ApiResult.Success("删除成功"); + } + else + { + return ApiResult.Fail("删除失败"); + } + } + return ApiResult.Fail("未找到该博主视频"); + } + + //private async Task<(bool flowControl, IActionResult value)> BatchDeleteVideos(List videos) + //{ + + // return (flowControl: true, value: null); + //} /// /// 查询最新N条数据 diff --git a/Properties/PublishProfiles/docker.pubxml.user b/Properties/PublishProfiles/docker.pubxml.user index d7ab7cc..ddc62a7 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|2026-01-13T14:34:15.2372411Z||;True|2026-01-13T22:26:46.4522947+08:00||;True|2026-01-13T22:15:56.9735179+08:00||;True|2026-01-13T22:15:51.8250677+08:00||;False|2026-01-13T22:15:46.6608690+08:00||;True|2026-01-13T22:03:06.4683237+08:00||;False|2026-01-13T22:03:01.2036027+08:00||;True|2026-01-13T21:36:05.8776209+08:00||;True|2026-01-13T21:33:02.0766289+08:00||;False|2026-01-13T21:32:57.1976141+08:00||;True|2026-01-13T19:14:35.2519439+08:00||;True|2026-01-13T15:07:50.0836745+08:00||;False|2026-01-13T15:06:35.5929685+08:00||;True|2026-01-13T10:21:41.6012776+08:00||;True|2026-01-13T09:57:25.4788847+08:00||;True|2026-01-13T09:53:14.4900360+08:00||;True|2026-01-13T09:23:53.6465295+08:00||;True|2026-01-12T22:04:14.5886955+08:00||;False|2026-01-12T22:04:08.2008101+08:00||;True|2026-01-12T21:53:46.9947176+08:00||;True|2026-01-12T21:11:15.8358024+08:00||;True|2026-01-12T21:09:51.8663228+08:00||;True|2026-01-11T21:25:07.5052845+08:00||;False|2026-01-11T21:24:27.5744557+08:00||;True|2026-01-11T19:59:15.4734611+08:00||;False|2026-01-11T19:59:04.9543339+08:00||;True|2026-01-11T18:51:30.6649269+08:00||;True|2026-01-08T21:07:57.5094466+08:00||;True|2026-01-08T14:51:18.2266231+08:00||;True|2026-01-08T14:31:55.1137120+08:00||;True|2026-01-08T00:16:24.4451490+08:00||;True|2026-01-08T00:14:20.7430793+08:00||;True|2026-01-08T00:07:46.7228194+08:00||;True|2026-01-07T23:52:13.3290082+08:00||;True|2026-01-07T23:49:28.4838650+08:00||;True|2026-01-07T23:47:45.1936189+08:00||;True|2026-01-07T23:35:09.7818611+08:00||;True|2026-01-07T23:20:43.7462863+08:00||;True|2026-01-07T23:04:39.5140429+08:00||;False|2026-01-07T23:04:36.5367611+08:00||;True|2026-01-07T22:53:14.6013449+08:00||;True|2026-01-07T22:49:59.9549006+08:00||;True|2026-01-07T22:36:40.0254856+08:00||;False|2026-01-07T22:36:28.8275903+08:00||;True|2026-01-07T21:59:51.4355171+08:00||;True|2026-01-03T21:38:51.4307034+08:00||;True|2026-01-02T19:09:16.9668906+08:00||;False|2026-01-02T19:09:11.7496369+08:00||;True|2026-01-02T15:42:08.2215697+08:00||;True|2026-01-02T09:46:56.1654861+08:00||;True|2026-01-02T09:35:28.0211225+08:00||;True|2026-01-01T23:07:01.9022045+08:00||;False|2026-01-01T23:06:56.0537216+08:00||;True|2026-01-01T22:16:10.2974067+08:00||;True|2026-01-01T22:16:06.2123787+08:00||;False|2026-01-01T22:15:33.3626979+08:00||;True|2026-01-01T22:01:30.7161900+08:00||;True|2026-01-01T21:10:19.3664263+08:00||;True|2026-01-01T21:09:38.6071080+08:00||;True|2025-12-30T11:45:54.5543034+08:00||;True|2025-12-30T09:19:08.3178124+08:00||;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||; + True|2026-01-14T16:10:42.7288439Z||;True|2026-01-15T00:06:28.4241682+08:00||;True|2026-01-13T22:34:15.2372411+08:00||;True|2026-01-13T22:26:46.4522947+08:00||;True|2026-01-13T22:15:56.9735179+08:00||;True|2026-01-13T22:15:51.8250677+08:00||;False|2026-01-13T22:15:46.6608690+08:00||;True|2026-01-13T22:03:06.4683237+08:00||;False|2026-01-13T22:03:01.2036027+08:00||;True|2026-01-13T21:36:05.8776209+08:00||;True|2026-01-13T21:33:02.0766289+08:00||;False|2026-01-13T21:32:57.1976141+08:00||;True|2026-01-13T19:14:35.2519439+08:00||;True|2026-01-13T15:07:50.0836745+08:00||;False|2026-01-13T15:06:35.5929685+08:00||;True|2026-01-13T10:21:41.6012776+08:00||;True|2026-01-13T09:57:25.4788847+08:00||;True|2026-01-13T09:53:14.4900360+08:00||;True|2026-01-13T09:23:53.6465295+08:00||;True|2026-01-12T22:04:14.5886955+08:00||;False|2026-01-12T22:04:08.2008101+08:00||;True|2026-01-12T21:53:46.9947176+08:00||;True|2026-01-12T21:11:15.8358024+08:00||;True|2026-01-12T21:09:51.8663228+08:00||;True|2026-01-11T21:25:07.5052845+08:00||;False|2026-01-11T21:24:27.5744557+08:00||;True|2026-01-11T19:59:15.4734611+08:00||;False|2026-01-11T19:59:04.9543339+08:00||;True|2026-01-11T18:51:30.6649269+08:00||;True|2026-01-08T21:07:57.5094466+08:00||;True|2026-01-08T14:51:18.2266231+08:00||;True|2026-01-08T14:31:55.1137120+08:00||;True|2026-01-08T00:16:24.4451490+08:00||;True|2026-01-08T00:14:20.7430793+08:00||;True|2026-01-08T00:07:46.7228194+08:00||;True|2026-01-07T23:52:13.3290082+08:00||;True|2026-01-07T23:49:28.4838650+08:00||;True|2026-01-07T23:47:45.1936189+08:00||;True|2026-01-07T23:35:09.7818611+08:00||;True|2026-01-07T23:20:43.7462863+08:00||;True|2026-01-07T23:04:39.5140429+08:00||;False|2026-01-07T23:04:36.5367611+08:00||;True|2026-01-07T22:53:14.6013449+08:00||;True|2026-01-07T22:49:59.9549006+08:00||;True|2026-01-07T22:36:40.0254856+08:00||;False|2026-01-07T22:36:28.8275903+08:00||;True|2026-01-07T21:59:51.4355171+08:00||;True|2026-01-03T21:38:51.4307034+08:00||;True|2026-01-02T19:09:16.9668906+08:00||;False|2026-01-02T19:09:11.7496369+08:00||;True|2026-01-02T15:42:08.2215697+08:00||;True|2026-01-02T09:46:56.1654861+08:00||;True|2026-01-02T09:35:28.0211225+08:00||;True|2026-01-01T23:07:01.9022045+08:00||;False|2026-01-01T23:06:56.0537216+08:00||;True|2026-01-01T22:16:10.2974067+08:00||;True|2026-01-01T22:16:06.2123787+08:00||;False|2026-01-01T22:15:33.3626979+08:00||;True|2026-01-01T22:01:30.7161900+08:00||;True|2026-01-01T21:10:19.3664263+08:00||;True|2026-01-01T21:09:38.6071080+08:00||;True|2025-12-30T11:45:54.5543034+08:00||;True|2025-12-30T09:19:08.3178124+08:00||;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/Properties/PublishProfiles/fn.pubxml.user b/Properties/PublishProfiles/fn.pubxml.user index 83ea828..b34e094 100644 --- a/Properties/PublishProfiles/fn.pubxml.user +++ b/Properties/PublishProfiles/fn.pubxml.user @@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. <_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\ - True|2026-01-13T14:27:04.3807307Z||;True|2026-01-08T14:31:13.4473659+08:00||;True|2026-01-08T00:19:20.8948701+08:00||;True|2026-01-07T21:59:04.8702022+08:00||;True|2026-01-03T21:42:41.3864639+08:00||;False|2026-01-03T21:42:26.7041325+08:00||;True|2026-01-02T09:32:11.1396877+08:00||;True|2026-01-01T23:30:38.0205783+08:00||;True|2026-01-01T23:29:35.2877898+08:00||;False|2026-01-01T23:27:39.5930556+08:00||;False|2026-01-01T23:24:52.0996222+08:00||;False|2026-01-01T23:24:09.0444840+08:00||;False|2026-01-01T23:24:06.1610789+08:00||;False|2026-01-01T23:24:03.3178410+08:00||;False|2026-01-01T23:22:56.2224992+08:00||;False|2026-01-01T23:22:47.8246988+08:00||;False|2026-01-01T23:22:43.2890820+08:00||;True|2026-01-01T23:21:03.6027351+08:00||;True|2026-01-01T23:07:57.5938094+08:00||;True|2025-12-29T18:55:45.8262096+08:00||;True|2025-12-28T00:21:04.1648410+08:00||;True|2025-12-28T00:18:49.2137559+08:00||;True|2025-12-28T00:14:18.1456892+08:00||;True|2025-12-28T00:11:06.6645248+08:00||;False|2025-12-28T00:10:49.4906020+08:00||;True|2025-12-27T23:51:57.6426264+08:00||;True|2025-12-27T23:40:08.4783210+08:00||;True|2025-12-27T14:59:32.0605406+08:00||;False|2025-12-27T14:59:21.2076690+08:00||;True|2025-12-27T12:58:06.9934830+08:00||;True|2025-12-27T12:51:45.3402320+08:00||;True|2025-12-27T12:45:49.9795040+08:00||;True|2025-12-27T12:42:13.9395619+08:00||;True|2025-12-27T11:32:35.8851241+08:00||;True|2025-12-27T11:32:11.1199261+08:00||;True|2025-12-27T11:31:34.3939619+08:00||;True|2025-12-26T22:39:54.4903900+08:00||;False|2025-12-26T22:39:38.9956198+08:00||;True|2025-12-26T13:29:16.3817938+08:00||;True|2025-12-26T13:13:27.1756564+08:00||;True|2025-12-26T13:12:27.5681845+08:00||;True|2025-12-25T21:53:39.9851108+08:00||;True|2025-12-25T21:14:06.5238213+08:00||;True|2025-12-25T14:05:40.5153425+08:00||;True|2025-12-25T00:52:42.0632072+08:00||;False|2025-12-25T00:52:36.5033522+08:00||;True|2025-12-24T20:47:03.4244585+08:00||;True|2025-12-24T20:38:49.1905853+08:00||;True|2025-12-24T20:38:18.7336590+08:00||;True|2025-12-24T20:33:27.1126773+08:00||;True|2025-12-24T20:32:29.2799273+08:00||;True|2025-12-23T20:55:43.6793723+08:00||;True|2025-12-23T20:54:55.9960612+08:00||;True|2025-12-21T13:23:11.0272294+08:00||;True|2025-12-21T13:22:56.8339811+08:00||;False|2025-12-21T13:22:50.2395530+08:00||;True|2025-12-21T13:11:36.6129339+08:00||;True|2025-12-21T12:15:18.4086793+08:00||;True|2025-12-21T12:15:11.4448190+08:00||;True|2025-12-20T14:05:36.6224332+08:00||;False|2025-12-20T14:05:28.6359828+08:00||;True|2025-12-20T13:58:30.1641630+08:00||;True|2025-12-20T13:55:16.1759645+08:00||;True|2025-12-20T12:16:22.5224516+08:00||;True|2025-12-19T09:50:16.9517676+08:00||;True|2025-12-19T09:49:47.0871734+08:00||;False|2025-12-19T09:49:36.7638757+08:00||;True|2025-12-19T09:35:13.2489248+08:00||;True|2025-12-14T19:09:59.9031104+08:00||;True|2025-12-13T21:21:10.0022707+08:00||;True|2025-12-11T22:07:16.6229994+08:00||;True|2025-12-11T22:05:56.7363206+08:00||;True|2025-12-11T22:01:07.5862406+08:00||;True|2025-12-11T22:00:43.5796594+08:00||;True|2025-12-08T21:20:37.8369271+08:00||;False|2025-12-08T21:20:21.1646252+08:00||;True|2025-12-08T20:51:50.6845619+08:00||;True|2025-12-08T16:43:45.2425324+08:00||;False|2025-12-08T16:42:23.0308163+08:00||;True|2025-12-08T16:41:52.4103868+08:00||;True|2025-12-08T16:41:49.8972006+08:00||;False|2025-12-08T16:41:39.5343442+08:00||;True|2025-12-08T12:40:19.2430740+08:00||;True|2025-12-08T12:02:30.6005542+08:00||;True|2025-12-08T11:34:29.6673185+08:00||;False|2025-12-08T11:30:56.2857042+08:00||;True|2025-12-08T10:52:43.7427594+08:00||;True|2025-12-08T07:05:03.2845531+08:00||;True|2025-12-07T23:02:10.0037815+08:00||;True|2025-12-07T22:48:25.7859648+08:00||;True|2025-12-07T20:49:13.6683281+08:00||;True|2025-12-07T08:47:30.1236366+08:00||;True|2025-12-06T13:14:32.4410202+08:00||;True|2025-12-06T13:07:29.7182102+08:00||;True|2025-12-06T13:05:46.2855366+08:00||;False|2025-12-06T13:05:40.3550904+08:00||;True|2025-12-06T13:03:47.8773880+08:00||;True|2025-12-06T13:03:28.9521030+08:00||;True|2025-12-05T23:11:51.5026151+08:00||;True|2025-12-05T12:46:26.1415079+08:00||; + True|2026-01-14T16:36:39.6208221Z||;True|2026-01-15T00:36:29.1250549+08:00||;False|2026-01-15T00:36:18.2658521+08:00||;True|2026-01-13T22:27:04.3807307+08:00||;True|2026-01-08T14:31:13.4473659+08:00||;True|2026-01-08T00:19:20.8948701+08:00||;True|2026-01-07T21:59:04.8702022+08:00||;True|2026-01-03T21:42:41.3864639+08:00||;False|2026-01-03T21:42:26.7041325+08:00||;True|2026-01-02T09:32:11.1396877+08:00||;True|2026-01-01T23:30:38.0205783+08:00||;True|2026-01-01T23:29:35.2877898+08:00||;False|2026-01-01T23:27:39.5930556+08:00||;False|2026-01-01T23:24:52.0996222+08:00||;False|2026-01-01T23:24:09.0444840+08:00||;False|2026-01-01T23:24:06.1610789+08:00||;False|2026-01-01T23:24:03.3178410+08:00||;False|2026-01-01T23:22:56.2224992+08:00||;False|2026-01-01T23:22:47.8246988+08:00||;False|2026-01-01T23:22:43.2890820+08:00||;True|2026-01-01T23:21:03.6027351+08:00||;True|2026-01-01T23:07:57.5938094+08:00||;True|2025-12-29T18:55:45.8262096+08:00||;True|2025-12-28T00:21:04.1648410+08:00||;True|2025-12-28T00:18:49.2137559+08:00||;True|2025-12-28T00:14:18.1456892+08:00||;True|2025-12-28T00:11:06.6645248+08:00||;False|2025-12-28T00:10:49.4906020+08:00||;True|2025-12-27T23:51:57.6426264+08:00||;True|2025-12-27T23:40:08.4783210+08:00||;True|2025-12-27T14:59:32.0605406+08:00||;False|2025-12-27T14:59:21.2076690+08:00||;True|2025-12-27T12:58:06.9934830+08:00||;True|2025-12-27T12:51:45.3402320+08:00||;True|2025-12-27T12:45:49.9795040+08:00||;True|2025-12-27T12:42:13.9395619+08:00||;True|2025-12-27T11:32:35.8851241+08:00||;True|2025-12-27T11:32:11.1199261+08:00||;True|2025-12-27T11:31:34.3939619+08:00||;True|2025-12-26T22:39:54.4903900+08:00||;False|2025-12-26T22:39:38.9956198+08:00||;True|2025-12-26T13:29:16.3817938+08:00||;True|2025-12-26T13:13:27.1756564+08:00||;True|2025-12-26T13:12:27.5681845+08:00||;True|2025-12-25T21:53:39.9851108+08:00||;True|2025-12-25T21:14:06.5238213+08:00||;True|2025-12-25T14:05:40.5153425+08:00||;True|2025-12-25T00:52:42.0632072+08:00||;False|2025-12-25T00:52:36.5033522+08:00||;True|2025-12-24T20:47:03.4244585+08:00||;True|2025-12-24T20:38:49.1905853+08:00||;True|2025-12-24T20:38:18.7336590+08:00||;True|2025-12-24T20:33:27.1126773+08:00||;True|2025-12-24T20:32:29.2799273+08:00||;True|2025-12-23T20:55:43.6793723+08:00||;True|2025-12-23T20:54:55.9960612+08:00||;True|2025-12-21T13:23:11.0272294+08:00||;True|2025-12-21T13:22:56.8339811+08:00||;False|2025-12-21T13:22:50.2395530+08:00||;True|2025-12-21T13:11:36.6129339+08:00||;True|2025-12-21T12:15:18.4086793+08:00||;True|2025-12-21T12:15:11.4448190+08:00||;True|2025-12-20T14:05:36.6224332+08:00||;False|2025-12-20T14:05:28.6359828+08:00||;True|2025-12-20T13:58:30.1641630+08:00||;True|2025-12-20T13:55:16.1759645+08:00||;True|2025-12-20T12:16:22.5224516+08:00||;True|2025-12-19T09:50:16.9517676+08:00||;True|2025-12-19T09:49:47.0871734+08:00||;False|2025-12-19T09:49:36.7638757+08:00||;True|2025-12-19T09:35:13.2489248+08:00||;True|2025-12-14T19:09:59.9031104+08:00||;True|2025-12-13T21:21:10.0022707+08:00||;True|2025-12-11T22:07:16.6229994+08:00||;True|2025-12-11T22:05:56.7363206+08:00||;True|2025-12-11T22:01:07.5862406+08:00||;True|2025-12-11T22:00:43.5796594+08:00||;True|2025-12-08T21:20:37.8369271+08:00||;False|2025-12-08T21:20:21.1646252+08:00||;True|2025-12-08T20:51:50.6845619+08:00||;True|2025-12-08T16:43:45.2425324+08:00||;False|2025-12-08T16:42:23.0308163+08:00||;True|2025-12-08T16:41:52.4103868+08:00||;True|2025-12-08T16:41:49.8972006+08:00||;False|2025-12-08T16:41:39.5343442+08:00||;True|2025-12-08T12:40:19.2430740+08:00||;True|2025-12-08T12:02:30.6005542+08:00||;True|2025-12-08T11:34:29.6673185+08:00||;False|2025-12-08T11:30:56.2857042+08:00||;True|2025-12-08T10:52:43.7427594+08:00||;True|2025-12-08T07:05:03.2845531+08:00||;True|2025-12-07T23:02:10.0037815+08:00||;True|2025-12-07T22:48:25.7859648+08:00||;True|2025-12-07T20:49:13.6683281+08:00||;True|2025-12-07T08:47:30.1236366+08:00||;True|2025-12-06T13:14:32.4410202+08:00||;True|2025-12-06T13:07:29.7182102+08:00||;True|2025-12-06T13:05:46.2855366+08:00||;False|2025-12-06T13:05:40.3550904+08:00||;True|2025-12-06T13:03:47.8773880+08:00||; diff --git a/README.md b/README.md index dc65154..0732fd2 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,8 @@ services: volumes: # 基础路径映射 - /vol2/1000/media/dysync/db:/app/db # 数据库目录(持久化配置和同步记录) + # 默认音频目录(用于图文和动态视频合成时遇到因版权无法下载的音频时用作合成视频所需要的音频) + - /vol2/1000/media/dysync/mp3:/app/mp3 - /vol2/1000/media/dysync/dy1/coll:/app/collect # 个人收藏视频目录 - /vol2/1000/media/dysync/dy1/fav:/app/favorite # 个人喜欢视频目录 - /vol2/1000/media/dysync/dy1/imgv:/app/images # 图文视频目录 diff --git a/app/index.html b/app/index.html index 45e638e..302ff6d 100644 --- a/app/index.html +++ b/app/index.html @@ -4,114 +4,140 @@ - 抖小云 +
- - -
- -
loading ...
- -
-
首次加载可能较慢,请耐心等待...
+ + +
+
+ - - - \ No newline at end of file diff --git a/app/src/pages/followd/index.vue b/app/src/pages/followd/index.vue index f7c4333..fda24cd 100644 --- a/app/src/pages/followd/index.vue +++ b/app/src/pages/followd/index.vue @@ -54,9 +54,9 @@ {{ item.uperName }} 非关注 - - - + + + @@ -842,7 +842,7 @@ const goDouyinUp = (item) => { height: 24px !important; width: 24px !important; color: #ef4444 !important; - border-radius: 4px !important; + border-radius: 50% !important; transition: all 0.2s ease; vertical-align: middle; } diff --git a/app/src/pages/mobile/MobileDashboard.vue b/app/src/pages/mobile/MobileDashboard.vue index 9d38145..4bfecb4 100644 --- a/app/src/pages/mobile/MobileDashboard.vue +++ b/app/src/pages/mobile/MobileDashboard.vue @@ -185,23 +185,24 @@ - +
-
-

- -
+ + +
+

加载视频中...

+
@@ -211,15 +212,24 @@

视频加载失败

- + +
+ + + +
- \ No newline at end of file diff --git a/app/src/pages/workplace/RecordTable.vue b/app/src/pages/workplace/RecordTable.vue index 6bac008..f064df0 100644 --- a/app/src/pages/workplace/RecordTable.vue +++ b/app/src/pages/workplace/RecordTable.vue @@ -44,18 +44,24 @@ - 分享选中 + 批量分享 - + - 重新同步 + 重新下载 + + + + 批量删除 - - + + + + 已删除 @@ -79,9 +85,9 @@ - + @@ -639,9 +645,9 @@ watch( // -------------------------- 批量操作和操作列事件 -------------------------- /** 批量删除事件 */ -const handleBatchDelete = () => { +const handleBatchSync = () => { if (selectedRowKeys.value.length === 0) { - message.warning('请先选择要删除的视频'); + message.warning('请先选择要重新下载的视频'); return; } @@ -657,6 +663,24 @@ const handleBatchDelete = () => { }); }; +const handleBatchDelete = () => { + if (selectedRowKeys.value.length === 0) { + message.warning('请先选择要彻底删除的视频'); + return; + } + + Modal.confirm({ + title: '确认删除这些下载的视频吗', + content: `您确定要彻底下删除选中的 ${selectedRowKeys.value.length} 条视频数据吗?`, + okText: '确认彻底删除', + cancelText: '取消', + okType: 'danger', + onOk: async () => { + deleteBatch({ ids: selectedRowKeys.value }); + }, + }); +}; + const deleteVideoShow = ref(false); const handShowDeleteVideos = () => { deleteVideoShow.value = true; @@ -704,6 +728,35 @@ const reDownload = (param: object) => { } }; +const deleteBatch = (param: object) => { + try { + loading.value = true; + console.log('执行批量删除,选中ID:', selectedRowKeys.value); + + useApiStore() + .BathRealDelete(param) + .then((res) => { + loading.value = false; + if (res.code === 0) { + message.success('删除成功,以后都不会下载了哦,你自己选的'); + // 刷新数据并清空选中状态 + GetRecords(); + selectedRowKeys.value = []; + } else { + message.warning(res.message || '获取数据失败'); + } + }) + .catch((error) => { + loading.value = false; + }); + } catch (error) { + console.error('批量删除失败:', error); + message.error('删除失败,请稍后重试'); + } finally { + loading.value = false; + } +}; + /** 重新下载事件 */ const handleReDownload = (record: DataItem) => { if (!record.id) { diff --git a/app/src/pages/workplace/statics.vue b/app/src/pages/workplace/statics.vue index 21f83f0..1ab9af3 100644 --- a/app/src/pages/workplace/statics.vue +++ b/app/src/pages/workplace/statics.vue @@ -156,7 +156,7 @@
-
+
@@ -209,7 +209,7 @@