合集 tvshow.nfo文件优化
This commit is contained in:
@@ -451,45 +451,45 @@ namespace dy.net.Controllers
|
||||
return Ok(data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 所有视频重新生成nfo文件
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("renfo")]
|
||||
public async Task<IActionResult> ReCreateNfo()
|
||||
{
|
||||
var videos = await douyinVideoService.GetAllAsync();
|
||||
if (videos == null || videos.Count == 0)
|
||||
{
|
||||
return ApiResult.Success("暂无视频数据需要生成NFO文件");
|
||||
}
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
var totalCount = videos.Count;
|
||||
foreach (var video in videos)
|
||||
{
|
||||
try
|
||||
{
|
||||
NfoFileGenerator.GenerateVideoNfoFile(video);
|
||||
Serilog.Log.Debug($"刮削视频(Path:{video.VideoSavePath})生成NFO成功!");
|
||||
await Task.Delay(50);
|
||||
}
|
||||
catch (Exception singleEx)
|
||||
{
|
||||
Serilog.Log.Error($"刮削视频(Path:{video.VideoSavePath})生成NFO失败:{singleEx.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Serilog.Log.Error($"NFO文件生成任务执行异常:{ex.Message}\n{ex.StackTrace}");
|
||||
}
|
||||
});
|
||||
///// <summary>
|
||||
///// 所有视频重新生成nfo文件
|
||||
///// </summary>
|
||||
///// <returns></returns>
|
||||
//[HttpGet("renfo")]
|
||||
//public async Task<IActionResult> ReCreateNfo()
|
||||
//{
|
||||
// var videos = await douyinVideoService.GetAllAsync();
|
||||
// if (videos == null || videos.Count == 0)
|
||||
// {
|
||||
// return ApiResult.Success("暂无视频数据需要生成NFO文件");
|
||||
// }
|
||||
// _ = Task.Run(async () =>
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// var totalCount = videos.Count;
|
||||
// foreach (var video in videos)
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// NfoFileGenerator.GenerateVideoNfoFile(video);
|
||||
// Serilog.Log.Debug($"刮削视频(Path:{video.VideoSavePath})生成NFO成功!");
|
||||
// await Task.Delay(50);
|
||||
// }
|
||||
// catch (Exception singleEx)
|
||||
// {
|
||||
// Serilog.Log.Error($"刮削视频(Path:{video.VideoSavePath})生成NFO失败:{singleEx.Message}");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Serilog.Log.Error($"NFO文件生成任务执行异常:{ex.Message}\n{ex.StackTrace}");
|
||||
// }
|
||||
// });
|
||||
|
||||
return ApiResult.Success();
|
||||
}
|
||||
// return ApiResult.Success();
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\</_PublishTargetUrl>
|
||||
<History>True|2026-02-12T09:16:08.2015031Z||;False|2026-02-12T17:16:02.9041381+08:00||;True|2026-02-12T17:12:44.8082909+08:00||;True|2026-02-12T17:04:22.1666828+08:00||;True|2026-02-12T17:03:04.2760582+08:00||;True|2026-02-12T16:52:01.7403172+08:00||;True|2026-02-12T16:49:57.7070533+08:00||;False|2026-02-12T16:49:53.4063422+08:00||;True|2026-02-12T16:43:13.2040344+08:00||;False|2026-02-12T16:42:58.3321319+08:00||;True|2026-02-12T16:29:28.6386479+08:00||;True|2026-02-12T16:19:46.9195592+08:00||;True|2026-02-12T14:32:25.3192428+08:00||;True|2026-02-12T12:18:02.1864306+08:00||;True|2026-02-11T20:39:23.8084775+08:00||;True|2026-02-11T20:37:06.6507806+08:00||;True|2026-02-11T20:04:19.1839991+08:00||;True|2026-02-10T21:59:37.6685615+08:00||;True|2026-02-10T15:43:23.5038986+08:00||;True|2026-02-10T14:42:48.6214001+08:00||;True|2026-02-06T23:15:19.0037070+08:00||;True|2026-02-06T22:52:30.1006808+08:00||;True|2026-02-06T22:49:02.0056235+08:00||;True|2026-02-06T22:45:30.6355735+08:00||;False|2026-02-06T22:45:25.7210123+08:00||;True|2026-02-06T22:38:37.6994272+08:00||;True|2026-02-06T22:14:47.8146805+08:00||;True|2026-02-03T22:34:12.3588819+08:00||;True|2026-02-03T22:20:08.9945012+08:00||;True|2026-02-03T21:06:17.7655312+08:00||;True|2026-02-02T23:24:09.9134119+08:00||;True|2026-02-02T23:21:52.3235946+08:00||;False|2026-02-02T23:21:47.1386702+08:00||;True|2026-02-02T23:20:46.6277206+08:00||;False|2026-02-02T23:20:40.3158947+08:00||;True|2026-02-02T22:55:39.4268475+08:00||;True|2026-02-01T21:34:30.5989260+08:00||;True|2026-02-01T21:30:20.7556066+08:00||;True|2026-01-30T21:56:47.1840381+08:00||;True|2026-01-28T22:01:00.8412391+08:00||;False|2026-01-28T21:49:29.1242233+08:00||;True|2026-01-28T21:48:26.1707204+08:00||;True|2026-01-28T21:48:05.8291762+08:00||;False|2026-01-28T21:48:01.1596391+08:00||;True|2026-01-28T21:37:59.4831763+08:00||;False|2026-01-28T21:37:53.5855464+08:00||;True|2026-01-28T21:27:51.1872828+08:00||;True|2026-01-28T13:01:14.1677037+08:00||;True|2026-01-28T12:36:45.7819776+08:00||;True|2026-01-28T12:09:15.6540204+08:00||;True|2026-01-28T12:08:40.0490617+08:00||;True|2026-01-28T11:58:55.4078870+08:00||;True|2026-01-27T22:37:03.3304942+08:00||;True|2026-01-27T22:05:40.4316281+08:00||;True|2026-01-26T22:30:43.5083924+08:00||;False|2026-01-26T22:30:33.7355213+08:00||;True|2026-01-26T22:26:26.0218548+08:00||;True|2026-01-26T22:21:32.3171217+08:00||;True|2026-01-26T22:20:40.3916780+08:00||;True|2026-01-26T22:16:19.1017273+08:00||;True|2026-01-26T22:13:34.2028883+08:00||;True|2026-01-26T21:46:23.7117812+08:00||;True|2026-01-26T21:41:19.6963033+08:00||;True|2026-01-25T21:27:13.9893777+08:00||;True|2026-01-24T21:45:22.8493624+08:00||;True|2026-01-24T21:31:35.4635265+08:00||;True|2026-01-24T21:27:31.3098506+08:00||;True|2026-01-24T15:47:01.6934638+08:00||;True|2026-01-24T15:32:35.6316009+08:00||;True|2026-01-24T15:16:28.7216639+08:00||;True|2026-01-23T22:14:26.8066324+08:00||;True|2026-01-23T13:36:48.4086406+08:00||;True|2026-01-23T13:30:27.2924204+08:00||;True|2026-01-23T13:02:53.3219368+08:00||;True|2026-01-23T13:01:54.3466638+08:00||;True|2026-01-23T13:01:28.8560809+08:00||;True|2026-01-22T23:18:32.0400436+08:00||;True|2026-01-22T22:29:29.5746209+08:00||;True|2026-01-22T21:32:21.7284081+08:00||;True|2026-01-22T21:20:26.5985955+08:00||;False|2026-01-22T21:20:21.1372539+08:00||;True|2026-01-22T21:11:18.3771739+08:00||;True|2026-01-22T20:58:55.9862778+08:00||;True|2026-01-22T20:51:48.6699461+08:00||;False|2026-01-22T20:51:42.2079210+08:00||;True|2026-01-22T20:50:34.7280114+08:00||;True|2026-01-22T20:50:11.1588492+08:00||;True|2026-01-22T16:11:14.0626037+08:00||;True|2026-01-22T15:53:16.6377347+08:00||;True|2026-01-22T15:45:34.0935091+08:00||;True|2026-01-22T12:44:28.1577014+08:00||;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||;</History>
|
||||
<History>True|2026-02-12T11:27:23.6648031Z||;True|2026-02-12T19:25:10.7424743+08:00||;True|2026-02-12T17:33:31.2163848+08:00||;True|2026-02-12T17:16:08.2015031+08:00||;False|2026-02-12T17:16:02.9041381+08:00||;True|2026-02-12T17:12:44.8082909+08:00||;True|2026-02-12T17:04:22.1666828+08:00||;True|2026-02-12T17:03:04.2760582+08:00||;True|2026-02-12T16:52:01.7403172+08:00||;True|2026-02-12T16:49:57.7070533+08:00||;False|2026-02-12T16:49:53.4063422+08:00||;True|2026-02-12T16:43:13.2040344+08:00||;False|2026-02-12T16:42:58.3321319+08:00||;True|2026-02-12T16:29:28.6386479+08:00||;True|2026-02-12T16:19:46.9195592+08:00||;True|2026-02-12T14:32:25.3192428+08:00||;True|2026-02-12T12:18:02.1864306+08:00||;True|2026-02-11T20:39:23.8084775+08:00||;True|2026-02-11T20:37:06.6507806+08:00||;True|2026-02-11T20:04:19.1839991+08:00||;True|2026-02-10T21:59:37.6685615+08:00||;True|2026-02-10T15:43:23.5038986+08:00||;True|2026-02-10T14:42:48.6214001+08:00||;True|2026-02-06T23:15:19.0037070+08:00||;True|2026-02-06T22:52:30.1006808+08:00||;True|2026-02-06T22:49:02.0056235+08:00||;True|2026-02-06T22:45:30.6355735+08:00||;False|2026-02-06T22:45:25.7210123+08:00||;True|2026-02-06T22:38:37.6994272+08:00||;True|2026-02-06T22:14:47.8146805+08:00||;True|2026-02-03T22:34:12.3588819+08:00||;True|2026-02-03T22:20:08.9945012+08:00||;True|2026-02-03T21:06:17.7655312+08:00||;True|2026-02-02T23:24:09.9134119+08:00||;True|2026-02-02T23:21:52.3235946+08:00||;False|2026-02-02T23:21:47.1386702+08:00||;True|2026-02-02T23:20:46.6277206+08:00||;False|2026-02-02T23:20:40.3158947+08:00||;True|2026-02-02T22:55:39.4268475+08:00||;True|2026-02-01T21:34:30.5989260+08:00||;True|2026-02-01T21:30:20.7556066+08:00||;True|2026-01-30T21:56:47.1840381+08:00||;True|2026-01-28T22:01:00.8412391+08:00||;False|2026-01-28T21:49:29.1242233+08:00||;True|2026-01-28T21:48:26.1707204+08:00||;True|2026-01-28T21:48:05.8291762+08:00||;False|2026-01-28T21:48:01.1596391+08:00||;True|2026-01-28T21:37:59.4831763+08:00||;False|2026-01-28T21:37:53.5855464+08:00||;True|2026-01-28T21:27:51.1872828+08:00||;True|2026-01-28T13:01:14.1677037+08:00||;True|2026-01-28T12:36:45.7819776+08:00||;True|2026-01-28T12:09:15.6540204+08:00||;True|2026-01-28T12:08:40.0490617+08:00||;True|2026-01-28T11:58:55.4078870+08:00||;True|2026-01-27T22:37:03.3304942+08:00||;True|2026-01-27T22:05:40.4316281+08:00||;True|2026-01-26T22:30:43.5083924+08:00||;False|2026-01-26T22:30:33.7355213+08:00||;True|2026-01-26T22:26:26.0218548+08:00||;True|2026-01-26T22:21:32.3171217+08:00||;True|2026-01-26T22:20:40.3916780+08:00||;True|2026-01-26T22:16:19.1017273+08:00||;True|2026-01-26T22:13:34.2028883+08:00||;True|2026-01-26T21:46:23.7117812+08:00||;True|2026-01-26T21:41:19.6963033+08:00||;True|2026-01-25T21:27:13.9893777+08:00||;True|2026-01-24T21:45:22.8493624+08:00||;True|2026-01-24T21:31:35.4635265+08:00||;True|2026-01-24T21:27:31.3098506+08:00||;True|2026-01-24T15:47:01.6934638+08:00||;True|2026-01-24T15:32:35.6316009+08:00||;True|2026-01-24T15:16:28.7216639+08:00||;True|2026-01-23T22:14:26.8066324+08:00||;True|2026-01-23T13:36:48.4086406+08:00||;True|2026-01-23T13:30:27.2924204+08:00||;True|2026-01-23T13:02:53.3219368+08:00||;True|2026-01-23T13:01:54.3466638+08:00||;True|2026-01-23T13:01:28.8560809+08:00||;True|2026-01-22T23:18:32.0400436+08:00||;True|2026-01-22T22:29:29.5746209+08:00||;True|2026-01-22T21:32:21.7284081+08:00||;True|2026-01-22T21:20:26.5985955+08:00||;False|2026-01-22T21:20:21.1372539+08:00||;True|2026-01-22T21:11:18.3771739+08:00||;True|2026-01-22T20:58:55.9862778+08:00||;True|2026-01-22T20:51:48.6699461+08:00||;False|2026-01-22T20:51:42.2079210+08:00||;True|2026-01-22T20:50:34.7280114+08:00||;True|2026-01-22T20:50:11.1588492+08:00||;True|2026-01-22T16:11:14.0626037+08:00||;True|2026-01-22T15:53:16.6377347+08:00||;True|2026-01-22T15:45:34.0935091+08:00||;True|2026-01-22T12:44:28.1577014+08:00||;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||;</History>
|
||||
<LastFailureDetails />
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -243,7 +243,7 @@
|
||||
|
||||
<input ref="importFileInput" type="file" accept=".json" class="import-file-input" @change="handleImportFile">
|
||||
</div>
|
||||
<div class="top-right-float-btn-container">
|
||||
<div class="top-right-float-btn-container" v-if="false">
|
||||
<a-tooltip title="重置所有刮削" placement="bottom">
|
||||
<a-button class="top-right-float-btn" type="primary" shape="circle" @click="renfo">
|
||||
<bulb-outlined />
|
||||
|
||||
@@ -483,7 +483,7 @@ namespace dy.net.job
|
||||
{
|
||||
if (cate != null && cate.CateType != VideoTypeEnum.dy_custom_collect)
|
||||
{
|
||||
if (syncCount >= 15)
|
||||
if (syncCount >= 30)
|
||||
{
|
||||
Log.Debug($"[{cookie.UserName}][{VideoType.GetDesc()}]:本次同步数量{syncCount},等下次任务继续同步");
|
||||
return true;
|
||||
@@ -684,7 +684,14 @@ namespace dy.net.job
|
||||
}
|
||||
}
|
||||
//动态视频生成nfo
|
||||
if (cate != null && (VideoType == VideoTypeEnum.dy_mix || VideoType == VideoTypeEnum.dy_series))
|
||||
{
|
||||
NfoFileGenerator.GenerateVideoNfoFile(dynamicVideo, cate.Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
NfoFileGenerator.GenerateVideoNfoFile(dynamicVideo);
|
||||
}
|
||||
videos.Add(dynamicVideo);
|
||||
syncCount++;
|
||||
if (syncCount + syncCount1 >= config.BatchCount)
|
||||
@@ -1461,6 +1468,10 @@ namespace dy.net.job
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cate != null&&(VideoType == VideoTypeEnum.dy_mix || VideoType == VideoTypeEnum.dy_series))
|
||||
{
|
||||
NfoFileGenerator.GenerateVideoNfoFile(video,cate.Name);
|
||||
}
|
||||
// 生成NFO文件,动态视频 合成后重新生成,不在这里生成nfo
|
||||
NfoFileGenerator.GenerateVideoNfoFile(video);
|
||||
}
|
||||
|
||||
@@ -17,8 +17,9 @@ namespace dy.net.utils
|
||||
/// NFO文件包含视频的元数据信息,如标题、作者、封面等
|
||||
/// </summary>
|
||||
/// <param name="video">视频信息</param>
|
||||
/// <param name="tvShowTitle"></param>
|
||||
/// <returns>一个表示异步操作的任务</returns>
|
||||
public static void GenerateVideoNfoFile(DouyinVideo video)
|
||||
public static void GenerateVideoNfoFile(DouyinVideo video, string tvShowTitle = "")
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -76,11 +77,11 @@ namespace dy.net.utils
|
||||
string directory = Path.GetDirectoryName(nfoFullPath);
|
||||
nfoFullPath = Path.Combine(directory, "tvshow.nfo");
|
||||
if (!File.Exists(nfoFullPath))
|
||||
GenerateNfoFile(nfoInfo, nfoFullPath, "tvshow");
|
||||
GenerateNfoFile(nfoInfo, nfoFullPath, tvShowTitle, "tvshow");
|
||||
|
||||
var nfoFullPathMix = Path.Combine(directory, Path.GetFileNameWithoutExtension(video.VideoSavePath) + ".nfo");
|
||||
if (!File.Exists(nfoFullPathMix))
|
||||
GenerateNfoFile(nfoInfo, nfoFullPathMix, "episodedetails");
|
||||
GenerateNfoFile(nfoInfo, nfoFullPathMix,"", "episodedetails");
|
||||
|
||||
}
|
||||
else
|
||||
@@ -95,7 +96,7 @@ namespace dy.net.utils
|
||||
}
|
||||
}
|
||||
|
||||
private static void GenerateNfoFile(DouyinVideoNfo videoInfo, string filePath, string xmlRoot = "movie")
|
||||
private static void GenerateNfoFile(DouyinVideoNfo videoInfo, string filePath,string tvShowTitle="", string xmlRoot = "movie")
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -113,8 +114,19 @@ namespace dy.net.utils
|
||||
//root.Add(new XElement("plot", $"<![CDATA[{videoInfo.Title}]]>"));
|
||||
|
||||
// 添加视频信息(先清理无效字符)
|
||||
if(xmlRoot== "tvshow")
|
||||
{
|
||||
if(!string.IsNullOrEmpty(tvShowTitle))
|
||||
root.Add(new XElement("title", CleanInvalidXmlChars(tvShowTitle)));
|
||||
else if (!string.IsNullOrWhiteSpace(videoInfo.Title))
|
||||
root.Add(new XElement("title", CleanInvalidXmlChars(videoInfo.Title)));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(videoInfo.Title))
|
||||
root.Add(new XElement("title", CleanInvalidXmlChars(videoInfo.Title)));
|
||||
}
|
||||
|
||||
|
||||
//if (!string.IsNullOrWhiteSpace(videoInfo.Author))
|
||||
// root.Add(new XElement("author", CleanInvalidXmlChars(videoInfo.Author)));
|
||||
|
||||
Reference in New Issue
Block a user