This commit is contained in:
jianzhichu
2025-11-25 14:17:25 +08:00
parent 00aa82e763
commit 898e4c115b
10 changed files with 56 additions and 29 deletions
+15 -5
View File
@@ -28,6 +28,8 @@ namespace dy.net
private static bool downImageVideo = false; private static bool downImageVideo = false;
public static void Main(string[] args) public static void Main(string[] args)
{ {
Console.ForegroundColor = ConsoleColor.Yellow;
// 初始化编码提供器 // 初始化编码提供器
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
// 构建Web应用 // 构建Web应用
@@ -60,8 +62,18 @@ namespace dy.net
// 初始化应用服务 // 初始化应用服务
InitApplicationServices(app); InitApplicationServices(app);
// 启动应用 Serilog.Log.Debug("dy.sync service is starting...");
Log.Debug("dysync.net service started successfully");
Log.Debug("默认设置-博主作品-同步全部-配置为关闭,(可到授权界面开启,不建议全量同步)");
Log.Debug("dy.sync service is started successfully");
Console.WriteLine("------------------------------------------------------------------------");
Console.WriteLine(@" __ \\ \ / ___|\ \ / \ | ___|
| |\ / \___ \ \ / \ | |
| | | | | |\ | |
____/ _|_)_____/ _| _| \_|\____|
");
Console.ResetColor();
app.Run(); app.Run();
} }
@@ -96,7 +108,7 @@ namespace dy.net
services.AddSingleton(new Appsettings (config)); services.AddSingleton(new Appsettings (config));
// 雪花ID生成器 // 雪花ID生成器
services.AddSnowFlakeId(options => options.WorkId = new Random().Next(1, 127)); services.AddSnowFlakeId(options => options.WorkId = new Random().Next(1, 100));
// MVC控制器 // MVC控制器
services.AddControllers(); services.AddControllers();
@@ -203,8 +215,6 @@ namespace dy.net
var quartzJobService = services.GetRequiredService<DouyinQuartzJobService>(); var quartzJobService = services.GetRequiredService<DouyinQuartzJobService>();
quartzJobService.StartJob(config?.Cron ?? "30"); quartzJobService.StartJob(config?.Cron ?? "30");
Serilog.Log.Debug("系统初始化,默认将-博主作品-同步全部-配置为关闭,可到授权页面中调整(不建议开启全量同步)");
Serilog.Log.Debug($"默认每次读取行数为:{config.BatchCount},可前往系统配置修改");
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\</_PublishTargetUrl> <_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\</_PublishTargetUrl>
<History>True|2025-11-24T15:53:54.4283003Z||;True|2025-11-24T23:41:15.8248332+08:00||;True|2025-11-24T23:33:57.1844427+08:00||;True|2025-11-24T23:31:54.9228836+08:00||;True|2025-11-24T23:24:15.8681502+08:00||;True|2025-11-24T23:22:57.9046229+08:00||;True|2025-11-24T23:18:04.1131647+08:00||;True|2025-11-24T22:47:54.1336448+08:00||;True|2025-11-24T22:47:18.3613833+08:00||;True|2025-11-24T08:17:50.3994607+08:00||;True|2025-11-24T08:07:00.9951205+08:00||;True|2025-11-23T23:34:50.0030826+08:00||;True|2025-11-23T23:32:36.7452616+08:00||;True|2025-11-22T23:18:56.3202345+08:00||;True|2025-11-22T22:52:51.7203302+08:00||;True|2025-11-22T22:52:42.9620946+08:00||;True|2025-11-22T22:52:09.8257640+08:00||;True|2025-11-22T22:39:31.5894141+08:00||;True|2025-11-22T22:31:11.0704815+08:00||;True|2025-11-22T22:20:36.4579131+08:00||;True|2025-11-22T22:19:10.2281364+08:00||;True|2025-11-22T19:34:45.9336901+08:00||;True|2025-11-12T23:06:38.7834109+08:00||;False|2025-11-12T23:01:02.2269478+08:00||;True|2025-10-22T22:08:11.6423148+08:00||;True|2025-10-22T21:54:24.7180547+08:00||;True|2025-10-22T21:40:03.5194315+08:00||;True|2025-10-22T21:28:28.8962766+08:00||;True|2025-10-22T21:22:47.9631689+08:00||;True|2025-10-22T21:18:24.5274318+08:00||;True|2025-10-22T21:14:51.6386326+08:00||;False|2025-10-22T21:14:07.6282769+08:00||;True|2025-10-22T21:03:48.9892860+08:00||;True|2025-10-22T21:00:56.3617243+08:00||;False|2025-10-22T21:00:30.5472941+08:00||;True|2025-10-22T20:51:29.6155916+08:00||;False|2025-10-22T20:50:47.1882956+08:00||;True|2025-10-22T15:01:04.1668366+08:00||;True|2025-10-22T14:49:43.6340569+08:00||;True|2025-10-22T14:38:39.4685603+08:00||;True|2025-10-21T18:35:28.8392541+08:00||;True|2025-10-20T10:31:05.5865212+08:00||;True|2025-10-20T10:20:41.5717101+08:00||;True|2025-10-19T10:08:33.6669332+08:00||;False|2025-10-19T10:07:22.3337545+08:00||;False|2025-10-19T10:05:22.9484805+08:00||;True|2025-10-10T16:54:27.1472888+08:00||;False|2025-10-10T16:53:44.1700030+08:00||;False|2025-10-10T16:52:48.1740453+08:00||;False|2025-10-10T16:51:21.5067253+08:00||;False|2025-10-10T16:50:19.2140597+08:00||;False|2025-10-10T16:49:21.2213290+08:00||;False|2025-10-10T16:48:47.7229948+08:00||;False|2025-10-10T16:48:15.1258700+08:00||;True|2025-09-30T13:29:42.2354235+08:00||;True|2025-09-25T11:44:52.6858389+08:00||;True|2025-09-25T11:08:27.8810109+08:00||;True|2025-09-25T09:28:50.2563374+08:00||;True|2025-09-24T16:14:02.3072184+08:00||;True|2025-09-23T22:38:52.4414757+08:00||;True|2025-09-23T22:19:07.1006356+08:00||;True|2025-09-23T22:18:01.5945225+08:00||;True|2025-09-23T22:06:15.6293613+08:00||;True|2025-09-23T21:53:14.2977444+08:00||;True|2025-09-23T21:46:55.2322411+08:00||;False|2025-09-23T21:45:23.7858854+08:00||;False|2025-09-23T21:03:51.8325689+08:00||;True|2025-09-23T10:03:32.2251920+08:00||;False|2025-09-23T09:38:08.2372201+08:00||;False|2025-09-23T09:37:49.9390545+08:00||;True|2024-03-11T21:31:45.8102398+08:00||;True|2024-03-11T07:26:24.7660541+08:00||;True|2024-03-08T22:08:40.0154831+08:00||;True|2024-03-03T10:14:36.8109114+08:00||;True|2024-03-02T18:44:57.3288537+08:00||;True|2024-01-24T17:51:37.9164415+08:00||;True|2024-01-24T16:36:50.5612157+08:00||;True|2024-01-24T15:51:35.7556653+08:00||;True|2024-01-17T23:40:40.7526618+08:00||;True|2024-01-17T23:36:10.3692844+08:00||;True|2024-01-17T23:22:03.2378834+08:00||;True|2024-01-03T11:35:44.7118292+08:00||;True|2024-01-03T11:11:23.4270453+08:00||;True|2024-01-03T11:04:35.2081526+08:00||;True|2024-01-03T10:57:03.7053107+08:00||;True|2024-01-03T10:51:50.7463989+08:00||;False|2024-01-03T10:50:24.9775312+08:00||;True|2024-01-03T10:47:30.1128183+08:00||;True|2024-01-03T10:42:55.8640657+08:00||;True|2024-01-03T09:24:24.3436056+08:00||;True|2024-01-02T23:40:38.2001198+08:00||;True|2024-01-02T23:08:36.7230444+08:00||;True|2024-01-02T22:53:43.9658255+08:00||;True|2024-01-02T22:25:38.5545279+08:00||;False|2024-01-02T22:24:42.6577609+08:00||;True|2024-01-02T22:04:33.4708889+08:00||;True|2024-01-02T21:49:57.9249898+08:00||;True|2023-12-28T22:42:58.5976180+08:00||;True|2023-12-28T22:24:09.2051205+08:00||;True|2023-12-28T22:05:48.4865497+08:00||;</History> <History>True|2025-11-25T06:08:53.3850967Z||;True|2025-11-24T23:53:54.4283003+08:00||;True|2025-11-24T23:41:15.8248332+08:00||;True|2025-11-24T23:33:57.1844427+08:00||;True|2025-11-24T23:31:54.9228836+08:00||;True|2025-11-24T23:24:15.8681502+08:00||;True|2025-11-24T23:22:57.9046229+08:00||;True|2025-11-24T23:18:04.1131647+08:00||;True|2025-11-24T22:47:54.1336448+08:00||;True|2025-11-24T22:47:18.3613833+08:00||;True|2025-11-24T08:17:50.3994607+08:00||;True|2025-11-24T08:07:00.9951205+08:00||;True|2025-11-23T23:34:50.0030826+08:00||;True|2025-11-23T23:32:36.7452616+08:00||;True|2025-11-22T23:18:56.3202345+08:00||;True|2025-11-22T22:52:51.7203302+08:00||;True|2025-11-22T22:52:42.9620946+08:00||;True|2025-11-22T22:52:09.8257640+08:00||;True|2025-11-22T22:39:31.5894141+08:00||;True|2025-11-22T22:31:11.0704815+08:00||;True|2025-11-22T22:20:36.4579131+08:00||;True|2025-11-22T22:19:10.2281364+08:00||;True|2025-11-22T19:34:45.9336901+08:00||;True|2025-11-12T23:06:38.7834109+08:00||;False|2025-11-12T23:01:02.2269478+08:00||;True|2025-10-22T22:08:11.6423148+08:00||;True|2025-10-22T21:54:24.7180547+08:00||;True|2025-10-22T21:40:03.5194315+08:00||;True|2025-10-22T21:28:28.8962766+08:00||;True|2025-10-22T21:22:47.9631689+08:00||;True|2025-10-22T21:18:24.5274318+08:00||;True|2025-10-22T21:14:51.6386326+08:00||;False|2025-10-22T21:14:07.6282769+08:00||;True|2025-10-22T21:03:48.9892860+08:00||;True|2025-10-22T21:00:56.3617243+08:00||;False|2025-10-22T21:00:30.5472941+08:00||;True|2025-10-22T20:51:29.6155916+08:00||;False|2025-10-22T20:50:47.1882956+08:00||;True|2025-10-22T15:01:04.1668366+08:00||;True|2025-10-22T14:49:43.6340569+08:00||;True|2025-10-22T14:38:39.4685603+08:00||;True|2025-10-21T18:35:28.8392541+08:00||;True|2025-10-20T10:31:05.5865212+08:00||;True|2025-10-20T10:20:41.5717101+08:00||;True|2025-10-19T10:08:33.6669332+08:00||;False|2025-10-19T10:07:22.3337545+08:00||;False|2025-10-19T10:05:22.9484805+08:00||;True|2025-10-10T16:54:27.1472888+08:00||;False|2025-10-10T16:53:44.1700030+08:00||;False|2025-10-10T16:52:48.1740453+08:00||;False|2025-10-10T16:51:21.5067253+08:00||;False|2025-10-10T16:50:19.2140597+08:00||;False|2025-10-10T16:49:21.2213290+08:00||;False|2025-10-10T16:48:47.7229948+08:00||;False|2025-10-10T16:48:15.1258700+08:00||;True|2025-09-30T13:29:42.2354235+08:00||;True|2025-09-25T11:44:52.6858389+08:00||;True|2025-09-25T11:08:27.8810109+08:00||;True|2025-09-25T09:28:50.2563374+08:00||;True|2025-09-24T16:14:02.3072184+08:00||;True|2025-09-23T22:38:52.4414757+08:00||;True|2025-09-23T22:19:07.1006356+08:00||;True|2025-09-23T22:18:01.5945225+08:00||;True|2025-09-23T22:06:15.6293613+08:00||;True|2025-09-23T21:53:14.2977444+08:00||;True|2025-09-23T21:46:55.2322411+08:00||;False|2025-09-23T21:45:23.7858854+08:00||;False|2025-09-23T21:03:51.8325689+08:00||;True|2025-09-23T10:03:32.2251920+08:00||;False|2025-09-23T09:38:08.2372201+08:00||;False|2025-09-23T09:37:49.9390545+08:00||;True|2024-03-11T21:31:45.8102398+08:00||;True|2024-03-11T07:26:24.7660541+08:00||;True|2024-03-08T22:08:40.0154831+08:00||;True|2024-03-03T10:14:36.8109114+08:00||;True|2024-03-02T18:44:57.3288537+08:00||;True|2024-01-24T17:51:37.9164415+08:00||;True|2024-01-24T16:36:50.5612157+08:00||;True|2024-01-24T15:51:35.7556653+08:00||;True|2024-01-17T23:40:40.7526618+08:00||;True|2024-01-17T23:36:10.3692844+08:00||;True|2024-01-17T23:22:03.2378834+08:00||;True|2024-01-03T11:35:44.7118292+08:00||;True|2024-01-03T11:11:23.4270453+08:00||;True|2024-01-03T11:04:35.2081526+08:00||;True|2024-01-03T10:57:03.7053107+08:00||;True|2024-01-03T10:51:50.7463989+08:00||;False|2024-01-03T10:50:24.9775312+08:00||;True|2024-01-03T10:47:30.1128183+08:00||;True|2024-01-03T10:42:55.8640657+08:00||;True|2024-01-03T09:24:24.3436056+08:00||;True|2024-01-02T23:40:38.2001198+08:00||;True|2024-01-02T23:08:36.7230444+08:00||;True|2024-01-02T22:53:43.9658255+08:00||;True|2024-01-02T22:25:38.5545279+08:00||;False|2024-01-02T22:24:42.6577609+08:00||;True|2024-01-02T22:04:33.4708889+08:00||;True|2024-01-02T21:49:57.9249898+08:00||;True|2023-12-28T22:42:58.5976180+08:00||;True|2023-12-28T22:24:09.2051205+08:00||;</History>
<LastFailureDetails /> <LastFailureDetails />
</PropertyGroup> </PropertyGroup>
</Project> </Project>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

