Added manga data and pipeline.

This commit is contained in:
2025-05-23 02:40:06 -04:00
parent ec1713c95f
commit f760cff21f
27 changed files with 490 additions and 326 deletions

View File

@@ -2,5 +2,5 @@
public interface IMangaWebCrawler
{
MangaDTO GetManga(string url);
SourceManga GetManga(string url);
}

View File

@@ -6,12 +6,12 @@ namespace MangaReader.Core.WebCrawlers.MangaNato;
public class MangaNatoWebCrawler : MangaWebCrawler
{
public override MangaDTO GetManga(string url)
public override SourceManga GetManga(string url)
{
HtmlDocument document = GetHtmlDocument(url);
MangaNatoMangaDocument node = new(document);
MangaDTO manga = new()
SourceManga manga = new()
{
Title = node.TitleNode.InnerText,
AlternateTitles = GetAlternateTitles(node.AlternateTitlesNode),
@@ -101,9 +101,9 @@ public class MangaNatoWebCrawler : MangaWebCrawler
return (int)Math.Round(average / best * 100);
}
private static List<MangaChapterDTO> GetChapters(HtmlNodeCollection chapterNodes)
private static List<SourceMangaChapter> GetChapters(HtmlNodeCollection chapterNodes)
{
List<MangaChapterDTO> chapters = [];
List<SourceMangaChapter> chapters = [];
foreach (var node in chapterNodes)
{
@@ -111,7 +111,7 @@ public class MangaNatoWebCrawler : MangaWebCrawler
HtmlNode chapterViewNode = node.SelectSingleNode(".//span[contains(@class, 'chapter-view')]");
HtmlNode chapterTimeNode = node.SelectSingleNode(".//span[contains(@class, 'chapter-time')]");
MangaChapterDTO chapter = new()
SourceMangaChapter chapter = new()
{
Number = GetChapterNumber(chapterNameNode),
Name = chapterNameNode.InnerText,

View File

@@ -4,7 +4,7 @@ namespace MangaReader.Core.WebCrawlers;
public abstract class MangaWebCrawler : IMangaWebCrawler
{
public abstract MangaDTO GetManga(string url);
public abstract SourceManga GetManga(string url);
protected virtual HtmlDocument GetHtmlDocument(string url)
{

View File

@@ -6,12 +6,12 @@ namespace MangaReader.Core.WebCrawlers.NatoManga;
public class NatoMangaWebCrawler : MangaWebCrawler
{
public override MangaDTO GetManga(string url)
public override SourceManga GetManga(string url)
{
HtmlDocument document = GetHtmlDocument(url);
NatoMangaHtmlDocument node = new(document);
MangaDTO manga = new()
SourceManga manga = new()
{
Title = node.TitleNode?.InnerText ?? string.Empty,
//AlternateTitles = GetAlternateTitles(node.AlternateTitlesNode),
@@ -116,9 +116,9 @@ public class NatoMangaWebCrawler : MangaWebCrawler
return (int)Math.Round(average / best * 100);
}
private static List<MangaChapterDTO> GetChapters(HtmlNodeCollection? chapterNodes)
private static List<SourceMangaChapter> GetChapters(HtmlNodeCollection? chapterNodes)
{
List<MangaChapterDTO> chapters = [];
List<SourceMangaChapter> chapters = [];
if (chapterNodes == null)
return chapters;
@@ -137,7 +137,7 @@ public class NatoMangaWebCrawler : MangaWebCrawler
if (chapterNameNode == null)
continue;
MangaChapterDTO chapter = new()
SourceMangaChapter chapter = new()
{
Number = GetChapterNumber(chapterNameNode),
Name = chapterNameNode.InnerText,

View File

@@ -1,6 +1,6 @@
namespace MangaReader.Core.WebCrawlers;
public class MangaDTO
public class SourceManga
{
public required string Title { get; set; }
public string? Description { get; set; }
@@ -12,5 +12,5 @@ public class MangaDTO
public long? Views { get; set; }
public float? RatingPercent { get; set; }
public int? Votes { get; set; }
public List<MangaChapterDTO> Chapters { get; set; } = [];
public List<SourceMangaChapter> Chapters { get; set; } = [];
}

View File

@@ -1,9 +1,9 @@
namespace MangaReader.Core.WebCrawlers;
public class MangaChapterDTO
public class SourceMangaChapter
{
public int? Volume { get; set; }
public float? Number { get; set; }
public required float Number { get; set; }
public string? Name { get; set; }
public required string Url { get; set; }
public long? Views { get; set; }