From 13fb917c5d376985635c06898c44f7f818bae72c Mon Sep 17 00:00:00 2001 From: glax Date: Thu, 16 Oct 2025 00:26:03 +0200 Subject: [PATCH] Implement #310 optional comicinfo.xml --- API/Constants.cs | 2 ++ ...DownloadChapterFromMangaconnectorWorker.cs | 19 +++++++++++++------ README.md | 1 + docker-compose.yaml | 7 ++++--- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/API/Constants.cs b/API/Constants.cs index 4bdc0a6..6bf85cd 100644 --- a/API/Constants.cs +++ b/API/Constants.cs @@ -16,4 +16,6 @@ public struct Constants public static readonly int PostgresCommandTimeout = int.Parse(Environment.GetEnvironmentVariable("POSTGRES_COMMAND_TIMEOUT") ?? "60"); public static readonly bool UpdateChaptersDownloadedBeforeStarting = bool.Parse(Environment.GetEnvironmentVariable("CHECK_CHAPTERS_BEFORE_START") ?? "true"); + + public static readonly bool CreateComicInfoXml = bool.Parse(Environment.GetEnvironmentVariable("CREATE_COMICINFO_XML") ?? "true"); } \ No newline at end of file diff --git a/API/Workers/MangaDownloadWorkers/DownloadChapterFromMangaconnectorWorker.cs b/API/Workers/MangaDownloadWorkers/DownloadChapterFromMangaconnectorWorker.cs index 30c49ee..554e382 100644 --- a/API/Workers/MangaDownloadWorkers/DownloadChapterFromMangaconnectorWorker.cs +++ b/API/Workers/MangaDownloadWorkers/DownloadChapterFromMangaconnectorWorker.cs @@ -120,10 +120,9 @@ public class DownloadChapterFromMangaconnectorWorker(MangaConnectorId c await CopyCoverFromCacheToDownloadLocation(chapter.ParentManga); - Log.Debug($"Creating ComicInfo.xml {chapter}"); + Log.Debug($"Loading collections {chapter}"); foreach (CollectionEntry collectionEntry in DbContext.Entry(chapter.ParentManga).Collections) await collectionEntry.LoadAsync(CancellationToken); - string comicInfo = chapter.GetComicInfoXmlString(); if (File.Exists(saveArchiveFilePath)) { @@ -137,10 +136,18 @@ public class DownloadChapterFromMangaconnectorWorker(MangaConnectorId c Log.Debug($"Creating archive: {saveArchiveFilePath}"); //ZIP-it and ship-it using ZipArchive archive = ZipFile.Open(saveArchiveFilePath, ZipArchiveMode.Create); - Log.Debug("Writing ComicInfo.xml"); - Stream comicStream = archive.CreateEntry("ComicInfo.xml").Open(); - await comicStream.WriteAsync(Encoding.UTF8.GetBytes(comicInfo), CancellationToken); - await comicStream.DisposeAsync(); + + if (Constants.CreateComicInfoXml) + { + Log.Debug("Writing ComicInfo.xml"); + Stream comicStream = archive.CreateEntry("ComicInfo.xml").Open(); + string comicInfo = chapter.GetComicInfoXmlString(); + await comicStream.WriteAsync(Encoding.UTF8.GetBytes(comicInfo), CancellationToken); + await comicStream.DisposeAsync(); + } + else + Log.Debug("Skipping ComicInfo.xml. CREATE_COMICINFO_XML is set to false"); + for (int i = 0; i < images.Count; i++) { Log.Debug($"Packaging images to archive {chapter} , image {i}"); diff --git a/README.md b/README.md index 6e32248..1c9e0bc 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,7 @@ The file also includes [tranga-website](https://github.com/C9Glax/tranga-website | POSTGRES_COMMAND_TIMEOUT | [`60`](https://www.npgsql.org/doc/connection-string-parameters.html?q=Command%20Timeout) | | POSTGRES_CONNECTION_TIMEOUT | `30` | | CHECK_CHAPTERS_BEFORE_START | `true` | +| CREATE_COMICINFO_XML | `true` | For compatibility do not execute the compose as root (which you should not do anyways...) but as user that can access the folder. Permission conflicts with Komga and Kavita should thus be limited. diff --git a/docker-compose.yaml b/docker-compose.yaml index 0cbd206..ec33b0e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -17,9 +17,10 @@ services: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres #- FLARESOLVERR_URL= - #- POSTGRES_COMMAND_TIMEOUT=120 - #- POSTGRES_CONNECTION_TIMEOUT= - #- CHECK_CHAPTERS_BEFORE_START=false + #- POSTGRES_COMMAND_TIMEOUT=30 + #- POSTGRES_CONNECTION_TIMEOUT=30 + #- CHECK_CHAPTERS_BEFORE_START=true + #- CREATE_COMICINFO_XML=true restart: unless-stopped logging: driver: json-file