diff --git a/MediaBrowser.Providers/Books/ComicBookInfo/ComicBookInfoProvider.cs b/MediaBrowser.Providers/Books/ComicBookInfo/ComicBookInfoProvider.cs index 4ef618b0eb..990d452fb1 100644 --- a/MediaBrowser.Providers/Books/ComicBookInfo/ComicBookInfoProvider.cs +++ b/MediaBrowser.Providers/Books/ComicBookInfo/ComicBookInfoProvider.cs @@ -236,7 +236,7 @@ public class ComicBookInfoProvider : IComicProvider try { // use first day of the month because this format doesn't include a day - return new DateTime(year, month, 1); + return new DateTime(year, month, 1, 0, 0, 0, DateTimeKind.Unspecified); } catch (ArgumentOutOfRangeException) { diff --git a/MediaBrowser.Providers/Books/ComicInfo/ComicInfoReader.cs b/MediaBrowser.Providers/Books/ComicInfo/ComicInfoReader.cs index 429a2cf6d5..b8329e7805 100644 --- a/MediaBrowser.Providers/Books/ComicInfo/ComicInfoReader.cs +++ b/MediaBrowser.Providers/Books/ComicInfo/ComicInfoReader.cs @@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Books.ComicInfo; /// /// ComicInfo reader. /// -public class ComicInfoReader +public static class ComicInfoReader { /// /// Filename to check for comic metadata either next to the comic file or inside the archive. @@ -26,7 +26,7 @@ public class ComicInfoReader /// /// The XDocument to read for comic metadata. /// The resulting book. - public Book? ReadComicBookMetadata(XDocument xml) + public static Book? ReadComicBookMetadata(XDocument xml) { var book = new Book(); var hasFoundMetadata = false; @@ -67,7 +67,7 @@ public class ComicInfoReader /// /// The XDocument to read for people metadata. /// The metadata result to update. - public void ReadPeopleMetadata(XDocument xml, MetadataResult metadataResult) + public static void ReadPeopleMetadata(XDocument xml, MetadataResult metadataResult) { ReadCommaSeparatedStringsInto(xml, "ComicInfo/Writer", authors => { @@ -106,7 +106,7 @@ public class ComicInfoReader /// the XDocument to read for metadata. /// The path to search. /// The action to take after parsing all metadata. - public void ReadCultureInfoInto(XDocument xml, string xPath, Action commitResult) + public static void ReadCultureInfoInto(XDocument xml, string xPath, Action commitResult) { string? culture = null; @@ -115,14 +115,8 @@ public class ComicInfoReader return; } - try - { - // culture cannot be null here as the method would have returned earlier - commitResult(new CultureInfo(culture!)); - } - catch (CultureNotFoundException) - { - } + // culture cannot be null here as the method would have returned earlier + commitResult(new CultureInfo(culture!)); } private static bool ReadStringInto(XDocument xml, string xPath, Action commitResult) @@ -194,7 +188,7 @@ public class ComicInfoReader try { - var dateTime = new DateTime(year, month, day); + var dateTime = new DateTime(year, month, day, 0, 0, 0, DateTimeKind.Unspecified); commitResult(dateTime); return true; diff --git a/MediaBrowser.Providers/Books/ComicInfo/ExternalComicInfoProvider.cs b/MediaBrowser.Providers/Books/ComicInfo/ExternalComicInfoProvider.cs index 62fca925c8..8dd76d8b15 100644 --- a/MediaBrowser.Providers/Books/ComicInfo/ExternalComicInfoProvider.cs +++ b/MediaBrowser.Providers/Books/ComicInfo/ExternalComicInfoProvider.cs @@ -19,7 +19,6 @@ public class ExternalComicInfoProvider : IComicProvider { private readonly IFileSystem _fileSystem; private readonly ILogger _logger; - private readonly ComicInfoReader _utilities = new(); /// /// Initializes a new instance of the class. @@ -43,7 +42,7 @@ public class ExternalComicInfoProvider : IComicProvider return new MetadataResult { HasMetadata = false }; } - var book = _utilities.ReadComicBookMetadata(comicInfoXml); + var book = ComicInfoReader.ReadComicBookMetadata(comicInfoXml); if (book is null) { @@ -52,8 +51,8 @@ public class ExternalComicInfoProvider : IComicProvider var metadataResult = new MetadataResult { Item = book, HasMetadata = true }; - _utilities.ReadPeopleMetadata(comicInfoXml, metadataResult); - _utilities.ReadCultureInfoInto(comicInfoXml, "ComicInfo/LanguageISO", cultureInfo => metadataResult.ResultLanguage = cultureInfo.ThreeLetterISOLanguageName); + ComicInfoReader.ReadPeopleMetadata(comicInfoXml, metadataResult); + ComicInfoReader.ReadCultureInfoInto(comicInfoXml, "ComicInfo/LanguageISO", cultureInfo => metadataResult.ResultLanguage = cultureInfo.ThreeLetterISOLanguageName); return metadataResult; } @@ -84,7 +83,7 @@ public class ExternalComicInfoProvider : IComicProvider } catch (Exception e) { - _logger.LogInformation(e, "Could not load external xml from {Path}. This could mean there is no separate ComicInfo metadata file for this comic or the metadata is bundled within the comic.", path); + _logger.LogInformation(e, "Could not load external XML from {Path}. This could mean there is no separate ComicInfo metadata file for this comic or the metadata is bundled within the comic.", path); return null; } } diff --git a/MediaBrowser.Providers/Books/ComicInfo/InternalComicInfoProvider.cs b/MediaBrowser.Providers/Books/ComicInfo/InternalComicInfoProvider.cs index eff248b8d4..98a6aba7d6 100644 --- a/MediaBrowser.Providers/Books/ComicInfo/InternalComicInfoProvider.cs +++ b/MediaBrowser.Providers/Books/ComicInfo/InternalComicInfoProvider.cs @@ -17,7 +17,6 @@ public class InternalComicInfoProvider : IComicProvider { private readonly IFileSystem _fileSystem; private readonly ILogger _logger; - private readonly ComicInfoReader _utilities = new(); /// /// Initializes a new instance of the class. @@ -41,7 +40,7 @@ public class InternalComicInfoProvider : IComicProvider return new MetadataResult { HasMetadata = false }; } - var book = _utilities.ReadComicBookMetadata(comicInfoXml); + var book = ComicInfoReader.ReadComicBookMetadata(comicInfoXml); if (book is null) { @@ -50,8 +49,8 @@ public class InternalComicInfoProvider : IComicProvider var metadataResult = new MetadataResult { Item = book, HasMetadata = true }; - _utilities.ReadPeopleMetadata(comicInfoXml, metadataResult); - _utilities.ReadCultureInfoInto(comicInfoXml, "ComicInfo/LanguageISO", cultureInfo => metadataResult.ResultLanguage = cultureInfo.ThreeLetterISOLanguageName); + ComicInfoReader.ReadPeopleMetadata(comicInfoXml, metadataResult); + ComicInfoReader.ReadCultureInfoInto(comicInfoXml, "ComicInfo/LanguageISO", cultureInfo => metadataResult.ResultLanguage = cultureInfo.ThreeLetterISOLanguageName); return metadataResult; }