diff --git a/Tranga/Jobs/JobBoss.cs b/Tranga/Jobs/JobBoss.cs index f603313..99670b4 100644 --- a/Tranga/Jobs/JobBoss.cs +++ b/Tranga/Jobs/JobBoss.cs @@ -164,7 +164,7 @@ public class JobBoss : GlobalBase } HashSet coverFileNames = cachedPublications.Select(manga => manga.coverFileNameInCache!).ToHashSet(); - foreach (string fileName in Directory.GetFiles(settings.coverImageCache)) + foreach (string fileName in Directory.GetFiles(settings.coverImageCache)) //Cleanup Unused Covers { if(!coverFileNames.Any(existingManga => fileName.Contains(existingManga))) File.Delete(fileName); diff --git a/Tranga/MangaConnectors/ChromiumDownloadClient.cs b/Tranga/MangaConnectors/ChromiumDownloadClient.cs index 961d878..5ae80ad 100644 --- a/Tranga/MangaConnectors/ChromiumDownloadClient.cs +++ b/Tranga/MangaConnectors/ChromiumDownloadClient.cs @@ -2,6 +2,7 @@ using System.Text; using HtmlAgilityPack; using PuppeteerSharp; +using PuppeteerSharp.Input; namespace Tranga.MangaConnectors; @@ -81,7 +82,7 @@ internal class ChromiumDownloadClient : DownloadClient { if (content.Contains("text/html")) { - if(clickButton is not null) + if (clickButton is not null && page.QuerySelectorAsync(clickButton).Result is not null) page.ClickAsync(clickButton).Wait(); string htmlString = page.GetContentAsync().Result; stream = new MemoryStream(Encoding.Default.GetBytes(htmlString)); diff --git a/Tranga/MangaConnectors/MangaConnector.cs b/Tranga/MangaConnectors/MangaConnector.cs index 8dad271..1aa7a50 100644 --- a/Tranga/MangaConnectors/MangaConnector.cs +++ b/Tranga/MangaConnectors/MangaConnector.cs @@ -237,7 +237,7 @@ public abstract class MangaConnector : GlobalBase return HttpStatusCode.Created; //Create a temporary folder to store images - string tempFolder = Directory.CreateTempSubdirectory().FullName; + string tempFolder = Directory.CreateTempSubdirectory("trangatemp").FullName; int chapter = 0; //Download all Images to temporary Folder @@ -269,8 +269,10 @@ public abstract class MangaConnector : GlobalBase progressToken?.Increment(); } - if(comicInfoPath is not null) + if(comicInfoPath is not null){ File.Copy(comicInfoPath, Path.Join(tempFolder, "ComicInfo.xml")); + File.Delete(comicInfoPath); //Delete tmp-file + } Log($"Creating archive {saveArchiveFilePath}"); //ZIP-it and ship-it diff --git a/Tranga/MangaConnectors/MangaDex.cs b/Tranga/MangaConnectors/MangaDex.cs index aef00df..84b8891 100644 --- a/Tranga/MangaConnectors/MangaDex.cs +++ b/Tranga/MangaConnectors/MangaDex.cs @@ -216,6 +216,7 @@ public class MangaDex : MangaConnector { JsonObject chapter = (JsonObject)jsonNode!; JsonObject attributes = chapter["attributes"]!.AsObject(); + string chapterId = chapter["id"]!.GetValue(); string? title = attributes.ContainsKey("title") && attributes["title"] is not null @@ -230,6 +231,14 @@ public class MangaDex : MangaConnector ? attributes["chapter"]!.GetValue() : "null"; + + if (attributes.ContainsKey("pages") && attributes["pages"] is not null && + attributes["pages"]!.GetValue() < 1) + { + Log($"Skipping {chapterId} Vol.{volume} Ch.{chapterNum} {title} because it has no pages or is externally linked."); + continue; + } + if(chapterNum is not "null") chapters.Add(new Chapter(manga, title, volume, chapterNum, chapterId)); } diff --git a/Tranga/Tranga.cs b/Tranga/Tranga.cs index e146f6f..9dcc387 100644 --- a/Tranga/Tranga.cs +++ b/Tranga/Tranga.cs @@ -26,6 +26,8 @@ public partial class Tranga : GlobalBase new Bato(this), new MangaLife(this) }; + foreach(DirectoryInfo dir in new DirectoryInfo(Path.GetTempPath()).GetDirectories("trangatemp"))//Cleanup old temp folders + dir.Delete(); jobBoss = new(this, this._connectors); StartJobBoss(); this._server = new Server(this);