diff --git a/Shoko.Server/API/APIHelper.cs b/Shoko.Server/API/APIHelper.cs index 35299d11a..b065cd3c5 100644 --- a/Shoko.Server/API/APIHelper.cs +++ b/Shoko.Server/API/APIHelper.cs @@ -237,7 +237,7 @@ private static string ProperURL(NancyContext ctx, int? port, string path, bool s } else { - return ""; + return string.Empty; } } } diff --git a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation.cs b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation.cs index 5aab927e5..ac1810e73 100644 --- a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation.cs +++ b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation.cs @@ -46,7 +46,7 @@ public CL_Response SaveBookmarkedAnime(CL_BookmarkedAnime co { CL_Response contractRet = new CL_Response { - ErrorMessage = "" + ErrorMessage = string.Empty }; try { @@ -104,7 +104,7 @@ public string DeleteBookmarkedAnime(int bookmarkedAnimeID) RepoFactory.BookmarkedAnime.Delete(bookmarkedAnimeID); - return ""; + return string.Empty; } catch (Exception ex) { @@ -369,7 +369,7 @@ public List DirectoriesFromImportFolderPath(int cloudaccountid, string p } if (path.Equals("null")) { - path = ""; + path = string.Empty; } dirr = n.Resolve(path); if (dirr == null || !dirr.IsOk || dirr.Result is IFile) @@ -408,7 +408,7 @@ public CL_Response SaveServerSettings(CL_ServerSettings contractIn) { CL_Response contract = new CL_Response { - ErrorMessage = "" + ErrorMessage = string.Empty }; try { @@ -741,7 +741,7 @@ public void ClearGeneralQueue() public string TestAniDBConnection() { - string log = ""; + string log = string.Empty; try { log += "Disposing..." + Environment.NewLine; @@ -890,7 +890,7 @@ public string EnableDisableImage(bool enabled, int imageID, int imageType) break; } - return ""; + return string.Empty; } catch (Exception ex) { @@ -952,7 +952,7 @@ public string SetDefaultImage(bool isDefault, int animeID, int imageID, int imag SVR_AnimeSeries series = RepoFactory.AnimeSeries.GetByAnimeID(animeID); RepoFactory.AnimeSeries.Save(series, false); - return ""; + return string.Empty; } catch (Exception ex) { @@ -1031,7 +1031,7 @@ public string UpdateCalendarData() { logger.Error(ex, ex.ToString()); } - return ""; + return string.Empty; } /*public List GetMiniCalendar(int numberOfDays) diff --git a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Entities.cs b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Entities.cs index 6cbb3ca42..57f80edca 100644 --- a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Entities.cs +++ b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Entities.cs @@ -788,7 +788,7 @@ public string RemoveAssociationOnFile(int videoLocalID, int aniDBEpisodeID) if (ser != null) ser.QueueUpdateStats(); } - return ""; + return string.Empty; } catch (Exception ex) { @@ -806,7 +806,7 @@ public string SetIgnoreStatusOnFile(int videoLocalID, bool isIgnored) return "Could not find video record"; vid.IsIgnored = isIgnored ? 1 : 0; RepoFactory.VideoLocal.Save(vid, false); - return ""; + return string.Empty; } catch (Exception ex) { @@ -824,7 +824,7 @@ public string SetVariationStatusOnFile(int videoLocalID, bool isVariation) return "Could not find video record"; vid.IsVariation = isVariation ? 1 : 0; RepoFactory.VideoLocal.Save(vid, false); - return ""; + return string.Empty; } catch (Exception ex) { @@ -849,14 +849,14 @@ public string AssociateSingleFile(int videoLocalID, int animeEpisodeID) var com = new CommandRequest_LinkFileManually(videoLocalID, animeEpisodeID); com.Save(); - return ""; + return string.Empty; } catch (Exception ex) { logger.Error(ex, ex.ToString()); } - return ""; + return string.Empty; } public string AssociateSingleFileWithMultipleEpisodes(int videoLocalID, int animeSeriesID, int startEpNum, @@ -889,14 +889,14 @@ public string AssociateSingleFileWithMultipleEpisodes(int videoLocalID, int anim com.Save(); } - return ""; + return string.Empty; } catch (Exception ex) { logger.Error(ex, ex.ToString()); } - return ""; + return string.Empty; } public string AssociateMultipleFiles(List videoLocalIDs, int animeSeriesID, int startingEpisodeNumber, @@ -947,7 +947,7 @@ public string AssociateMultipleFiles(List videoLocalIDs, int animeSeriesID, logger.Error(ex, ex.ToString()); } - return ""; + return string.Empty; } public int UpdateAniDBFileData(bool missingInfo, bool outOfDate, bool countOnly) @@ -969,7 +969,7 @@ public string UpdateFileData(int videoLocalID) logger.Error(ex, ex.ToString()); return ex.Message; } - return ""; + return string.Empty; } public string UpdateEpisodeData(int episodeID) @@ -984,7 +984,7 @@ public string UpdateEpisodeData(int episodeID) logger.Error(ex, ex.ToString()); return ex.Message; } - return ""; + return string.Empty; } public string RescanFile(int videoLocalID) @@ -1003,7 +1003,7 @@ public string RescanFile(int videoLocalID) logger.Error(ex, ex.Message); return ex.Message; } - return ""; + return string.Empty; } public void RehashFile(int videoLocalID) @@ -1053,7 +1053,7 @@ public string SetResumePosition(int videoLocalID, long resumeposition, int userI if (vid == null) return "Could not find video local record"; vid.SetResumePosition(resumeposition, userID); - return ""; + return string.Empty; } catch (Exception ex) { @@ -1409,7 +1409,7 @@ public string ToggleWatchedStatusOnVideo(int videoLocalID, bool watchedStatus, i if (vid == null) return "Could not find video local record"; vid.ToggleWatchedStatus(watchedStatus, true, DateTime.Now, true, true, userID, true, true); - return ""; + return string.Empty; } catch (Exception ex) { @@ -1424,7 +1424,7 @@ public CL_Response ToggleWatchedStatusOnEpisode(int animeE CL_Response response = new CL_Response { - ErrorMessage = "", + ErrorMessage = string.Empty, Result = null }; try @@ -1721,7 +1721,7 @@ public string SetWatchedStatusOnSeries(int animeSeriesID, bool watchedStatus, in ser.UpdateStats(true, true, true); //StatsCache.Instance.UpdateUsingSeries(ser.AnimeSeriesID); } - return ""; + return string.Empty; } catch (Exception ex) { @@ -1763,7 +1763,7 @@ public List GetSeriesFileStatsByFolderID(int FolderID, asfs.FileCount++; asfs.FileSize += vi.FileSize; - //string filePath = Pri.LongPath.Path.GetDirectoryName(vi.FilePath).Replace(importLocation, ""); + //string filePath = Pri.LongPath.Path.GetDirectoryName(vi.FilePath).Replace(importLocation, string.Empty); //filePath = filePath.TrimStart('\\'); string filePath = RepoFactory.VideoLocalPlace.GetByVideoLocal(vi.VideoLocalID)[0].FilePath; if (!asfs.Folders.Contains(filePath)) @@ -1985,7 +1985,7 @@ public string DeleteAnimeGroup(int animeGroupID, bool deleteFiles) } } - return ""; + return string.Empty; } catch (Exception ex) { @@ -2077,7 +2077,7 @@ public CL_Response SaveGroup(CL_AnimeGroup_Save_Request cont { CL_Response contractout = new CL_Response { - ErrorMessage = "", + ErrorMessage = string.Empty, Result = null }; try @@ -2097,11 +2097,11 @@ public CL_Response SaveGroup(CL_AnimeGroup_Save_Request cont { grp = new SVR_AnimeGroup { - Description = "", + Description = string.Empty, IsManuallyNamed = 0, DateTimeCreated = DateTime.Now, DateTimeUpdated = DateTime.Now, - SortName = "", + SortName = string.Empty, MissingEpisodeCount = 0, MissingEpisodeCountGroups = 0, OverrideDescription = 0 @@ -2150,7 +2150,7 @@ public CL_Response MoveSeries(int animeSeriesID, int newAni { CL_Response contractout = new CL_Response { - ErrorMessage = "", + ErrorMessage = string.Empty, Result = null }; try @@ -2220,7 +2220,7 @@ public CL_Response SaveSeries(CL_AnimeSeries_Save_Request c { CL_Response contractout = new CL_Response { - ErrorMessage = "", + ErrorMessage = string.Empty, Result = null }; try @@ -2246,12 +2246,12 @@ public CL_Response SaveSeries(CL_AnimeSeries_Save_Request c ser = new SVR_AnimeSeries { DateTimeCreated = DateTime.Now, - DefaultAudioLanguage = "", - DefaultSubtitleLanguage = "", + DefaultAudioLanguage = string.Empty, + DefaultSubtitleLanguage = string.Empty, MissingEpisodeCount = 0, MissingEpisodeCountGroups = 0, LatestLocalEpisodeNumber = 0, - SeriesNameOverride = "" + SeriesNameOverride = string.Empty }; } @@ -2303,7 +2303,7 @@ public CL_Response CreateSeriesFromAnime(int animeID, int? CL_Response response = new CL_Response { Result = null, - ErrorMessage = "" + ErrorMessage = string.Empty }; try { @@ -2429,7 +2429,7 @@ public string UpdateAnimeData(int animeID) { logger.Error(ex, ex.ToString()); } - return ""; + return string.Empty; } public void UpdateAnimeDisableExternalLinksFlag(int animeID, int flags) @@ -2669,7 +2669,7 @@ public string DeleteAnimeSeries(int animeSeriesID, bool deleteFiles, bool delete } } - return ""; + return string.Empty; } catch (Exception ex) { @@ -3053,7 +3053,7 @@ public string DeleteGroupFilter(int groupFilterID) RepoFactory.GroupFilter.Delete(groupFilterID); - return ""; + return string.Empty; } catch (Exception ex) { @@ -3249,7 +3249,7 @@ public CL_Response SavePlaylist(Playlist contract) { CL_Response contractRet = new CL_Response { - ErrorMessage = "" + ErrorMessage = string.Empty }; try { @@ -3304,7 +3304,7 @@ public string DeletePlaylist(int playlistID) RepoFactory.Playlist.Delete(playlistID); - return ""; + return string.Empty; } catch (Exception ex) { @@ -3347,7 +3347,7 @@ public CL_Response SaveCustomTagCrossRef(CrossRef_CustomTag { CL_Response contractRet = new CL_Response { - ErrorMessage = "" + ErrorMessage = string.Empty }; try { @@ -3393,7 +3393,7 @@ public string DeleteCustomTagCrossRefByID(int xrefID) RepoFactory.CrossRef_CustomTag.Delete(xrefID); - return ""; + return string.Empty; } catch (Exception ex) { @@ -3414,7 +3414,7 @@ public string DeleteCustomTagCrossRef(int customTagID, int crossRefType, int cro RepoFactory.CrossRef_CustomTag.Delete(xrefs[0].CrossRef_CustomTagID); SVR_AniDB_Anime.UpdateStatsByAnimeID(crossRefID); - return ""; + return string.Empty; } catch (Exception ex) { @@ -3427,7 +3427,7 @@ public CL_Response SaveCustomTag(CustomTag contract) { CL_Response contractRet = new CL_Response { - ErrorMessage = "" + ErrorMessage = string.Empty }; try { @@ -3489,7 +3489,7 @@ public string DeleteCustomTag(int customTagID) } - return ""; + return string.Empty; } catch (Exception ex) { @@ -3566,7 +3566,7 @@ public string ChangePassword(int userID, string newPassword, bool revokeapikey) return ex.Message; } - return ""; + return string.Empty; } public string SaveUser(JMMUser user) @@ -3606,7 +3606,7 @@ public string SaveUser(JMMUser user) jmmUser.PlexToken = user.PlexToken; if (string.IsNullOrEmpty(user.Password)) { - jmmUser.Password = ""; + jmmUser.Password = string.Empty; } else { @@ -3657,7 +3657,7 @@ public string SaveUser(JMMUser user) return ex.Message; } - return ""; + return string.Empty; } public string DeleteUser(int userID) @@ -3697,7 +3697,7 @@ public string DeleteUser(int userID) return ex.Message; } - return ""; + return string.Empty; } #endregion @@ -3720,7 +3720,7 @@ public CL_Response SaveImportFolder(ImportFolder contract) { CL_Response response = new CL_Response { - ErrorMessage = "", + ErrorMessage = string.Empty, Result = null }; try @@ -3838,7 +3838,7 @@ public CL_Response SaveImportFolder(ImportFolder contract) public string DeleteImportFolder(int importFolderID) { ShokoServer.DeleteImportFolder(importFolderID); - return ""; + return string.Empty; } #endregion } diff --git a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Providers.cs b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Providers.cs index d4fb7045d..0e5031d1d 100644 --- a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Providers.cs +++ b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Providers.cs @@ -407,7 +407,7 @@ public string UpdateTvDBData(int seriesID) { logger.Error(ex, ex.ToString()); } - return ""; + return string.Empty; } public List GetTvDBLanguages() @@ -530,7 +530,7 @@ public string LinkAniDBTvDB(int animeID, int aniEpType, int aniEpNumber, int tvD tvEpNumber, false, !crossRef_AniDB_TvDBV2ID.HasValue); cmdRequest.Save(); - return ""; + return string.Empty; } catch (Exception ex) { @@ -545,7 +545,7 @@ public string LinkAniDBTvDBEpisode(int aniDBID, int tvDBID, int animeID) { TvDBApiHelper.LinkAniDBTvDBEpisode(aniDBID, tvDBID, animeID); - return ""; + return string.Empty; } catch (Exception ex) { @@ -568,7 +568,7 @@ public string RemoveLinkAniDBTvDBForAnime(int animeID) if (ser == null) return "Could not find Series for Anime!"; List xrefs = RepoFactory.CrossRef_AniDB_TvDBV2.GetByAnimeID(animeID); - if (xrefs == null) return ""; + if (xrefs == null) return string.Empty; foreach (CrossRef_AniDB_TvDBV2 xref in xrefs) { @@ -590,7 +590,7 @@ public string RemoveLinkAniDBTvDBForAnime(int animeID) xref.TvDBID, xref.TvDBSeasonNumber, xref.TvDBStartEpisodeNumber); } - return ""; + return string.Empty; } catch (Exception ex) { @@ -624,7 +624,7 @@ public string RemoveLinkAniDBTvDB(int animeID, int aniEpType, int aniEpNumber, i TvDBApiHelper.RemoveLinkAniDBTvDB(animeID, (EpisodeType) aniEpType, aniEpNumber, tvDBID, tvSeasonNumber, tvEpNumber); - return ""; + return string.Empty; } catch (Exception ex) { @@ -648,7 +648,7 @@ public string RemoveLinkAniDBTvDBEpisode(int aniDBEpisodeID) RepoFactory.CrossRef_AniDB_TvDB_Episode.Delete(xref.CrossRef_AniDB_TvDB_EpisodeID); - return ""; + return string.Empty; } catch (Exception ex) { @@ -891,7 +891,7 @@ public string RemoveLinkAniDBTraktForAnime(int animeID) xref.TraktID, xref.TraktSeasonNumber, xref.TraktStartEpisodeNumber); } - return ""; + return string.Empty; } catch (Exception ex) { @@ -924,7 +924,7 @@ public string RemoveLinkAniDBTrakt(int animeID, int aniEpType, int aniEpNumber, TraktTVHelper.RemoveLinkAniDBTrakt(animeID, (EpisodeType) aniEpType, aniEpNumber, traktID, traktSeasonNumber, traktEpNumber); - return ""; + return string.Empty; } catch (Exception ex) { @@ -1049,7 +1049,7 @@ public string UpdateTraktData(string traktD) { logger.Error(ex, ex.ToString()); } - return ""; + return string.Empty; } public string SyncTraktSeries(int animeID) @@ -1207,7 +1207,7 @@ public string LinkAniDBMAL(int animeID, int malID, string malTitle, int epType, CrossRef_AniDB_MAL xrefTemp = RepoFactory.CrossRef_AniDB_MAL.GetByMALID(malID); if (xrefTemp != null) { - string animeName = ""; + string animeName = string.Empty; try { SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(xrefTemp.AnimeID); @@ -1231,7 +1231,7 @@ public string LinkAniDBMAL(int animeID, int malID, string malTitle, int epType, MALHelper.LinkAniDBMAL(animeID, malID, malTitle, epType, epNumber, false); - return ""; + return string.Empty; } catch (Exception ex) { @@ -1268,7 +1268,7 @@ public string RemoveLinkAniDBMAL(int animeID, int epType, int epNumber) { MALHelper.RemoveLinkAniDBMAL(animeID, epType, epNumber); - return ""; + return string.Empty; } catch (Exception ex) { @@ -1282,7 +1282,7 @@ public string TestMALLogin() try { if (MALHelper.VerifyCredentials()) - return ""; + return string.Empty; return "Login is not valid"; } @@ -1348,7 +1348,7 @@ public string LinkAniDBOther(int animeID, int movieID, int crossRefType) break; } - return ""; + return string.Empty; } catch (Exception ex) { @@ -1385,7 +1385,7 @@ public string RemoveLinkAniDBOther(int animeID, int crossRefType) break; } - return ""; + return string.Empty; } catch (Exception ex) { @@ -1459,7 +1459,7 @@ public string UpdateMovieDBData(int movieD) { logger.Error(ex, ex.ToString()); } - return ""; + return string.Empty; } #endregion diff --git a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Utilities.cs b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Utilities.cs index c2ba7efb5..39e94bc3b 100644 --- a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Utilities.cs +++ b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementation/ShokoServiceImplementation_Utilities.cs @@ -85,7 +85,7 @@ private static string RemoveSubgroups(string value) var releaseGroups = SVR_AniDB_Anime.GetAllReleaseGroups(); foreach (string releaseGroup in releaseGroups) { - value = ReplaceCaseInsensitive(value, releaseGroup, ""); + value = ReplaceCaseInsensitive(value, releaseGroup, string.Empty); if (originalLength > value.Length) break; } return value; @@ -96,7 +96,7 @@ internal static string SanitizeFuzzy(string value, bool replaceInvalid) if (!replaceInvalid) return value; value = value.FilterCharacters(InvalidPathChars, true); - value = ReplacementStrings.Aggregate(value, (current, c) => ReplaceCaseInsensitive(current, c, "")); + value = ReplacementStrings.Aggregate(value, (current, c) => ReplaceCaseInsensitive(current, c, string.Empty)); value = ReplaceWithSpace.Aggregate(value, (current, c) => current.Replace(c, ' ')); // Takes too long //value = RemoveSubgroups(value); @@ -489,7 +489,7 @@ public CL_VideoLocal_Renamed RenameAndMoveFile(int videoLocalID, string scriptNa } int errorCount = 0; - string errorString = ""; + string errorString = string.Empty; string name = vid.FileName; ShokoServer.StopWatchingFiles(); @@ -671,7 +671,7 @@ public CL_Response SaveRenameScript(RenameScript contract) { CL_Response response = new CL_Response { - ErrorMessage = "", + ErrorMessage = string.Empty, Result = null }; try @@ -748,7 +748,7 @@ public string DeleteRenameScript(int renameScriptID) if (df == null) return "Database entry does not exist"; RepoFactory.RenameScript.Delete(renameScriptID); - return ""; + return string.Empty; } catch (Exception ex) { @@ -991,7 +991,7 @@ public List GetMissingEpisodes(int userID, bool onlyMyGroups, cl.AnimeTitle = anime.MainTitle; start = DateTime.Now; - cl.GroupFileSummary = ""; + cl.GroupFileSummary = string.Empty; List summ = null; if (gvqCache.ContainsKey(ser.AniDB_ID)) summ = gvqCache[ser.AniDB_ID]; @@ -1011,7 +1011,7 @@ public List GetMissingEpisodes(int userID, bool onlyMyGroups, gvq.VideoSource, gvq.VideoBitDepth, gvq.NormalEpisodeNumberSummary); } - cl.GroupFileSummarySimple = ""; + cl.GroupFileSummarySimple = string.Empty; List summFiles = null; if (gfqCache.ContainsKey(ser.AniDB_ID)) summFiles = gfqCache[ser.AniDB_ID]; @@ -1366,7 +1366,7 @@ public string DeleteDuplicateFile(int duplicateFileID, int fileNumber) DuplicateFile df = RepoFactory.DuplicateFile.GetByID(duplicateFileID); if (df == null) return "Database entry does not exist"; - if (fileNumber != 1 && fileNumber != 2) return ""; + if (fileNumber != 1 && fileNumber != 2) return string.Empty; SVR_VideoLocal_Place place; switch (fileNumber) { @@ -1836,7 +1836,7 @@ public List GetGroupFileSummary(int animeID) contract.SpecialsComplete = (contract.FileCountSpecials >= anime.EpisodeCountSpecial) && (anime.EpisodeCountSpecial > 0); - contract.NormalEpisodeNumberSummary = ""; + contract.NormalEpisodeNumberSummary = string.Empty; contract.NormalEpisodeNumbers.Sort(); int lastEpNum = 0; int baseEpNum = 0; diff --git a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementationImage.cs b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementationImage.cs index dbd35554c..175ea5aa2 100644 --- a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementationImage.cs +++ b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementationImage.cs @@ -213,7 +213,7 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find AniDB_Cover image: {0}", anime.PosterPath); - return ""; + return string.Empty; } case ImageEntityType.AniDB_Character: @@ -226,12 +226,12 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find AniDB_Character image: {0}", chr.GetPosterPath()); - return ""; + return string.Empty; } case ImageEntityType.AniDB_Creator: AniDB_Seiyuu creator = RepoFactory.AniDB_Seiyuu.GetByID(imageId); - if (creator == null) return ""; + if (creator == null) return string.Empty; if (File.Exists(creator.GetPosterPath())) { return creator.GetPosterPath(); @@ -239,7 +239,7 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find AniDB_Creator image: {0}", creator.GetPosterPath()); - return ""; + return string.Empty; } case ImageEntityType.TvDB_Cover: @@ -252,7 +252,7 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find TvDB_Cover image: {0}", poster.GetFullImagePath()); - return ""; + return string.Empty; } case ImageEntityType.TvDB_Banner: @@ -265,7 +265,7 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find TvDB_Banner image: {0}", wideBanner.GetFullImagePath()); - return ""; + return string.Empty; } case ImageEntityType.TvDB_Episode: @@ -278,7 +278,7 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find TvDB_Episode image: {0}", ep.GetFullImagePath()); - return ""; + return string.Empty; } case ImageEntityType.TvDB_FanArt: @@ -293,7 +293,7 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find TvDB_FanArt image: {0}", fanart.GetFullThumbnailPath()); - return ""; + return string.Empty; } } else @@ -305,7 +305,7 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find TvDB_FanArt image: {0}", fanart.GetFullImagePath()); - return ""; + return string.Empty; } } @@ -323,7 +323,7 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find MovieDB_Poster image: {0}", mPoster.GetFullImagePath()); - return ""; + return string.Empty; } case ImageEntityType.MovieDB_FanArt: @@ -338,11 +338,11 @@ public string GetImagePath(int imageId, int imageType, bool? thumnbnailOnly) else { logger.Trace("Could not find MovieDB_FanArt image: {0}", mFanart.GetFullImagePath()); - return ""; + return string.Empty; } default: - return ""; + return string.Empty; } } } diff --git a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementationMetro.cs b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementationMetro.cs index 1dd5135cc..9dd460699 100644 --- a/Shoko.Server/API/v1/Implementations/ShokoServiceImplementationMetro.cs +++ b/Shoko.Server/API/v1/Implementations/ShokoServiceImplementationMetro.cs @@ -1184,7 +1184,7 @@ public List GetAniDBRecommendationsForAnime(int animeID, int maxR Metro_Comment shout = new Metro_Comment { UserID = rec.UserID, - UserName = "", + UserName = string.Empty, // shout details CommentText = rec.RecommendationText, @@ -1364,7 +1364,7 @@ public CL_Response ToggleWatchedStatusOnEpisode(int animeE CL_Response response = new CL_Response { - ErrorMessage = "", + ErrorMessage = string.Empty, Result = null }; try @@ -1408,7 +1408,7 @@ public string UpdateAnimeData(int animeID) { logger.Error(ex, ex.ToString()); } - return ""; + return string.Empty; } } } \ No newline at end of file diff --git a/Shoko.Server/API/v2/Models/core/API_Call_Parameters.cs b/Shoko.Server/API/v2/Models/core/API_Call_Parameters.cs index ae62535d8..ec79720fd 100644 --- a/Shoko.Server/API/v2/Models/core/API_Call_Parameters.cs +++ b/Shoko.Server/API/v2/Models/core/API_Call_Parameters.cs @@ -94,7 +94,7 @@ public class API_Call_Parameters /// /// filename string for task like searching by it /// - public string filename = ""; + public string filename = string.Empty; /// /// show all know pictures related to object diff --git a/Shoko.Server/API/v2/Modules/Common.cs b/Shoko.Server/API/v2/Modules/Common.cs index 8a008ded3..ad2eb9f4e 100644 --- a/Shoko.Server/API/v2/Modules/Common.cs +++ b/Shoko.Server/API/v2/Modules/Common.cs @@ -203,7 +203,7 @@ private object AddFolder() try { ImportFolder folder = this.Bind(); - if (folder.ImportFolderLocation != "") + if (folder.ImportFolderLocation != string.Empty) { try { @@ -293,7 +293,7 @@ private object DeleteFolder() if (folder.ImportFolderID != 0) { string res = Importer.DeleteImportFolder(folder.ImportFolderID); - if (res == "") + if (res == string.Empty) { return APIStatus.statusOK(); } @@ -566,7 +566,7 @@ private object BigSearch() //hardcoded para.limit = 100; } - if (query != "") + if (query != string.Empty) { Filter search_filter = new Filter { @@ -609,7 +609,7 @@ private object SearchStartsWith() //hardcoded para.limit = 100; } - if (query != "") + if (query != string.Empty) { Filter search_filter = new Filter { @@ -1672,7 +1672,7 @@ private object SearchForSerie() //hardcoded para.limit = 100; } - if (para.query != "") + if (para.query != string.Empty) { return Search(para.query, para.limit, para.limit_tag, (int) para.offset, para.tags, user.JMMUserID, para.nocast != 0, para.notag != 0, para.level, para.all != 0, para.fuzzy != 0, para.allpics != 0, para.pic, para.tagfilter); @@ -1698,7 +1698,7 @@ private object SearchForTag() //hardcoded para.limit = 100; } - if (para.query != "") + if (para.query != string.Empty) { return Search(para.query, para.limit, para.limit_tag, (int) para.offset, 1, user.JMMUserID, para.nocast != 0, @@ -1986,7 +1986,7 @@ private static void CheckTitlesFuzzy(SVR_AnimeSeries a, string query, if (distLevenshtein.Count >= limit) return; if (a?.Contract?.AniDBAnime?.AniDBAnime.AllTitles == null) return; int dist = int.MaxValue; - string match = ""; + string match = string.Empty; foreach (string title in a.Contract.AniDBAnime.AnimeTitles.Select(b => b.Title).ToList()) { if (string.IsNullOrEmpty(title)) continue; @@ -2019,7 +2019,7 @@ private static void CheckTagsFuzzy(SVR_AnimeSeries a, string query, { if (distLevenshtein.Count >= limit) return; int dist = int.MaxValue; - string match = ""; + string match = string.Empty; if (a?.Contract?.AniDBAnime?.Tags != null && a.Contract.AniDBAnime.Tags.Count > 0) { @@ -2045,7 +2045,7 @@ private static void CheckTagsFuzzy(SVR_AnimeSeries a, string query, a.Contract.AniDBAnime.CustomTags.Count <= 0) return; dist = int.MaxValue; - match = ""; + match = string.Empty; foreach (string customTag in a.Contract.AniDBAnime.CustomTags.Select(b => b.TagName).ToList()) { if (string.IsNullOrEmpty(customTag)) continue; @@ -2107,7 +2107,7 @@ internal object Search(string query, int limit, int limit_tag, int offset, int t .IndexOf(SanitizeFuzzy(query, fuzzy), 0, StringComparison.InvariantCultureIgnoreCase) >= 0) .OrderBy(a => a.Contract.AniDBAnime.AniDBAnime.MainTitle) - .ToDictionary(a => a, a => ""); + .ToDictionary(a => a, a => string.Empty); foreach (KeyValuePair ser in series) { if (offset == 0) @@ -2167,7 +2167,7 @@ internal object Search(string query, int limit, int limit_tag, int offset, int t .Select(b => b.TagName) .Contains(query, StringComparer.InvariantCultureIgnoreCase))) .OrderBy(a => a.Contract.AniDBAnime.AniDBAnime.MainTitle) - .ToDictionary(a => a, a => ""); + .ToDictionary(a => a, a => string.Empty); foreach (KeyValuePair ser in series) { if (offset == 0) @@ -2224,7 +2224,7 @@ internal object Search(string query, int limit, int limit_tag, int offset, int t .IndexOf(SanitizeFuzzy(query, fuzzy), 0, StringComparison.InvariantCultureIgnoreCase) >= 0) .OrderBy(a => a.Contract.AniDBAnime.AniDBAnime.MainTitle) - .ToDictionary(a => a, a => ""); + .ToDictionary(a => a, a => string.Empty); int tag_limit = use_extra ? limit_tag : limit - series.Count; if (tag_limit < 0) tag_limit = 0; @@ -2241,7 +2241,7 @@ internal object Search(string query, int limit, int limit_tag, int offset, int t StringComparer.InvariantCultureIgnoreCase))) .OrderBy(a => a.Contract.AniDBAnime.AniDBAnime.MainTitle) .Take(tag_limit) - .ToDictionary(a => a, a => "")); + .ToDictionary(a => a, a => string.Empty)); foreach (KeyValuePair ser in series) { if (offset == 0) @@ -2305,7 +2305,7 @@ private static void CheckTitlesStartsWith(SVR_AnimeSeries a, string query, { if (series.Count >= limit) return; if (a?.Contract?.AniDBAnime?.AniDBAnime.AllTitles == null) return; - string match = ""; + string match = string.Empty; foreach (string title in a.Contract.AniDBAnime.AnimeTitles.Select(b => b.Title).ToList()) { if (string.IsNullOrEmpty(title)) continue; @@ -2315,7 +2315,7 @@ private static void CheckTitlesStartsWith(SVR_AnimeSeries a, string query, } } // Keep the lowest distance - if (match != "") + if (match != string.Empty) series.TryAdd(a, match); } diff --git a/Shoko.Server/API/v2/Modules/Core.cs b/Shoko.Server/API/v2/Modules/Core.cs index 1a6bd68c2..f36b5dd00 100644 --- a/Shoko.Server/API/v2/Modules/Core.cs +++ b/Shoko.Server/API/v2/Modules/Core.cs @@ -174,7 +174,7 @@ private object SetImagepath() } else { - if (!String.IsNullOrEmpty(imagepath.path) && imagepath.path != "") + if (!String.IsNullOrEmpty(imagepath.path) && imagepath.path != string.Empty) { if (Directory.Exists(imagepath.path)) { @@ -324,8 +324,8 @@ private object SetSetting() private object SetAniDB() { Creditentials cred = this.Bind(); - if (!String.IsNullOrEmpty(cred.login) && cred.login != "" && !String.IsNullOrEmpty(cred.password) && - cred.password != "") + if (!String.IsNullOrEmpty(cred.login) && cred.login != string.Empty && !String.IsNullOrEmpty(cred.password) && + cred.password != string.Empty) { ServerSettings.AniDB_Username = cred.login; ServerSettings.AniDB_Password = cred.password; @@ -423,8 +423,8 @@ private object UpdateAllAniDB() private object SetMAL() { Creditentials cred = this.Bind(); - if (!String.IsNullOrEmpty(cred.login) && cred.login != "" && !String.IsNullOrEmpty(cred.password) && - cred.password != "") + if (!String.IsNullOrEmpty(cred.login) && cred.login != string.Empty && !String.IsNullOrEmpty(cred.password) && + cred.password != string.Empty) { ServerSettings.MAL_Username = cred.login; ServerSettings.MAL_Password = cred.password; @@ -502,7 +502,7 @@ private object UploadToMAL() private object SetTraktPIN() { Creditentials cred = this.Bind(); - if (!String.IsNullOrEmpty(cred.token) && cred.token != "") + if (!String.IsNullOrEmpty(cred.token) && cred.token != string.Empty) { ServerSettings.Trakt_PIN = cred.token; return APIStatus.statusOK(); @@ -615,9 +615,9 @@ private object CreateUser() { JMMUser user = this.Bind(); user.Password = Digest.Hash(user.Password); - user.HideCategories = ""; - user.PlexUsers = ""; - return new ShokoServiceImplementation().SaveUser(user) == "" + user.HideCategories = string.Empty; + user.PlexUsers = string.Empty; + return new ShokoServiceImplementation().SaveUser(user) == string.Empty ? APIStatus.statusOK() : APIStatus.internalError(); } @@ -647,7 +647,7 @@ private object ChangePassword(int uid) if (_user.IsAdmin == 1) { SVR_JMMUser user = this.Bind(); - return new ShokoServiceImplementation().ChangePassword(uid, user.Password) == "" + return new ShokoServiceImplementation().ChangePassword(uid, user.Password) == string.Empty ? APIStatus.statusOK() : APIStatus.internalError(); } @@ -666,7 +666,7 @@ private object DeleteUser() if (_user.IsAdmin == 1) { SVR_JMMUser user = this.Bind(); - return new ShokoServiceImplementation().DeleteUser(user.JMMUserID) == "" + return new ShokoServiceImplementation().DeleteUser(user.JMMUserID) == string.Empty ? APIStatus.statusOK() : APIStatus.internalError(); } diff --git a/Shoko.Server/API/v2/Modules/Database.cs b/Shoko.Server/API/v2/Modules/Database.cs index db0599e1e..6ef1cb099 100644 --- a/Shoko.Server/API/v2/Modules/Database.cs +++ b/Shoko.Server/API/v2/Modules/Database.cs @@ -32,7 +32,7 @@ public Database() : base("/api/db") private object SetupDB() { Models.core.Database db = this.Bind(); - if (!String.IsNullOrEmpty(db.type) && db.type != "") + if (!String.IsNullOrEmpty(db.type) && db.type != string.Empty) { switch (db.type.ToLower()) { @@ -77,7 +77,7 @@ private object GetDB() { type = ServerSettings.DatabaseType }; - if (!String.IsNullOrEmpty(db.type) && db.type != "") + if (!String.IsNullOrEmpty(db.type) && db.type != string.Empty) { switch (db.type.ToLower()) { diff --git a/Shoko.Server/API/v2/Modules/Image.cs b/Shoko.Server/API/v2/Modules/Image.cs index e8efadfd0..edb587b06 100644 --- a/Shoko.Server/API/v2/Modules/Image.cs +++ b/Shoko.Server/API/v2/Modules/Image.cs @@ -45,7 +45,7 @@ public Image() : base("/api") private object GetImage(int type, int id) { Nancy.Response response = new Nancy.Response(); - string contentType = ""; + string contentType = string.Empty; string path = ReturnImagePath(type, id, false); if (string.IsNullOrEmpty(path)) @@ -74,7 +74,7 @@ private object GetImage(int type, int id) private object GetThumb(int type, int id, string ratio) { Nancy.Response response = new Nancy.Response(); - string contentType = ""; + string contentType = string.Empty; ratio = ratio.Replace(',', '.'); float.TryParse(ratio, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.CreateSpecificCulture("en-EN"), out float newratio); @@ -157,7 +157,7 @@ private object GetSupportImage(string name, string ratio) internal string ReturnImagePath(int type, int id, bool thumb) { ImageEntityType imageType = (ImageEntityType) type; - string path = ""; + string path = string.Empty; switch (imageType) { @@ -175,7 +175,7 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find AniDB_Cover image: {0}", anime.PosterPath); } break; @@ -194,7 +194,7 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find AniDB_Character image: {0}", chr.GetPosterPath()); } break; @@ -213,7 +213,7 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find AniDB_Creator image: {0}", creator.GetPosterPath()); } break; @@ -232,7 +232,7 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find TvDB_Banner image: {0}", wideBanner.GetFullImagePath()); } break; @@ -251,7 +251,7 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find TvDB_Cover image: {0}", poster.GetFullImagePath()); } break; @@ -270,7 +270,7 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find TvDB_Episode image: {0}", ep.GetFullImagePath()); } break; @@ -292,7 +292,7 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find TvDB_FanArt image: {0}", fanart.GetFullThumbnailPath()); } } @@ -305,7 +305,7 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find TvDB_FanArt image: {0}", fanart.GetFullImagePath()); } } @@ -330,7 +330,7 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find MovieDB_FanArt image: {0}", mFanart.GetFullImagePath()); } break; @@ -354,13 +354,13 @@ internal string ReturnImagePath(int type, int id, bool thumb) } else { - path = ""; + path = string.Empty; logger.Trace("Could not find MovieDB_Poster image: {0}", mPoster.GetFullImagePath()); } break; default: - path = ""; + path = string.Empty; break; } diff --git a/Shoko.Server/API/v2/Modules/Webui.cs b/Shoko.Server/API/v2/Modules/Webui.cs index b7b4c29a3..6194da907 100644 --- a/Shoko.Server/API/v2/Modules/Webui.cs +++ b/Shoko.Server/API/v2/Modules/Webui.cs @@ -71,7 +71,7 @@ internal object WebUIGetUrlAndUpdate(string tag_name, string channel) tag_name)); dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(response); - string url = ""; + string url = string.Empty; foreach (dynamic obj in result.assets) { if (obj.name == "latest.zip") @@ -82,7 +82,7 @@ internal object WebUIGetUrlAndUpdate(string tag_name, string channel) } //check if tag was parsed corrently as it make the url - return url != "" + return url != string.Empty ? WebUIUpdate(url, channel, tag_name) : new APIMessage(204, "Content is missing"); } @@ -285,7 +285,7 @@ internal string WebUIGetVersionsTag(bool stable) } } } - return ""; + return string.Empty; } /// diff --git a/Shoko.Server/AniDBHelper.cs b/Shoko.Server/AniDBHelper.cs index 710fc522f..79bd5c015 100644 --- a/Shoko.Server/AniDBHelper.cs +++ b/Shoko.Server/AniDBHelper.cs @@ -71,11 +71,11 @@ public bool IsBanned ServerInfo.Instance.BanReason = BanTime.ToString(); } else - ServerInfo.Instance.BanReason = ""; + ServerInfo.Instance.BanReason = string.Empty; } } - private string banOrigin = ""; + private string banOrigin = string.Empty; public string BanOrigin { @@ -132,7 +132,7 @@ public int? ExtendPauseSecs set { extendPauseSecs = value; } } - private string extendPauseReason = ""; + private string extendPauseReason = string.Empty; private bool networkAvailable; public bool IsNetworkAvailable { @@ -166,8 +166,8 @@ public void ExtendPause(int secsToPause, string pauseReason) public void ResetExtendPause() { ExtendPauseSecs = null; - ExtendPauseReason = ""; - ServerInfo.Instance.ExtendedPauseString = ""; + ExtendPauseReason = string.Empty; + ServerInfo.Instance.ExtendedPauseString = string.Empty; ServerInfo.Instance.HasExtendedPause = false; } @@ -320,7 +320,7 @@ public bool Login() LoginFailed?.Invoke(this, null); //BaseConfig.MyAnimeLog.Write("ProcessCommands: Login Failed!"); - //OnAniDBStatusEvent(new AniDBStatusEventArgs(enHelperActivityType.LoginFailed, "")); + //OnAniDBStatusEvent(new AniDBStatusEventArgs(enHelperActivityType.LoginFailed, string.Empty)); //aniDBCommands.Clear(); //OnQueueUpdateEvent(new QueueUpdateEventArgs(this.QueueCount)); // this will exit the thread @@ -1077,9 +1077,7 @@ private SVR_AniDB_Anime SaveResultsForAnimeXML(ISession session, int animeID, bo logger.Trace("cmdResult.Anime: {0}", getAnimeCmd.Anime); - anime = RepoFactory.AniDB_Anime.GetByAnimeID(sessionWrapper, animeID); - if (anime == null) - anime = new SVR_AniDB_Anime(); + anime = RepoFactory.AniDB_Anime.GetByAnimeID(sessionWrapper, animeID) ?? new SVR_AniDB_Anime(); anime.PopulateAndSaveFromHTTP(session, getAnimeCmd.Anime, getAnimeCmd.Episodes, getAnimeCmd.Titles, getAnimeCmd.Categories, getAnimeCmd.Tags, getAnimeCmd.Characters, getAnimeCmd.Relations, getAnimeCmd.SimilarAnime, getAnimeCmd.Recommendations, @@ -1138,21 +1136,6 @@ private SVR_AniDB_Anime SaveResultsForAnimeXML(ISession session, int animeID, bo return anime; } - public SVR_AniDB_Anime GetAnimeInfoHTTPFromCache(ISession session, int animeID, bool downloadRelations) - { - AniDBHTTPCommand_GetFullAnime getAnimeCmd = null; - lock (lockAniDBConnections) - { - getAnimeCmd = new AniDBHTTPCommand_GetFullAnime(); - getAnimeCmd.Init(animeID, false, false, true); - getAnimeCmd.Process(); - } - - return getAnimeCmd.Anime != null - ? SaveResultsForAnimeXML(session, animeID, downloadRelations, getAnimeCmd) - : null; - } - public bool ValidAniDBCredentials() { if (string.IsNullOrEmpty(this.userName) || string.IsNullOrEmpty(this.password) || diff --git a/Shoko.Server/AniDB_API/AniDBHTTPHelper.cs b/Shoko.Server/AniDB_API/AniDBHTTPHelper.cs index 8be4dec13..242e52001 100644 --- a/Shoko.Server/AniDB_API/AniDBHTTPHelper.cs +++ b/Shoko.Server/AniDB_API/AniDBHTTPHelper.cs @@ -3,10 +3,11 @@ using System.Globalization; using System.Threading; using System.Xml; -using Shoko.Server; -using Shoko.Server.AniDB_API.Raws; using NLog; +using Shoko.Commons.Properties; using Shoko.Commons.Utils; +using Shoko.Server; +using Shoko.Server.AniDB_API.Raws; namespace AniDBAPI { @@ -20,49 +21,24 @@ public class AniDBHTTPHelper public const string VotesURL = @"http://api.anidb.net:9001/httpapi?client=animeplugin&clientver=1&protover=1&request=votes&user={0}&pass={1}"; - public static void GetAnime(int animeID, bool createSeriesRecord) - { - try - { - string uri = string.Format(AniDBHTTPHelper.AnimeURL, animeID); - //BaseConfig.MyAnimeLog.Write("GetAnime: {0}", uri); - string xml = APIUtils.DownloadWebPage(uri); - - //BaseConfig.MyAnimeLog.Write("AniDBHTTPHelper.GetAnime: {0}", xml); - - if (xml.Trim().Length == 0) return; - - XmlDocument docAnime = new XmlDocument(); - docAnime.LoadXml(xml); - - ProcessAnimeDetails(docAnime, animeID); - ProcessEpisodes(docAnime, animeID); - } - catch - { - //BaseConfig.MyAnimeLog.Write("Error in AniDBHTTPHelper.GetAnime: {0}", ex); - return; - } - } - public static XmlDocument GetAnimeXMLFromAPI(int animeID, ref string rawXML) { try { - string uri = string.Format(AniDBHTTPHelper.AnimeURL, animeID); + string uri = string.Format(AnimeURL, animeID); //APIUtils.WriteToLog("GetAnimeXMLFromAPI: " + uri); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(ServerSettings.Culture); DateTime start = DateTime.Now; - string msg = string.Format(Shoko.Commons.Properties.Resources.AniDB_GettingAnimeXML, animeID); + string msg = string.Format(Resources.AniDB_GettingAnimeXML, animeID); ShokoService.LogToSystem(Constants.DBLogType.APIAniDBHTTP, msg); rawXML = APIUtils.DownloadWebPage(uri); TimeSpan ts = DateTime.Now - start; string content = rawXML; if (content.Length > 100) content = content.Substring(0, 100); - msg = string.Format(Shoko.Commons.Properties.Resources.AniDB_GotAnimeXML, animeID, ts.TotalMilliseconds, + msg = string.Format(Resources.AniDB_GotAnimeXML, animeID, ts.TotalMilliseconds, content); ShokoService.LogToSystem(Constants.DBLogType.APIAniDBHTTP, msg); @@ -91,7 +67,7 @@ public static XmlDocument GetMyListXMLFromAPI(string username, string password, //rawXML = re.ReadToEnd(); //re.Close(); - string uri = string.Format(AniDBHTTPHelper.MyListURL, username, password); + string uri = string.Format(MyListURL, username, password); rawXML = APIUtils.DownloadWebPage(uri); if (rawXML.Trim().Length == 0) return null; @@ -112,7 +88,7 @@ public static XmlDocument GetVotesXMLFromAPI(string username, string password, r { try { - string uri = string.Format(AniDBHTTPHelper.VotesURL, username, password); + string uri = string.Format(VotesURL, username, password); rawXML = APIUtils.DownloadWebPage(uri); if (rawXML.Trim().Length == 0) return null; @@ -138,7 +114,7 @@ public static Raw_AniDB_Anime ProcessAnimeDetails(XmlDocument docAnime, int anim }; // check if there is any data - if (docAnime?["anime"]?.Attributes?["id"]?.Value == null) + if (docAnime?["anime"]?.Attributes["id"]?.Value == null) { logger.Warn("AniDB ProcessAnimeDetails - Received no or invalid info in XML"); return null; @@ -185,8 +161,8 @@ public static Raw_AniDB_Anime ProcessAnimeDetails(XmlDocument docAnime, int anim XmlNodeList raItems = docAnime["anime"]["relatedanime"]?.GetElementsByTagName("anime"); if (raItems != null) { - anime.RelatedAnimeIdsRAW = ""; - anime.RelatedAnimeTypesRAW = ""; + anime.RelatedAnimeIdsRAW = string.Empty; + anime.RelatedAnimeTypesRAW = string.Empty; foreach (XmlNode node in raItems) { @@ -215,13 +191,11 @@ public static Raw_AniDB_Anime ProcessAnimeDetails(XmlDocument docAnime, int anim if (string.IsNullOrEmpty(titleType)) continue; string languageType = node.Attributes["xml:lang"]?.Value?.Trim().ToLower(); if (string.IsNullOrEmpty(languageType)) continue; - string titleValue = node.InnerText?.Trim(); + string titleValue = node.InnerText.Trim(); if (string.IsNullOrEmpty(titleValue)) continue; if (titleType.Trim().ToUpper().Equals("MAIN")) - { anime.MainTitle = titleValue.Replace('`', '\''); - } } } @@ -241,41 +215,40 @@ public static Raw_AniDB_Anime ProcessAnimeDetails(XmlDocument docAnime, int anim CultureInfo culture = CultureInfo.CreateSpecificCulture("en-GB"); XmlNodeList ratingItems = docAnime["anime"]["ratings"]?.ChildNodes; - if (ratingItems != null) + if (ratingItems == null) return anime; + foreach (XmlNode node in ratingItems) { - foreach (XmlNode node in ratingItems) - { - string name = node?.Name?.Trim().ToLower(); - if (string.IsNullOrEmpty(name)) continue; - if (!int.TryParse(TryGetAttribute(node, "count"), out int iCount)) continue; - if(!decimal.TryParse(node.InnerText.Trim(), style, culture, out decimal iRating)) continue; - iRating = (int) Math.Round(iRating * 100); + string name = node?.Name?.Trim().ToLower(); + if (string.IsNullOrEmpty(name)) continue; + if (!int.TryParse(TryGetAttribute(node, "count"), out int iCount)) continue; + if (!decimal.TryParse(node.InnerText.Trim(), style, culture, out decimal iRating)) continue; + iRating = (int) Math.Round(iRating * 100); - if (name.Equals("permanent")) - { - anime.VoteCount = iCount; - anime.Rating = (int)iRating; - } - else if (name.Equals("temporary")) - { - anime.TempVoteCount = iCount; - anime.TempRating = (int) iRating; - } - else if (name.Equals("review")) - { - anime.ReviewCount = iCount; - anime.AvgReviewRating = (int) iRating; - } + if (name.Equals("permanent")) + { + anime.VoteCount = iCount; + anime.Rating = (int) iRating; + } + else if (name.Equals("temporary")) + { + anime.TempVoteCount = iCount; + anime.TempRating = (int) iRating; + } + else if (name.Equals("review")) + { + anime.ReviewCount = iCount; + anime.AvgReviewRating = (int) iRating; } } #endregion + return anime; } public static List GetEpisodes(int animeID) { - string xmlResult = ""; + string xmlResult = string.Empty; XmlDocument docAnime = GetAnimeXMLFromAPI(animeID, ref xmlResult); if (docAnime == null) return null; @@ -287,20 +260,18 @@ public static List ProcessTags(XmlDocument docAnime, int animeID) List tags = new List(); XmlNodeList tagItems = docAnime?["anime"]?["tags"]?.GetElementsByTagName("tag"); - if (tagItems != null) + if (tagItems == null) return tags; + foreach (XmlNode node in tagItems) { - foreach (XmlNode node in tagItems) + try { - try - { - Raw_AniDB_Tag tag = new Raw_AniDB_Tag(); - tag.ProcessFromHTTPResult(node, animeID); - tags.Add(tag); - } - catch (Exception ex) - { - logger.Error(ex, $"Error in AniDBHTTPHelper.ProcessTags: {ex}"); - } + Raw_AniDB_Tag tag = new Raw_AniDB_Tag(); + tag.ProcessFromHTTPResult(node, animeID); + tags.Add(tag); + } + catch (Exception ex) + { + logger.Error(ex, $"Error in AniDBHTTPHelper.ProcessTags: {ex}"); } } @@ -312,20 +283,18 @@ public static List ProcessCharacters(XmlDocument docAnime, List chars = new List(); XmlNodeList charItems = docAnime?["anime"]?["characters"]?.GetElementsByTagName("character"); - if (charItems != null) + if (charItems == null) return chars; + foreach (XmlNode node in charItems) { - foreach (XmlNode node in charItems) + try { - try - { - Raw_AniDB_Character chr = new Raw_AniDB_Character(); - chr.ProcessFromHTTPResult(node, animeID); - chars.Add(chr); - } - catch (Exception ex) - { - logger.Error(ex, $"Error in AniDBHTTPHelper.ProcessCharacters: {ex}"); - } + Raw_AniDB_Character chr = new Raw_AniDB_Character(); + chr.ProcessFromHTTPResult(node, animeID); + chars.Add(chr); + } + catch (Exception ex) + { + logger.Error(ex, $"Error in AniDBHTTPHelper.ProcessCharacters: {ex}"); } } @@ -337,20 +306,18 @@ public static List ProcessTitles(XmlDocument docAnime, in List titles = new List(); XmlNodeList titleItems = docAnime?["anime"]?["titles"]?.GetElementsByTagName("title"); - if (titleItems != null) + if (titleItems == null) return titles; + foreach (XmlNode node in titleItems) { - foreach (XmlNode node in titleItems) + try { - try - { - Raw_AniDB_Anime_Title animeTitle = new Raw_AniDB_Anime_Title(); - animeTitle.ProcessFromHTTPResult(node, animeID); - titles.Add(animeTitle); - } - catch (Exception ex) - { - logger.Error(ex, $"Error in AniDBHTTPHelper.ProcessTitles: {animeID} - {ex}"); - } + Raw_AniDB_Anime_Title animeTitle = new Raw_AniDB_Anime_Title(); + animeTitle.ProcessFromHTTPResult(node, animeID); + titles.Add(animeTitle); + } + catch (Exception ex) + { + logger.Error(ex, $"Error in AniDBHTTPHelper.ProcessTitles: {animeID} - {ex}"); } } @@ -362,20 +329,18 @@ public static List ProcessRelations(XmlDocument docAnime List rels = new List(); XmlNodeList relItems = docAnime?["anime"]?["relatedanime"]?.GetElementsByTagName("anime"); - if (relItems != null) + if (relItems == null) return rels; + foreach (XmlNode node in relItems) { - foreach (XmlNode node in relItems) + try { - try - { - Raw_AniDB_RelatedAnime rel = new Raw_AniDB_RelatedAnime(); - rel.ProcessFromHTTPResult(node, animeID); - rels.Add(rel); - } - catch (Exception ex) - { - logger.Error(ex, "Error in AniDBHTTPHelper.ProcessRelations: {0}"); - } + Raw_AniDB_RelatedAnime rel = new Raw_AniDB_RelatedAnime(); + rel.ProcessFromHTTPResult(node, animeID); + rels.Add(rel); + } + catch (Exception ex) + { + logger.Error(ex, "Error in AniDBHTTPHelper.ProcessRelations: {0}"); } } @@ -387,20 +352,18 @@ public static List ProcessSimilarAnime(XmlDocument docAn List rels = new List(); XmlNodeList simItems = docAnime["anime"]?["similaranime"]?.GetElementsByTagName("anime"); - if (simItems != null) + if (simItems == null) return rels; + foreach (XmlNode node in simItems) { - foreach (XmlNode node in simItems) + try { - try - { - Raw_AniDB_SimilarAnime sim = new Raw_AniDB_SimilarAnime(); - sim.ProcessFromHTTPResult(node, animeID); - rels.Add(sim); - } - catch (Exception ex) - { - logger.Error(ex, "Error in AniDBHTTPHelper.ProcessSimilarAnime: {0}"); - } + Raw_AniDB_SimilarAnime sim = new Raw_AniDB_SimilarAnime(); + sim.ProcessFromHTTPResult(node, animeID); + rels.Add(sim); + } + catch (Exception ex) + { + logger.Error(ex, "Error in AniDBHTTPHelper.ProcessSimilarAnime: {0}"); } } @@ -412,20 +375,18 @@ public static List ProcessRecommendations(XmlDocument List recs = new List(); XmlNodeList recItems = docAnime?["anime"]?["recommendations"]?.GetElementsByTagName("recommendation"); - if (recItems != null) + if (recItems == null) return recs; + foreach (XmlNode node in recItems) { - foreach (XmlNode node in recItems) + try { - try - { - Raw_AniDB_Recommendation rec = new Raw_AniDB_Recommendation(); - rec.ProcessFromHTTPResult(node, animeID); - recs.Add(rec); - } - catch (Exception exc) - { - logger.Error(exc, "Error in Processing Node in Recommendations: {0}" + exc); - } + Raw_AniDB_Recommendation rec = new Raw_AniDB_Recommendation(); + rec.ProcessFromHTTPResult(node, animeID); + recs.Add(rec); + } + catch (Exception exc) + { + logger.Error(exc, "Error in Processing Node in Recommendations: {0}" + exc); } } @@ -437,24 +398,22 @@ public static List ProcessEpisodes(XmlDocument docAnime, int List eps = new List(); XmlNodeList episodeItems = docAnime?["anime"]?["episodes"]?.GetElementsByTagName("episode"); - if (episodeItems != null) + if (episodeItems == null) return eps; + foreach (XmlNode node in episodeItems) { - foreach (XmlNode node in episodeItems) + try { - try - { - Raw_AniDB_Episode ep = new Raw_AniDB_Episode(); - if (!ep.ProcessEpisodeSource(node, animeID)) - { - logger.Error($"AniDB Episode raw data had invalid return data:\n {node}"); - continue; - } - eps.Add(ep); - } - catch (Exception exc) + Raw_AniDB_Episode ep = new Raw_AniDB_Episode(); + if (!ep.ProcessEpisodeSource(node, animeID)) { - logger.Error(exc, $"Error in ProcessEpisodes: {exc}"); + logger.Error($"AniDB Episode raw data had invalid return data:\n {node}"); + continue; } + eps.Add(ep); + } + catch (Exception exc) + { + logger.Error(exc, $"Error in ProcessEpisodes: {exc}"); } } diff --git a/Shoko.Server/AniDB_API/Calendar.cs b/Shoko.Server/AniDB_API/Calendar.cs index a14c47c49..3f41ed927 100644 --- a/Shoko.Server/AniDB_API/Calendar.cs +++ b/Shoko.Server/AniDB_API/Calendar.cs @@ -23,7 +23,7 @@ public DateTime? ReleaseDate set { releaseDate = value; } } - private string releaseDateRaw = ""; + private string releaseDateRaw = string.Empty; public string ReleaseDateRaw { @@ -108,7 +108,7 @@ public CalendarCollection(string sRecMessage) public override string ToString() { - string ret = ""; + string ret = string.Empty; foreach (Calendar cal in calendars) { ret += cal.ToString() + Environment.NewLine; diff --git a/Shoko.Server/AniDB_API/Commands/AniDBCommand_DeleteFile.cs b/Shoko.Server/AniDB_API/Commands/AniDBCommand_DeleteFile.cs index 5424d3d62..3d4cea9f2 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBCommand_DeleteFile.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBCommand_DeleteFile.cs @@ -6,7 +6,7 @@ namespace AniDBAPI.Commands { public class AniDBCommand_DeleteFile : AniDBUDPCommand, IAniDBUDPCommand { - public string Hash = ""; + public string Hash = string.Empty; public long FileSize = 0; public int FileID = 0; @@ -66,7 +66,7 @@ public void Init(string hash, long fileSize) public void Init(int fileID) { - Hash = ""; + Hash = string.Empty; FileSize = 0; FileID = fileID; diff --git a/Shoko.Server/AniDB_API/Commands/AniDBCommand_GetEpisodeInfo.cs b/Shoko.Server/AniDB_API/Commands/AniDBCommand_GetEpisodeInfo.cs index da62b1f0e..060a5e8c1 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBCommand_GetEpisodeInfo.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBCommand_GetEpisodeInfo.cs @@ -55,7 +55,7 @@ public bool ForceRefresh set { forceRefresh = value; } } - string key = ""; + string key = string.Empty; public string GetKey() { diff --git a/Shoko.Server/AniDB_API/Commands/AniDBCommand_GetReview.cs b/Shoko.Server/AniDB_API/Commands/AniDBCommand_GetReview.cs index e2bb66361..6b0ef0720 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBCommand_GetReview.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBCommand_GetReview.cs @@ -14,7 +14,7 @@ public int ReviewID set { reviewID = value; } } - private string reviewText = ""; + private string reviewText = string.Empty; public string ReviewText { diff --git a/Shoko.Server/AniDB_API/Commands/AniDBCommand_Login.cs b/Shoko.Server/AniDB_API/Commands/AniDBCommand_Login.cs index 80beee390..d8445e475 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBCommand_Login.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBCommand_Login.cs @@ -63,7 +63,7 @@ public virtual enHelperActivityType Process(ref Socket soUDP, public AniDBCommand_Login() { commandType = enAniDBCommandType.Login; - commandID = ""; + commandID = string.Empty; } public void Init(string userName, string password) diff --git a/Shoko.Server/AniDB_API/Commands/AniDBCommand_Logout.cs b/Shoko.Server/AniDB_API/Commands/AniDBCommand_Logout.cs index 608f28de1..f8427d732 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBCommand_Logout.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBCommand_Logout.cs @@ -27,7 +27,7 @@ public virtual enHelperActivityType Process(ref Socket soUDP, public AniDBCommand_Logout() { commandType = enAniDBCommandType.Logout; - commandID = ""; + commandID = string.Empty; } public void Init() diff --git a/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsDeleted.cs b/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsDeleted.cs index ec64c2dcb..676d5629e 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsDeleted.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsDeleted.cs @@ -7,7 +7,7 @@ namespace AniDBAPI.Commands public class AniDBCommand_MarkFileAsDeleted : AniDBUDPCommand, IAniDBUDPCommand { public bool ReturnIsWatched = false; - public string Hash = ""; + public string Hash = string.Empty; public string GetKey() { diff --git a/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsExternal.cs b/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsExternal.cs index f1496e041..e000a965a 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsExternal.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsExternal.cs @@ -7,7 +7,7 @@ namespace AniDBAPI.Commands public class AniDBCommand_MarkFileAsExternal : AniDBUDPCommand, IAniDBUDPCommand { public bool ReturnIsWatched = false; - public string Hash = ""; + public string Hash = string.Empty; public string GetKey() { diff --git a/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsUnknown.cs b/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsUnknown.cs index fcc00e0d7..de65815de 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsUnknown.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBCommand_MarkFileAsUnknown.cs @@ -7,7 +7,7 @@ namespace AniDBAPI.Commands public class AniDBCommand_MarkFileAsUnknown : AniDBUDPCommand, IAniDBUDPCommand { public bool ReturnIsWatched = false; - public string Hash = ""; + public string Hash = string.Empty; public string GetKey() { diff --git a/Shoko.Server/AniDB_API/Commands/AniDBCommand_Ping.cs b/Shoko.Server/AniDB_API/Commands/AniDBCommand_Ping.cs index 75e0142e6..fa1239b93 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBCommand_Ping.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBCommand_Ping.cs @@ -42,7 +42,7 @@ public virtual enHelperActivityType Process(ref Socket soUDP, public AniDBCommand_Ping() { commandType = enAniDBCommandType.Ping; - commandID = ""; + commandID = string.Empty; } public void Init() diff --git a/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetFullAnime.cs b/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetFullAnime.cs index ec15fcc28..19957b511 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetFullAnime.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetFullAnime.cs @@ -105,7 +105,7 @@ public bool CreateAnimeSeriesRecord set { createAnimeSeriesRecord = value; } } - private string xmlResult = ""; + private string xmlResult = string.Empty; public string XmlResult { @@ -201,15 +201,15 @@ public virtual enHelperActivityType Process() { //Disable usage of Azure API for this type of data /*xmlResult = AzureWebAPI.Get_AnimeXML(animeID); - if (string.IsNullOrEmpty(xmlResult)) - { - docAnime = AniDBHTTPHelper.GetAnimeXMLFromAPI(animeID, ref xmlResult); - } - else - { - docAnime = new XmlDocument(); - docAnime.LoadXml(xmlResult); - }*/ + if (string.IsNullOrEmpty(xmlResult)) + { + docAnime = AniDBHTTPHelper.GetAnimeXMLFromAPI(animeID, ref xmlResult); + } + else + { + docAnime = new XmlDocument(); + docAnime.LoadXml(xmlResult); + }*/ //logger.Info("Trying to load Anime HTTP info from cache file..."); docAnime = LoadAnimeHTTPFromFile(animeID); @@ -227,12 +227,13 @@ public virtual enHelperActivityType Process() if (CheckForBan(xmlResult)) return enHelperActivityType.Banned_555; - if (xmlResult.Trim().Length > 0) - WriteAnimeHTTPToFile(animeID, xmlResult); - + if (xmlResult.Trim().Length > 0) WriteAnimeHTTPToFile(animeID, xmlResult); + if (docAnime != null) { anime = AniDBHTTPHelper.ProcessAnimeDetails(docAnime, animeID); + if (anime == null) return enHelperActivityType.NoSuchAnime; + episodes = AniDBHTTPHelper.ProcessEpisodes(docAnime, animeID); titles = AniDBHTTPHelper.ProcessTitles(docAnime, animeID); tags = AniDBHTTPHelper.ProcessTags(docAnime, animeID); @@ -242,10 +243,7 @@ public virtual enHelperActivityType Process() recommendations = AniDBHTTPHelper.ProcessRecommendations(docAnime, animeID); return enHelperActivityType.GotAnimeInfoHTTP; } - else - { - return enHelperActivityType.NoSuchAnime; - } + return enHelperActivityType.NoSuchAnime; } diff --git a/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetMyList.cs b/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetMyList.cs index f0a8fd8b8..62079ea75 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetMyList.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetMyList.cs @@ -16,7 +16,7 @@ public List MyListItems set { myListItems = value; } } - private string username = ""; + private string username = string.Empty; public string Username { @@ -24,7 +24,7 @@ public string Username set { username = value; } } - private string password = ""; + private string password = string.Empty; public string Password { @@ -32,7 +32,7 @@ public string Password set { password = value; } } - private string xmlResult = ""; + private string xmlResult = string.Empty; public string XmlResult { diff --git a/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetVotes.cs b/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetVotes.cs index 18526c191..099ff56d4 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetVotes.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBHTTPCommand_GetVotes.cs @@ -16,7 +16,7 @@ public List MyVotes set { myVotes = value; } } - private string username = ""; + private string username = string.Empty; public string Username { @@ -24,7 +24,7 @@ public string Username set { username = value; } } - private string password = ""; + private string password = string.Empty; public string Password { @@ -32,7 +32,7 @@ public string Password set { password = value; } } - private string xmlResult = ""; + private string xmlResult = string.Empty; public string XmlResult { diff --git a/Shoko.Server/AniDB_API/Commands/AniDBUDPCommand.cs b/Shoko.Server/AniDB_API/Commands/AniDBUDPCommand.cs index 42e5dbf2d..3af995aa8 100644 --- a/Shoko.Server/AniDB_API/Commands/AniDBUDPCommand.cs +++ b/Shoko.Server/AniDB_API/Commands/AniDBUDPCommand.cs @@ -65,8 +65,8 @@ public void ProcessCommand(ref Socket soUDP, bool multipart = false; int part = 0; int maxpart = 1; - string fulldesc = ""; - string decodedstring = ""; + string fulldesc = string.Empty; + string decodedstring = string.Empty; DateTime start = DateTime.Now; do @@ -277,7 +277,7 @@ public void ProcessCommand(ref Socket soUDP, else { ShokoService.AnidbProcessor.IsBanned = false; - ShokoService.AnidbProcessor.BanOrigin = ""; + ShokoService.AnidbProcessor.BanOrigin = string.Empty; } // 598 UNKNOWN COMMAND usually means we had connections issue @@ -297,7 +297,7 @@ public void ProcessCommand(ref Socket soUDP, // 604 TIMEOUT - DELAY AND RESUBMIT if (ResponseCode == 600 || ResponseCode == 601 || ResponseCode == 602 || ResponseCode == 604) { - string errormsg = ""; + string errormsg = string.Empty; switch (ResponseCode) { case 600: diff --git a/Shoko.Server/AniDB_API/NotifyListHeader.cs b/Shoko.Server/AniDB_API/NotifyListHeader.cs index 7afc59580..fb35a31b9 100644 --- a/Shoko.Server/AniDB_API/NotifyListHeader.cs +++ b/Shoko.Server/AniDB_API/NotifyListHeader.cs @@ -2,7 +2,7 @@ { public class NotifyListHeader { - private string notifyType = ""; + private string notifyType = string.Empty; public string NotifyType { diff --git a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Anime.cs b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Anime.cs index e94de9071..9bfc17e80 100644 --- a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Anime.cs +++ b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Anime.cs @@ -245,21 +245,6 @@ public Raw_AniDB_Anime(string sRecMessage) GenreRAW = sDetails[5]; BeginYear = AirDate.HasValue ? AirDate.Value.Year : 0; EndYear = EndDate.HasValue ? EndDate.Value.Year : 0; - - foreach (int rid in this.ReviewIDList) - { - //BaseConfig.MyAnimeLog.Write("ReviewID: {0}", rid.ToString()); - } - - /* - char[] chars = sDetails[5].ToCharArray(); - - foreach (char c in chars) - { - if ((int)c > 31 && (int)c < 127) - genreRAW += c.ToString(); - } - */ } diff --git a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Anime_Title.cs b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Anime_Title.cs index eab8ad7a9..596b2c7a8 100644 --- a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Anime_Title.cs +++ b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Anime_Title.cs @@ -22,9 +22,9 @@ public Raw_AniDB_Anime_Title() public void ProcessFromHTTPResult(XmlNode node, int anid) { this.AnimeID = anid; - this.TitleType = ""; - this.Language = ""; - this.Title = ""; + this.TitleType = string.Empty; + this.Language = string.Empty; + this.Title = string.Empty; this.TitleType = AniDBHTTPHelper.TryGetAttribute(node, "type"); this.Language = AniDBHTTPHelper.TryGetAttribute(node, "xml:lang"); diff --git a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Category.cs b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Category.cs index c3c6c377e..74798c8df 100644 --- a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Category.cs +++ b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Category.cs @@ -28,8 +28,8 @@ public void ProcessFromHTTPResult(XmlNode node, int anid) this.CategoryID = 0; this.ParentID = 0; this.IsHentai = 0; - this.CategoryName = ""; - this.CategoryDescription = ""; + this.CategoryName = string.Empty; + this.CategoryDescription = string.Empty; this.Weighting = 0; this.CategoryID = int.Parse(AniDBHTTPHelper.TryGetAttribute(node, "id")); diff --git a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Character.cs b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Character.cs index e9bad97aa..93fa56aa9 100644 --- a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Character.cs +++ b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Character.cs @@ -87,7 +87,7 @@ public void ProcessFromHTTPResult(XmlNode node, int anid) this.EpisodeListRaw = AniDBHTTPHelper.TryGetProperty(node, "episodes") ?? string.Empty; this.PicName = AniDBHTTPHelper.TryGetProperty(node, "picture"); - CreatorListRaw = ""; + CreatorListRaw = string.Empty; foreach (XmlNode nodeChild in node.ChildNodes) { if (nodeChild?.Name == "seiyuu") diff --git a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Creator.cs b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Creator.cs index 728b96b70..1af7038a4 100644 --- a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Creator.cs +++ b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Creator.cs @@ -24,7 +24,7 @@ public Raw_AniDB_Creator() CreatorKanjiName = string.Empty; CreatorType = 1; PicName = string.Empty; - CreatorDescription = ""; + CreatorDescription = string.Empty; URLEnglish = string.Empty; URLJapanese = string.Empty; URLWikiEnglish = string.Empty; @@ -59,7 +59,7 @@ public Raw_AniDB_Creator(string sRecMessage) CreatorName = AniDBAPILib.ProcessAniDBString(sDetails[2].Trim()); CreatorType = AniDBAPILib.ProcessAniDBInt(AniDBAPILib.ProcessAniDBString(sDetails[3].Trim())); PicName = AniDBAPILib.ProcessAniDBString(sDetails[4].Trim()); - CreatorDescription = ""; + CreatorDescription = string.Empty; URLEnglish = AniDBAPILib.ProcessAniDBString(sDetails[5].Trim()); URLJapanese = AniDBAPILib.ProcessAniDBString(sDetails[6].Trim()); URLWikiEnglish = AniDBAPILib.ProcessAniDBString(sDetails[7].Trim()); diff --git a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Episode.cs b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Episode.cs index f251d903f..ce48527ea 100644 --- a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Episode.cs +++ b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Episode.cs @@ -284,7 +284,7 @@ private int GetEpisodeType(string fld) { //BaseConfig.MyAnimeLog.Write("GetEpisodeType: {0}", fld); - string epType = ""; + string epType = string.Empty; if (int.TryParse(fld.Trim().Substring(0, 1), out int epno)) // if the first char is a numeric than it is a normal episode { diff --git a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_MyListFile.cs b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_MyListFile.cs index 2673b1e84..6c6e9c9c7 100644 --- a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_MyListFile.cs +++ b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_MyListFile.cs @@ -46,12 +46,12 @@ private void InitVals() EpisodeID = 0; AnimeID = 0; GroupID = 0; - FileDate = ""; + FileDate = string.Empty; ViewDateUDP = 0; - ViewDateHTTP = ""; - Storage = ""; - Source = ""; - Other = ""; + ViewDateHTTP = string.Empty; + Storage = string.Empty; + Source = string.Empty; + Other = string.Empty; FileState = 0; WatchedDate = null; } diff --git a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Review.cs b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Review.cs index 1bc8d431f..5e2c8bd74 100644 --- a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Review.cs +++ b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Review.cs @@ -24,7 +24,7 @@ public Raw_AniDB_Review() RatingCharacter = 0; RatingValue = 0; RatingEnjoyment = 0; - ReviewText = ""; + ReviewText = string.Empty; } public Raw_AniDB_Review(string sRecMessage) diff --git a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Tag.cs b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Tag.cs index 2366b0fce..b9ade9bc9 100644 --- a/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Tag.cs +++ b/Shoko.Server/AniDB_API/Raws/Raw_AniDB_Tag.cs @@ -32,8 +32,8 @@ public void ProcessFromHTTPResult(XmlNode node, int anid) this.Spoiler = 0; this.LocalSpoiler = 0; this.GlobalSpoiler = 0; - this.TagName = ""; - this.TagDescription = ""; + this.TagName = string.Empty; + this.TagDescription = string.Empty; this.TagCount = 0; this.Approval = 0; this.Weight = 0; diff --git a/Shoko.Server/AniDB_API/UpdatesCollection.cs b/Shoko.Server/AniDB_API/UpdatesCollection.cs index b1bb15590..530367fa6 100644 --- a/Shoko.Server/AniDB_API/UpdatesCollection.cs +++ b/Shoko.Server/AniDB_API/UpdatesCollection.cs @@ -6,7 +6,7 @@ public class UpdatesCollection { protected UpdatesCollection() { - rawAnimeIDs = ""; + rawAnimeIDs = string.Empty; updateCount = 0; } diff --git a/Shoko.Server/AniDB_API/Utils.cs b/Shoko.Server/AniDB_API/Utils.cs index 87d558a90..a9aea1a0b 100644 --- a/Shoko.Server/AniDB_API/Utils.cs +++ b/Shoko.Server/AniDB_API/Utils.cs @@ -46,7 +46,7 @@ public static string DownloadWebPage(string url) catch (Exception ex) { logger.Error(ex, "Error in APIUtils.DownloadWebPage: {0}"); - return ""; + return string.Empty; } } diff --git a/Shoko.Server/AniDB_API/XMLBase.cs b/Shoko.Server/AniDB_API/XMLBase.cs index bb5960747..e80bac01b 100644 --- a/Shoko.Server/AniDB_API/XMLBase.cs +++ b/Shoko.Server/AniDB_API/XMLBase.cs @@ -9,7 +9,7 @@ public class XMLBase public string ToXML() { XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); - ns.Add("", ""); + ns.Add("", string.Empty); XmlSerializer serializer = new XmlSerializer(this.GetType()); XmlWriterSettings settings = new XmlWriterSettings diff --git a/Shoko.Server/Commands/AniDB/CommandRequest_DeleteFileFromMyList.cs b/Shoko.Server/Commands/AniDB/CommandRequest_DeleteFileFromMyList.cs index 1dc2ba3dc..213e0137f 100644 --- a/Shoko.Server/Commands/AniDB/CommandRequest_DeleteFileFromMyList.cs +++ b/Shoko.Server/Commands/AniDB/CommandRequest_DeleteFileFromMyList.cs @@ -50,7 +50,7 @@ public CommandRequest_DeleteFileFromMyList(string hash, long fileSize) public CommandRequest_DeleteFileFromMyList(int fileID) { - this.Hash = ""; + this.Hash = string.Empty; this.FileSize = 0; this.FileID = fileID; this.CommandType = (int) CommandRequestType.AniDB_DeleteFileUDP; diff --git a/Shoko.Server/Commands/AniDB/CommandRequest_GetCalendar.cs b/Shoko.Server/Commands/AniDB/CommandRequest_GetCalendar.cs index c223a4484..630b59e03 100644 --- a/Shoko.Server/Commands/AniDB/CommandRequest_GetCalendar.cs +++ b/Shoko.Server/Commands/AniDB/CommandRequest_GetCalendar.cs @@ -59,7 +59,7 @@ public override void ProcessCommand() sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.AniDBCalendar, - UpdateDetails = "" + UpdateDetails = string.Empty }; } else diff --git a/Shoko.Server/Commands/AniDB/CommandRequest_SyncMyList.cs b/Shoko.Server/Commands/AniDB/CommandRequest_SyncMyList.cs index 68a843af6..95b2f88f1 100644 --- a/Shoko.Server/Commands/AniDB/CommandRequest_SyncMyList.cs +++ b/Shoko.Server/Commands/AniDB/CommandRequest_SyncMyList.cs @@ -50,7 +50,7 @@ public override void ProcessCommand() sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.AniDBMyListSync, - UpdateDetails = "" + UpdateDetails = string.Empty }; } else @@ -184,7 +184,7 @@ public override void ProcessCommand() VideoLocal_User userRecord = vl.GetUserRecord(juser.JMMUserID); if (userRecord != null) localStatus = userRecord.WatchedDate.HasValue; - string action = ""; + string action = string.Empty; if (localStatus == myitem.IsWatched) continue; // localStatus and AniDB Status are different diff --git a/Shoko.Server/Commands/AniDB/CommandRequest_UpdateMylistStats.cs b/Shoko.Server/Commands/AniDB/CommandRequest_UpdateMylistStats.cs index ca51ddeec..7f41b2cf6 100644 --- a/Shoko.Server/Commands/AniDB/CommandRequest_UpdateMylistStats.cs +++ b/Shoko.Server/Commands/AniDB/CommandRequest_UpdateMylistStats.cs @@ -61,7 +61,7 @@ public override void ProcessCommand() sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.AniDBMylistStats, - UpdateDetails = "" + UpdateDetails = string.Empty }; } else diff --git a/Shoko.Server/Commands/Azure/CommandRequest_Azure_SendAnimeXML.cs b/Shoko.Server/Commands/Azure/CommandRequest_Azure_SendAnimeXML.cs index dedf302ca..1a980f026 100644 --- a/Shoko.Server/Commands/Azure/CommandRequest_Azure_SendAnimeXML.cs +++ b/Shoko.Server/Commands/Azure/CommandRequest_Azure_SendAnimeXML.cs @@ -68,7 +68,7 @@ public override void ProcessCommand() string fileName = string.Format("AnimeDoc_{0}.xml", AnimeID); string fileNameWithPath = Path.Combine(filePath, fileName); - string rawXML = ""; + string rawXML = string.Empty; if (File.Exists(fileNameWithPath)) { StreamReader re = File.OpenText(fileNameWithPath); diff --git a/Shoko.Server/Commands/CommandProcessorGeneral.cs b/Shoko.Server/Commands/CommandProcessorGeneral.cs index 97db7aeca..9eeee181f 100644 --- a/Shoko.Server/Commands/CommandProcessorGeneral.cs +++ b/Shoko.Server/Commands/CommandProcessorGeneral.cs @@ -65,7 +65,7 @@ public bool Paused }; pauseTime = null; ShokoService.AnidbProcessor.IsBanned = false; - ShokoService.AnidbProcessor.BanOrigin = ""; + ShokoService.AnidbProcessor.BanOrigin = string.Empty; } ServerInfo.Instance.GeneralQueuePaused = paused; ServerInfo.Instance.GeneralQueueRunning = !paused; diff --git a/Shoko.Server/Commands/CommandRequestImplementation.cs b/Shoko.Server/Commands/CommandRequestImplementation.cs index f748a3941..be9cc4843 100644 --- a/Shoko.Server/Commands/CommandRequestImplementation.cs +++ b/Shoko.Server/Commands/CommandRequestImplementation.cs @@ -50,7 +50,7 @@ public abstract class CommandRequestImplementation public string ToXML() { XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); - ns.Add("", ""); + ns.Add("", string.Empty); XmlSerializer serializer = new XmlSerializer(this.GetType()); XmlWriterSettings settings = new XmlWriterSettings @@ -114,7 +114,7 @@ protected string TryGetProperty(XmlDocument doc, string keyName, string property //BaseConfig.MyAnimeLog.Write("---------------------------------------------------------------"); } - return ""; + return string.Empty; } } } \ No newline at end of file diff --git a/Shoko.Server/Commands/Import/CommandRequest_DownloadImage.cs b/Shoko.Server/Commands/Import/CommandRequest_DownloadImage.cs index 1beded30b..f896c1f9c 100644 --- a/Shoko.Server/Commands/Import/CommandRequest_DownloadImage.cs +++ b/Shoko.Server/Commands/Import/CommandRequest_DownloadImage.cs @@ -66,7 +66,7 @@ public QueueStateStruct PrettyDescription type = Resources.Command_ValidateAllImages_AniDBSeiyuus; break; default: - type = ""; + type = string.Empty; break; } return new QueueStateStruct() @@ -95,7 +95,7 @@ public CommandRequest_DownloadImage(int entityID, ImageEntityType entityType, bo public override void ProcessCommand() { logger.Info("Processing CommandRequest_DownloadImage: {0}", EntityID); - string downloadURL = ""; + string downloadURL = string.Empty; try { ImageDownloadRequest req = null; @@ -418,7 +418,7 @@ public static string GetFileURL(ImageDownloadRequest req, bool thumbNailOnly) return string.Format(Constants.URLS.AniDB_Images, creator.PicName); default: - return ""; + return string.Empty; } } @@ -466,7 +466,7 @@ private string GetFileName(ImageDownloadRequest req, bool thumbNailOnly) return creator.GetPosterPath(); default: - return ""; + return string.Empty; } } diff --git a/Shoko.Server/Commands/Import/CommandRequest_HashFile.cs b/Shoko.Server/Commands/Import/CommandRequest_HashFile.cs index f6537d250..449aad7ed 100644 --- a/Shoko.Server/Commands/Import/CommandRequest_HashFile.cs +++ b/Shoko.Server/Commands/Import/CommandRequest_HashFile.cs @@ -113,7 +113,7 @@ private SVR_VideoLocal_Place ProcessFile_LocalInfo() { // hash and read media info for file int nshareID = -1; - string filePath = ""; + string filePath = string.Empty; Tuple tup = VideoLocal_PlaceRepository.GetFromFullPath(FileName); diff --git a/Shoko.Server/Commands/MAL/CommandRequest_MALSearchAnime.cs b/Shoko.Server/Commands/MAL/CommandRequest_MALSearchAnime.cs index b673d813a..b2fb13516 100644 --- a/Shoko.Server/Commands/MAL/CommandRequest_MALSearchAnime.cs +++ b/Shoko.Server/Commands/MAL/CommandRequest_MALSearchAnime.cs @@ -83,7 +83,7 @@ public override void ProcessCommand() if (!ServerSettings.MAL_AutoLink) return; - string searchCriteria = ""; + string searchCriteria = string.Empty; SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(AnimeID); if (anime == null) return; diff --git a/Shoko.Server/Commands/MovieDB/CommandRequest_MovieDBSearchAnime.cs b/Shoko.Server/Commands/MovieDB/CommandRequest_MovieDBSearchAnime.cs index 7fbc1f438..fa2bf94cb 100644 --- a/Shoko.Server/Commands/MovieDB/CommandRequest_MovieDBSearchAnime.cs +++ b/Shoko.Server/Commands/MovieDB/CommandRequest_MovieDBSearchAnime.cs @@ -101,7 +101,7 @@ public override void ProcessCommand() // Use TvDB setting if (!ServerSettings.TvDB_AutoLink) return; - string searchCriteria = ""; + string searchCriteria = string.Empty; SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(sessionWrapper, AnimeID); if (anime == null) return; diff --git a/Shoko.Server/Commands/Plex/PlexHelper.cs b/Shoko.Server/Commands/Plex/PlexHelper.cs index 972d276de..057142a7a 100644 --- a/Shoko.Server/Commands/Plex/PlexHelper.cs +++ b/Shoko.Server/Commands/Plex/PlexHelper.cs @@ -221,7 +221,7 @@ public string Authenticate() public void InvalidateToken() { - _user.PlexToken = ""; + _user.PlexToken = string.Empty; new ShokoServiceImplementation().SaveUser(_user); } diff --git a/Shoko.Server/Commands/Trakt/CommandRequest_TraktSearchAnime.cs b/Shoko.Server/Commands/Trakt/CommandRequest_TraktSearchAnime.cs index c9f82994b..3faf6a049 100644 --- a/Shoko.Server/Commands/Trakt/CommandRequest_TraktSearchAnime.cs +++ b/Shoko.Server/Commands/Trakt/CommandRequest_TraktSearchAnime.cs @@ -159,7 +159,7 @@ public override void ProcessCommand() if (!ServerSettings.TvDB_AutoLink) return; // finally lets try searching Trakt directly - string searchCriteria = ""; + string searchCriteria = string.Empty; SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(sessionWrapper, AnimeID); if (anime == null) return; diff --git a/Shoko.Server/Commands/Trakt/CommandRequest_TraktSyncCollection.cs b/Shoko.Server/Commands/Trakt/CommandRequest_TraktSyncCollection.cs index 145eb00d5..6a1385525 100644 --- a/Shoko.Server/Commands/Trakt/CommandRequest_TraktSyncCollection.cs +++ b/Shoko.Server/Commands/Trakt/CommandRequest_TraktSyncCollection.cs @@ -55,7 +55,7 @@ public override void ProcessCommand() sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.TraktSync, - UpdateDetails = "" + UpdateDetails = string.Empty }; } else diff --git a/Shoko.Server/Commands/Trakt/CommandRequest_TraktUpdateAllSeries.cs b/Shoko.Server/Commands/Trakt/CommandRequest_TraktUpdateAllSeries.cs index 652dd069f..66f40f626 100644 --- a/Shoko.Server/Commands/Trakt/CommandRequest_TraktUpdateAllSeries.cs +++ b/Shoko.Server/Commands/Trakt/CommandRequest_TraktUpdateAllSeries.cs @@ -56,7 +56,7 @@ public override void ProcessCommand() sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.TraktUpdate, - UpdateDetails = "" + UpdateDetails = string.Empty }; } else diff --git a/Shoko.Server/Commands/TvDB/CommandRequest_TvDBSearchAnime.cs b/Shoko.Server/Commands/TvDB/CommandRequest_TvDBSearchAnime.cs index 0b218f3ef..eaeb52bc6 100644 --- a/Shoko.Server/Commands/TvDB/CommandRequest_TvDBSearchAnime.cs +++ b/Shoko.Server/Commands/TvDB/CommandRequest_TvDBSearchAnime.cs @@ -114,7 +114,7 @@ public override void ProcessCommand() if (!ServerSettings.TvDB_AutoLink) return; - string searchCriteria = ""; + string searchCriteria = string.Empty; SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(AnimeID); if (anime == null) return; @@ -178,7 +178,7 @@ private bool ProcessSearchResults(List results, str if (ep?.AbsoluteNumber != null) { AddCrossRef_AniDB_TvDBV2(AnimeID, ep.AbsoluteNumber.Value, results[0].SeriesID, - season, tvser?.SeriesName ?? ""); + season, tvser?.SeriesName ?? string.Empty); } } return true; @@ -207,7 +207,7 @@ private bool ProcessSearchResults(List results, str if (ep?.AbsoluteNumber != null) { AddCrossRef_AniDB_TvDBV2(AnimeID, ep.AbsoluteNumber.Value, results[0].SeriesID, - season, tvser?.SeriesName ?? ""); + season, tvser?.SeriesName ?? string.Empty); } } return true; diff --git a/Shoko.Server/Commands/WebCache/CommandRequest_WebCacheSendXRefAniDBTrakt.cs b/Shoko.Server/Commands/WebCache/CommandRequest_WebCacheSendXRefAniDBTrakt.cs index 5c8beca86..e16f7549c 100644 --- a/Shoko.Server/Commands/WebCache/CommandRequest_WebCacheSendXRefAniDBTrakt.cs +++ b/Shoko.Server/Commands/WebCache/CommandRequest_WebCacheSendXRefAniDBTrakt.cs @@ -58,7 +58,7 @@ public override void ProcessCommand() SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(xref.AnimeID); if (anime == null) return; - string showName = ""; + string showName = string.Empty; if (tvShow != null) showName = tvShow.Title; AzureWebAPI.Send_CrossRefAniDBTrakt(xref, anime.MainTitle); diff --git a/Shoko.Server/Databases/BaseDatabase.cs b/Shoko.Server/Databases/BaseDatabase.cs index 0fd5d6838..c30a2d755 100644 --- a/Shoko.Server/Databases/BaseDatabase.cs +++ b/Shoko.Server/Databases/BaseDatabase.cs @@ -233,7 +233,7 @@ private void CreateInitialGroupFilters() { ConditionType = (int)GroupFilterConditionType.Favourite, ConditionOperator = (int)GroupFilterOperator.Include, - ConditionParameter = "" + ConditionParameter = string.Empty }; gf.Conditions.Add(gfc); gf.CalculateGroupsAndSeries(); @@ -252,7 +252,7 @@ private void CreateInitialGroupFilters() { ConditionType = (int)GroupFilterConditionType.MissingEpisodesCollecting, ConditionOperator = (int)GroupFilterOperator.Include, - ConditionParameter = "" + ConditionParameter = string.Empty }; gf.Conditions.Add(gfc); gf.CalculateGroupsAndSeries(); @@ -310,21 +310,21 @@ private void CreateInitialGroupFilters() { ConditionType = (int)GroupFilterConditionType.CompletedSeries, ConditionOperator = (int)GroupFilterOperator.Include, - ConditionParameter = "" + ConditionParameter = string.Empty }; gf.Conditions.Add(gfc); gfc = new GroupFilterCondition { ConditionType = (int)GroupFilterConditionType.HasUnwatchedEpisodes, ConditionOperator = (int)GroupFilterOperator.Exclude, - ConditionParameter = "" + ConditionParameter = string.Empty }; gf.Conditions.Add(gfc); gfc = new GroupFilterCondition { ConditionType = (int)GroupFilterConditionType.UserVotedAny, ConditionOperator = (int)GroupFilterOperator.Exclude, - ConditionParameter = "" + ConditionParameter = string.Empty }; gf.Conditions.Add(gfc); gf.CalculateGroupsAndSeries(); @@ -362,7 +362,7 @@ private void CreateInitialGroupFilters() { ConditionType = (int)GroupFilterConditionType.AssignedTvDBOrMovieDBInfo, ConditionOperator = (int)GroupFilterOperator.Exclude, - ConditionParameter = "" + ConditionParameter = string.Empty }; gf.Conditions.Add(gfc); gf.CalculateGroupsAndSeries(); @@ -378,11 +378,11 @@ private void CreateInitialUsers() SVR_JMMUser defaultUser = new SVR_JMMUser { CanEditServerSettings = 1, - HideCategories = "", + HideCategories = string.Empty, IsAdmin = 1, IsAniDBUser = 1, IsTraktUser = 1, - Password = "", + Password = string.Empty, Username = Commons.Properties.Resources.Users_Default }; RepoFactory.JMMUser.Save(defaultUser, true); @@ -394,7 +394,7 @@ private void CreateInitialUsers() IsAdmin = 1, IsAniDBUser = 1, IsTraktUser = 1, - Password = "", + Password = string.Empty, Username = Commons.Properties.Resources.Users_FamilyFriendly }; RepoFactory.JMMUser.Save(familyUser, true); @@ -433,14 +433,14 @@ private void CreateInitialRenameScript() "IF Z(10) DO ADD ' %bitbit'" + Environment.NewLine + "DO ADD ') '" + Environment.NewLine + "DO ADD '[%CRC]'" + Environment.NewLine + - "" + Environment.NewLine + + string.Empty + Environment.NewLine + "// Replacement rules (cleanup)" + Environment.NewLine + "DO REPLACE ' ' '_' // replace spaces with underscores" + Environment.NewLine + "DO REPLACE 'H264/AVC' 'H264'" + Environment.NewLine + "DO REPLACE '0x0' ''" + Environment.NewLine + "DO REPLACE '__' '_'" + Environment.NewLine + "DO REPLACE '__' '_'" + Environment.NewLine + - "" + Environment.NewLine + + string.Empty + Environment.NewLine + "// Replace all illegal file name characters" + Environment.NewLine + "DO REPLACE '<' '('" + Environment.NewLine + "DO REPLACE '>' ')'" + Environment.NewLine + @@ -559,14 +559,14 @@ private static void CreateContinueWatchingGroupFilter() GroupFilterCondition gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.HasWatchedEpisodes; gfc.ConditionOperator = (int)GroupFilterOperator.Include; - gfc.ConditionParameter = ""; + gfc.ConditionParameter = string.Empty; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); gfc = new GroupFilterCondition(); gfc.ConditionType = (int)GroupFilterConditionType.HasUnwatchedEpisodes; gfc.ConditionOperator = (int)GroupFilterOperator.Include; - gfc.ConditionParameter = ""; + gfc.ConditionParameter = string.Empty; gfc.GroupFilterID = gf.GroupFilterID; repGFC.Save(gfc); } diff --git a/Shoko.Server/Databases/DatabaseFixes.cs b/Shoko.Server/Databases/DatabaseFixes.cs index 9d49bd847..a24135c97 100644 --- a/Shoko.Server/Databases/DatabaseFixes.cs +++ b/Shoko.Server/Databases/DatabaseFixes.cs @@ -300,7 +300,7 @@ public static void FixDuplicateTraktLinks() foreach (CrossRef_AniDB_Trakt xref in xrefsTraktToBeDeleted) { - string msg = ""; + string msg = string.Empty; SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(xref.AnimeID); if (anime != null) msg = anime.MainTitle; @@ -338,7 +338,7 @@ public static void FixDuplicateTvDBLinks() foreach (CrossRef_AniDB_TvDB xref in xrefsTvDBToBeDeleted) { - string msg = ""; + string msg = string.Empty; SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(xref.AnimeID); if (anime != null) msg = anime.MainTitle; diff --git a/Shoko.Server/Extensions/ImageResolvers.TOBEMOVETOCOMMONS.cs b/Shoko.Server/Extensions/ImageResolvers.TOBEMOVETOCOMMONS.cs index 7d05636aa..35bdb638e 100644 --- a/Shoko.Server/Extensions/ImageResolvers.TOBEMOVETOCOMMONS.cs +++ b/Shoko.Server/Extensions/ImageResolvers.TOBEMOVETOCOMMONS.cs @@ -21,7 +21,7 @@ public static class ImageResolvers { public static string GetFullImagePath(this MovieDB_Fanart fanart) { - if (String.IsNullOrEmpty(fanart.URL)) return ""; + if (String.IsNullOrEmpty(fanart.URL)) return string.Empty; //strip out the base URL int pos = fanart.URL.IndexOf('/', 0); @@ -32,7 +32,7 @@ public static string GetFullImagePath(this MovieDB_Fanart fanart) public static string GetFullImagePath(this MovieDB_Poster movie) { - if (String.IsNullOrEmpty(movie.URL)) return ""; + if (String.IsNullOrEmpty(movie.URL)) return string.Empty; //strip out the base URL int pos = movie.URL.IndexOf('/', 0); @@ -43,7 +43,7 @@ public static string GetFullImagePath(this MovieDB_Poster movie) public static string GetFullImagePath(this TvDB_Episode episode) { - if (String.IsNullOrEmpty(episode.Filename)) return ""; + if (String.IsNullOrEmpty(episode.Filename)) return string.Empty; string fname = episode.Filename; fname = episode.Filename.Replace("/", @"\"); @@ -52,7 +52,7 @@ public static string GetFullImagePath(this TvDB_Episode episode) public static string GetFullImagePath(this TvDB_ImageFanart fanart) { - if (String.IsNullOrEmpty(fanart.BannerPath)) return ""; + if (String.IsNullOrEmpty(fanart.BannerPath)) return string.Empty; string fname = fanart.BannerPath; fname = fanart.BannerPath.Replace("/", @"\"); @@ -68,7 +68,7 @@ public static string GetFullThumbnailPath(this TvDB_ImageFanart fanart) public static string GetFullImagePath(this TvDB_ImagePoster poster) { - if (String.IsNullOrEmpty(poster.BannerPath)) return ""; + if (String.IsNullOrEmpty(poster.BannerPath)) return string.Empty; string fname = poster.BannerPath; fname = poster.BannerPath.Replace("/", @"\"); @@ -77,7 +77,7 @@ public static string GetFullImagePath(this TvDB_ImagePoster poster) public static string GetFullImagePath(this TvDB_ImageWideBanner banner) { - if (String.IsNullOrEmpty(banner.BannerPath)) return ""; + if (String.IsNullOrEmpty(banner.BannerPath)) return string.Empty; string fname = banner.BannerPath; fname = banner.BannerPath.Replace("/", @"\"); @@ -102,14 +102,14 @@ public static void Valid(this TvDB_ImageFanart fanart) public static string GetPosterPath(this AniDB_Character character) { - if (String.IsNullOrEmpty(character.PicName)) return ""; + if (String.IsNullOrEmpty(character.PicName)) return string.Empty; return System.IO.Path.Combine(ImageUtils.GetAniDBCharacterImagePath(character.CharID), character.PicName); } public static string GetPosterPath(this AniDB_Seiyuu seiyuu) { - if (String.IsNullOrEmpty(seiyuu.PicName)) return ""; + if (String.IsNullOrEmpty(seiyuu.PicName)) return string.Empty; return System.IO.Path.Combine(ImageUtils.GetAniDBCreatorImagePath(seiyuu.SeiyuuID), seiyuu.PicName); } diff --git a/Shoko.Server/Extensions/ModelProviders.cs b/Shoko.Server/Extensions/ModelProviders.cs index 8ad8c2947..804a3d133 100644 --- a/Shoko.Server/Extensions/ModelProviders.cs +++ b/Shoko.Server/Extensions/ModelProviders.cs @@ -68,7 +68,7 @@ public static Azure_FileHash_Request ToHashRequest(this AniDB_File anifile) r.Username = ServerSettings.AniDB_Username; if (ServerSettings.WebCache_Anonymous) r.Username = Constants.AnonWebCacheUsername; - r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? "" : ServerSettings.WebCacheAuthKey; + r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? string.Empty : ServerSettings.WebCacheAuthKey; return r; } @@ -86,7 +86,7 @@ public static Azure_FileHash_Request ToHashRequest(this SVR_VideoLocal vl) r.Username = ServerSettings.AniDB_Username; if (ServerSettings.WebCache_Anonymous) r.Username = Constants.AnonWebCacheUsername; - r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? "" : ServerSettings.WebCacheAuthKey; + r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? string.Empty : ServerSettings.WebCacheAuthKey; return r; } @@ -135,7 +135,7 @@ public static Azure_Media_Request ToMediaRequest(this SVR_VideoLocal v) r.Username = ServerSettings.AniDB_Username; if (ServerSettings.WebCache_Anonymous) r.Username = Constants.AnonWebCacheUsername; - r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? "" : ServerSettings.WebCacheAuthKey; + r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? string.Empty : ServerSettings.WebCacheAuthKey; return r; } @@ -155,7 +155,7 @@ public static Azure_Media_Request ToMediaRequest(this Media m, string ed2k) r.Username = ServerSettings.AniDB_Username; if (ServerSettings.WebCache_Anonymous) r.Username = Constants.AnonWebCacheUsername; - r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? "" : ServerSettings.WebCacheAuthKey; + r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? string.Empty : ServerSettings.WebCacheAuthKey; return r; } @@ -178,7 +178,7 @@ public static Azure_CrossRef_AniDB_Trakt_Request ToRequest(this CrossRef_AniDB_T if (ServerSettings.WebCache_Anonymous) r.Username = Constants.AnonWebCacheUsername; - r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? "" : ServerSettings.WebCacheAuthKey; + r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? string.Empty : ServerSettings.WebCacheAuthKey; return r; } @@ -199,7 +199,7 @@ public static Azure_CrossRef_AniDB_TvDB_Request ToRequest(this CrossRef_AniDB_Tv }; if (ServerSettings.WebCache_Anonymous) r.Username = Constants.AnonWebCacheUsername; - r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? "" : ServerSettings.WebCacheAuthKey; + r.AuthGUID = string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey) ? string.Empty : ServerSettings.WebCacheAuthKey; return r; } @@ -328,7 +328,7 @@ private static string TryGetProperty(XmlNode node, string propertyName) //logger.Error( ex,"Error in TvDB_Episode.TryGetProperty: " + ex.ToString()); } - return ""; + return string.Empty; } private static string TryGetEpisodeProperty(XmlDocument doc, string propertyName) @@ -343,7 +343,7 @@ private static string TryGetEpisodeProperty(XmlDocument doc, string propertyName logger.Error(ex, "Error in TvDB_Episode.TryGetProperty: " + ex.ToString()); } - return ""; + return string.Empty; } private static string TryGetSeriesProperty(XmlDocument doc, string propertyName) @@ -358,7 +358,7 @@ private static string TryGetSeriesProperty(XmlDocument doc, string propertyName) logger.Error(ex, "Error in TvDB_Series.TryGetProperty: " + ex.ToString()); } - return ""; + return string.Empty; } [System.Obsolete("Populate XmlNode is deprecated, please use Populate TvDbSharper.Series.Image instead.")] diff --git a/Shoko.Server/FileHelper/FileHashHelper.cs b/Shoko.Server/FileHelper/FileHashHelper.cs index 64a518223..ef050dc44 100644 --- a/Shoko.Server/FileHelper/FileHashHelper.cs +++ b/Shoko.Server/FileHelper/FileHashHelper.cs @@ -31,7 +31,7 @@ public static bool IsVideo(string fileName) List videoExtensions = GetVideoExtensions(); if (videoExtensions.Count == 0) return false; - if (videoExtensions.Contains(Path.GetExtension(fileName).Replace(".", "").Trim().ToUpper())) + if (videoExtensions.Contains(Path.GetExtension(fileName).Replace(".", string.Empty).Trim().ToUpper())) return true; return false; diff --git a/Shoko.Server/FileHelper/Hasher.cs b/Shoko.Server/FileHelper/Hasher.cs index 183497662..df5858b9a 100644 --- a/Shoko.Server/FileHelper/Hasher.cs +++ b/Shoko.Server/FileHelper/Hasher.cs @@ -235,14 +235,14 @@ public static Hashes CalculateHashes_here(string strPath, OnHashProgress onHashP if (getED2k) { //byte[] baHashFinal = md4.ComputeHash(baED2KHash); - //rhash.ed2k = BitConverter.ToString(baHashFinal).Replace("-", "").ToUpper(); + //rhash.ed2k = BitConverter.ToString(baHashFinal).Replace("-", string.Empty).ToUpper(); rhash.ED2K = nBlocks > 1 - ? BitConverter.ToString(md4.ComputeHash(baED2KHash)).Replace("-", "").ToUpper() - : BitConverter.ToString(baED2KHash).Replace("-", "").ToUpper(); + ? BitConverter.ToString(md4.ComputeHash(baED2KHash)).Replace("-", string.Empty).ToUpper() + : BitConverter.ToString(baED2KHash).Replace("-", string.Empty).ToUpper(); } - if (getCRC32) rhash.CRC32 = BitConverter.ToString(crc32.Hash).Replace("-", "").ToUpper(); - if (getMD5) rhash.MD5 = BitConverter.ToString(md5.Hash).Replace("-", "").ToUpper(); - if (getSHA1) rhash.SHA1 = BitConverter.ToString(sha1.Hash).Replace("-", "").ToUpper(); + if (getCRC32) rhash.CRC32 = BitConverter.ToString(crc32.Hash).Replace("-", string.Empty).ToUpper(); + if (getMD5) rhash.MD5 = BitConverter.ToString(md5.Hash).Replace("-", string.Empty).ToUpper(); + if (getSHA1) rhash.SHA1 = BitConverter.ToString(sha1.Hash).Replace("-", string.Empty).ToUpper(); return rhash; } } diff --git a/Shoko.Server/FileHelper/MediaInfo/MediaInfoDLL.cs b/Shoko.Server/FileHelper/MediaInfo/MediaInfoDLL.cs index d2f2dd3eb..d82f717ac 100644 --- a/Shoko.Server/FileHelper/MediaInfo/MediaInfoDLL.cs +++ b/Shoko.Server/FileHelper/MediaInfo/MediaInfoDLL.cs @@ -381,7 +381,7 @@ public String Get(StreamKind StreamKind, int StreamNumber, int Parameter) public String Option(String Option_) { - return Option(Option_, ""); + return Option(Option_, string.Empty); } public int Count_Get(StreamKind StreamKind) @@ -518,7 +518,7 @@ public String Get(int FilePos, StreamKind StreamKind, int StreamNumber, int Para public String Option(String Option_) { - return Option(Option_, ""); + return Option(Option_, string.Empty); } public int Count_Get(int FilePos, StreamKind StreamKind) diff --git a/Shoko.Server/ImageDownload/ImageUtils.cs b/Shoko.Server/ImageDownload/ImageUtils.cs index c77bf38ee..3ad66ace5 100644 --- a/Shoko.Server/ImageDownload/ImageUtils.cs +++ b/Shoko.Server/ImageDownload/ImageUtils.cs @@ -87,7 +87,7 @@ public static string GetImagesTempFolder() public static string GetAniDBCharacterImagePath(int charID) { - string subFolder = ""; + string subFolder = string.Empty; string sid = charID.ToString(); if (sid.Length == 1) subFolder = sid; @@ -104,7 +104,7 @@ public static string GetAniDBCharacterImagePath(int charID) public static string GetAniDBCreatorImagePath(int creatorID) { - string subFolder = ""; + string subFolder = string.Empty; string sid = creatorID.ToString(); if (sid.Length == 1) subFolder = sid; @@ -121,7 +121,7 @@ public static string GetAniDBCreatorImagePath(int creatorID) public static string GetAniDBImagePath(int animeID) { - string subFolder = ""; + string subFolder = string.Empty; string sid = animeID.ToString(); if (sid.Length == 1) subFolder = sid; diff --git a/Shoko.Server/Import/Importer.cs b/Shoko.Server/Import/Importer.cs index e4bebb59d..6f688106b 100644 --- a/Shoko.Server/Import/Importer.cs +++ b/Shoko.Server/Import/Importer.cs @@ -1036,7 +1036,7 @@ public static string DeleteImportFolder(int importFolderID) } - return ""; + return string.Empty; } catch (Exception ex) { @@ -1140,7 +1140,7 @@ public static void CheckForDayFilters() { sched = new ScheduledUpdate { - UpdateDetails = "", + UpdateDetails = string.Empty, UpdateType = (int)ScheduledUpdateType.DayFiltersUpdate }; } @@ -1248,7 +1248,7 @@ public static void SendUserInfoUpdate(bool forceRefresh) sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.AzureUserInfo, - UpdateDetails = "" + UpdateDetails = string.Empty }; } sched.LastUpdate = DateTime.Now; @@ -1306,7 +1306,7 @@ public static void CheckForMALUpdate(bool forceRefresh) sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.MALUpdate, - UpdateDetails = "" + UpdateDetails = string.Empty }; } sched.LastUpdate = DateTime.Now; @@ -1434,7 +1434,7 @@ public static void CheckForTraktTokenUpdate(bool forceRefresh) sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.TraktToken, - UpdateDetails = "" + UpdateDetails = string.Empty }; } sched.LastUpdate = DateTime.Now; @@ -1484,7 +1484,7 @@ public static void CheckForAniDBFileUpdate(bool forceRefresh) sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.AniDBFileUpdates, - UpdateDetails = "" + UpdateDetails = string.Empty }; } sched.LastUpdate = DateTime.Now; @@ -1545,7 +1545,7 @@ public static void UpdateAniDBTitles() sched = new ScheduledUpdate { UpdateType = (int)ScheduledUpdateType.AniDBTitles, - UpdateDetails = "" + UpdateDetails = string.Empty }; } sched.LastUpdate = DateTime.Now; diff --git a/Shoko.Server/LogRotator.cs b/Shoko.Server/LogRotator.cs index 0c7eb748c..251d037e9 100644 --- a/Shoko.Server/LogRotator.cs +++ b/Shoko.Server/LogRotator.cs @@ -80,7 +80,7 @@ private void Compress_Logs() foreach (string file_ext in compress) { - string file = file_ext.Replace("txt", ""); + string file = file_ext.Replace("txt", string.Empty); string path = Path.Combine(GetDirectory(), file); if (File.Exists(path + "txt")) diff --git a/Shoko.Server/Models/SVR_AniDB_Anime.cs b/Shoko.Server/Models/SVR_AniDB_Anime.cs index f587130ae..2b5f61bdd 100644 --- a/Shoko.Server/Models/SVR_AniDB_Anime.cs +++ b/Shoko.Server/Models/SVR_AniDB_Anime.cs @@ -87,7 +87,7 @@ public string PosterPath { get { - if (string.IsNullOrEmpty(Picname)) return ""; + if (string.IsNullOrEmpty(Picname)) return string.Empty; return Path.Combine(ImageUtils.GetAniDBImagePath(AnimeID), Picname); } @@ -537,7 +537,7 @@ public string GetDefaultFanartOnlineURL(ISessionWrapper session) if (this.GetAnimeTypeEnum() == Shoko.Models.Enums.AnimeType.Movie) { List fanarts = GetMovieDBFanarts(session); - if (fanarts.Count == 0) return ""; + if (fanarts.Count == 0) return string.Empty; MovieDB_Fanart movieFanart = fanarts[fanartRandom.Next(0, fanarts.Count)]; return movieFanart.URL; @@ -572,7 +572,7 @@ public string GetDefaultFanartOnlineURL(ISessionWrapper session) break; } - return ""; + return string.Empty; } public AniDB_Anime_DefaultImage GetDefaultWideBanner() @@ -641,7 +641,7 @@ public string TagsString get { List tags = GetTags(); - string temp = ""; + string temp = string.Empty; foreach (AniDB_Tag tag in tags) temp += tag.TagName + "|"; if (temp.Length > 2) @@ -858,49 +858,49 @@ public SVR_AniDB_Anime() DisableExternalLinksFlag = 0; } - private static bool Populate(SVR_AniDB_Anime adnidbanime, Raw_AniDB_Anime animeInfo) + private bool Populate(Raw_AniDB_Anime animeInfo) { // We need various values to be populated to be considered valid - if (animeInfo.AnimeID <= 0 || string.IsNullOrEmpty(animeInfo.MainTitle)) return false; - adnidbanime.AirDate = animeInfo.AirDate; - adnidbanime.AllCinemaID = animeInfo.AllCinemaID; - adnidbanime.AnimeID = animeInfo.AnimeID; + if (string.IsNullOrEmpty(animeInfo?.MainTitle) || animeInfo.AnimeID <= 0) return false; + AirDate = animeInfo.AirDate; + AllCinemaID = animeInfo.AllCinemaID; + AnimeID = animeInfo.AnimeID; //this.AnimeNfo = animeInfo.AnimeNfoID; - adnidbanime.AnimePlanetID = animeInfo.AnimePlanetID; - adnidbanime.SetAnimeTypeRAW(animeInfo.AnimeTypeRAW); - adnidbanime.ANNID = animeInfo.ANNID; - adnidbanime.AvgReviewRating = animeInfo.AvgReviewRating; - adnidbanime.AwardList = animeInfo.AwardList; - adnidbanime.BeginYear = animeInfo.BeginYear; - adnidbanime.DateTimeDescUpdated = DateTime.Now; - adnidbanime.DateTimeUpdated = DateTime.Now; - adnidbanime.Description = animeInfo.Description ?? string.Empty; - adnidbanime.EndDate = animeInfo.EndDate; - adnidbanime.EndYear = animeInfo.EndYear; - adnidbanime.MainTitle = animeInfo.MainTitle; - adnidbanime.AllTitles = ""; - adnidbanime.AllTags = ""; + AnimePlanetID = animeInfo.AnimePlanetID; + this.SetAnimeTypeRAW(animeInfo.AnimeTypeRAW); + ANNID = animeInfo.ANNID; + AvgReviewRating = animeInfo.AvgReviewRating; + AwardList = animeInfo.AwardList; + BeginYear = animeInfo.BeginYear; + DateTimeDescUpdated = DateTime.Now; + DateTimeUpdated = DateTime.Now; + Description = animeInfo.Description ?? string.Empty; + EndDate = animeInfo.EndDate; + EndYear = animeInfo.EndYear; + MainTitle = animeInfo.MainTitle; + AllTitles = string.Empty; + AllTags = string.Empty; //this.EnglishName = animeInfo.EnglishName; - adnidbanime.EpisodeCount = animeInfo.EpisodeCount; - adnidbanime.EpisodeCountNormal = animeInfo.EpisodeCountNormal; - adnidbanime.EpisodeCountSpecial = animeInfo.EpisodeCountSpecial; + EpisodeCount = animeInfo.EpisodeCount; + EpisodeCountNormal = animeInfo.EpisodeCountNormal; + EpisodeCountSpecial = animeInfo.EpisodeCountSpecial; //this.genre - adnidbanime.ImageEnabled = 1; + ImageEnabled = 1; //this.KanjiName = animeInfo.KanjiName; - adnidbanime.LatestEpisodeNumber = animeInfo.LatestEpisodeNumber; + LatestEpisodeNumber = animeInfo.LatestEpisodeNumber; //this.OtherName = animeInfo.OtherName; - adnidbanime.Picname = animeInfo.Picname; - adnidbanime.Rating = animeInfo.Rating; + Picname = animeInfo.Picname; + Rating = animeInfo.Rating; //this.relations - adnidbanime.Restricted = animeInfo.Restricted; - adnidbanime.ReviewCount = animeInfo.ReviewCount; + Restricted = animeInfo.Restricted; + ReviewCount = animeInfo.ReviewCount; //this.RomajiName = animeInfo.RomajiName; //this.ShortNames = animeInfo.ShortNames.Replace("'", "|"); //this.Synonyms = animeInfo.Synonyms.Replace("'", "|"); - adnidbanime.TempRating = animeInfo.TempRating; - adnidbanime.TempVoteCount = animeInfo.TempVoteCount; - adnidbanime.URL = animeInfo.URL; - adnidbanime.VoteCount = animeInfo.VoteCount; + TempRating = animeInfo.TempRating; + TempVoteCount = animeInfo.TempVoteCount; + URL = animeInfo.URL; + VoteCount = animeInfo.VoteCount; return true; } @@ -917,7 +917,7 @@ public void PopulateAndSaveFromHTTP(ISession session, Raw_AniDB_Anime animeInfo, Stopwatch taskTimer = new Stopwatch(); Stopwatch totalTimer = Stopwatch.StartNew(); - if (!Populate(this, animeInfo)) + if (!Populate(animeInfo)) { logger.Error("AniDB_Anime was unable to populate as it received invalid info. " + "This is not an error on our end. It is AniDB's issue, " + @@ -1048,7 +1048,7 @@ private void CreateTitles(List titles) { if (titles == null) return; - AllTitles = ""; + AllTitles = string.Empty; List titlesToDelete = RepoFactory.AniDB_Anime_Title.GetByAnimeID(AnimeID); List titlesToSave = new List(); @@ -1069,7 +1069,7 @@ private void CreateTags(List tags) { if (tags == null) return; - AllTags = ""; + AllTags = string.Empty; List tagsToSave = new List(); @@ -1738,7 +1738,7 @@ AniDB_Anime_Character animeChar in Azure_AnimeComment comment = new Azure_AnimeComment { UserID = rec.UserID, - UserName = "", + UserName = string.Empty, // Comment details CommentText = rec.RecommendationText, diff --git a/Shoko.Server/Models/SVR_AniDB_File.cs b/Shoko.Server/Models/SVR_AniDB_File.cs index ccf415a11..2e63f3143 100644 --- a/Shoko.Server/Models/SVR_AniDB_File.cs +++ b/Shoko.Server/Models/SVR_AniDB_File.cs @@ -113,7 +113,7 @@ public string SubtitlesRAW { if (!string.IsNullOrEmpty(subtitlesRAW)) return subtitlesRAW; - string ret = ""; + string ret = string.Empty; foreach (Language lang in this.Subtitles) { if (ret.Length > 0) @@ -132,7 +132,7 @@ public string LanguagesRAW { if (!string.IsNullOrEmpty(languagesRAW)) return languagesRAW; - string ret = ""; + string ret = string.Empty; foreach (Language lang in this.Languages) { if (ret.Length > 0) @@ -151,7 +151,7 @@ public string EpisodesRAW { if (!string.IsNullOrEmpty(episodesRAW)) return episodesRAW; - string ret = ""; + string ret = string.Empty; foreach (CrossRef_File_Episode cross in EpisodeCrossRefs) { if (ret.Length > 0) @@ -170,7 +170,7 @@ public string EpisodesPercentRAW { if (!string.IsNullOrEmpty(episodesPercentRAW)) return episodesPercentRAW; - string ret = ""; + string ret = string.Empty; foreach (CrossRef_File_Episode cross in EpisodeCrossRefs) { if (ret.Length > 0) @@ -190,7 +190,7 @@ public string SubtitlesRAWForWebCache if (!string.IsNullOrEmpty(subtitlesRAW)) return subtitlesRAW; - string ret = ""; + string ret = string.Empty; foreach (Language lang in this.Subtitles) { if (ret.Length > 0) @@ -211,7 +211,7 @@ public string LanguagesRAWForWebCache if (!string.IsNullOrEmpty(languagesRAW)) return languagesRAW; - string ret = ""; + string ret = string.Empty; foreach (Language lang in this.Languages) { if (ret.Length > 0) @@ -232,7 +232,7 @@ public string EpisodesRAWForWebCache if (!string.IsNullOrEmpty(episodesRAW)) return episodesRAW; - string ret = ""; + string ret = string.Empty; foreach (CrossRef_File_Episode cross in EpisodeCrossRefs) { if (ret.Length > 0) @@ -253,7 +253,7 @@ public string EpisodesPercentRAWForWebCache if (!string.IsNullOrEmpty(episodesPercentRAW)) return episodesPercentRAW; - string ret = ""; + string ret = string.Empty; foreach (CrossRef_File_Episode cross in EpisodeCrossRefs) { if (ret.Length > 0) diff --git a/Shoko.Server/Models/SVR_AnimeGroup.cs b/Shoko.Server/Models/SVR_AnimeGroup.cs index 2424b666c..756917d24 100644 --- a/Shoko.Server/Models/SVR_AnimeGroup.cs +++ b/Shoko.Server/Models/SVR_AnimeGroup.cs @@ -74,7 +74,7 @@ public string GetPosterPathNoBlanks() public string GetPosterPathNoBlanks(ISessionWrapper session) { List allPosters = GetPosterFilenames(session); - string posterName = ""; + string posterName = string.Empty; if (allPosters.Count > 0) //posterName = allPosters[fanartRandom.Next(0, allPosters.Count)]; posterName = allPosters[0]; @@ -82,7 +82,7 @@ public string GetPosterPathNoBlanks(ISessionWrapper session) if (!String.IsNullOrEmpty(posterName)) return posterName; - return ""; + return string.Empty; } private List GetPosterFilenames() @@ -585,7 +585,7 @@ public string TagsString { get { - string temp = ""; + string temp = string.Empty; foreach (AniDB_Tag tag in Tags) temp += tag.TagName + "|"; if (temp.Length > 2) @@ -635,7 +635,7 @@ public string CustomTagsString { get { - string temp = ""; + string temp = string.Empty; foreach (CustomTag tag in CustomTags) { if (!string.IsNullOrEmpty(temp)) @@ -703,7 +703,7 @@ public string TitlesString { get { - string temp = ""; + string temp = string.Empty; foreach (AniDB_Anime_Title title in Titles) temp += title.Title + ", "; if (temp.Length > 2) @@ -722,7 +722,7 @@ public HashSet VideoQualities public override string ToString() { return String.Format("Group: {0} ({1})", GroupName, AnimeGroupID); - //return ""; + //return string.Empty; } public void UpdateStatsFromTopLevel(bool watchedStats, bool missingEpsStats) diff --git a/Shoko.Server/Models/SVR_AnimeSeries.cs b/Shoko.Server/Models/SVR_AnimeSeries.cs index 9fb23995a..a6698bbec 100644 --- a/Shoko.Server/Models/SVR_AnimeSeries.cs +++ b/Shoko.Server/Models/SVR_AnimeSeries.cs @@ -69,7 +69,7 @@ public void CollectContractMemory() public string GetSeriesName() { - string seriesName = ""; + string seriesName = string.Empty; if (!string.IsNullOrEmpty(SeriesNameOverride)) seriesName = SeriesNameOverride; else @@ -158,7 +158,7 @@ public string GenresRaw get { if (GetAnime() == null) - return ""; + return string.Empty; return GetAnime().TagsString; } } @@ -447,7 +447,7 @@ public void Populate(SVR_AniDB_Anime anime) this.LatestLocalEpisodeNumber = 0; this.DateTimeUpdated = DateTime.Now; this.DateTimeCreated = DateTime.Now; - this.SeriesNameOverride = ""; + this.SeriesNameOverride = string.Empty; } public void CreateAnimeEpisodes() @@ -930,7 +930,7 @@ public static HashSet GetConditionTypesChanged(CL_Anim public override string ToString() { return string.Format("Series: {0} ({1})", GetAnime().MainTitle, AnimeSeriesID); - //return ""; + //return string.Empty; } internal class EpisodeList : List diff --git a/Shoko.Server/Models/SVR_VideoLocal.cs b/Shoko.Server/Models/SVR_VideoLocal.cs index a0ea21e77..8d44d05e1 100644 --- a/Shoko.Server/Models/SVR_VideoLocal.cs +++ b/Shoko.Server/Models/SVR_VideoLocal.cs @@ -641,22 +641,22 @@ public CL_VideoDetailed ToClientDetailed(int userID) } else { - cl.AniDB_Anime_GroupName = ""; - cl.AniDB_Anime_GroupNameShort = ""; - cl.AniDB_CRC = ""; - cl.AniDB_File_AudioCodec = ""; - cl.AniDB_File_Description = ""; - cl.AniDB_File_FileExtension = ""; - cl.AniDB_File_Source = ""; - cl.AniDB_File_VideoCodec = ""; - cl.AniDB_File_VideoResolution = ""; - cl.AniDB_MD5 = ""; - cl.AniDB_SHA1 = ""; + cl.AniDB_Anime_GroupName = string.Empty; + cl.AniDB_Anime_GroupNameShort = string.Empty; + cl.AniDB_CRC = string.Empty; + cl.AniDB_File_AudioCodec = string.Empty; + cl.AniDB_File_Description = string.Empty; + cl.AniDB_File_FileExtension = string.Empty; + cl.AniDB_File_Source = string.Empty; + cl.AniDB_File_VideoCodec = string.Empty; + cl.AniDB_File_VideoResolution = string.Empty; + cl.AniDB_MD5 = string.Empty; + cl.AniDB_SHA1 = string.Empty; cl.AniDB_File_FileVersion = 1; // languages - cl.LanguagesAudio = ""; - cl.LanguagesSubtitle = ""; + cl.LanguagesAudio = string.Empty; + cl.LanguagesSubtitle = string.Empty; } diff --git a/Shoko.Server/Models/SVR_VideoLocal_Place.cs b/Shoko.Server/Models/SVR_VideoLocal_Place.cs index 48a7a0c28..2535a5dcb 100644 --- a/Shoko.Server/Models/SVR_VideoLocal_Place.cs +++ b/Shoko.Server/Models/SVR_VideoLocal_Place.cs @@ -486,7 +486,7 @@ public string RemoveAndDeleteFileWithMessage() } RemoveRecord(); // For deletion of files from Trakt, we will rely on the Daily sync - return ""; + return string.Empty; } catch (Exception ex) { diff --git a/Shoko.Server/PlexAndKodi/Breadcrumbs.cs b/Shoko.Server/PlexAndKodi/Breadcrumbs.cs index 150811134..834d0eb9e 100644 --- a/Shoko.Server/PlexAndKodi/Breadcrumbs.cs +++ b/Shoko.Server/PlexAndKodi/Breadcrumbs.cs @@ -31,13 +31,13 @@ public BreadCrumbs Update(Video v, bool noart = false) { BreadCrumbs cache = this.DeepClone(); cache.GrandParentKey = cache.ParentKey; - cache.GrandParentTitle = cache.ParentTitle ?? ""; + cache.GrandParentTitle = cache.ParentTitle ?? string.Empty; cache.ParentKey = cache.Key; - cache.ParentTitle = cache.Title ?? ""; + cache.ParentTitle = cache.Title ?? string.Empty; cache.ParentIndex = cache.Index; cache.Key = v.Key; - cache.Title = v.Title ?? ""; + cache.Title = v.Title ?? string.Empty; cache.Index = v.Index; if (!noart) { @@ -70,8 +70,8 @@ public void FillInfo(IProvider prov, Video m, bool noimage, bool addkey = true) m.ParentKey = prov.Proxyfy(ParentKey); if (GrandParentKey != null) m.GrandparentKey = prov.Proxyfy(GrandParentKey); - m.ParentTitle = ParentTitle ?? ""; - m.GrandparentTitle = GrandParentTitle ?? ""; + m.ParentTitle = ParentTitle ?? string.Empty; + m.GrandparentTitle = GrandParentTitle ?? string.Empty; if (!noimage) { m.ParentArt = ParentArt; diff --git a/Shoko.Server/PlexAndKodi/CommonImplementation.cs b/Shoko.Server/PlexAndKodi/CommonImplementation.cs index c19ea9f6e..b8e9fd101 100644 --- a/Shoko.Server/PlexAndKodi/CommonImplementation.cs +++ b/Shoko.Server/PlexAndKodi/CommonImplementation.cs @@ -329,7 +329,7 @@ private MediaContainer GetFromFile(IProvider prov, int userid, string Id, BreadC SVR_VideoLocal vi = RepoFactory.VideoLocal.GetByID(id); BaseObject ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.File, - Path.GetFileNameWithoutExtension(vi.FileName ?? ""), + Path.GetFileNameWithoutExtension(vi.FileName ?? string.Empty), true, false, info)); Video v2 = Helper.VideoFromVideoLocal(prov, vi, userid); List