Compare commits
3 Commits
6adbda2359
...
963ad375e8
Author | SHA1 | Date | |
---|---|---|---|
963ad375e8 | |||
0a5ded2036 | |||
4843c7f05c |
@ -4,7 +4,7 @@ namespace Tranga.Jobs;
|
||||
|
||||
public class DownloadNewChapters : Job
|
||||
{
|
||||
public Manga manga { get; init; }
|
||||
public Manga manga { get; set; }
|
||||
public string translatedLanguage { get; init; }
|
||||
|
||||
public DownloadNewChapters(GlobalBase clone, MangaConnector connector, Manga manga, DateTime lastExecution,
|
||||
|
63
Tranga/Jobs/UpdateMetadata.cs
Normal file
63
Tranga/Jobs/UpdateMetadata.cs
Normal file
@ -0,0 +1,63 @@
|
||||
using Tranga.MangaConnectors;
|
||||
|
||||
namespace Tranga.Jobs;
|
||||
|
||||
public class UpdateMetadata : Job
|
||||
{
|
||||
private Manga manga { get; set; }
|
||||
private JobBoss jobBoss { get; init; }
|
||||
|
||||
public UpdateMetadata(GlobalBase clone, MangaConnector connector, Manga manga, JobBoss jobBoss, DateTime lastExecution, string? parentJobId = null) : base(clone, connector, lastExecution, parentJobId: parentJobId)
|
||||
{
|
||||
this.manga = manga;
|
||||
this.jobBoss = jobBoss;
|
||||
}
|
||||
|
||||
public UpdateMetadata(GlobalBase clone, MangaConnector connector, Manga manga, JobBoss jobBoss, string? parentJobId = null) : base(clone, connector, parentJobId: parentJobId)
|
||||
{
|
||||
this.manga = manga;
|
||||
this.jobBoss = jobBoss;
|
||||
}
|
||||
|
||||
protected override string GetId()
|
||||
{
|
||||
return $"{GetType()}-{manga.internalId}";
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{id} Manga: {manga}";
|
||||
}
|
||||
|
||||
protected override IEnumerable<Job> ExecuteReturnSubTasksInternal()
|
||||
{
|
||||
if(manga.websiteUrl is null)
|
||||
{
|
||||
Log($"Legacy manga {manga}");
|
||||
return Array.Empty<Job>();
|
||||
}
|
||||
if (parentJobId is null)
|
||||
{
|
||||
Log($"Missing parentJob {this}");
|
||||
return Array.Empty<Job>();
|
||||
}
|
||||
Manga? possibleUpdatedManga = mangaConnector.GetMangaFromUrl(manga.websiteUrl);
|
||||
if (possibleUpdatedManga is { } updatedManga)
|
||||
{
|
||||
cachedPublications.Remove(this.manga);
|
||||
this.manga = updatedManga;
|
||||
cachedPublications.Add(updatedManga);
|
||||
this.manga.SaveSeriesInfoJson(settings.downloadLocation, true);
|
||||
|
||||
DownloadNewChapters dncJob = this.jobBoss.GetJobById(this.parentJobId) as DownloadNewChapters ??
|
||||
throw new Exception("Jobtype has to be DownloadNewChapters");
|
||||
dncJob.manga = updatedManga;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log($"Could not find Manga {manga}");
|
||||
return Array.Empty<Job>();
|
||||
}
|
||||
return Array.Empty<Job>();
|
||||
}
|
||||
}
|
@ -43,11 +43,12 @@ public struct Manga
|
||||
public float ignoreChaptersBelow { get; set; }
|
||||
public float latestChapterDownloaded { get; set; }
|
||||
public float latestChapterAvailable { get; set; }
|
||||
public string? websiteUrl { get; }
|
||||
|
||||
private static readonly Regex LegalCharacters = new (@"[A-Z]*[a-z]*[0-9]* *\.*-*,*'*\'*\)*\(*~*!*");
|
||||
|
||||
[JsonConstructor]
|
||||
public Manga(string sortName, List<string> authors, string? description, Dictionary<string,string> altTitles, string[] tags, string? coverUrl, string? coverFileNameInCache, Dictionary<string,string>? links, int? year, string? originalLanguage, string status, string publicationId, ReleaseStatusByte releaseStatus = 0, string? folderName = null, float? ignoreChaptersBelow = 0)
|
||||
public Manga(string sortName, List<string> authors, string? description, Dictionary<string,string> altTitles, string[] tags, string? coverUrl, string? coverFileNameInCache, Dictionary<string,string>? links, int? year, string? originalLanguage, string status, string publicationId, ReleaseStatusByte releaseStatus = 0, string? websiteUrl = null, string? folderName = null, float? ignoreChaptersBelow = 0)
|
||||
{
|
||||
this.sortName = sortName;
|
||||
this.authors = authors;
|
||||
@ -70,6 +71,7 @@ public struct Manga
|
||||
this.latestChapterDownloaded = 0;
|
||||
this.latestChapterAvailable = 0;
|
||||
this.releaseStatus = releaseStatus;
|
||||
this.websiteUrl = websiteUrl;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
@ -102,11 +104,11 @@ public struct Manga
|
||||
latestChapterDownloaded = latestChapterDownloaded < chapterNumber ? chapterNumber : latestChapterDownloaded;
|
||||
}
|
||||
|
||||
public void SaveSeriesInfoJson(string downloadDirectory)
|
||||
public void SaveSeriesInfoJson(string downloadDirectory, bool overwrite = false)
|
||||
{
|
||||
string publicationFolder = CreatePublicationFolder(downloadDirectory);
|
||||
string seriesInfoPath = Path.Join(publicationFolder, "series.json");
|
||||
if(!File.Exists(seriesInfoPath))
|
||||
if(overwrite || (!overwrite && !File.Exists(seriesInfoPath)))
|
||||
File.WriteAllText(seriesInfoPath,this.GetSeriesInfoJson());
|
||||
if(RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||
File.SetUnixFileMode(seriesInfoPath, GroupRead | GroupWrite | OtherRead | OtherWrite | UserRead | UserWrite);
|
||||
|
Loading…
Reference in New Issue
Block a user