using System.IO; using System.IO.Compression; using System.Linq; using System.Xml.Linq; namespace MediaBrowser.Providers.Books.OpenPackagingFormat { /// /// Utilities for EPUB files. /// public static class EpubUtils { /// /// Attempt to read content from ZIP archive. /// /// The ZIP archive. /// The content file path. public static string? ReadContentFilePath(ZipArchive epub) { var container = epub.GetEntry(Path.Combine("META-INF", "container.xml")); if (container == null) { return null; } using var containerStream = container.Open(); XNamespace containerNamespace = "urn:oasis:names:tc:opendocument:xmlns:container"; var containerDocument = XDocument.Load(containerStream); var element = containerDocument.Descendants(containerNamespace + "rootfile").FirstOrDefault(); return element?.Attribute("full-path")?.Value; } } }