+17 -2
View File
@@ -13,7 +13,7 @@
<a-radio-button value="1">喜欢的</a-radio-button> <a-radio-button value="1">喜欢的</a-radio-button>
<a-radio-button value="2">收藏的</a-radio-button> <a-radio-button value="2">收藏的</a-radio-button>
<a-radio-button value="3">关注的</a-radio-button> <a-radio-button value="3">关注的</a-radio-button>
<a-radio-button value="4">图文视频</a-radio-button> <a-radio-button value="4" v-if="showImageViedo">图文视频</a-radio-button>
</a-radio-group> </a-radio-group>
</a-form-item> </a-form-item>
<a-form-item :wrapper-col="{ offset: 8, span: 16 }"> <a-form-item :wrapper-col="{ offset: 8, span: 16 }">
@@ -85,7 +85,7 @@ const columns = ref([
const loading = ref(false); const loading = ref(false);
interface DataItem {} interface DataItem {}
const datas: UnwrapRef<DataItem[]> = reactive([]); const datas: UnwrapRef<DataItem[]> = reactive([]);
const showImageViedo = ref(false);
interface QuaryParam { interface QuaryParam {
dates?: string[]; dates?: string[];
pageIndex: number; pageIndex: number;
@@ -135,6 +135,21 @@ const pagination = ref({
showTotal: () => `${0}`, showTotal: () => `${0}`,
}); });
const getConfig = () => {
useApiStore()
.apiGetConfig()
.then((res) => {
if (res.code === 0) {
// 监听环境变量配置,控制是否显示图片视频下载选项
showImageViedo.value = res.data.downImageVideoFromEnv;
} else {
}
})
.catch((error) => {
console.error('获取配置失败:', error);
});
};
const handleTableChange = (e) => { const handleTableChange = (e) => {
console.log(e); console.log(e);
pagination.value.current = e.current; pagination.value.current = e.current;
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"dbconn": "", "dbconn": "",
"dbtype": "Sqlite", "dbtype": "Sqlite",
"DOWN_IMGVIDEO": "2" "DOWN_IMGVIDEO": ""
} }
+22 -20
View File
@@ -130,13 +130,12 @@ namespace dy.net.job
var config = _commonService.GetConfig(); var config = _commonService.GetConfig();
if (config == null) if (config == null)
{ {
Log.Debug($"{JobType}-请先在设置中初始化配置,再执行同步任务"); Log.Debug($"{JobType}-未获取到系统配置,任务终止!!!");
return; return;
} }
//将配置项打印日志 //将配置项打印日志
Console.WriteLine("当前配置如下:"); //config.PrintAsTable();
config.PrintAsTable();
// 2. 从配置中获取每页请求数量 // 2. 从配置中获取每页请求数量
if (config.BatchCount > 0) if (config.BatchCount > 0)
@@ -152,11 +151,11 @@ namespace dy.net.job
var cookies = await GetValidCookies(); var cookies = await GetValidCookies();
if (cookies == null || !cookies.Any()) if (cookies == null || !cookies.Any())
{ {
Log.Debug($"{JobType}-无可用Cookie,任务终止"); Log.Debug($"{JobType}-无有效Cookie,任务终止!!!");
return; return;
} }
Log.Debug($"{JobType}-当前有{cookies.Count}个cookie开启了同步,即将开始同步"); Log.Debug($"{JobType}-共发现{cookies.Count}个Cookie同步任务即将开始...");
// 6. 遍历每个有效的Cookie,执行同步操作 // 6. 遍历每个有效的Cookie,执行同步操作
foreach (var cookie in cookies) foreach (var cookie in cookies)
@@ -292,11 +291,11 @@ namespace dy.net.job
// 检查Cookie是否有效 // 检查Cookie是否有效
if (!IsCookieValid(cookie)) if (!IsCookieValid(cookie))
{ {
Log.Debug($"{JobType}-Cookie[{cookie.UserName}]无效,跳过"); Log.Debug($"{JobType}-Cookie[{cookie.UserName}]无效,任务终止!!!");
return; return;
} }
Log.Debug($"{JobType}-开始同步 Cookie-[{cookie.UserName}]"); Log.Debug($"{JobType}- Cookie-[{cookie.UserName}]开始同步...");
int syncCount = 0; // 本次同步成功的视频数量 int syncCount = 0; // 本次同步成功的视频数量
string cursor = "0"; // 初始游标 string cursor = "0"; // 初始游标
@@ -309,7 +308,7 @@ namespace dy.net.job
var data = await FetchVideoData(cookie, cursor); var data = await FetchVideoData(cookie, cursor);
if (data == null) if (data == null)
{ {
Log.Debug($"{JobType}-Cookie[{cookie.UserName}]取数据失败"); Log.Debug($"{JobType}-Cookie[{cookie.UserName}]取数据失败!!!");
break; break;
} }
@@ -336,7 +335,7 @@ namespace dy.net.job
} }
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex, $"{JobType}-处理Cookie[{cookie.Id}]时出错"); Log.Error(ex, $"{JobType}-Cookie[{cookie.Id}]同步出错!!!");
} }
} }
@@ -361,7 +360,7 @@ namespace dy.net.job
// 如果配置了下载图片视频,则处理图片集并合成视频 // 如果配置了下载图片视频,则处理图片集并合成视频
if (_downImageVideo) if (_downImageVideo)
{ {
if(config.DownImage||config.DownMp3||config.DownImage) if(config.DownImageVideo||config.DownMp3||config.DownImage)
{ {
var mergevideo = await ProcessImageSetAndMergeToVideo(cookie, item, data, config); var mergevideo = await ProcessImageSetAndMergeToVideo(cookie, item, data, config);
if (mergevideo != null) if (mergevideo != null)
@@ -406,18 +405,18 @@ namespace dy.net.job
// 如果文件已存在,跳过 // 如果文件已存在,跳过
if (File.Exists(savePath)) return null; if (File.Exists(savePath)) return null;
Log.Debug($"{JobType}-视频[{TikTokFileNameHelper.SanitizePath(item.Desc)}]开始下载"); Log.Debug($"{JobType}-视频[{TikTokFileNameHelper.SanitizePath(item.Desc)}]开始下载...");
// 随机延迟,模拟人类操作 // 随机延迟,模拟人类操作
await Task.Delay(_random.Next(1, 4) * 1000); await Task.Delay(_random.Next(1, 4) * 1000);
// 下载视频 // 下载视频
if (!await _douyinService.DownloadAsync(videoUrl, savePath, cookie.Cookies)) if (!await _douyinService.DownloadAsync(videoUrl, savePath, cookie.Cookies))
{ {
Log.Error($"{JobType}-{item?.Author?.Nickname??""}-视频[{TikTokFileNameHelper.SanitizePath(item.Desc)}]下载失败"); Log.Error($"{JobType}-{item?.Author?.Nickname??""}-视频[{TikTokFileNameHelper.SanitizePath(item.Desc)}]下载失败!!!");
return null; return null;
} }
else else
{ {
Log.Debug($"{JobType}-{item?.Author?.Nickname ?? ""}-视频[{TikTokFileNameHelper.SanitizePath(item.Desc)}]下载完成"); Log.Debug($"{JobType}-{item?.Author?.Nickname ?? ""}-视频[{TikTokFileNameHelper.SanitizePath(item.Desc)}]下载完成.");
} }
// 下载视频封面 // 下载视频封面
@@ -459,7 +458,7 @@ namespace dy.net.job
// 检查图片保存路径是否配置 // 检查图片保存路径是否配置
if (string.IsNullOrWhiteSpace(cookie.ImgSavePath)) if (string.IsNullOrWhiteSpace(cookie.ImgSavePath))
{ {
Log.Error($"{JobType}-图视频同步-没有配置图片存储路径"); Log.Error($"{JobType}-图视频同步-没有配置图片存储路径,任务终止!!!");
return null; return null;
} }
@@ -467,7 +466,7 @@ namespace dy.net.job
var imageService = _serviceProvider.GetService<ImageMergeToVideoService>(); var imageService = _serviceProvider.GetService<ImageMergeToVideoService>();
if (imageService == null) if (imageService == null)
{ {
Log.Error($"{JobType} -图视频同步-无法实例化 ImageMergeToVideoService。"); Log.Error($"{JobType} -图视频同步异常,请联系作者!!!");
return null; return null;
} }
@@ -499,7 +498,7 @@ namespace dy.net.job
var mergeResult = await imageService.MergeToVideo(AppContext.BaseDirectory, reqParams, savePath, fileNamefolder,config.DownImageVideo,config.DownImage,config.DownMp3); var mergeResult = await imageService.MergeToVideo(AppContext.BaseDirectory, reqParams, savePath, fileNamefolder,config.DownImageVideo,config.DownImage,config.DownMp3);
if (!mergeResult) if (!mergeResult)
{ {
Log.Error($"{JobType}-图视频同步-视频[{TikTokFileNameHelper.SanitizePath(item.Desc)}]合成失败"); Log.Error($"{JobType}-图视频-[{TikTokFileNameHelper.SanitizePath(item.Desc)}]合成失败!!!");
return null; return null;
} }
@@ -508,13 +507,13 @@ namespace dy.net.job
// 检查合成后的视频文件是否有效 // 检查合成后的视频文件是否有效
if (!File.Exists(savePath) || new FileInfo(savePath).Length <= 0) if (!File.Exists(savePath) || new FileInfo(savePath).Length <= 0)
{ {
Log.Error($"{JobType}-图视频同步-视频[{TikTokFileNameHelper.SanitizePath(item.Desc)}]合成失败"); Log.Error($"{JobType}-图视频-[{TikTokFileNameHelper.SanitizePath(item.Desc)}]合成失败!!!");
// 清理无效的文件和文件夹 // 清理无效的文件和文件夹
if (Directory.Exists(fileNamefolder)) if (Directory.Exists(fileNamefolder))
{ {
File.Delete(savePath); File.Delete(savePath);
Directory.Delete(fileNamefolder, true); Directory.Delete(fileNamefolder, true);
Log.Error($"{JobType}-图视频同步-已删除合成失败的视频文件和目录"); Log.Error($"{JobType}-图视频-删除合成失败的视频文件和目录...");
} }
return null; return null;
} }
@@ -720,6 +719,8 @@ namespace dy.net.job
/// <returns>一个表示异步操作的任务</returns> /// <returns>一个表示异步操作的任务</returns>
private async Task CleanupFailedVideos(List<DouyinVideo> videos) private async Task CleanupFailedVideos(List<DouyinVideo> videos)
{ {
Log.Debug($"{JobType}-数据库保存失败,开始清理本次下载的视频目录...");
foreach (var video in videos) foreach (var video in videos)
{ {
// 异步删除文件和文件夹,避免阻塞主线程 // 异步删除文件和文件夹,避免阻塞主线程
@@ -736,14 +737,15 @@ namespace dy.net.job
{ {
Directory.Delete(directory); Directory.Delete(directory);
} }
Log.Debug($"{JobType}-清理失败视频文件成功: {video.VideoSavePath}!!!");
} }
catch (Exception ex) catch (Exception ex)
{ {
Log.Warning(ex, $"{JobType}-清理失败视频文件出错: {video.VideoSavePath}"); Log.Warning(ex, $"{JobType}-清理失败视频文件出错: {video.VideoSavePath}!!!");
} }
}); });
} }
Log.Debug($"{JobType}-因数据库保存失败,已清理本次下载的视频目录");
} }
/// <summary> /// <summary>