From 17ef5eae0f565ca845c2159acc7b21d70b574a73 Mon Sep 17 00:00:00 2001 From: Glax Date: Sat, 30 Mar 2024 21:53:11 +0100 Subject: [PATCH 1/4] Fix MangaDex request for new Chapter. --- Tranga/MangaConnectors/MangaDex.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tranga/MangaConnectors/MangaDex.cs b/Tranga/MangaConnectors/MangaDex.cs index 08c4bac..aef00df 100644 --- a/Tranga/MangaConnectors/MangaDex.cs +++ b/Tranga/MangaConnectors/MangaDex.cs @@ -252,7 +252,7 @@ public class MangaDex : MangaConnector Log($"Retrieving chapter-info {chapter} {chapterParentManga}"); //Request URLs for Chapter-Images RequestResult requestResult = - downloadClient.MakeRequest($"https://api.mangadex.org/at-home/server/{chapter.url}?forcePort443=false'", RequestType.MangaDexImage); + downloadClient.MakeRequest($"https://api.mangadex.org/at-home/server/{chapter.url}?forcePort443=false", RequestType.MangaDexImage); if ((int)requestResult.statusCode < 200 || (int)requestResult.statusCode >= 300) { progressToken?.Cancel(); From 94582496ef181603bf8f42d52269fb6cc6365fac Mon Sep 17 00:00:00 2001 From: Glax Date: Mon, 1 Apr 2024 20:00:02 +0200 Subject: [PATCH 2/4] Mangadex do not try downloading externally linked chapters, or chapters that have no pages. https://github.com/C9Glax/tranga/issues/153 --- Tranga/MangaConnectors/MangaDex.cs | 9 +++++++++ 1 file changed, 9 insertions(+) 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)); } From 6a8697fc3a8490f9f6de402a27105eb3bb7024b0 Mon Sep 17 00:00:00 2001 From: Glax Date: Mon, 1 Apr 2024 20:12:25 +0200 Subject: [PATCH 3/4] Manga4Life fix bug that made it impossible for Manga to be loaded if they did not have a "Load more Chapters" button. https://github.com/C9Glax/tranga/issues/149 Created a check if the button exists before trying to click it. --- Tranga/MangaConnectors/ChromiumDownloadClient.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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)); From 537ad3a5f88a57e87927fdc9280dced62393675b Mon Sep 17 00:00:00 2001 From: Glax Date: Mon, 1 Apr 2024 20:35:47 +0200 Subject: [PATCH 4/4] https://github.com/C9Glax/tranga/issues/142 Cleanup old temporary Folders and files --- Tranga/Jobs/JobBoss.cs | 2 +- Tranga/MangaConnectors/MangaConnector.cs | 6 ++++-- Tranga/Tranga.cs | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) 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/MangaConnector.cs b/Tranga/MangaConnectors/MangaConnector.cs index bd80aed..302a064 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 @@ -260,8 +260,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/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);