mirror of
https://github.com/C9Glax/tranga.git
synced 2025-06-23 03:24:15 +02:00
We were still adding duplicate jobs if not *every* field in the Manga matched. We now only compare publicationId.
59 lines
2.3 KiB
C#
59 lines
2.3 KiB
C#
using Tranga.MangaConnectors;
|
|
|
|
namespace Tranga.Jobs;
|
|
|
|
public class DownloadNewChapters : Job
|
|
{
|
|
public Manga manga { get; set; }
|
|
public string translatedLanguage { get; init; }
|
|
|
|
public DownloadNewChapters(GlobalBase clone, MangaConnector connector, Manga manga, DateTime lastExecution,
|
|
bool recurring = false, TimeSpan? recurrence = null, string? parentJobId = null, string translatedLanguage = "en") : base(clone, JobType.DownloadNewChaptersJob, connector, lastExecution, recurring,
|
|
recurrence, parentJobId)
|
|
{
|
|
this.manga = manga;
|
|
this.translatedLanguage = translatedLanguage;
|
|
}
|
|
|
|
public DownloadNewChapters(GlobalBase clone, MangaConnector connector, Manga manga, bool recurring = false, TimeSpan? recurrence = null, string? parentJobId = null, string translatedLanguage = "en") : base (clone, JobType.DownloadNewChaptersJob, connector, recurring, recurrence, parentJobId)
|
|
{
|
|
this.manga = manga;
|
|
this.translatedLanguage = translatedLanguage;
|
|
}
|
|
|
|
protected override string GetId()
|
|
{
|
|
return $"{GetType()}-{manga.internalId}";
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"{id} Manga: {manga}";
|
|
}
|
|
|
|
protected override IEnumerable<Job> ExecuteReturnSubTasksInternal(JobBoss jobBoss)
|
|
{
|
|
manga.SaveSeriesInfoJson();
|
|
Chapter[] chapters = mangaConnector.GetNewChapters(manga, this.translatedLanguage);
|
|
this.progressToken.increments = chapters.Length;
|
|
List<Job> jobs = new();
|
|
mangaConnector.CopyCoverFromCacheToDownloadLocation(manga);
|
|
foreach (Chapter chapter in chapters)
|
|
{
|
|
DownloadChapter downloadChapterJob = new(this, this.mangaConnector, chapter, parentJobId: this.id);
|
|
jobs.Add(downloadChapterJob);
|
|
}
|
|
UpdateMetadata updateMetadataJob = new(this, this.mangaConnector, this.manga, parentJobId: this.id);
|
|
jobs.Add(updateMetadataJob);
|
|
progressToken.Complete();
|
|
return jobs;
|
|
}
|
|
|
|
public override bool Equals(object? obj)
|
|
{
|
|
if (obj is not DownloadNewChapters otherJob)
|
|
return false;
|
|
return otherJob.mangaConnector == this.mangaConnector &&
|
|
otherJob.manga.publicationId == this.manga.publicationId;
|
|
}
|
|
} |