(cherry picked from commit 82bdf634194734851c429d60b68f9ce7c7e51d91) # Conflicts: # source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt # source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt
48 lines
1.5 KiB
Kotlin
48 lines
1.5 KiB
Kotlin
package tachiyomi.source.local.metadata
|
|
|
|
import eu.kanade.tachiyomi.source.model.SChapter
|
|
import eu.kanade.tachiyomi.source.model.SManga
|
|
import eu.kanade.tachiyomi.util.storage.EpubFile
|
|
import java.text.ParseException
|
|
import java.text.SimpleDateFormat
|
|
import java.util.Locale
|
|
|
|
/**
|
|
* Fills manga and chapter metadata using this epub file's metadata.
|
|
*/
|
|
fun EpubFile.fillMetadata(manga: SManga, chapter: SChapter) {
|
|
val ref = getPackageHref()
|
|
val doc = getPackageDocument(ref)
|
|
|
|
val title = doc.getElementsByTag("dc:title").first()
|
|
val publisher = doc.getElementsByTag("dc:publisher").first()
|
|
val creator = doc.getElementsByTag("dc:creator").first()
|
|
val description = doc.getElementsByTag("dc:description").first()
|
|
var date = doc.getElementsByTag("dc:date").first()
|
|
if (date == null) {
|
|
date = doc.select("meta[property=dcterms:modified]").first()
|
|
}
|
|
|
|
creator?.text()?.let { manga.author = it }
|
|
description?.text()?.let { manga.description = it }
|
|
|
|
title?.text()?.let { chapter.name = it }
|
|
|
|
if (publisher != null) {
|
|
chapter.scanlator = publisher.text()
|
|
} else if (creator != null) {
|
|
chapter.scanlator = creator.text()
|
|
}
|
|
|
|
if (date != null) {
|
|
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.getDefault())
|
|
try {
|
|
val parsedDate = dateFormat.parse(date.text())
|
|
if (parsedDate != null) {
|
|
chapter.date_upload = parsedDate.time
|
|
}
|
|
} catch (e: ParseException) {
|
|
// Empty
|
|
}
|
|
}
|
|
}
|