mirror of
https://github.com/mihonapp/mihon.git
synced 2025-06-27 19:47:51 +02:00
54 lines
1.5 KiB
Kotlin
54 lines
1.5 KiB
Kotlin
package exh
|
|
|
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
import eu.kanade.tachiyomi.data.source.SourceManager
|
|
import eu.kanade.tachiyomi.util.UrlUtil
|
|
import exh.metadata.MetadataHelper
|
|
import exh.metadata.copyTo
|
|
import uy.kohesive.injekt.injectLazy
|
|
import java.net.MalformedURLException
|
|
import java.net.URL
|
|
|
|
class GalleryAdder {
|
|
|
|
private val db: DatabaseHelper by injectLazy()
|
|
|
|
private val sourceManager: SourceManager by injectLazy()
|
|
|
|
private val metadataHelper = MetadataHelper()
|
|
|
|
fun addGallery(url: String, fav: Boolean = false): Manga {
|
|
val source = when(URL(url).host) {
|
|
"g.e-hentai.org" -> 1
|
|
"exhentai.org" -> 2
|
|
else -> throw MalformedURLException("Not a valid gallery URL!")
|
|
}
|
|
|
|
val sourceObj = sourceManager.get(source)
|
|
|
|
val pathOnlyUrl = UrlUtil.getPath(url)
|
|
|
|
//Use manga in DB if possible, otherwise, make a new manga
|
|
val manga = db.getManga(pathOnlyUrl, source).executeAsBlocking()
|
|
?: Manga.create(pathOnlyUrl, source).apply {
|
|
title = url
|
|
}
|
|
|
|
sourceObj?.let {
|
|
//Copy basics
|
|
manga.copyFrom(sourceObj.fetchMangaDetails(manga).toBlocking().first())
|
|
|
|
//Apply metadata
|
|
metadataHelper.fetchMetadata(url, source == 2)?.copyTo(manga)
|
|
}
|
|
|
|
if(fav) manga.favorite = true
|
|
|
|
db.insertManga(manga).executeAsBlocking().insertedId()?.let {
|
|
manga.id = it
|
|
}
|
|
|
|
return manga
|
|
}
|
|
} |