From 4bfc5e7b51452a1a9cac3a3644e6343d1c47aa95 Mon Sep 17 00:00:00 2001 From: Shamicen <84282253+Shamicen@users.noreply.github.com> Date: Thu, 29 Feb 2024 18:57:39 +0100 Subject: [PATCH] Made some changes to ComicInfo metadata (#459) * Made some changes to ComicInfo metadata The web field now contains a " " separated list of source and tracker urls. The translator field will now use the source name if the scanlator field is empty. * lint * use already existing source instance * made translator not nullable * implemented requested changes created new Mihon exclusive ComicInfo source field and populated it with SourceName reverted previous changes to translator field * Update core-metadata/src/main/java/tachiyomi/core/metadata/comicinfo/ComicInfo.kt Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> * Update app/src/main/java/eu/kanade/domain/manga/model/Manga.kt Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> * Update app/src/main/java/eu/kanade/domain/manga/model/Manga.kt Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> * Update app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> * Update app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt --------- Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> --- .../eu/kanade/domain/manga/model/Manga.kt | 11 +++++++++-- .../tachiyomi/data/download/Downloader.kt | 19 +++++++++++++++++-- .../core/metadata/comicinfo/ComicInfo.kt | 6 ++++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt index 1b9dd62c8..ebd2ad3e9 100644 --- a/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt +++ b/app/src/main/java/eu/kanade/domain/manga/model/Manga.kt @@ -95,7 +95,13 @@ fun Manga.hasCustomCover(coverCache: CoverCache = Injekt.get()): Boolean { /** * Creates a ComicInfo instance based on the manga and chapter metadata. */ -fun getComicInfo(manga: Manga, chapter: Chapter, chapterUrl: String, categories: List?) = ComicInfo( +fun getComicInfo( + manga: Manga, + chapter: Chapter, + urls: List, + categories: List?, + sourceName: String, +) = ComicInfo( title = ComicInfo.Title(chapter.name), series = ComicInfo.Series(manga.title), number = chapter.chapterNumber.takeIf { it >= 0 }?.let { @@ -105,7 +111,7 @@ fun getComicInfo(manga: Manga, chapter: Chapter, chapterUrl: String, categories: ComicInfo.Number(it.toString()) } }, - web = ComicInfo.Web(chapterUrl), + web = ComicInfo.Web(urls.joinToString(" ")), summary = manga.description?.let { ComicInfo.Summary(it) }, writer = manga.author?.let { ComicInfo.Writer(it) }, penciller = manga.artist?.let { ComicInfo.Penciller(it) }, @@ -115,6 +121,7 @@ fun getComicInfo(manga: Manga, chapter: Chapter, chapterUrl: String, categories: ComicInfoPublishingStatus.toComicInfoValue(manga.status), ), categories = categories?.let { ComicInfo.CategoriesTachiyomi(it.joinToString()) }, + source = ComicInfo.SourceMihon(sourceName), inker = null, colorist = null, letterer = null, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index facbe605a..7c8238d5a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -54,6 +54,7 @@ import tachiyomi.domain.chapter.model.Chapter import tachiyomi.domain.download.service.DownloadPreferences import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.source.service.SourceManager +import tachiyomi.domain.track.interactor.GetTracks import tachiyomi.i18n.MR import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -78,6 +79,7 @@ class Downloader( private val downloadPreferences: DownloadPreferences = Injekt.get(), private val xml: XML = Injekt.get(), private val getCategories: GetCategories = Injekt.get(), + private val getTracks: GetTracks = Injekt.get(), ) { /** @@ -626,9 +628,22 @@ class Downloader( chapter: Chapter, source: HttpSource, ) { - val chapterUrl = source.getChapterUrl(chapter.toSChapter()) val categories = getCategories.await(manga.id).map { it.name.trim() }.takeUnless { it.isEmpty() } - val comicInfo = getComicInfo(manga, chapter, chapterUrl, categories) + val urls = getTracks.await(manga.id) + .mapNotNull { track -> + track.remoteUrl.takeUnless { url -> url.isBlank() }?.trim() + } + .plus(source.getChapterUrl(chapter.toSChapter()).trim()) + .distinct() + + val comicInfo = getComicInfo( + manga, + chapter, + urls, + categories, + source.name + ) + // Remove the old file dir.findFile(COMIC_INFO_FILE, true)?.delete() dir.createFile(COMIC_INFO_FILE)!!.openOutputStream().use { diff --git a/core-metadata/src/main/java/tachiyomi/core/metadata/comicinfo/ComicInfo.kt b/core-metadata/src/main/java/tachiyomi/core/metadata/comicinfo/ComicInfo.kt index 681b4819b..5d4d92277 100644 --- a/core-metadata/src/main/java/tachiyomi/core/metadata/comicinfo/ComicInfo.kt +++ b/core-metadata/src/main/java/tachiyomi/core/metadata/comicinfo/ComicInfo.kt @@ -27,6 +27,7 @@ fun SManga.getComicInfo() = ComicInfo( coverArtist = null, tags = null, categories = null, + source = null, ) fun SManga.copyFromComicInfo(comicInfo: ComicInfo) { @@ -81,6 +82,7 @@ data class ComicInfo( val web: Web?, val publishingStatus: PublishingStatusTachiyomi?, val categories: CategoriesTachiyomi?, + val source: SourceMihon?, ) { @XmlElement(false) @XmlSerialName("xmlns:xsd", "", "") @@ -154,6 +156,10 @@ data class ComicInfo( @Serializable @XmlSerialName("Categories", "http://www.w3.org/2001/XMLSchema", "ty") data class CategoriesTachiyomi(@XmlValue(true) val value: String = "") + + @Serializable + @XmlSerialName("SourceMihon", "http://www.w3.org/2001/XMLSchema", "mh") + data class SourceMihon(@XmlValue(true) val value: String = "") } enum class ComicInfoPublishingStatus(