using HtmlAgilityPack; using MangaReader.Core.Http; using MangaReader.Core.Pages; namespace MangaReader.Core.Sources.NatoManga.Pages; public class NatoMangaPageProvider(IHtmlLoader htmlLoader) : IMangaPageProvider { public string SourceId => "NatoManga"; public async Task> GetPageImageUrlsAsync(string chapterUrl, CancellationToken cancellationToken) { List imageUrlCollection = []; HtmlDocument document = await htmlLoader.GetHtmlDocumentAsync(chapterUrl, cancellationToken); HtmlNodeCollection? htmlNodeCollection = GetImageNodeCollection(document); if (htmlNodeCollection == null) return imageUrlCollection; foreach (var htmlNode in htmlNodeCollection) { string imageSourceUrl = htmlNode.GetAttributeValue("src", string.Empty); if (string.IsNullOrWhiteSpace(imageSourceUrl)) continue; imageUrlCollection.Add(imageSourceUrl); } return imageUrlCollection; } private static HtmlNodeCollection? GetImageNodeCollection(HtmlDocument document) { HtmlNode? chapterReaderNode = document.DocumentNode.SelectSingleNode(".//div[@class='container-chapter-reader']"); if (chapterReaderNode == null) return null; return chapterReaderNode.SelectNodes(".//img"); } }