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> (cherry picked from commit 4bfc5e7b51452a1a9cac3a3644e6343d1c47aa95) # Conflicts: # app/src/main/java/eu/kanade/domain/manga/model/Manga.kt # app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt # core-metadata/src/main/java/tachiyomi/core/metadata/comicinfo/ComicInfo.kt
This commit is contained in:
parent
23e3ec20b6
commit
ca70f80900
@ -104,7 +104,13 @@ fun Manga.hasCustomCover(coverCache: CoverCache = Injekt.get()): Boolean {
|
|||||||
/**
|
/**
|
||||||
* Creates a ComicInfo instance based on the manga and chapter metadata.
|
* Creates a ComicInfo instance based on the manga and chapter metadata.
|
||||||
*/
|
*/
|
||||||
fun getComicInfo(manga: Manga, chapter: Chapter, chapterUrl: String, categories: List<String>?) = ComicInfo(
|
fun getComicInfo(
|
||||||
|
manga: Manga,
|
||||||
|
chapter: Chapter,
|
||||||
|
urls: List<String>,
|
||||||
|
categories: List<String>?,
|
||||||
|
sourceName: String,
|
||||||
|
) = ComicInfo(
|
||||||
title = ComicInfo.Title(chapter.name),
|
title = ComicInfo.Title(chapter.name),
|
||||||
series = ComicInfo.Series(manga.title),
|
series = ComicInfo.Series(manga.title),
|
||||||
number = chapter.chapterNumber.takeIf { it >= 0 }?.let {
|
number = chapter.chapterNumber.takeIf { it >= 0 }?.let {
|
||||||
@ -114,7 +120,7 @@ fun getComicInfo(manga: Manga, chapter: Chapter, chapterUrl: String, categories:
|
|||||||
ComicInfo.Number(it.toString())
|
ComicInfo.Number(it.toString())
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
web = ComicInfo.Web(chapterUrl),
|
web = ComicInfo.Web(urls.joinToString(" ")),
|
||||||
summary = manga.description?.let { ComicInfo.Summary(it) },
|
summary = manga.description?.let { ComicInfo.Summary(it) },
|
||||||
writer = manga.author?.let { ComicInfo.Writer(it) },
|
writer = manga.author?.let { ComicInfo.Writer(it) },
|
||||||
penciller = manga.artist?.let { ComicInfo.Penciller(it) },
|
penciller = manga.artist?.let { ComicInfo.Penciller(it) },
|
||||||
@ -124,6 +130,7 @@ fun getComicInfo(manga: Manga, chapter: Chapter, chapterUrl: String, categories:
|
|||||||
ComicInfoPublishingStatus.toComicInfoValue(manga.status),
|
ComicInfoPublishingStatus.toComicInfoValue(manga.status),
|
||||||
),
|
),
|
||||||
categories = categories?.let { ComicInfo.CategoriesTachiyomi(it.joinToString()) },
|
categories = categories?.let { ComicInfo.CategoriesTachiyomi(it.joinToString()) },
|
||||||
|
source = ComicInfo.SourceMihon(sourceName),
|
||||||
// SY -->
|
// SY -->
|
||||||
padding = CbzCrypto.createComicInfoPadding()?.let { ComicInfo.PaddingTachiyomiSY(it) },
|
padding = CbzCrypto.createComicInfoPadding()?.let { ComicInfo.PaddingTachiyomiSY(it) },
|
||||||
// SY <--
|
// SY <--
|
||||||
|
@ -59,6 +59,7 @@ import tachiyomi.domain.chapter.model.Chapter
|
|||||||
import tachiyomi.domain.download.service.DownloadPreferences
|
import tachiyomi.domain.download.service.DownloadPreferences
|
||||||
import tachiyomi.domain.manga.model.Manga
|
import tachiyomi.domain.manga.model.Manga
|
||||||
import tachiyomi.domain.source.service.SourceManager
|
import tachiyomi.domain.source.service.SourceManager
|
||||||
|
import tachiyomi.domain.track.interactor.GetTracks
|
||||||
import tachiyomi.i18n.MR
|
import tachiyomi.i18n.MR
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
@ -83,6 +84,7 @@ class Downloader(
|
|||||||
private val downloadPreferences: DownloadPreferences = Injekt.get(),
|
private val downloadPreferences: DownloadPreferences = Injekt.get(),
|
||||||
private val xml: XML = Injekt.get(),
|
private val xml: XML = Injekt.get(),
|
||||||
private val getCategories: GetCategories = Injekt.get(),
|
private val getCategories: GetCategories = Injekt.get(),
|
||||||
|
private val getTracks: GetTracks = Injekt.get(),
|
||||||
// SY -->
|
// SY -->
|
||||||
private val sourcePreferences: SourcePreferences = Injekt.get(),
|
private val sourcePreferences: SourcePreferences = Injekt.get(),
|
||||||
// SY <--
|
// SY <--
|
||||||
@ -694,9 +696,22 @@ class Downloader(
|
|||||||
chapter: Chapter,
|
chapter: Chapter,
|
||||||
source: HttpSource,
|
source: HttpSource,
|
||||||
) {
|
) {
|
||||||
val chapterUrl = source.getChapterUrl(chapter.toSChapter())
|
|
||||||
val categories = getCategories.await(manga.id).map { it.name.trim() }.takeUnless { it.isEmpty() }
|
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
|
// Remove the old file
|
||||||
dir.findFile(COMIC_INFO_FILE, true)?.delete()
|
dir.findFile(COMIC_INFO_FILE, true)?.delete()
|
||||||
dir.createFile(COMIC_INFO_FILE)!!.openOutputStream().use {
|
dir.createFile(COMIC_INFO_FILE)!!.openOutputStream().use {
|
||||||
|
@ -27,6 +27,7 @@ fun SManga.getComicInfo() = ComicInfo(
|
|||||||
coverArtist = null,
|
coverArtist = null,
|
||||||
tags = null,
|
tags = null,
|
||||||
categories = null,
|
categories = null,
|
||||||
|
source = null,
|
||||||
padding = null,
|
padding = null,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -82,6 +83,7 @@ data class ComicInfo(
|
|||||||
val web: Web?,
|
val web: Web?,
|
||||||
val publishingStatus: PublishingStatusTachiyomi?,
|
val publishingStatus: PublishingStatusTachiyomi?,
|
||||||
val categories: CategoriesTachiyomi?,
|
val categories: CategoriesTachiyomi?,
|
||||||
|
val source: SourceMihon?,
|
||||||
// SY -->
|
// SY -->
|
||||||
val padding: PaddingTachiyomiSY?,
|
val padding: PaddingTachiyomiSY?,
|
||||||
// SY <--
|
// SY <--
|
||||||
@ -159,6 +161,10 @@ data class ComicInfo(
|
|||||||
@XmlSerialName("Categories", "http://www.w3.org/2001/XMLSchema", "ty")
|
@XmlSerialName("Categories", "http://www.w3.org/2001/XMLSchema", "ty")
|
||||||
data class CategoriesTachiyomi(@XmlValue(true) val value: String = "")
|
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 = "")
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
@Serializable
|
@Serializable
|
||||||
@XmlSerialName("PaddingTachiyomiSY", "http://www.w3.org/2001/XMLSchema", "tysy")
|
@XmlSerialName("PaddingTachiyomiSY", "http://www.w3.org/2001/XMLSchema", "tysy")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user