mirror of
https://github.com/mihonapp/mihon.git
synced 2025-07-01 05:27:50 +02:00
Attempt to add hitomi.la source (still broken) and code cleanup
This commit is contained in:
@ -4,20 +4,22 @@ package exh
|
||||
* Source helpers
|
||||
*/
|
||||
|
||||
val LEWD_SOURCE_SERIES = 6900L
|
||||
val EH_SOURCE_ID = LEWD_SOURCE_SERIES + 1
|
||||
val EXH_SOURCE_ID = LEWD_SOURCE_SERIES + 2
|
||||
val EH_METADATA_SOURCE_ID = LEWD_SOURCE_SERIES + 3
|
||||
val EXH_METADATA_SOURCE_ID = LEWD_SOURCE_SERIES + 4
|
||||
const val LEWD_SOURCE_SERIES = 6900L
|
||||
const val EH_SOURCE_ID = LEWD_SOURCE_SERIES + 1
|
||||
const val EXH_SOURCE_ID = LEWD_SOURCE_SERIES + 2
|
||||
const val EH_METADATA_SOURCE_ID = LEWD_SOURCE_SERIES + 3
|
||||
const val EXH_METADATA_SOURCE_ID = LEWD_SOURCE_SERIES + 4
|
||||
|
||||
val PERV_EDEN_EN_SOURCE_ID = LEWD_SOURCE_SERIES + 5
|
||||
val PERV_EDEN_IT_SOURCE_ID = LEWD_SOURCE_SERIES + 6
|
||||
const val PERV_EDEN_EN_SOURCE_ID = LEWD_SOURCE_SERIES + 5
|
||||
const val PERV_EDEN_IT_SOURCE_ID = LEWD_SOURCE_SERIES + 6
|
||||
|
||||
val NHENTAI_SOURCE_ID = LEWD_SOURCE_SERIES + 7
|
||||
const val NHENTAI_SOURCE_ID = LEWD_SOURCE_SERIES + 7
|
||||
|
||||
val HENTAI_CAFE_SOURCE_ID = LEWD_SOURCE_SERIES + 8
|
||||
const val HENTAI_CAFE_SOURCE_ID = LEWD_SOURCE_SERIES + 8
|
||||
|
||||
val TSUMINO_SOURCE_ID = LEWD_SOURCE_SERIES + 9
|
||||
const val TSUMINO_SOURCE_ID = LEWD_SOURCE_SERIES + 9
|
||||
|
||||
const val HITOMI_SOURCE_ID = LEWD_SOURCE_SERIES + 10
|
||||
|
||||
fun isLewdSource(source: Long) = source in 6900..6999
|
||||
|
||||
|
@ -90,9 +90,9 @@ open class ExGalleryMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
val exh: Boolean
|
||||
) : GalleryQuery<ExGalleryMetadata>(ExGalleryMetadata::class) {
|
||||
override fun map() = mapOf(
|
||||
ExGalleryMetadata::gId to Query::gId,
|
||||
ExGalleryMetadata::gToken to Query::gToken,
|
||||
ExGalleryMetadata::exh to Query::exh
|
||||
::gId to Query::gId,
|
||||
::gToken to Query::gToken,
|
||||
::exh to Query::exh
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ open class HentaiCafeMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
|
||||
@Ignore
|
||||
override val titleFields = listOf(
|
||||
HentaiCafeMetadata::title.name
|
||||
::title.name
|
||||
)
|
||||
|
||||
@Index
|
||||
|
153
app/src/main/java/exh/metadata/models/HitomiGalleryMetadata.kt
Normal file
153
app/src/main/java/exh/metadata/models/HitomiGalleryMetadata.kt
Normal file
@ -0,0 +1,153 @@
|
||||
package exh.metadata.models
|
||||
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import exh.metadata.EX_DATE_FORMAT
|
||||
import exh.metadata.buildTagsDescription
|
||||
import exh.metadata.joinTagsToGenreString
|
||||
import exh.plusAssign
|
||||
import io.realm.RealmList
|
||||
import io.realm.RealmObject
|
||||
import io.realm.annotations.Ignore
|
||||
import io.realm.annotations.Index
|
||||
import io.realm.annotations.PrimaryKey
|
||||
import io.realm.annotations.RealmClass
|
||||
import java.util.*
|
||||
|
||||
@RealmClass
|
||||
open class HitomiGalleryMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
@PrimaryKey
|
||||
override var uuid: String = UUID.randomUUID().toString()
|
||||
|
||||
@Index
|
||||
var hlId: String? = null
|
||||
|
||||
var thumbnailUrl: String? = null
|
||||
|
||||
var artist: String? = null
|
||||
|
||||
var group: String? = null
|
||||
|
||||
var type: String? = null
|
||||
|
||||
var language: String? = null
|
||||
|
||||
var languageSimple: String? = null
|
||||
|
||||
var series: RealmList<String> = RealmList()
|
||||
|
||||
var characters: RealmList<String> = RealmList()
|
||||
|
||||
var buyLink: String? = null
|
||||
|
||||
var uploadDate: Long? = null
|
||||
|
||||
override var tags: RealmList<Tag> = RealmList()
|
||||
|
||||
// Sites does not show uploader
|
||||
override var uploader: String?
|
||||
get() = "admin"
|
||||
set(value) {}
|
||||
|
||||
var url get() = hlId?.let { urlFromHlId(it) }
|
||||
set(a) {
|
||||
a?.let {
|
||||
hlId = hlIdFromUrl(a)
|
||||
}
|
||||
}
|
||||
|
||||
@Index
|
||||
override var mangaId: Long? = null
|
||||
|
||||
@Index
|
||||
var title: String? = null
|
||||
|
||||
override fun getTitles() = listOfNotNull(title)
|
||||
|
||||
@Ignore
|
||||
override val titleFields = listOf(
|
||||
::title.name
|
||||
)
|
||||
|
||||
class EmptyQuery : GalleryQuery<HitomiGalleryMetadata>(HitomiGalleryMetadata::class)
|
||||
|
||||
class UrlQuery(
|
||||
val url: String
|
||||
) : GalleryQuery<HitomiGalleryMetadata>(HitomiGalleryMetadata::class) {
|
||||
override fun transform() = Query(
|
||||
hlIdFromUrl(url)
|
||||
)
|
||||
}
|
||||
|
||||
class Query(val hlId: String): GalleryQuery<HitomiGalleryMetadata>(HitomiGalleryMetadata::class) {
|
||||
override fun map() = mapOf(
|
||||
HitomiGalleryMetadata::hlId to Query::hlId
|
||||
)
|
||||
}
|
||||
|
||||
override fun copyTo(manga: SManga) {
|
||||
thumbnailUrl?.let { manga.thumbnail_url = it }
|
||||
|
||||
val titleDesc = StringBuilder()
|
||||
|
||||
title?.let {
|
||||
manga.title = it
|
||||
titleDesc += "Title: $it\n"
|
||||
}
|
||||
|
||||
val detailsDesc = StringBuilder()
|
||||
|
||||
artist?.let {
|
||||
manga.artist = it
|
||||
manga.author = it
|
||||
|
||||
detailsDesc += "Artist: $it\n"
|
||||
}
|
||||
|
||||
group?.let {
|
||||
detailsDesc += "Group: $it\n"
|
||||
}
|
||||
|
||||
type?.let {
|
||||
detailsDesc += "Type: $it\n"
|
||||
}
|
||||
|
||||
(language ?: languageSimple ?: "none").let {
|
||||
detailsDesc += "Language: $it\n"
|
||||
}
|
||||
|
||||
if(series.isNotEmpty())
|
||||
detailsDesc += "Series: ${series.joinToString()}\n"
|
||||
|
||||
if(characters.isNotEmpty())
|
||||
detailsDesc += "Characters: ${characters.joinToString()}\n"
|
||||
|
||||
uploadDate?.let {
|
||||
detailsDesc += "Upload date: ${EX_DATE_FORMAT.format(Date(it))}\n"
|
||||
}
|
||||
|
||||
buyLink?.let {
|
||||
detailsDesc += "Buy at: $it"
|
||||
}
|
||||
|
||||
manga.status = SManga.UNKNOWN
|
||||
|
||||
//Copy tags -> genres
|
||||
manga.genre = joinTagsToGenreString(this)
|
||||
|
||||
val tagsDesc = buildTagsDescription(this)
|
||||
|
||||
manga.description = listOf(titleDesc.toString(), detailsDesc.toString(), tagsDesc.toString())
|
||||
.filter(String::isNotBlank)
|
||||
.joinToString(separator = "\n")
|
||||
}
|
||||
|
||||
companion object {
|
||||
val BASE_URL = "https://hitomi.la"
|
||||
|
||||
fun hlIdFromUrl(url: String)
|
||||
= url.split('/').last().substringBeforeLast('.')
|
||||
|
||||
fun urlFromHlId(id: String)
|
||||
= "$BASE_URL/galleries/$id"
|
||||
}
|
||||
}
|
@ -79,7 +79,7 @@ open class NHentaiMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
val nhId: Long
|
||||
) : GalleryQuery<NHentaiMetadata>(NHentaiMetadata::class) {
|
||||
override fun map() = mapOf(
|
||||
NHentaiMetadata::nhId to Query::nhId
|
||||
::nhId to Query::nhId
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ open class TsuminoMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
|
||||
@Ignore
|
||||
override val titleFields = listOf(
|
||||
TsuminoMetadata::title.name
|
||||
::title.name
|
||||
)
|
||||
|
||||
@Index
|
||||
@ -77,7 +77,7 @@ open class TsuminoMetadata : RealmObject(), SearchableGalleryMetadata {
|
||||
val tmId: String
|
||||
) : GalleryQuery<TsuminoMetadata>(TsuminoMetadata::class) {
|
||||
override fun map() = mapOf(
|
||||
TsuminoMetadata::tmId to Query::tmId
|
||||
::tmId to Query::tmId
|
||||
)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user