diff --git a/Controllers/ConfigController.cs b/Controllers/ConfigController.cs index 8f0f8d8..5fd40b6 100644 --- a/Controllers/ConfigController.cs +++ b/Controllers/ConfigController.cs @@ -293,19 +293,17 @@ namespace dy.net.Controllers [HttpPost("UpdateConfig")] public async Task UpdateConfig(AppConfig config) { - var data = await commonService.UpdateConfig(config); - if (data) + var update = await commonService.UpdateConfig(config); + if (update) { if (config.OnlySyncNew) { - var d = await douyinCookieService.SetOnlySyncNew(); - if (d) - Serilog.Log.Debug("仅同步新视频配置已生效,后续所有类型的视频同步将只会读取最近一页约20条数据"); + Serilog.Log.Debug("仅同步新视频配置已生效,后续所有类型的视频同步将只会读取最近一页约20条数据"); } ReStartJob(); } - return ApiResult.Success(data); + return ApiResult.Success(update); } /// diff --git a/Program.cs b/Program.cs index baf763a..6c85aad 100644 --- a/Program.cs +++ b/Program.cs @@ -217,10 +217,10 @@ namespace dy.net // 更新视频类型--兼容老版本--不再需要 //commonService.UpdateCollectViedoType(); // 重置博主作品同步状态为未同步 - commonService.UpdateAllCookieSyncedToZero(); + //commonService.UpdateAllCookieSyncedToZero(); // 初始化配置 var config = commonService.InitConfig(); - //if (!isDevelopment) + if (!isDevelopment) { // 启动定时任务 var quartzJobService = services.GetRequiredService(); diff --git a/Properties/PublishProfiles/docker.pubxml b/Properties/PublishProfiles/docker.pubxml index b957539..71232b2 100644 --- a/Properties/PublishProfiles/docker.pubxml +++ b/Properties/PublishProfiles/docker.pubxml @@ -17,6 +17,6 @@ false - + \ No newline at end of file diff --git a/Properties/PublishProfiles/docker.pubxml.user b/Properties/PublishProfiles/docker.pubxml.user index 7f6ff6d..74177ac 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-21T17:37:53.6972395Z||;True|2026-01-22T01:34:14.2142463+08:00||;True|2026-01-22T01:32:50.9228911+08:00||;True|2026-01-22T01:29:43.8871986+08:00||;True|2026-01-22T01:29:40.7838709+08:00||;True|2026-01-22T01:27:34.4763970+08:00||;True|2026-01-22T01:26:55.0117367+08:00||;True|2026-01-22T01:23:19.4789587+08:00||;True|2026-01-19T10:19:44.8997385+08:00||;True|2026-01-19T10:11:10.2305307+08:00||;True|2026-01-17T00:52:08.8180346+08:00||;False|2026-01-17T00:52:03.1829000+08:00||;True|2026-01-17T00:45:04.0498090+08:00||;True|2026-01-16T21:00:57.7239379+08:00||;True|2026-01-16T21:00:03.3912989+08:00||;True|2026-01-16T20:56:08.5505592+08:00||;True|2026-01-16T20:46:32.3067302+08:00||;True|2026-01-15T22:18:57.9835738+08:00||;True|2026-01-15T22:07:25.4753938+08:00||;True|2026-01-15T22:07:14.8243754+08:00||;True|2026-01-15T21:40:13.2613927+08:00||;True|2026-01-15T20:57:56.6291682+08:00||;True|2026-01-15T20:57:47.1363536+08:00||;True|2026-01-15T20:08:44.4710883+08:00||;True|2026-01-15T20:04:51.8284314+08:00||;False|2026-01-15T20:04:45.3258155+08:00||;True|2026-01-15T19:59:11.7907672+08:00||;True|2026-01-15T01:10:48.9066941+08:00||;True|2026-01-15T01:03:23.6216975+08:00||;True|2026-01-15T01:03:16.3364591+08:00||;False|2026-01-15T01:03:10.5654436+08:00||;True|2026-01-15T00:49:21.6559622+08:00||;True|2026-01-15T00:10:42.7288439+08:00||;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|2026-01-22T04:44:28.1577014Z||;True|2026-01-22T12:40:45.7449335+08:00||;True|2026-01-22T12:39:07.0683214+08:00||;True|2026-01-22T09:55:49.7086190+08:00||;True|2026-01-22T01:37:53.6972395+08:00||;True|2026-01-22T01:34:14.2142463+08:00||;True|2026-01-22T01:32:50.9228911+08:00||;True|2026-01-22T01:29:43.8871986+08:00||;True|2026-01-22T01:29:40.7838709+08:00||;True|2026-01-22T01:27:34.4763970+08:00||;True|2026-01-22T01:26:55.0117367+08:00||;True|2026-01-22T01:23:19.4789587+08:00||;True|2026-01-19T10:19:44.8997385+08:00||;True|2026-01-19T10:11:10.2305307+08:00||;True|2026-01-17T00:52:08.8180346+08:00||;False|2026-01-17T00:52:03.1829000+08:00||;True|2026-01-17T00:45:04.0498090+08:00||;True|2026-01-16T21:00:57.7239379+08:00||;True|2026-01-16T21:00:03.3912989+08:00||;True|2026-01-16T20:56:08.5505592+08:00||;True|2026-01-16T20:46:32.3067302+08:00||;True|2026-01-15T22:18:57.9835738+08:00||;True|2026-01-15T22:07:25.4753938+08:00||;True|2026-01-15T22:07:14.8243754+08:00||;True|2026-01-15T21:40:13.2613927+08:00||;True|2026-01-15T20:57:56.6291682+08:00||;True|2026-01-15T20:57:47.1363536+08:00||;True|2026-01-15T20:08:44.4710883+08:00||;True|2026-01-15T20:04:51.8284314+08:00||;False|2026-01-15T20:04:45.3258155+08:00||;True|2026-01-15T19:59:11.7907672+08:00||;True|2026-01-15T01:10:48.9066941+08:00||;True|2026-01-15T01:03:23.6216975+08:00||;True|2026-01-15T01:03:16.3364591+08:00||;False|2026-01-15T01:03:10.5654436+08:00||;True|2026-01-15T00:49:21.6559622+08:00||;True|2026-01-15T00:10:42.7288439+08:00||;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||; \ No newline at end of file diff --git a/README.md b/README.md index a54e156..4d4b325 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,6 @@ Cookie 及 `sec_user_id` 是同步功能的核心,需严格按步骤获取,避免遗漏或错误。 - ### 1.1 提取`Cookie`以及 `sec_uer_id` 1. 打开 **抖音网页版** (https://www.douyin.com/) 并登录目标账号; 2. 进入个人主页,按下F12进入开发者模式、并切换到 `网络`(也可能叫`network`). @@ -66,7 +65,8 @@ Cookie 及 `sec_user_id` 是同步功能的核心,需严格按步骤获取, | 个人喜欢视频 | `/app/favorite` | 映射到本地目录(建议与收藏视频路径区分,如 `/volume1/抖音/喜欢`) | 存储同步后的「我喜欢」视频 | | 图文视频 | `/app/images` | 映射到本地目录(建议与收藏视频路径区分,如 `/volume1/抖音/图文视频`) | 存储同步后的「图文视频」 | | 指定博主视频 | `/app/uper` | 映射到本地目录(如 `/volume1/抖音/博主作品`) | 存储同步后的博主视频 | -| 数据库文件 | `/app/db` | 映射到本地稳定目录(如 `/volume1/抖音/工具数据库`) | 持久化配置、同步记录 | +| 数据库文件 | `/app/db` | 映射到本地稳定目录(如 `/volume1/抖音/db`) | 持久化配置、同步记录 | +| 数据库文件 | `/app/mp3` | 映射到本地稳定目录(如 `/volume1/抖音/mp3`) | 图文视频自定义音频(用于原视频音频带版权的情况) | > ✅ **关键注意**: > 1. 本地路径需与后续后台「抖音授权」页面配置的「文件存储路径」**完全一致**; @@ -93,29 +93,16 @@ Cookie 及 `sec_user_id` 是同步功能的核心,需严格按步骤获取, | 镜像标签 | 架构 | | ----------------- | -------------- | -| `beta_2.0.0` | x86_64 (amd64) | -| `arm_1.9.8` | ARM64 | +| `beta_2.0.1` | x86_64 (amd64) | +| `arm_2.0.1` | ARM64 | ### 构建命令示例 将下方命令中的「本地路径」替换为你的实际路径,终端执行即可: -#### 方式一:Docker 命令行(不推荐) -```bash -docker run -d --restart=always \ - -v /opt/dysync/coll:/app/collect \ - -v /opt/dysync/favorite:/app/favorite \ - -v /opt/dysync/db:/app/db \ - -v /opt/dysync/imgs:/app/images \ - -v /opt/dysync/uper:/app/uper \ - -p 10101:10101 \ - --name dysync2026 \ - ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_2.0.0 -``` - -### 方式二:Docker Compose 运行(推荐) +### 方式一:Docker Compose 运行(推荐) 创建 docker-compose.yml 文件,复制以下内容,替换「本地路径」后执行 docker-compose up -d: 需要注意:unraid玩家需要增加 user配置 --user 1000:100 @@ -126,7 +113,7 @@ version: '3.8' services: dysync: - image: ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_2.0.0 + image: ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_2.0.1 container_name: dysync2026 # 容器名称 restart: unless-stopped # 始终重启容器,除非容器被手动停止或Docker服务停止 ports: @@ -138,13 +125,11 @@ services: - /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 # 图文视频目录 - /vol2/1000/media/dysync/dy1/up:/app/uper # 指定博主视频目录 # 多账号路径映射示例(可选,需在后台对应账号配置中指定存储路径) - /vol2/1000/media/dysync/dy2/collect:/app/collect2 - /vol2/1000/media/dysync/dy2/fav:/app/favorite2 - - /vol2/1000/media/dysync/dy2/imgv:/app/images2 - /vol2/1000/media/dysync/dy2/up:/app/uper2 network_mode: bridge @@ -155,7 +140,7 @@ services: deploy: resources: limits: - memory: 120m #限制内存占用不超过120mb,如果有图文视频下载需求,不建议设置 + memory: 250m #限制内存占用不超过250mb,如果有图文视频下载需求,不建议设置 ``` @@ -171,8 +156,6 @@ services: ![输入图片说明](docs/logs.png) -![输入图片说明](docs/set.png) - ![输入图片说明](docs/appconf.png) ![输入图片说明](docs/player.png) @@ -224,6 +207,8 @@ services: 17. ✅ 完成飞牛fpk打包:https://github.com/jianzhichu/FnDepot +18. ✅ 合集、短剧、自定义收藏夹下载。 + # 免责声明 diff --git a/app/src/pages/set/AppSet.vue b/app/src/pages/set/AppSet.vue index 899a6f8..6fdc408 100644 --- a/app/src/pages/set/AppSet.vue +++ b/app/src/pages/set/AppSet.vue @@ -34,21 +34,21 @@

