mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01: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