mirror of
https://github.com/mihonapp/mihon.git
synced 2024-12-26 02:48:24 +01: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:
parent
bdf035d60a
commit
262f8449b4
@ -12,11 +12,11 @@ const val COMIC_INFO_FILE = "ComicInfo.xml"
|
|||||||
/**
|
/**
|
||||||
* 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): ComicInfo {
|
fun getComicInfo(manga: Manga, chapter: Chapter, chapterUrl: String): ComicInfo {
|
||||||
return ComicInfo(
|
return ComicInfo(
|
||||||
title = ComicInfo.Title(chapter.name),
|
title = ComicInfo.Title(chapter.name),
|
||||||
series = ComicInfo.Series(manga.title),
|
series = ComicInfo.Series(manga.title),
|
||||||
web = ComicInfo.Web(manga.url),
|
web = ComicInfo.Web(chapterUrl),
|
||||||
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) },
|
||||||
|
@ -537,7 +537,14 @@ class Downloader(
|
|||||||
cache.addChapter(dirname, mangaDir, download.manga)
|
cache.addChapter(dirname, mangaDir, download.manga)
|
||||||
|
|
||||||
DiskUtil.createNoMediaFile(tmpDir, context)
|
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
|
Download.State.DOWNLOADED
|
||||||
} else {
|
} else {
|
||||||
@ -583,19 +590,21 @@ class Downloader(
|
|||||||
* Creates a ComicInfo.xml file inside the given directory.
|
* Creates a ComicInfo.xml file inside the given directory.
|
||||||
*
|
*
|
||||||
* @param dir the directory in which the ComicInfo file will be generated.
|
* @param dir the directory in which the ComicInfo file will be generated.
|
||||||
* @param manga the manga of the chapter to download.
|
* @param manga the manga.
|
||||||
* @param chapter the chapter to download
|
* @param chapter the chapter.
|
||||||
|
* @param chapterUrl the resolved URL for the chapter.
|
||||||
*/
|
*/
|
||||||
private fun createComicInfoFile(
|
private fun createComicInfoFile(
|
||||||
dir: UniFile,
|
dir: UniFile,
|
||||||
manga: Manga,
|
manga: Manga,
|
||||||
chapter: Chapter,
|
chapter: Chapter,
|
||||||
|
chapterUrl: String,
|
||||||
) {
|
) {
|
||||||
File("${dir.filePath}/$COMIC_INFO_FILE").outputStream().also {
|
File("${dir.filePath}/$COMIC_INFO_FILE").outputStream().also {
|
||||||
// Force overwrite old file
|
// Force overwrite old file
|
||||||
(it as? FileOutputStream)?.channel?.truncate(0)
|
(it as? FileOutputStream)?.channel?.truncate(0)
|
||||||
}.use {
|
}.use {
|
||||||
val comicInfo = getComicInfo(manga, chapter)
|
val comicInfo = getComicInfo(manga, chapter, chapterUrl)
|
||||||
it.write(xml.encodeToString(ComicInfo.serializer(), comicInfo).toByteArray())
|
it.write(xml.encodeToString(ComicInfo.serializer(), comicInfo).toByteArray())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user