1
0
mirror of https://github.com/mihonapp/mihon.git synced 2025-04-01 01:55:39 +02:00

Resolve proper chapter URL for ComicInfo "Web" field

Requires extensions to be updated to lib 1.4 to have proper URLs for some of them, which will
happen soon in the future.
This commit is contained in:
arkon 2022-11-12 09:54:24 -05:00
parent bdf035d60a
commit 262f8449b4
2 changed files with 15 additions and 6 deletions
app/src/main/java/eu/kanade
domain/manga/model
tachiyomi/data/download

@ -12,11 +12,11 @@ const val COMIC_INFO_FILE = "ComicInfo.xml"
/**
* Creates a ComicInfo instance based on the manga and chapter metadata.
*/
fun getComicInfo(manga: Manga, chapter: Chapter): ComicInfo {
fun getComicInfo(manga: Manga, chapter: Chapter, chapterUrl: String): ComicInfo {
return ComicInfo(
title = ComicInfo.Title(chapter.name),
series = ComicInfo.Series(manga.title),
web = ComicInfo.Web(manga.url),
web = ComicInfo.Web(chapterUrl),
summary = manga.description?.let { ComicInfo.Summary(it) },
writer = manga.author?.let { ComicInfo.Writer(it) },
penciller = manga.artist?.let { ComicInfo.Penciller(it) },

@ -537,7 +537,14 @@ class Downloader(
cache.addChapter(dirname, mangaDir, download.manga)
DiskUtil.createNoMediaFile(tmpDir, context)
createComicInfoFile(mangaDir, download.manga, download.chapter.toDomainChapter()!!)
val chapterUrl = download.source.getChapterUrl(download.chapter)
createComicInfoFile(
mangaDir,
download.manga,
download.chapter.toDomainChapter()!!,
chapterUrl,
)
Download.State.DOWNLOADED
} else {
@ -583,19 +590,21 @@ class Downloader(
* Creates a ComicInfo.xml file inside the given directory.
*
* @param dir the directory in which the ComicInfo file will be generated.
* @param manga the manga of the chapter to download.
* @param chapter the chapter to download
* @param manga the manga.
* @param chapter the chapter.
* @param chapterUrl the resolved URL for the chapter.
*/
private fun createComicInfoFile(
dir: UniFile,
manga: Manga,
chapter: Chapter,
chapterUrl: String,
) {
File("${dir.filePath}/$COMIC_INFO_FILE").outputStream().also {
// Force overwrite old file
(it as? FileOutputStream)?.channel?.truncate(0)
}.use {
val comicInfo = getComicInfo(manga, chapter)
val comicInfo = getComicInfo(manga, chapter, chapterUrl)
it.write(xml.encodeToString(ComicInfo.serializer(), comicInfo).toByteArray())
}
}