博主视频

- + - + @@ -57,7 +57,7 @@

- 请选择文件名占位符和模板分隔符(文件名命名规则配置仅博主视频有效) + 请选择文件名占位符和模板分隔符(文件名命名规则配置仅博主视频有效,不配置默认使用视频id作为文件名)
@@ -299,7 +299,7 @@ interface FormState { Id: string; BatchCount: number; DownImageVideo: boolean; - UperSaveTogether: boolean; + //UperSaveTogether: boolean; UperUseViedoTitle: boolean; LogKeepDay: number; DownImage: boolean; @@ -323,7 +323,7 @@ const formState: UnwrapRef = reactive({ BatchCount: 10, LogKeepDay: 10, UperUseViedoTitle: false, - UperSaveTogether: false, + // UperSaveTogether: false, DownImageVideo: false, DownMp3: false, DownImage: false, @@ -396,7 +396,7 @@ const getConfig = () => { BatchCount: res.data.batchCount, DownImageVideo: res.data.downImageVideo, UperUseViedoTitle: res.data.uperUseViedoTitle, - UperSaveTogether: res.data.uperSaveTogether, + // UperSaveTogether: res.data.uperSaveTogether, LogKeepDay: res.data.logKeepDay, DownImage: res.data.downImage, DownMp3: res.data.downMp3, diff --git a/docs/appconf.png b/docs/appconf.png index af26473..aeeaffd 100644 Binary files a/docs/appconf.png and b/docs/appconf.png differ diff --git a/docs/auth.png b/docs/auth.png index fad13e8..8b86d36 100644 Binary files a/docs/auth.png and b/docs/auth.png differ diff --git a/docs/auth2.png b/docs/auth2.png index 34c831b..66d442d 100644 Binary files a/docs/auth2.png and b/docs/auth2.png differ diff --git a/docs/follows.png b/docs/follows.png index 7eca2e0..962b24d 100644 Binary files a/docs/follows.png and b/docs/follows.png differ diff --git a/docs/homepage.png b/docs/homepage.png index 6e2285f..23fc837 100644 Binary files a/docs/homepage.png and b/docs/homepage.png differ diff --git a/docs/homepage_night.png b/docs/homepage_night.png index 28e9631..dbca076 100644 Binary files a/docs/homepage_night.png and b/docs/homepage_night.png differ diff --git a/dy.net.csproj b/dy.net.csproj index 44cedf3..bcf5bc2 100644 --- a/dy.net.csproj +++ b/dy.net.csproj @@ -129,7 +129,7 @@ - + 每个视频单独一个文件夹 false-->所有视频放在同一个文件夹 - UperUseViedoTitle = false,//博主视频:true-->使用视频标题作为文件名 false-->使用视频id作为文件名 + //UperUseViedoTitle = false,//博主视频:true-->使用视频标题作为文件名 false-->使用视频id作为文件名 DownImageVideo = true,//默认下载图文视频 DownMp3 = false, DownImage = false, @@ -111,18 +111,18 @@ namespace dy.net.service /// 重置所有Cookie的同步状态为0 ///
/// - public bool UpdateAllCookieSyncedToZero() - { + //public bool UpdateAllCookieSyncedToZero() + //{ - var cookies = sqlSugarClient.Queryable().ToList(); - foreach (var cookie in cookies) - { - cookie.CollHasSyncd = 0; - cookie.FavHasSyncd = 0; - cookie.UperSyncd = 0; - } - return sqlSugarClient.Updateable(cookies).ExecuteCommand() > 0; - } + // var cookies = sqlSugarClient.Queryable().ToList(); + // foreach (var cookie in cookies) + // { + // cookie.CollHasSyncd = 0; + // cookie.FavHasSyncd = 0; + // cookie.UperSyncd = 0; + // } + // return sqlSugarClient.Updateable(cookies).ExecuteCommand() > 0; + //} /// /// 查询是否已删除 diff --git a/service/DouyinCookieService.cs b/service/DouyinCookieService.cs index 2e3176e..062aafa 100644 --- a/service/DouyinCookieService.cs +++ b/service/DouyinCookieService.cs @@ -61,9 +61,9 @@ namespace dy.net.service FavSavePath = "/app/favorite", UpSavePath = "/app/uper", //ImgSavePath="/app/images", - CollHasSyncd = 0, - FavHasSyncd = 0, - UperSyncd = 0, + //CollHasSyncd = 0, + //FavHasSyncd = 0, + //UperSyncd = 0, MyUserId="" }; return _cookieRepository.Insert(cookie); @@ -111,19 +111,19 @@ namespace dy.net.service /// 将所有同步类型的同步状态改为已同步,这样,之后就不会再扫描所有接口数据,只会读取最新一页的数据了 /// /// - public async Task SetOnlySyncNew() - { - var cks= await _cookieRepository.GetAllAsync(); + //public async Task SetOnlySyncNew() + //{ + // var cks= await _cookieRepository.GetAllAsync(); - foreach (var item in cks) - { - item.CollHasSyncd = 1; - item.FavHasSyncd = 1; - item.UperSyncd = 1; - } - var d= await _cookieRepository.UpdateRangeAsync(cks); - return d>0; - } + // foreach (var item in cks) + // { + // item.CollHasSyncd = 1; + // item.FavHasSyncd = 1; + // item.UperSyncd = 1; + // } + // var d= await _cookieRepository.UpdateRangeAsync(cks); + // return d>0; + //} } } diff --git a/service/DouyinQuartzJobService.cs b/service/DouyinQuartzJobService.cs index 9692b6b..1c53b43 100644 --- a/service/DouyinQuartzJobService.cs +++ b/service/DouyinQuartzJobService.cs @@ -99,8 +99,9 @@ namespace dy.net.service /// 启动所有抖音相关定时任务(所有任务独立执行) /// /// Cron表达式或间隔分钟数(所有任务使用相同的执行频率) + /// /// 是否启动成功 - public async Task InitOrReStartAllJobs(string expression) + public async Task InitOrReStartAllJobs(string expression,bool isRestart=false) { if (string.IsNullOrWhiteSpace(expression)) { @@ -116,13 +117,15 @@ namespace dy.net.service await RemoveAllExistingJobs(scheduler); // 遍历启动所有任务(独立执行,无顺序依赖) - var allJobKeys = JobConfigs.Keys.Where(k => k != "follow_user_once").ToList(); // 排除单次执行的任务 - foreach (var jobKey in allJobKeys) + // 统一生成任务列表 + var jobKeys = isRestart + ? JobConfigs.Keys.Where(k => k != "follow_user_once").ToList() + : JobConfigs.Keys.Where(k => k != "follow_user_once" && k != "follow_user").ToList(); + + // 执行任务启动逻辑 + foreach (var jobKey in jobKeys) { - if (jobKey == "follow_user") - { - expression = "60"; - } + if (jobKey == "follow_user") expression = "60"; var startSuccess = await StartJobAsync(jobKey, expression); if (startSuccess) { @@ -133,8 +136,16 @@ namespace dy.net.service Log.Error($"启动任务失败:{jobKey}"); } } + // 补充日志和单次任务 + if (isRestart) + { + Log.Information($"共启动 {jobKeys.Count} 个定时任务"); + } + else + { + await StartOneTimeJobAsync("follow_user_once"); + } - Log.Information($"共启动 {allJobKeys.Count} 个定时任务,执行频率:{expression}"); //await StartJobAsync(VideoTypeEnum.dy_custom_collect.GetDesc(), expression); diff --git a/service/DouyinVideoService.cs b/service/DouyinVideoService.cs index 957e707..0415b58 100644 --- a/service/DouyinVideoService.cs +++ b/service/DouyinVideoService.cs @@ -328,39 +328,39 @@ namespace dy.net.service } } - var CookieIds = reDownList.Select(x => x.CookieId).Distinct(); - foreach (var ck in CookieIds) - { - var cookie = douyinCookieRepository.GetById(ck); - if (cookie == null) - continue; - var viedoTypes = videos.Where(x => x.CookieId == ck).Select(x => x.ViedoType).Distinct(); + //var CookieIds = reDownList.Select(x => x.CookieId).Distinct(); + //foreach (var ck in CookieIds) + //{ + // var cookie = douyinCookieRepository.GetById(ck); + // if (cookie == null) + // continue; + // var viedoTypes = videos.Where(x => x.CookieId == ck).Select(x => x.ViedoType).Distinct(); - if (viedoTypes != null && viedoTypes.Any()) - { - foreach (VideoTypeEnum item in viedoTypes) - { - switch (item) - { - case VideoTypeEnum.dy_favorite: - cookie.FavHasSyncd = 0; - break; - case VideoTypeEnum.dy_collects: - cookie.CollHasSyncd = 0; - break; - case VideoTypeEnum.dy_follows: - cookie.UperSyncd = 0; - break; - case VideoTypeEnum.ImageVideo: - break; - default: - break; - } - } - } - await douyinCookieRepository.UpdateAsync(cookie); + // //if (viedoTypes != null && viedoTypes.Any()) + // //{ + // // foreach (VideoTypeEnum item in viedoTypes) + // // { + // // switch (item) + // // { + // // case VideoTypeEnum.dy_favorite: + // // cookie.FavHasSyncd = 0; + // // break; + // // case VideoTypeEnum.dy_collects: + // // cookie.CollHasSyncd = 0; + // // break; + // // case VideoTypeEnum.dy_follows: + // // cookie.UperSyncd = 0; + // // break; + // // case VideoTypeEnum.ImageVideo: + // // break; + // // default: + // // break; + // // } + // // } + // //} + // await douyinCookieRepository.UpdateAsync(cookie); - } + //} if (!forever) Serilog.Log.Debug("重新下载视频流程执行完成:成功创建{0}条重新下载记录,删除{1}个文件,等待重新下载...", reDownList.Count, filePathsToDelete.Count); return true;