mirror of
https://github.com/C9Glax/tranga.git
synced 2025-02-23 15:50:13 +01:00
43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using API.MangaDownloadClients;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace API.Schema.MangaConnectors;
|
|
|
|
[PrimaryKey("Name")]
|
|
public abstract class MangaConnector(string name, string[] supportedLanguages, string[] baseUris)
|
|
{
|
|
[MaxLength(32)]
|
|
public string Name { get; init; } = name;
|
|
public string[] SupportedLanguages { get; init; } = supportedLanguages;
|
|
public string[] BaseUris { get; init; } = baseUris;
|
|
|
|
[ForeignKey("MangaIds")]
|
|
public virtual Manga[] Mangas { get; internal set; } = [];
|
|
|
|
|
|
public abstract (Manga, Author[], MangaTag[], Link[], MangaAltTitle[])[] GetManga(string publicationTitle = "");
|
|
|
|
public abstract (Manga, Author[], MangaTag[], Link[], MangaAltTitle[])? GetMangaFromUrl(string url);
|
|
|
|
public abstract (Manga, Author[], MangaTag[], Link[], MangaAltTitle[])? GetMangaFromId(string publicationId);
|
|
|
|
public abstract Chapter[] GetChapters(Manga manga, string language="en");
|
|
|
|
[JsonIgnore]
|
|
[NotMapped]
|
|
internal DownloadClient downloadClient { get; init; } = null!;
|
|
|
|
public Chapter[] GetNewChapters(Manga manga)
|
|
{
|
|
Chapter[] allChapters = GetChapters(manga);
|
|
if (allChapters.Length < 1)
|
|
return [];
|
|
|
|
return allChapters.Where(chapter => !chapter.IsDownloaded()).ToArray();
|
|
}
|
|
|
|
internal abstract string[] GetChapterImageUrls(Chapter chapter);
|
|
} |