From cc6906ea632096b2dd49d0a4e81e07764a092562 Mon Sep 17 00:00:00 2001 From: jianzhichu Date: Sat, 27 Dec 2025 11:44:30 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A3=9E=E7=89=9Bfpk=E6=89=93=E5=8C=85?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=B8=80=E4=B8=AA=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2=E3=80=82=E7=94=A8=E4=BA=8E=E9=A3=9E?= =?UTF-8?q?=E7=89=9Bfpk=E5=AE=89=E8=A3=85=E5=AE=8C=E6=88=90=E5=90=8E?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controllers/ConfigController.cs | 122 +++- Program.cs | 149 +++-- .../PublishProfiles/FolderProfile.pubxml | 21 - .../PublishProfiles/FolderProfile.pubxml.user | 40 -- README.md | 14 +- app/src/components/layout/HeaderActions.vue | 2 +- app/src/pages/cok/CookieTable.vue | 303 +++++----- app/src/pages/login/Login.vue | 13 +- app/src/pages/mobile/MobileDashboard.vue | 4 +- app/src/pages/set/AppSet.vue | 65 +-- app/src/router/guards.ts | 4 +- app/src/router/routes.ts | 27 +- app/src/store/coreapi.ts | 37 ++ appsettings.json | 8 +- dy.net.csproj | 29 +- dy.net.csproj.user | 2 +- extension/ServiceExtension.cs | 316 +++++------ job/DouyinBasicSyncJob.cs | 2 +- job/DouyinFollowedUsersSyncJob.cs | 11 +- model/AppConfig.cs | 5 + model/DouyinCookie.cs | 10 + repository/DouyinCookieRepository.cs | 10 +- repository/DouyinFollowRepository.cs | 27 +- service/DouyinCommonService.cs | 5 +- service/DouyinCookieService.cs | 35 +- service/DouyinFollowService.cs | 2 +- utils/ABogus.cs | 324 ----------- utils/ABogusNew.cs | 535 ------------------ utils/DouyinFileUtils.cs | 83 +++ utils/ObjectExtensions.cs | 61 -- utils/SystemStaticUtil.cs | 2 +- utils/XBogus.cs | 290 ---------- 32 files changed, 848 insertions(+), 1710 deletions(-) delete mode 100644 Properties/PublishProfiles/FolderProfile.pubxml delete mode 100644 Properties/PublishProfiles/FolderProfile.pubxml.user delete mode 100644 utils/ABogus.cs delete mode 100644 utils/ABogusNew.cs delete mode 100644 utils/ObjectExtensions.cs delete mode 100644 utils/XBogus.cs diff --git a/Controllers/ConfigController.cs b/Controllers/ConfigController.cs index fee8670..00db5ee 100644 --- a/Controllers/ConfigController.cs +++ b/Controllers/ConfigController.cs @@ -2,6 +2,7 @@ using dy.net.dto; using dy.net.model; using dy.net.service; +using dy.net.utils; using dy.sync.lib; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; @@ -126,6 +127,18 @@ namespace dy.net.Controllers var follows = await douyinFollowService.GetGroupByCookieAsync(); return ApiResult.Success(follows); } + + /// + /// 是否已经初始化了 + /// + /// + [HttpGet("isInit")] + [AllowAnonymous] + public async Task IsInit() + { + var init= await dyCookieService.IsInit(); + return ApiResult.Success(false); + } /// /// 新增用户Cookie /// @@ -142,6 +155,78 @@ namespace dy.net.Controllers return ApiResult.Fail("添加失败"); } + + /// + /// 非docker初始化 + /// + [HttpPost("deskinit")] + [AllowAnonymous] + public async Task DeskInitAsync([FromBody] DouyinCookie dyUserCookies) + { + dyUserCookies.Id = IdGener.GetLong().ToString(); + + if(string.IsNullOrWhiteSpace(dyUserCookies.SavePath)) + { + return ApiResult.Fail("收藏存储路径不能为空"); + } + if (!DouyinFileUtils.HasDirectoryReadWritePermission(dyUserCookies.SavePath)) + { + return ApiResult.Fail($"请在飞牛应用设置里面将{dyUserCookies.SavePath}添加读写权限"); + } + + if (!string.IsNullOrWhiteSpace(dyUserCookies.FavSavePath) && !DouyinFileUtils.HasDirectoryReadWritePermission(dyUserCookies.FavSavePath)) + { + return ApiResult.Fail($"请在飞牛应用设置里面将{dyUserCookies.FavSavePath}添加读写权限"); + } + + if (!string.IsNullOrWhiteSpace(dyUserCookies.UpSavePath) && !DouyinFileUtils.HasDirectoryReadWritePermission(dyUserCookies.UpSavePath)) + { + return ApiResult.Fail($"请在飞牛应用设置里面将{dyUserCookies.UpSavePath}添加读写权限"); + } + + if (!string.IsNullOrWhiteSpace(dyUserCookies.ImgSavePath) && !DouyinFileUtils.HasDirectoryReadWritePermission(dyUserCookies.ImgSavePath)) + { + return ApiResult.Fail($"请在飞牛应用设置里面将{dyUserCookies.ImgSavePath}添加读写权限"); + } + + var result = await dyCookieService.Add(dyUserCookies); + if (result) + { + + return ApiResult.Success(); + } + return ApiResult.Fail("添加失败"); + } + + /// + /// + /// + /// + [HttpGet("appport")] + [AllowAnonymous] + public async Task GetAppPort() + { + //return ApiResult.Success(10105); + return ApiResult.Success(string.IsNullOrWhiteSpace(Appsettings.Get("appPort"))?10101: Convert.ToInt32(Appsettings.Get("appPort"))); + } + + + + + /// + /// 快速开启或停止 + /// + [HttpPost("switch")] + public async Task SwitchAsync([FromBody] DouyinCookieStopDto dto) + { + var result = await dyCookieService.Switch(dto); + if (result) + { + ReStartJob(); + return ApiResult.Success(); + } + return ApiResult.Fail("添加失败"); + } /// /// 更新用户Cookie /// @@ -193,6 +278,7 @@ namespace dy.net.Controllers var data = commonService.GetConfig(); return ApiResult.Success(data); } + [HttpPost("UpdateConfig")] public async Task UpdateConfig(AppConfig config) @@ -200,6 +286,13 @@ namespace dy.net.Controllers var data = await commonService.UpdateConfig(config); if (data) { + if (config.OnlySyncNew) + { + var d = await douyinCookieService.SetOnlySyncNew(); + if (d) + Serilog.Log.Debug("仅同步新视频配置已生效,后续所有类型的视频同步将只会读取最近一页约20条数据"); + } + ReStartJob(); } return ApiResult.Success(data); @@ -239,12 +332,39 @@ namespace dy.net.Controllers [HttpGet("checktag")] public async Task CheckTag() + { + + var deploy = Appsettings.Get("deploy"); + if(string.IsNullOrWhiteSpace(deploy)) + { + return await GetDockerTagVersions(); + } + else + { + if(deploy== "fn")//飞牛 + { + return ApiResult.Success(new List { "beta_"+Appsettings.Get("fnVersion") }); + } + else + { + return await GetDockerTagVersions(); + } + } + + + } + + private static async Task GetDockerTagVersions() { var data = await DouyinHttpHelper.GetTenImage(Appsettings.Get("tagName")); if (data.IsSuccessStatusCode) { var content = await data.Content.ReadAsStringAsync(); - return Ok(content); + + var tagData = JsonConvert.DeserializeObject>>(content); + if (tagData != null && tagData.Data != null && tagData.Data.Count > 0) + return ApiResult.Success(tagData.Data); + return ApiResult.Fail(); } else { diff --git a/Program.cs b/Program.cs index e83b1ca..ca73e0e 100644 --- a/Program.cs +++ b/Program.cs @@ -3,6 +3,8 @@ using dy.net.service; using dy.net.utils; using Serilog; using System.Drawing; +using System.Reflection; +using System.Runtime; using System.Text; namespace dy.net @@ -10,45 +12,40 @@ namespace dy.net public class Program { // 常量定义 - private static string DefaultListenUrl = "http://*:10101"; + private static string DefaultListenUrl = "10101"; private const string SpaRootPath = "app/dist"; private const string SpaSourcePath = "app/"; private const string SwaggerDocTitle = "dy.net WebApi Docs"; /// - /// 打包时注意,如果是false,前端不允许修改开启下载图片和视频的选项 + /// /// public static void Main(string[] args) { - // 初始化编码提供器 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); // 构建Web应用 var builder = WebApplication.CreateBuilder(args); - //from docker yaml file 环境变量 或者 dockerfile 或appsettings.json - DefaultListenUrl = builder.Configuration.GetValue(SystemStaticUtil.ASPNETCORE_URLS) ?? DefaultListenUrl; - + + var isDevelopment = builder.Environment.IsDevelopment(); // 配置主机 ConfigureHost(builder, isDevelopment); - + // 配置服务 ConfigureServices(builder.Services, builder.Configuration, builder.Environment); // 构建应用 var app = builder.Build(); - Log.Debug("ffmpeg is on"); - // 配置中间件 ConfigureMiddleware(app, builder.Environment); // 初始化应用服务 InitApplicationServices(app, isDevelopment); - Serilog.Log.Debug("dy.sync service is starting..."); - Log.Debug("dy.sync service is started successfully"); + Log.Debug($"dy.sync app is started successfully on {DefaultListenUrl}"); Console.WriteLine(); app.Run(); } @@ -58,17 +55,84 @@ namespace dy.net /// private static void ConfigureHost(WebApplicationBuilder builder, bool isDevelopment) { - // 设置监听地址 - builder.WebHost.UseUrls(DefaultListenUrl); + + //// 配置配置文件 + //builder.Host.ConfigureAppConfiguration((context, config) => + //{ + // //config.SetBasePath(Directory.GetCurrentDirectory()) + // // .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) + // // .AddEnvironmentVariables(); + + // // 关键:获取程序集所在的物理目录(而非当前工作目录) + // var assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + // // 兜底:如果获取失败,回退到当前目录(可选) + // var basePath = string.IsNullOrEmpty(assemblyPath) ? Directory.GetCurrentDirectory() : assemblyPath; + + // config.SetBasePath(basePath) // 使用程序集目录作为基础路径 + // .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) + // .AddEnvironmentVariables(); + //}); // 配置配置文件 builder.Host.ConfigureAppConfiguration((context, config) => { - config.SetBasePath(Directory.GetCurrentDirectory()) - .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) - .AddEnvironmentVariables(); + // 定义配置文件名(统一小写,适配Linux大小写敏感特性) + const string configFileName = "appsettings.json"; + + // 步骤1:获取多维度的候选基础路径(覆盖不同部署场景) + var candidateBasePaths = new List + { + // 候选1:程序集所在目录(优先,解决工作目录不一致问题) + Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), + // 候选2:当前工作目录(兜底) + Directory.GetCurrentDirectory(), + // 候选3:应用根目录(针对单文件发布/容器部署场景) + AppContext.BaseDirectory, + // 候选4:自定义环境变量指定的配置目录(灵活性扩展) + Environment.GetEnvironmentVariable("APP_CONFIG_DIR") + } + // 过滤空值和无效路径 + .Where(path => !string.IsNullOrEmpty(path) && Directory.Exists(path)) + .Distinct() // 去重 + .ToList(); + + // 步骤2:遍历候选路径,查找存在的配置文件 + string configFilePath = null; + foreach (var basePath in candidateBasePaths) + { + var tempPath = Path.Combine(basePath, configFileName); + if (File.Exists(tempPath)) + { + configFilePath = tempPath; + break; // 找到第一个存在的配置文件即可 + } + } + + // 步骤3:配置加载(增加容错和日志提示) + if (!string.IsNullOrEmpty(configFilePath)) + { + // 找到配置文件,正常加载 + var basePath = Path.GetDirectoryName(configFilePath); + config.SetBasePath(basePath) + .AddJsonFile(configFileName, optional: false, reloadOnChange: true) + .AddEnvironmentVariables(); + + // 可选:输出日志,确认配置文件加载路径(方便排查) + //Console.WriteLine($"成功加载配置文件:{configFilePath}"); + } + else + { + // 未找到配置文件,抛出明确异常(或根据需求调整为兜底逻辑) + throw new FileNotFoundException( + $"未找到配置文件 {configFileName},已检查以下路径:{string.Join("; ", candidateBasePaths)}", + configFileName); + } }); + //from docker yaml file 环境变量 或者 dockerfile 或appsettings.json + DefaultListenUrl = $"http://*:{builder.Configuration.GetValue(SystemStaticUtil.APP_PORT) ?? DefaultListenUrl}"; + // 设置监听地址 + builder.WebHost.UseUrls(DefaultListenUrl); // 配置日志 builder.Host.ConfigureLogging(logging => logging.ClearProviders()) .UseSerilog(); @@ -81,7 +145,10 @@ namespace dy.net /// private static void ConfigureServices(IServiceCollection services, IConfiguration config, IWebHostEnvironment environment) { - PrintApp(); + + //打印logo + //PrintApp(); + services.AddSingleton(new Appsettings (config)); // 雪花ID生成器 services.AddSnowFlakeId(options => options.WorkId = new Random().Next(1, 100)); @@ -105,16 +172,16 @@ namespace dy.net services.AddServicesFromNamespace("dy.net.repository") .AddServicesFromNamespace("dy.net.service"); - services.AddSingleton(); + services.AddScoped(); // SPA静态文件支持 services.AddSpaStaticFiles(options => options.RootPath = SpaRootPath); // 开发环境启用Swagger - if (environment.IsDevelopment()) - { - services.AddSwagger(); - } + //if (environment.IsDevelopment()) + //{ + // services.AddSwagger(); + //} // 响应压缩 services.AddResponseCompression(); @@ -134,10 +201,10 @@ namespace dy.net app.UseResponseCompression(); // 开发环境启用SwaggerUI - if (environment.IsDevelopment()) - { - app.UseCustomSwaggerUI(options => options.Title = SwaggerDocTitle); - } + //if (environment.IsDevelopment()) + //{ + // app.UseCustomSwaggerUI(options => options.Title = SwaggerDocTitle); + //} // 路由 app.UseRouting(); @@ -175,26 +242,32 @@ namespace dy.net var userService = services.GetRequiredService(); userService.InitUser(); - // 初始化Cookie - var cookieService = services.GetRequiredService(); - cookieService.InitCookie(); - - // 初始化配置 var commonService = services.GetRequiredService(); - var config = commonService.InitConfig(); - + // 更新视频类型--兼容老版本 commonService.UpdateCollectViedoType(); // 重置博主作品同步状态为未同步 commonService.UpdateAllCookieSyncedToZero(); + // 初始化配置 + var config = commonService.InitConfig(); if (!isDevelopment) { // 启动定时任务 var quartzJobService = services.GetRequiredService(); quartzJobService.InitOrReStartAllJobs(config?.Cron <= 0 ? "30" : config.Cron.ToString()); } + // 初始化Cookie + var deploy= Appsettings.Get("deploy"); + if (deploy != null&&deploy=="docker")//docker环境直接初始化一个默认的配置 + { + var cookieService = services.GetRequiredService(); + cookieService.InitCookie(); + } + + + } catch (Exception ex) { @@ -206,7 +279,6 @@ namespace dy.net private static void PrintApp() { Console.ForegroundColor = ConsoleColor.DarkCyan; - Console.WriteLine(); // 步骤1:定义原始ASCII艺术字行(无缩进) List originalArtLines = new List @@ -262,15 +334,6 @@ namespace dy.net // 打印完成后,光标移到艺术字下方 Console.SetCursorPosition(0, indentedArtLines.Count); - - //string asciiArt = @"================================================================================================================="; - //string asciiArt = $@"——————————————————————{DateTime.Now:yyyy-MM-dd HH:mm:ss}——————————————————————"; - - //foreach (char ch in asciiArt) - //{ - // Console.Write(ch); - // Thread.Sleep(2); - //} Console.WriteLine(); Console.ResetColor(); diff --git a/Properties/PublishProfiles/FolderProfile.pubxml b/Properties/PublishProfiles/FolderProfile.pubxml deleted file mode 100644 index 3ed83c2..0000000 --- a/Properties/PublishProfiles/FolderProfile.pubxml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - true - false - true - Release - Any CPU - FileSystem - bin\Release\net6.0\publish\ - FileSystem - <_TargetId>Folder - - net6.0 - 680660ef-acae-43a9-ab6c-b75532e758ad - false - - \ No newline at end of file diff --git a/Properties/PublishProfiles/FolderProfile.pubxml.user b/Properties/PublishProfiles/FolderProfile.pubxml.user deleted file mode 100644 index 95cea2a..0000000 --- a/Properties/PublishProfiles/FolderProfile.pubxml.user +++ /dev/null @@ -1,40 +0,0 @@ - - - - - <_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\ - True|2025-12-21T05:23:11.0272294Z||;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||;False|2025-12-05T12:46:19.1274332+08:00||;True|2025-12-05T09:04:36.7111717+08:00||;True|2025-12-05T08:22:51.7343317+08:00||;True|2025-12-05T08:20:32.0383739+08:00||;True|2025-12-04T21:58:29.4112766+08:00||;True|2025-12-04T21:58:10.0382218+08:00||;True|2025-12-04T21:57:55.3894059+08:00||;True|2025-12-04T21:10:38.8943797+08:00||;True|2025-12-04T21:09:31.5024569+08:00||;True|2025-12-04T08:22:47.9617427+08:00||;False|2025-12-04T08:22:41.3759733+08:00||;True|2025-12-04T08:14:02.2478893+08:00||;True|2025-12-04T07:57:00.2208139+08:00||;True|2025-12-03T23:58:13.3693303+08:00||;True|2025-12-03T23:57:40.4257893+08:00||;True|2025-12-03T23:56:38.8717769+08:00||;True|2025-12-03T23:56:24.0663568+08:00||;False|2025-12-03T23:55:36.1902974+08:00||;True|2025-12-03T23:51:30.6688504+08:00||;True|2025-12-03T23:34:17.1648971+08:00||;False|2025-12-03T23:34:07.7649161+08:00||;True|2025-12-03T22:32:56.2435003+08:00||;True|2025-12-03T22:27:45.6059666+08:00||;True|2025-12-03T15:55:28.0186597+08:00||;False|2025-12-03T15:54:17.5032724+08:00||;True|2025-12-03T15:53:10.2273509+08:00||;True|2025-12-02T22:11:37.4645042+08:00||;False|2025-12-02T22:10:47.1320259+08:00||;True|2025-12-02T14:39:58.8932130+08:00||;True|2025-12-02T14:36:37.1529072+08:00||;True|2025-12-02T12:58:22.0951548+08:00||;True|2025-12-02T09:30:33.7066474+08:00||;True|2025-12-02T09:30:14.5481844+08:00||;True|2025-12-02T09:30:00.3123364+08:00||;False|2025-12-02T09:29:54.4615520+08:00||;True|2025-12-02T09:13:01.7995414+08:00||;False|2025-12-02T09:12:55.8360281+08:00||;True|2025-12-02T09:12:31.0156791+08:00||;True|2025-12-02T08:55:11.3773395+08:00||;True|2025-12-02T08:53:21.3927713+08:00||;False|2025-12-02T08:48:55.8638037+08:00||;True|2025-12-02T07:29:25.2192447+08:00||;False|2025-12-02T07:29:10.2504665+08:00||;True|2025-12-02T07:28:29.0769286+08:00||;True|2025-12-01T21:53:07.6474834+08:00||;True|2025-12-01T21:44:28.1674315+08:00||;True|2025-12-01T21:18:47.2119609+08:00||;True|2025-12-01T20:51:19.9948301+08:00||;True|2025-12-01T20:50:36.9904697+08:00||;True|2025-12-01T20:44:10.1695142+08:00||;True|2025-12-01T19:27:58.0479456+08:00||;True|2025-12-01T19:16:02.2288214+08:00||;False|2025-12-01T19:15:56.0372115+08:00||; - - - - - 11/12/2025 21:56:08 - - - 11/22/2025 17:11:30 - - - 11/22/2025 17:11:30 - - - 11/22/2025 17:00:49 - - - 11/22/2025 17:11:19 - - - 11/22/2025 17:11:30 - - - 11/12/2025 21:56:08 - - - 11/23/2025 22:21:42 - - - 11/23/2025 19:09:25 - - - \ No newline at end of file diff --git a/README.md b/README.md index 0766386..a6da422 100644 --- a/README.md +++ b/README.md @@ -96,8 +96,8 @@ Cookie 及 `sec_user_id` 是同步功能的核心,需严格按步骤获取, | 镜像标签 | 架构 | | ----------------- | -------------- | -| `beta_1.9.0` | x86_64 (amd64) | -| `arm_1.9.0` | ARM64 | +| `beta_1.9.2` | x86_64 (amd64) | +| `arm_1.9.2` | ARM64 | ### 最新镜像查看 [镜像列表](http://nas.synology2023.online:10108/api/docker/dysync/1) @@ -115,7 +115,7 @@ docker run -d --restart=always \ -v /opt/dysync/uper:/app/uper \ -p 10103:10101 \ --name dysync2025 \ - ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_1.9.0 + ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_1.9.2 # 注意:-p 后面的容器端口,可以用环境变量类似:ASPNETCORE_URLS = http://+:10108 指定 ``` @@ -129,7 +129,7 @@ version: '3.8' services: dysync: - image: ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_1.9.0 + image: ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_1.9.2 container_name: dysync2025 # 容器名称 restart: unless-stopped # 始终重启容器,除非容器被手动停止或Docker服务停止 ports: @@ -215,6 +215,10 @@ services: 14. ✅ 增加配置项及关注列表(手动添加部分)导出导入功能 -15. ✅ 增加移动端(主要统计数据和日志) +15. ✅ 增加移动端(主要统计数据和日志以及最近十条同步记录-可手机端播放) + +16. ✅ 增加开关配置是否仅同步最近视频,默认开启(针对之前收藏或者点赞了很多乱七八糟的视频,太多,又不想一个个去抖音取消的情况) + +17. ✅ 完成飞牛fpk打包:[github](https://github.com/jianzhichu/FnDepot) diff --git a/app/src/components/layout/HeaderActions.vue b/app/src/components/layout/HeaderActions.vue index 8ed7745..8105bc9 100644 --- a/app/src/components/layout/HeaderActions.vue +++ b/app/src/components/layout/HeaderActions.vue @@ -221,7 +221,7 @@ const showVersionNotification = () => { useApiStore() .CheckTag() .then((res) => { - if (res.code === 1) { + if (res.code === 0) { dyVersions.value = res.data; const versionLen = dyVersions.value.length; diff --git a/app/src/pages/cok/CookieTable.vue b/app/src/pages/cok/CookieTable.vue index c4987e2..69c8c06 100644 --- a/app/src/pages/cok/CookieTable.vue +++ b/app/src/pages/cok/CookieTable.vue @@ -1,10 +1,19 @@ +