Implemented ability to generate Series summary from ComicInfo.xml (if present)

This commit is contained in:
Joseph Milazzo 2021-02-17 16:41:42 -06:00
parent 5be01b529b
commit 265f7dcc8c
4 changed files with 62 additions and 3 deletions

View file

@ -3,6 +3,9 @@ using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
using API.Extensions;
using API.Interfaces;
using API.Interfaces.Services;
@ -146,7 +149,34 @@ namespace API.Services
public string GetSummaryInfo(string archivePath)
{
throw new NotImplementedException();
var summary = "";
if (!IsValidArchive(archivePath)) return summary;
using var archive = ZipFile.OpenRead(archivePath);
if (!archive.HasFiles()) return summary;
var info = archive.Entries.SingleOrDefault(x => Path.GetFileNameWithoutExtension(x.Name).ToLower() == "comicinfo" && Parser.Parser.IsXml(x.FullName));
if (info == null) return summary;
// Parse XML file
try
{
using var stream = info.Open();
var serializer = new XmlSerializer(typeof(ComicInfo));
ComicInfo comicInfo =
(ComicInfo)serializer.Deserialize(stream);
if (comicInfo != null)
{
return comicInfo.Summary;
}
}
catch (AggregateException ex)
{
_logger.LogError(ex, "There was an issue parsing ComicInfo.xml from {ArchivePath}", archivePath);
}
return summary;
}
/// <summary>