Remove duplicate raised search metadata code

This commit is contained in:
Jobobby04 2021-01-26 23:33:51 -05:00
parent fcc095ffa3
commit 628eedf15a
13 changed files with 26 additions and 256 deletions

View File

@ -119,14 +119,18 @@ class NHentai(delegate: HttpSource, val context: Context) :
@Serializable
data class JsonResponse(
val id: Long,
@SerialName("media_id") val mediaId: String? = null,
@SerialName("media_id")
val mediaId: String? = null,
val title: JsonTitle? = null,
val images: JsonImages? = null,
val scanlator: String? = null,
@SerialName("upload_date") val uploadDate: Long? = null,
@SerialName("upload_date")
val uploadDate: Long? = null,
val tags: List<JsonTag> = emptyList(),
@SerialName("num_pages") val numPages: Int? = null,
@SerialName("num_favorites") val numFavorites: Long? = null
@SerialName("num_pages")
val numPages: Int? = null,
@SerialName("num_favorites")
val numFavorites: Long? = null
)
@Serializable
@ -145,9 +149,12 @@ class NHentai(delegate: HttpSource, val context: Context) :
@Serializable
data class JsonPage(
@SerialName("t") val type: String? = null,
@SerialName("w") val width: Long? = null,
@SerialName("h") val height: Long? = null
@SerialName("t")
val type: String? = null,
@SerialName("w")
val width: Long? = null,
@SerialName("h")
val height: Long? = null
)
@Serializable

View File

