aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBond-009 <bond.009@outlook.com>2026-06-15 18:18:49 +0200
committerGitHub <noreply@github.com>2026-06-15 18:18:49 +0200
commit2d8ab1e2ec09f8e24b25bb0d6d42edfd3a398d6d (patch)
tree7e22d3e1a95bedbf2cdb0e6669021b832a38e1e1
parentf5c3e2c65a90e4a73c0a9079a8008ce4cacd55f7 (diff)
parentd8f8dbabcb3cca2b4a7d84c10dc468f58fe76fe5 (diff)
Merge pull request #17089 from Bond-009/sharpcompress
Replace usage of SharpCompress
-rw-r--r--MediaBrowser.Providers/Books/ComicBookInfo/ComicBookInfoProvider.cs20
-rw-r--r--MediaBrowser.Providers/Books/ComicInfo/ComicInfoReader.cs39
-rw-r--r--MediaBrowser.Providers/Books/ComicInfo/ExternalComicInfoProvider.cs2
3 files changed, 37 insertions, 24 deletions
diff --git a/MediaBrowser.Providers/Books/ComicBookInfo/ComicBookInfoProvider.cs b/MediaBrowser.Providers/Books/ComicBookInfo/ComicBookInfoProvider.cs
index a372b90212..4fcbb3ce40 100644
--- a/MediaBrowser.Providers/Books/ComicBookInfo/ComicBookInfoProvider.cs
+++ b/MediaBrowser.Providers/Books/ComicBookInfo/ComicBookInfoProvider.cs
@@ -1,6 +1,7 @@
using System;
using System.Globalization;
using System.IO;
+using System.IO.Compression;
using System.Linq;
using System.Text.Json;
using System.Threading;
@@ -12,7 +13,6 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.IO;
using MediaBrowser.Providers.Books.ComicBookInfo.Models;
using Microsoft.Extensions.Logging;
-using SharpCompress.Archives.Zip;
namespace MediaBrowser.Providers.Books.ComicBookInfo;
@@ -48,28 +48,18 @@ public class ComicBookInfoProvider : IComicProvider
try
{
- Stream stream = File.OpenRead(path);
+ Stream stream = AsyncFile.OpenRead(path);
- // not yet async: https://github.com/adamhathcock/sharpcompress/pull/565
await using (stream.ConfigureAwait(false))
- using (var archive = ZipArchive.Open(stream))
+ await using (var archive = await ZipArchive.CreateAsync(stream, ZipArchiveMode.Read, false, null, cancellationToken).ConfigureAwait(false))
{
- if (!archive.IsComplete)
- {
- _logger.LogError("incomplete comic archive: {Path}", info.Path);
- return new MetadataResult<Book> { HasMetadata = false };
- }
-
- var volume = archive.Volumes.First();
-
- if (volume.Comment is null)
+ if (archive.Comment is null)
{
_logger.LogInformation("missing ComicBookInfo in archive comment: {Path}", info.Path);
return new MetadataResult<Book> { HasMetadata = false };
}
- var comicBookMetadata = JsonSerializer.Deserialize<ComicBookInfoFormat>(volume.Comment, JsonDefaults.Options);
-
+ var comicBookMetadata = JsonSerializer.Deserialize<ComicBookInfoFormat>(archive.Comment, JsonDefaults.Options);
if (comicBookMetadata is null)
{
_logger.LogError("ComicBookInfo deserialization failure: {Path}", info.Path);
diff --git a/MediaBrowser.Providers/Books/ComicInfo/ComicInfoReader.cs b/MediaBrowser.Providers/Books/ComicInfo/ComicInfoReader.cs
index b8329e7805..4e8dc405ec 100644
--- a/MediaBrowser.Providers/Books/ComicInfo/ComicInfoReader.cs
+++ b/MediaBrowser.Providers/Books/ComicInfo/ComicInfoReader.cs
@@ -7,7 +7,6 @@ using System.Xml.XPath;
using Jellyfin.Data.Enums;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
-using SharpCompress;
namespace MediaBrowser.Providers.Books.ComicInfo;
@@ -41,7 +40,13 @@ public static class ComicInfoReader
hasFoundMetadata |= ReadStringInto(xml, "ComicInfo/Summary", summary => book.Overview = summary);
hasFoundMetadata |= ReadIntInto(xml, "ComicInfo/Year", year => book.ProductionYear = year);
hasFoundMetadata |= ReadThreePartDateInto(xml, "ComicInfo/Year", "ComicInfo/Month", "ComicInfo/Day", dateTime => book.PremiereDate = dateTime);
- hasFoundMetadata |= ReadCommaSeparatedStringsInto(xml, "ComicInfo/Genre", genres => genres.ForEach(genre => book.AddGenre(genre)));
+ hasFoundMetadata |= ReadCommaSeparatedStringsInto(xml, "ComicInfo/Genre", genres =>
+ {
+ foreach (var genre in genres)
+ {
+ book.AddGenre(genre);
+ }
+ });
hasFoundMetadata |= ReadStringInto(xml, "ComicInfo/Publisher", publisher => book.SetStudios([publisher]));
hasFoundMetadata |= ReadStringInto(xml, "ComicInfo/AlternateSeries", title =>
@@ -71,32 +76,50 @@ public static class ComicInfoReader
{
ReadCommaSeparatedStringsInto(xml, "ComicInfo/Writer", authors =>
{
- authors.ForEach(p => metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Author }));
+ foreach (var p in authors)
+ {
+ metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Author });
+ }
});
ReadCommaSeparatedStringsInto(xml, "ComicInfo/Penciller", pencillers =>
{
- pencillers.ForEach(p => metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Penciller }));
+ foreach (var p in pencillers)
+ {
+ metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Penciller });
+ }
});
ReadCommaSeparatedStringsInto(xml, "ComicInfo/Inker", inkers =>
{
- inkers.ForEach(p => metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Inker }));
+ foreach (var p in inkers)
+ {
+ metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Inker });
+ }
});
ReadCommaSeparatedStringsInto(xml, "ComicInfo/Letterer", letterers =>
{
- letterers.ForEach(p => metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Letterer }));
+ foreach (var p in letterers)
+ {
+ metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Letterer });
+ }
});
ReadCommaSeparatedStringsInto(xml, "ComicInfo/CoverArtist", artists =>
{
- artists.ForEach(p => metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.CoverArtist }));
+ foreach (var p in artists)
+ {
+ metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.CoverArtist });
+ }
});
ReadCommaSeparatedStringsInto(xml, "ComicInfo/Colourist", colorists =>
{
- colorists.ForEach(p => metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Colorist }));
+ foreach (var p in colorists)
+ {
+ metadataResult.AddPerson(new PersonInfo { Name = p, Type = PersonKind.Colorist });
+ }
});
}
diff --git a/MediaBrowser.Providers/Books/ComicInfo/ExternalComicInfoProvider.cs b/MediaBrowser.Providers/Books/ComicInfo/ExternalComicInfoProvider.cs
index 8dd76d8b15..02cc02b7f3 100644
--- a/MediaBrowser.Providers/Books/ComicInfo/ExternalComicInfoProvider.cs
+++ b/MediaBrowser.Providers/Books/ComicInfo/ExternalComicInfoProvider.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;