From e4dedcad30b12e43ded986c228bf575d8f140bc9 Mon Sep 17 00:00:00 2001 From: lijianyou Date: Fri, 10 Oct 2025 13:04:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Program.cs | 2 +- db/dy.sqlite | Bin 155648 -> 208896 bytes job/DouYinCollectSyncJob.cs | 28 +++++++++++++------- job/DouYinFavoritSyncJob.cs | 29 +++++++++++++-------- model/DyCollectVideo.cs | 2 +- model/DyUserCookies.cs | 11 ++++++++ repository/DyCollectVideoRepository.cs | 6 ++--- repository/UserRepository.cs | 6 ++--- service/CommonService.cs | 2 +- service/DyHttpClientService.cs | 12 ++++----- utils/BogusManager.cs | 2 +- utils/NfoFileGenerator.cs | 10 ++++---- utils/NfoGenerator.cs | 34 ++++++++++++------------- 13 files changed, 86 insertions(+), 58 deletions(-) diff --git a/Program.cs b/Program.cs index 731ddd3..51e5185 100644 --- a/Program.cs +++ b/Program.cs @@ -292,7 +292,7 @@ namespace dy.net connString = CreateSqliteDBConn(); } - if (string.IsNullOrEmpty(connString)) + if (string.IsNullOrWhiteSpace(connString)) { return null; } diff --git a/db/dy.sqlite b/db/dy.sqlite index 796a194be4c72e2f58b18fc1272872d6001232d9..25fbcb42221ce88db0b337a4d5b2ffe6a7f43d08 100644 GIT binary patch literal 208896 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 literal 155648 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 C0K_x^ diff --git a/job/DouYinCollectSyncJob.cs b/job/DouYinCollectSyncJob.cs index 8fb5e09..e176093 100644 --- a/job/DouYinCollectSyncJob.cs +++ b/job/DouYinCollectSyncJob.cs @@ -56,7 +56,7 @@ namespace dy.net.job foreach (var cookie in cookies) { Serilog.Log.Debug($"collect-开始同步 Cookie-[{cookie.UserName}]收藏视频"); - if (string.IsNullOrEmpty(cookie.Cookies)|| cookie.Cookies.Length<1000) + if (string.IsNullOrWhiteSpace(cookie.Cookies)|| cookie.Cookies.Length<1000) { Serilog.Log.Debug($"collect-Cookie-[{cookie.UserName}]无效,跳过"); continue; @@ -67,7 +67,9 @@ namespace dy.net.job int index = 0; bool hasMore = true; - string cursor = "0"; + + string cursor = "0"; + while (hasMore) { var data = await _douyinService.SyncCollectVideos(cursor, count, cookie.Cookies); @@ -78,7 +80,9 @@ namespace dy.net.job Serilog.Log.Debug($"collect-Cookie[{cookie.UserName}]获取收藏数据失败,请检查一下Cookie"); break; } - cursor = data != null && !string.IsNullOrEmpty(data.Cursor) ? data.Cursor : "0"; + cursor = data != null && !string.IsNullOrWhiteSpace(data.Cursor) ? data.Cursor : "0"; + + if (data.AwemeList == null || !data.AwemeList.Any()) { break; @@ -98,7 +102,7 @@ namespace dy.net.job if (v == null) continue; var videoUrl = v.PlayAddr.UrlList != null && v.PlayAddr.UrlList.Any() ? v.PlayAddr.UrlList[0] : null; - if (string.IsNullOrEmpty(videoUrl)) continue; + if (string.IsNullOrWhiteSpace(videoUrl)) continue; var tag1 = tags.FirstOrDefault(x => x.Level == 1)?.TagName; var tag2 = tags.FirstOrDefault(x => x.Level == 2)?.TagName; @@ -115,6 +119,8 @@ namespace dy.net.job if (!File.Exists(savePath)) { + Serilog.Log.Debug($"collect-视频[{SanitizePath(item.Desc)}]开始下载"); + var downVideo = await _douyinService.DownloadAsync(videoUrl, savePath, cookie.Cookies); Serilog.Log.Debug($"collect-视频[{SanitizePath(item.Desc)}]下载{(downVideo ? "成功" : "失败")}"); if (downVideo) @@ -193,7 +199,7 @@ namespace dy.net.job // 收集所有需要删除的目录(去重) foreach (var video in videos) { - if (!string.IsNullOrEmpty(video.VideoSavePath) && Directory.Exists(video.VideoSavePath)) + if (!string.IsNullOrWhiteSpace(video.VideoSavePath) && Directory.Exists(video.VideoSavePath)) { var deletePath = Path.GetDirectoryName(video.VideoSavePath); Directory.Delete(deletePath, recursive: true); @@ -237,7 +243,7 @@ namespace dy.net.job { var coverUrl = item.Video.Cover.UrlList != null && item.Video.Cover.UrlList.Any() ? item.Video.Cover.UrlList[0] : null; - if (string.IsNullOrEmpty(coverUrl)) return; + if (string.IsNullOrWhiteSpace(coverUrl)) return; var coverImgName = "poster.jpg"; var coverSavePath = Path.Combine(saveFolder, coverImgName); @@ -268,7 +274,7 @@ namespace dy.net.job var avatarUrl = item.Author.AvatarLarger?.UrlList != null && item.Author.AvatarLarger.UrlList.Any() ? item.Author.AvatarLarger.UrlList[0] : null; - if (string.IsNullOrEmpty(avatarUrl)) return; + if (string.IsNullOrWhiteSpace(avatarUrl)) return; var path = Path.Combine(mainPath, "author"); if (!Directory.Exists(path)) { @@ -293,10 +299,10 @@ namespace dy.net.job private static string CreateSaveFolder(DyUserCookies cookie, Aweme item, string? tag1, string? tag2) { // 路径中避免特殊字符,用ID替代描述 - var safeTag1 = string.IsNullOrEmpty(tag1) ? "other" : SanitizePath(tag1); + var safeTag1 = string.IsNullOrWhiteSpace(tag1) ? "other" : SanitizePath(tag1); List pathParts = new List { cookie.SavePath, safeTag1 }; return Path.Combine(pathParts[0], string.Join("-", pathParts.Skip(1)), SanitizePath(item.Desc) + "@" + item.AwemeId); - //if (string.IsNullOrEmpty(tag2)) + //if (string.IsNullOrWhiteSpace(tag2)) // return Path.Combine(pathParts[0], string.Join("-", pathParts.Skip(1)), SanitizePath(item.Desc) + "@" + item.AwemeId); //else // return Path.Combine(pathParts[0], string.Join("-", pathParts.Skip(1)), tag2 + "@" + item.AwemeId); @@ -305,6 +311,10 @@ namespace dy.net.job // 清理路径中的特殊字符(避免创建文件夹失败) private static string SanitizePath(string path) { + if (string.IsNullOrWhiteSpace(path)) + { + path = "其他"; + } foreach (var c in Path.GetInvalidFileNameChars()) { path = path.Replace(c, '_'); diff --git a/job/DouYinFavoritSyncJob.cs b/job/DouYinFavoritSyncJob.cs index 250df8c..fd9b8bd 100644 --- a/job/DouYinFavoritSyncJob.cs +++ b/job/DouYinFavoritSyncJob.cs @@ -51,17 +51,17 @@ namespace dy.net.job foreach (var cookie in cookies) { Serilog.Log.Debug($"favorite-开始同步 Cookie-[{cookie.UserName}]喜欢的视频"); - if (string.IsNullOrEmpty(cookie.Cookies)|| cookie.Cookies.Length<1000) + if (string.IsNullOrWhiteSpace(cookie.Cookies)|| cookie.Cookies.Length<1000) { Serilog.Log.Debug($"favorite-Cookie-[{cookie.UserName}]无效,跳过"); continue; } - if(string.IsNullOrEmpty(cookie.FavSavePath)) + if(string.IsNullOrWhiteSpace(cookie.FavSavePath)) { Serilog.Log.Debug($"favorite-Cookie-[{cookie.UserName}]未设置保存路径,跳过"); continue; } - if (string.IsNullOrEmpty(cookie.SecUserId)) { + if (string.IsNullOrWhiteSpace(cookie.SecUserId)|| cookie.SecUserId.Length<10) { Serilog.Log.Debug($"favorite-Cookie-[{cookie.UserName}]未设置SecUserId,跳过"); continue; } @@ -82,7 +82,8 @@ namespace dy.net.job Serilog.Log.Debug($"favorite-Cookie[{cookie.UserName}]获取喜欢的数据失败,请检查一下Cookie和sec_user_id"); break; } - cursor = data != null && !string.IsNullOrEmpty(data.MaxCursor) ? data.MaxCursor : "0"; + cursor = data != null && !string.IsNullOrWhiteSpace(data.MaxCursor) ? data.MaxCursor : "0"; + if (data.AwemeList == null || !data.AwemeList.Any()) { break; @@ -102,7 +103,7 @@ namespace dy.net.job if (v == null) continue; var videoUrl = v.PlayAddr.UrlList != null && v.PlayAddr.UrlList.Any() ? v.PlayAddr.UrlList[0] : null; - if (string.IsNullOrEmpty(videoUrl)) continue; + if (string.IsNullOrWhiteSpace(videoUrl)) continue; var tag1 = tags.FirstOrDefault(x => x.Level == 1)?.TagName; var tag2 = tags.FirstOrDefault(x => x.Level == 2)?.TagName; @@ -119,6 +120,8 @@ namespace dy.net.job if (!File.Exists(savePath)) { + Serilog.Log.Debug($"favorite-视频[{SanitizePath(item.Desc)}]开始下载"); + var downVideo = await _douyinService.DownloadAsync(videoUrl, savePath, cookie.Cookies); Serilog.Log.Debug($"favorite-视频[{SanitizePath(item.Desc)}]下载{(downVideo ? "成功" : "失败")}"); if (downVideo) @@ -197,7 +200,7 @@ namespace dy.net.job // 收集所有需要删除的目录(去重) foreach (var video in videos) { - if (!string.IsNullOrEmpty(video.VideoSavePath) && Directory.Exists(video.VideoSavePath)) + if (!string.IsNullOrWhiteSpace(video.VideoSavePath) && Directory.Exists(video.VideoSavePath)) { var deletePath = Path.GetDirectoryName(video.VideoSavePath); Directory.Delete(deletePath, recursive: true); @@ -241,7 +244,7 @@ namespace dy.net.job { var coverUrl = item.Video.Cover.UrlList != null && item.Video.Cover.UrlList.Any() ? item.Video.Cover.UrlList[0] : null; - if (string.IsNullOrEmpty(coverUrl)) return; + if (string.IsNullOrWhiteSpace(coverUrl)) return; var coverImgName = "poster.jpg"; var coverSavePath = Path.Combine(saveFolder, coverImgName); @@ -273,11 +276,11 @@ namespace dy.net.job var avatarUrl = item.Author.AvatarLarger?.UrlList != null && item.Author.AvatarLarger.UrlList.Any() ? item.Author.AvatarLarger.UrlList[0] : null; - if (string.IsNullOrEmpty(avatarUrl)) { + if (string.IsNullOrWhiteSpace(avatarUrl)) { avatarUrl = item.Author.AvatarThumb?.UrlList != null && item.Author.AvatarThumb.UrlList.Any() ? item.Author.AvatarThumb.UrlList[0] : null; } - if (string.IsNullOrEmpty(avatarUrl)) return; + if (string.IsNullOrWhiteSpace(avatarUrl)) return; var path = Path.Combine(mainPath, "author"); if (!Directory.Exists(path)) { @@ -302,10 +305,10 @@ namespace dy.net.job private static string CreateSaveFolder(DyUserCookies cookie, Aweme item, string? tag1, string? tag2) { // 路径中避免特殊字符,用ID替代描述 - var safeTag1 = string.IsNullOrEmpty(tag1) ? "other" : SanitizePath(tag1); + var safeTag1 = string.IsNullOrWhiteSpace(tag1) ? "other" : SanitizePath(tag1); List pathParts = new List { cookie.FavSavePath, safeTag1 }; return Path.Combine(pathParts[0], string.Join("-", pathParts.Skip(1)), SanitizePath(item.Desc) + "@" + item.AwemeId); - //if (string.IsNullOrEmpty(tag2)) + //if (string.IsNullOrWhiteSpace(tag2)) // return Path.Combine(pathParts[0], string.Join("-", pathParts.Skip(1)), SanitizePath(item.Desc) + "@" + item.AwemeId); //else // return Path.Combine(pathParts[0], string.Join("-", pathParts.Skip(1)), tag2 + "@" + item.AwemeId); @@ -314,6 +317,10 @@ namespace dy.net.job // 清理路径中的特殊字符(避免创建文件夹失败) private static string SanitizePath(string path) { + if (string.IsNullOrWhiteSpace(path)) + { + path = "其他"; + } foreach (var c in Path.GetInvalidFileNameChars()) { path = path.Replace(c, '_'); diff --git a/model/DyCollectVideo.cs b/model/DyCollectVideo.cs index ea33d3e..ac5547f 100644 --- a/model/DyCollectVideo.cs +++ b/model/DyCollectVideo.cs @@ -125,6 +125,6 @@ namespace dy.net.model public string ViedoTypeStr => ViedoType == "1" ? "我喜欢的" : "我收藏的"; [SugarColumn(IsIgnore = true)] - public string ViedoCate =>(string.IsNullOrEmpty(Tag1) ? "" : Tag1) + "/" + (string.IsNullOrEmpty(Tag2) ? "" : Tag2); + public string ViedoCate =>(string.IsNullOrWhiteSpace(Tag1) ? "" : Tag1) + "/" + (string.IsNullOrWhiteSpace(Tag2) ? "" : Tag2); } } diff --git a/model/DyUserCookies.cs b/model/DyUserCookies.cs index 32052dd..4d731fc 100644 --- a/model/DyUserCookies.cs +++ b/model/DyUserCookies.cs @@ -41,5 +41,16 @@ namespace dy.net.model /// [SugarColumn(Length =500,IsNullable =true)] public string FavSavePath { get; set; } + + ///// + ///// 最新收藏夹的分页页码 + ///// + //[SugarColumn(Length =500,IsNullable =true)] + //public string CollectMaxCursor { get; set; } + ///// + ///// 最新我喜欢的分页页码 + ///// + //[SugarColumn(Length = 500, IsNullable = true)] + //public string FavoriteMaxCursor { get; set; } } } diff --git a/repository/DyCollectVideoRepository.cs b/repository/DyCollectVideoRepository.cs index a40316e..9fa0f46 100644 --- a/repository/DyCollectVideoRepository.cs +++ b/repository/DyCollectVideoRepository.cs @@ -36,11 +36,11 @@ namespace dy.net.repository } var where = this.Db.Queryable() - .WhereIF(!string.IsNullOrEmpty(tag), x => x.Tag1 == tag) - .WhereIF(!string.IsNullOrEmpty(author), x => x.Author == author) + .WhereIF(!string.IsNullOrWhiteSpace(tag), x => x.Tag1 == tag) + .WhereIF(!string.IsNullOrWhiteSpace(author), x => x.Author == author) .WhereIF(start.HasValue, x => x.SyncTime >= start.Value) .WhereIF(end.HasValue, x => x.SyncTime <= end.Value) - .WhereIF(!string.IsNullOrEmpty(viedoType) && viedoType != "*", x => x.ViedoType == viedoType); + .WhereIF(!string.IsNullOrWhiteSpace(viedoType) && viedoType != "*", x => x.ViedoType == viedoType); var totalCount = await where.CountAsync(); diff --git a/repository/UserRepository.cs b/repository/UserRepository.cs index 855ae9d..e6fabd6 100644 --- a/repository/UserRepository.cs +++ b/repository/UserRepository.cs @@ -20,7 +20,7 @@ namespace dy.net.repository /// public async Task<(int code, string erro)> UpdatePwd(UpdatePwdRequest loginUser) { - if (string.IsNullOrEmpty(loginUser.UserId)) + if (string.IsNullOrWhiteSpace(loginUser.UserId)) { return (-1, "用户不存在"); } @@ -52,7 +52,7 @@ namespace dy.net.repository public async Task GetUser() { - return await this.GetFirstAsync(x=>!string.IsNullOrEmpty(x.Id)); + return await this.GetFirstAsync(x=>!string.IsNullOrWhiteSpace(x.Id)); } @@ -84,7 +84,7 @@ namespace dy.net.repository /// public (int code, string erro) InitUser(LoginUserInfo userInfo) { - var isInit = this.GetFirst(x=>!string.IsNullOrEmpty(x.Id)); + var isInit = this.GetFirst(x=>!string.IsNullOrWhiteSpace(x.Id)); if (isInit!=null) { return (-1, "系统用户已存在"); diff --git a/service/CommonService.cs b/service/CommonService.cs index ede3dc1..7e9a0e4 100644 --- a/service/CommonService.cs +++ b/service/CommonService.cs @@ -53,7 +53,7 @@ namespace dy.net.service /// public void UpdateCollectViedoType() { - var collectViedos= sqlSugarClient.Queryable().Where(x=>string.IsNullOrEmpty(x.ViedoType)).ToList(); + var collectViedos= sqlSugarClient.Queryable().Where(x=>string.IsNullOrWhiteSpace(x.ViedoType)).ToList(); if (collectViedos.Any()) { diff --git a/service/DyHttpClientService.cs b/service/DyHttpClientService.cs index 4e58cb2..db15bf1 100644 --- a/service/DyHttpClientService.cs +++ b/service/DyHttpClientService.cs @@ -28,17 +28,17 @@ namespace dy.net.service /// public async Task SyncCollectVideos(string cursor, string count, string cookie) { - if (string.IsNullOrEmpty(cursor)) + if (string.IsNullOrWhiteSpace(cursor)) { throw new ArgumentException($"“{nameof(cursor)}”不能为 null 或空。", nameof(cursor)); } - if (string.IsNullOrEmpty(count)) + if (string.IsNullOrWhiteSpace(count)) { throw new ArgumentException($"“{nameof(count)}”不能为 null 或空。", nameof(count)); } - if (string.IsNullOrEmpty(cookie)) + if (string.IsNullOrWhiteSpace(cookie)) { throw new ArgumentException($"“{nameof(cookie)}”不能为 null 或空。", nameof(cookie)); } @@ -94,17 +94,17 @@ namespace dy.net.service /// public async Task SyncFavoriteVideos(string cursor, string secUserId, string cookie) { - if (string.IsNullOrEmpty(cursor)) + if (string.IsNullOrWhiteSpace(cursor)) { throw new ArgumentException($"“{nameof(cursor)}”不能为 null 或空。", nameof(cursor)); } - if (string.IsNullOrEmpty(secUserId)) + if (string.IsNullOrWhiteSpace(secUserId)) { throw new ArgumentException($"“{nameof(secUserId)}”不能为 null 或空。", nameof(secUserId)); } - if (string.IsNullOrEmpty(cookie)) + if (string.IsNullOrWhiteSpace(cookie)) { throw new ArgumentException($"“{nameof(cookie)}”不能为 null 或空。", nameof(cookie)); } diff --git a/utils/BogusManager.cs b/utils/BogusManager.cs index 96afc7f..7b94c20 100644 --- a/utils/BogusManager.cs +++ b/utils/BogusManager.cs @@ -81,7 +81,7 @@ namespace dy.net.utils if (isUrl) { var uri = new Uri(input); - var newQuery = string.IsNullOrEmpty(uri.Query) + var newQuery = string.IsNullOrWhiteSpace(uri.Query) ? $"X-Bogus={xbValue}" : $"{uri.Query.Substring(1)}&X-Bogus={xbValue}"; return ($"{uri.Scheme}://{uri.Host}{uri.AbsolutePath}?{newQuery}", xbValue); diff --git a/utils/NfoFileGenerator.cs b/utils/NfoFileGenerator.cs index 2b21657..e3e3bd4 100644 --- a/utils/NfoFileGenerator.cs +++ b/utils/NfoFileGenerator.cs @@ -18,23 +18,23 @@ namespace dy.net.utils if (videoInfo == null) throw new ArgumentNullException(nameof(videoInfo)); - if (string.IsNullOrEmpty(filePath)) + if (string.IsNullOrWhiteSpace(filePath)) throw new ArgumentException("文件路径不能为空", nameof(filePath)); // 创建根元素 XElement root = new XElement("movie"); // 对于电影使用"movie",电视剧可以使用"tvshow" // 添加视频信息 - if (!string.IsNullOrEmpty(videoInfo.Title)) + if (!string.IsNullOrWhiteSpace(videoInfo.Title)) root.Add(new XElement("title", videoInfo.Title)); - if (!string.IsNullOrEmpty(videoInfo.Author)) + if (!string.IsNullOrWhiteSpace(videoInfo.Author)) root.Add(new XElement("author", videoInfo.Author)); - if (!string.IsNullOrEmpty(videoInfo.Thumbnail)) + if (!string.IsNullOrWhiteSpace(videoInfo.Thumbnail)) root.Add(new XElement("thumb", new XAttribute("aspect", "poster"), videoInfo.Thumbnail)); - if (!string.IsNullOrEmpty(videoInfo.Poster)) + if (!string.IsNullOrWhiteSpace(videoInfo.Poster)) root.Add(new XElement("fanart", new XElement("thumb", videoInfo.Poster) )); diff --git a/utils/NfoGenerator.cs b/utils/NfoGenerator.cs index 7eaa594..c511440 100644 --- a/utils/NfoGenerator.cs +++ b/utils/NfoGenerator.cs @@ -21,29 +21,29 @@ namespace dy.net.utils XElement root = new XElement("movie"); // 添加基本信息 - if (!string.IsNullOrEmpty(videoInfo.Title)) + if (!string.IsNullOrWhiteSpace(videoInfo.Title)) root.Add(new XElement("title", videoInfo.Title)); - if (!string.IsNullOrEmpty(videoInfo.OriginalTitle)) + if (!string.IsNullOrWhiteSpace(videoInfo.OriginalTitle)) root.Add(new XElement("originaltitle", videoInfo.OriginalTitle)); - if (!string.IsNullOrEmpty(videoInfo.SortTitle)) + if (!string.IsNullOrWhiteSpace(videoInfo.SortTitle)) root.Add(new XElement("sorttitle", videoInfo.SortTitle)); if (videoInfo.Year > 0) root.Add(new XElement("year", videoInfo.Year)); - if (!string.IsNullOrEmpty(videoInfo.Plot)) + if (!string.IsNullOrWhiteSpace(videoInfo.Plot)) root.Add(new XElement("plot", videoInfo.Plot)); - if (!string.IsNullOrEmpty(videoInfo.Outline)) + if (!string.IsNullOrWhiteSpace(videoInfo.Outline)) root.Add(new XElement("outline", videoInfo.Outline)); - if (!string.IsNullOrEmpty(videoInfo.Tagline)) + if (!string.IsNullOrWhiteSpace(videoInfo.Tagline)) root.Add(new XElement("tagline", videoInfo.Tagline)); // 添加人员信息 - if (!string.IsNullOrEmpty(videoInfo.Director)) + if (!string.IsNullOrWhiteSpace(videoInfo.Director)) root.Add(new XElement("director", videoInfo.Director)); // 添加演员 @@ -61,7 +61,7 @@ namespace dy.net.utils } // 添加媒体信息 - if (!string.IsNullOrEmpty(videoInfo.Genre)) + if (!string.IsNullOrWhiteSpace(videoInfo.Genre)) root.Add(new XElement("genre", videoInfo.Genre)); if (videoInfo.Rating > 0) @@ -70,36 +70,36 @@ namespace dy.net.utils if (videoInfo.Votes > 0) root.Add(new XElement("votes", videoInfo.Votes)); - if (!string.IsNullOrEmpty(videoInfo.Studio)) + if (!string.IsNullOrWhiteSpace(videoInfo.Studio)) root.Add(new XElement("studio", videoInfo.Studio)); if (videoInfo.Premiered.HasValue) root.Add(new XElement("premiered", videoInfo.Premiered.Value.ToString("yyyy-MM-dd"))); - if (!string.IsNullOrEmpty(videoInfo.Runtime)) + if (!string.IsNullOrWhiteSpace(videoInfo.Runtime)) root.Add(new XElement("runtime", videoInfo.Runtime)); // 添加文件信息 - if (!string.IsNullOrEmpty(videoInfo.FileName)) + if (!string.IsNullOrWhiteSpace(videoInfo.FileName)) root.Add(new XElement("filenameandpath", videoInfo.FileName)); if (videoInfo.FileSize > 0) root.Add(new XElement("filesize", videoInfo.FileSize)); // 添加新增字段 - if (!string.IsNullOrEmpty(videoInfo.Country)) + if (!string.IsNullOrWhiteSpace(videoInfo.Country)) root.Add(new XElement("country", videoInfo.Country)); - if (!string.IsNullOrEmpty(videoInfo.Language)) + if (!string.IsNullOrWhiteSpace(videoInfo.Language)) root.Add(new XElement("language", videoInfo.Language)); - if (!string.IsNullOrEmpty(videoInfo.VideoCodec)) + if (!string.IsNullOrWhiteSpace(videoInfo.VideoCodec)) root.Add(new XElement("codec", videoInfo.VideoCodec)); - if (!string.IsNullOrEmpty(videoInfo.AudioCodec)) + if (!string.IsNullOrWhiteSpace(videoInfo.AudioCodec)) root.Add(new XElement("audiocodec", videoInfo.AudioCodec)); - if (!string.IsNullOrEmpty(videoInfo.Resolution)) + if (!string.IsNullOrWhiteSpace(videoInfo.Resolution)) root.Add(new XElement("resolution", videoInfo.Resolution)); // 创建文档并保存 @@ -110,7 +110,7 @@ namespace dy.net.utils // 确保目录存在 var directory = Path.GetDirectoryName(outputPath); - if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) + if (!string.IsNullOrWhiteSpace(directory) && !Directory.Exists(directory)) { Directory.CreateDirectory(directory); }