@ -16,7 +16,7 @@ import eu.kanade.tachiyomi.source.online.UrlImportableSource
import eu.kanade.tachiyomi.ui.manga.MangaController
import eu.kanade.tachiyomi.util.asJsoup
import exh.metadata.metadata.PururinSearchMetadata
import exh.metadata.metadata.base.RaisedSearchMetadata.Companion.TAG_TYPE_VIRTUAL
import exh.metadata.metadata.base.RaisedSearchMetadata
import exh.metadata.metadata.base.RaisedTag
import exh.source.DelegatedHttpSource
import exh.ui.metadata.adapters.PururinDescriptionAdapter
@ -108,7 +108,7 @@ class Pururin(delegate: HttpSource, val context: Context) :
tags += RaisedTag(
namespace,
searchUrl.lastPathSegment!!.substringBefore("."),
if (namespace != PururinSearchMetadata.TAG_NAMESPACE_CATEGORY) PururinSearchMetadata.TAG_TYPE_DEFAULT else TAG_TYPE_VIRTUAL
if (namespace != PururinSearchMetadata.TAG_NAMESPACE_CATEGORY) PururinSearchMetadata.TAG_TYPE_DEFAULT else RaisedSearchMetadata.TAG_TYPE_VIRTUAL
)
}
}
@ -122,7 +122,7 @@ class Pururin(delegate: HttpSource, val context: Context) :
"www.pururin.io"
)
override suspend fun mapUrlToMangaUrl(uri: Uri): String? {
override suspend fun mapUrlToMangaUrl(uri: Uri): String {
return "${PururinSearchMetadata.BASE_URL}/gallery/${uri.pathSegments[1]}/${uri.lastPathSegment}"
}

View File

@ -90,44 +90,6 @@ class EHentaiSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
gId?.let { gId ->
gToken?.let { gToken ->
manga.url = idAndTokenToUrl(gId, gToken)
}
}
thumbnailUrl?.let { manga.thumbnail_url = it }
// No title bug?
val titleObj = if (Injekt.get<PreferencesHelper>().useJapaneseTitle().get()) {
altTitle ?: title
} else {
title
}
titleObj?.let { manga.title = it }
// Set artist (if we can find one)
tags.filter { it.namespace == EH_ARTIST_NAMESPACE }.let { tags ->
if (tags.isNotEmpty()) manga.artist = tags.joinToString(transform = { it.name })
}
// Copy tags -> genres
manga.genre = tagsToGenreString()
// Try to automatically identify if it is ongoing, we try not to be too lenient here to avoid making mistakes
// We default to completed
manga.status = SManga.COMPLETED
title?.let { t ->
MetadataUtil.ONGOING_SUFFIX.find {
t.endsWith(it, ignoreCase = true)
}?.let {
manga.status = SManga.ONGOING
}
}
manga.description = "meta"
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()

View File

@ -38,24 +38,6 @@ class EightMusesSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
manga.url = path.joinToString("/", prefix = "/")
title?.let {
manga.title = it
}
thumbnailUrl?.let {
manga.thumbnail_url = it
}
manga.artist = tags.ofNamespace(ARTIST_NAMESPACE).joinToString { it.name }
manga.genre = tagsToGenreString()
manga.description = "meta"
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()
title?.let { pairs += context.getString(R.string.title) to it }

View File

@ -46,27 +46,6 @@ class HBrowseSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
hbUrl?.let {
manga.url = it
}
title?.let {
manga.title = it
}
// Guess thumbnail URL if manga does not have thumbnail URL
if (manga.thumbnail_url.isNullOrBlank()) {
manga.thumbnail_url = guessThumbnailUrl(hbId.toString())
}
manga.artist = tags.ofNamespace(ARTIST_NAMESPACE).joinToString { it.name }
manga.genre = tagsToGenreString()
manga.description = "meta"
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()
hbId?.let { pairs += context.getString(R.string.id) to it.toString() }

View File

@ -50,21 +50,6 @@ class HentaiCafeSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
thumbnailUrl?.let { manga.thumbnail_url = it }
manga.title = title!!
manga.artist = artist
manga.author = artist
// Not available
manga.status = SManga.UNKNOWN
manga.genre = tagsToGenreString()
manga.description = "meta"
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()
hcId?.let { pairs += context.getString(R.string.id) to it }

View File

@ -62,23 +62,6 @@ class HitomiSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
thumbnailUrl?.let { manga.thumbnail_url = it }
title?.let {
manga.title = it
}
// Copy tags -> genres
manga.genre = tagsToGenreString()
manga.artist = artists.joinToString()
manga.status = SManga.UNKNOWN
manga.description = "meta"
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()
with(context) {

View File

@ -78,42 +78,6 @@ class MangaDexSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
mdUrl?.let {
manga.url = try {
val uri = it.toUri()
val out = uri.path!!.removePrefix("/api")
out + if (out.endsWith("/")) "" else "/"
} catch (e: Exception) {
it
}
}
title?.let {
manga.title = it
}
manga.thumbnail_url = thumbnail_url
author?.let {
manga.author = it
}
artist?.let {
manga.artist = it
}
status?.let {
manga.status = it
}
manga.genre = tagsToGenreString()
description?.let {
manga.description = it
}
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()
mdId?.let { pairs += context.getString(R.string.id) to it }

View File

@ -3,6 +3,8 @@ package exh.metadata.metadata
import android.content.Context
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.model.toMangaInfo
import eu.kanade.tachiyomi.source.model.toSManga
import exh.metadata.MetadataUtil
import exh.metadata.metadata.base.RaisedSearchMetadata
import kotlinx.serialization.Serializable
@ -85,43 +87,6 @@ class NHentaiSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
nhId?.let { manga.url = nhIdToPath(it) }
if (mediaId != null) {
typeToExtension(coverImageType)?.let {
manga.thumbnail_url = "https://t.nhentai.net/galleries/$mediaId/cover.$it"
}
}
manga.title = when (preferredTitle) {
TITLE_TYPE_SHORT -> shortTitle ?: englishTitle ?: japaneseTitle!!
0, TITLE_TYPE_ENGLISH -> englishTitle ?: japaneseTitle ?: shortTitle!!
else -> englishTitle ?: japaneseTitle ?: shortTitle!!
}
// Set artist (if we can find one)
tags.filter { it.namespace == NHENTAI_ARTIST_NAMESPACE }.let { tags ->
if (tags.isNotEmpty()) manga.artist = tags.joinToString(transform = { it.name })
}
// Copy tags -> genres
manga.genre = tagsToGenreString()
// Try to automatically identify if it is ongoing, we try not to be too lenient here to avoid making mistakes
// We default to completed
manga.status = SManga.COMPLETED
englishTitle?.let { t ->
MetadataUtil.ONGOING_SUFFIX.find {
t.endsWith(it, ignoreCase = true)
}?.let {
manga.status = SManga.ONGOING
}
}
manga.description = "meta"
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()
nhId?.let { pairs += context.getString(R.string.id) to it.toString() }

View File

@ -64,32 +64,6 @@ class PervEdenSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
url?.let { manga.url = it }
thumbnailUrl?.let { manga.thumbnail_url = it }
title?.let {
manga.title = it
}
artist?.let {
manga.artist = it
}
status?.let {
manga.status = when (it) {
"Ongoing" -> SManga.ONGOING
"Completed", "Suspended" -> SManga.COMPLETED
else -> SManga.UNKNOWN
}
}
// Copy tags -> genres
manga.genre = tagsToGenreString()
manga.description = "meta"
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()
pvId?.let { pairs += context.getString(R.string.id) to it }

View File

@ -54,28 +54,6 @@ class PururinSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
prId?.let { prId ->
prShortLink?.let { prShortLink ->
manga.url = "/gallery/$prId/$prShortLink"
}
}
(title ?: altTitle)?.let {
manga.title = it
}
thumbnailUrl?.let {
manga.thumbnail_url = it
}
manga.artist = tags.ofNamespace(TAG_NAMESPACE_ARTIST).joinToString { it.name }
manga.genre = tagsToGenreString()
manga.description = "meta"
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()
prId?.let { pairs += context.getString(R.string.id) to it.toString() }
@ -100,6 +78,6 @@ class PururinSearchMetadata : RaisedSearchMetadata() {
private const val TAG_NAMESPACE_ARTIST = "artist"
const val TAG_NAMESPACE_CATEGORY = "category"
val BASE_URL = "https://pururin.io"
const val BASE_URL = "https://pururin.io"
}
}

View File

@ -65,20 +65,6 @@ class TsuminoSearchMetadata : RaisedSearchMetadata() {
)
}
override fun copyTo(manga: SManga) {
title?.let { manga.title = it }
manga.thumbnail_url = BASE_URL.replace("www", "content") + thumbUrlFromId(tmId.toString())
artist?.let { manga.artist = it }
manga.status = SManga.UNKNOWN
// Copy tags -> genres
manga.genre = tagsToGenreString()
manga.description = "meta"
}
override fun getExtraInfoPairs(context: Context): List<Pair<String, String>> {
val pairs = mutableListOf<Pair<String, String>>()
tmId?.let { pairs += context.getString(R.string.id) to it.toString() }

View File

@ -2,6 +2,8 @@ package exh.metadata.metadata.base
import android.content.Context
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.model.toMangaInfo
import eu.kanade.tachiyomi.source.model.toSManga
import exh.metadata.forEach
import exh.metadata.metadata.EHentaiSearchMetadata
import exh.metadata.metadata.EightMusesSearchMetadata
@ -56,7 +58,10 @@ abstract class RaisedSearchMetadata {
if (newTitle != null) titles += RaisedTitle(newTitle, type)
}
abstract fun copyTo(manga: SManga)
open fun copyTo(manga: SManga) {
val infoManga = createMangaInfo(manga.toMangaInfo()).toSManga()
manga.copyFrom(infoManga)
}
abstract fun createMangaInfo(manga: MangaInfo): MangaInfo