Improve Hitomi tag list
This commit is contained in:
parent
b6f454ba66
commit
478d7f989d
@ -35,6 +35,7 @@ import exh.log.xLogD
|
||||
import exh.metadata.MetadataUtil
|
||||
import exh.metadata.metadata.EHentaiSearchMetadata
|
||||
import exh.metadata.metadata.EHentaiSearchMetadata.Companion.EH_GENRE_NAMESPACE
|
||||
import exh.metadata.metadata.EHentaiSearchMetadata.Companion.EH_META_NAMESPACE
|
||||
import exh.metadata.metadata.EHentaiSearchMetadata.Companion.TAG_TYPE_LIGHT
|
||||
import exh.metadata.metadata.EHentaiSearchMetadata.Companion.TAG_TYPE_NORMAL
|
||||
import exh.metadata.metadata.EHentaiSearchMetadata.Companion.TAG_TYPE_WEAK
|
||||
@ -654,24 +655,25 @@ class EHentai(
|
||||
tags.clear()
|
||||
select("#taglist tr").forEach {
|
||||
val namespace = it.select(".tc").text().removeSuffix(":")
|
||||
tags.addAll(
|
||||
it.select("div").map { element ->
|
||||
RaisedTag(
|
||||
namespace,
|
||||
element.text().trim(),
|
||||
when {
|
||||
element.hasClass("gtl") -> TAG_TYPE_LIGHT
|
||||
element.hasClass("gtw") -> TAG_TYPE_WEAK
|
||||
else -> TAG_TYPE_NORMAL
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
tags += it.select("div").map { element ->
|
||||
RaisedTag(
|
||||
namespace,
|
||||
element.text().trim(),
|
||||
when {
|
||||
element.hasClass("gtl") -> TAG_TYPE_LIGHT
|
||||
element.hasClass("gtw") -> TAG_TYPE_WEAK
|
||||
else -> TAG_TYPE_NORMAL
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// Add genre as virtual tag
|
||||
genre?.let {
|
||||
tags.add(RaisedTag(EH_GENRE_NAMESPACE, it, TAG_TYPE_VIRTUAL))
|
||||
tags += RaisedTag(EH_GENRE_NAMESPACE, it, TAG_TYPE_VIRTUAL)
|
||||
}
|
||||
if (aged) {
|
||||
tags += RaisedTag(EH_META_NAMESPACE, "aged", TAG_TYPE_VIRTUAL)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -54,23 +54,31 @@ class Hitomi(delegate: HttpSource, val context: Context) :
|
||||
|
||||
title = galleryElement.selectFirst("h1")!!.text()
|
||||
artists = galleryElement.select("h2 a").map { it.text() }
|
||||
tags += artists.map { RaisedTag("artist", it, RaisedSearchMetadata.TAG_TYPE_VIRTUAL) }
|
||||
tags += artists.map { RaisedTag("artist", it, HitomiSearchMetadata.TAG_TYPE_DEFAULT) }
|
||||
|
||||
input.select(".gallery-info tr").forEach { galleryInfoElement ->
|
||||
val content = galleryInfoElement.child(1)
|
||||
when (galleryInfoElement.child(0).text().lowercase()) {
|
||||
"group" -> {
|
||||
group = content.text()
|
||||
tags += RaisedTag("group", group!!, RaisedSearchMetadata.TAG_TYPE_VIRTUAL)
|
||||
val group = content.text()
|
||||
tags += RaisedTag(
|
||||
"group",
|
||||
group,
|
||||
if (group != "N/A") {
|
||||
HitomiSearchMetadata.TAG_TYPE_DEFAULT
|
||||
} else {
|
||||
RaisedSearchMetadata.TAG_TYPE_VIRTUAL
|
||||
}
|
||||
)
|
||||
}
|
||||
"type" -> {
|
||||
genre = content.text()
|
||||
tags += RaisedTag("type", genre!!, RaisedSearchMetadata.TAG_TYPE_VIRTUAL)
|
||||
tags += RaisedTag("genre", genre!!, RaisedSearchMetadata.TAG_TYPE_VIRTUAL)
|
||||
}
|
||||
"series" -> {
|
||||
series = content.select("a").map { it.text() }
|
||||
val series = content.select("a").map { it.text() }
|
||||
tags += series.map {
|
||||
RaisedTag("series", it, RaisedSearchMetadata.TAG_TYPE_VIRTUAL)
|
||||
RaisedTag("series", it, HitomiSearchMetadata.TAG_TYPE_DEFAULT)
|
||||
}
|
||||
}
|
||||
"language" -> {
|
||||
@ -80,7 +88,7 @@ class Hitomi(delegate: HttpSource, val context: Context) :
|
||||
}
|
||||
}
|
||||
"characters" -> {
|
||||
characters = content.select("a").map { it.text() }
|
||||
val characters = content.select("a").map { it.text() }
|
||||
tags += characters.map {
|
||||
RaisedTag(
|
||||
"character",
|
||||
|
@ -93,7 +93,15 @@ class NHentai(delegate: HttpSource, val context: Context) :
|
||||
jsonResponse.tags.filter {
|
||||
it.type != null && it.name != null
|
||||
}.mapTo(tags) {
|
||||
RaisedTag(it.type!!, it.name!!, if (it.type == NHentaiSearchMetadata.NHENTAI_CATEGORIES_NAMESPACE) RaisedSearchMetadata.TAG_TYPE_VIRTUAL else NHentaiSearchMetadata.TAG_TYPE_DEFAULT)
|
||||
RaisedTag(
|
||||
it.type!!,
|
||||
it.name!!,
|
||||
if (it.type == NHentaiSearchMetadata.NHENTAI_CATEGORIES_NAMESPACE) {
|
||||
RaisedSearchMetadata.TAG_TYPE_VIRTUAL
|
||||
} else {
|
||||
NHentaiSearchMetadata.TAG_TYPE_DEFAULT
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -126,6 +126,7 @@ class EHentaiSearchMetadata : RaisedSearchMetadata() {
|
||||
const val EH_GENRE_NAMESPACE = "genre"
|
||||
private const val EH_ARTIST_NAMESPACE = "artist"
|
||||
const val EH_LANGUAGE_NAMESPACE = "language"
|
||||
const val EH_META_NAMESPACE = "meta"
|
||||
|
||||
private fun splitGalleryUrl(url: String) =
|
||||
url.let {
|
||||
|
@ -26,16 +26,10 @@ class HitomiSearchMetadata : RaisedSearchMetadata() {
|
||||
|
||||
var artists: List<String> = emptyList()
|
||||
|
||||
var group: String? = null
|
||||
|
||||
var genre: String? = null
|
||||
|
||||
var language: String? = null
|
||||
|
||||
var series: List<String> = emptyList()
|
||||
|
||||
var characters: List<String> = emptyList()
|
||||
|
||||
var uploadDate: Long? = null
|
||||
|
||||
override fun createMangaInfo(manga: MangaInfo): MangaInfo {
|
||||
@ -69,11 +63,8 @@ class HitomiSearchMetadata : RaisedSearchMetadata() {
|
||||
title?.let { getString(R.string.title) to it },
|
||||
thumbnailUrl?.let { getString(R.string.thumbnail_url) to it },
|
||||
artists.nullIfEmpty()?.joinToString()?.let { getString(R.string.artist) to it },
|
||||
group?.let { getString(R.string.group) to it },
|
||||
genre?.let { getString(R.string.genre) to it },
|
||||
language?.let { getString(R.string.language) to it },
|
||||
series.nullIfEmpty()?.joinToString()?.let { getString(R.string.series) to it },
|
||||
characters.nullIfEmpty()?.joinToString()?.let { getString(R.string.characters) to it },
|
||||
uploadDate?.let { getString(R.string.date_posted) to MetadataUtil.EX_DATE_FORMAT.format(Date(it)) }
|
||||
)
|
||||
}
|
||||
|
@ -44,14 +44,12 @@ class HitomiDescriptionAdapter(
|
||||
} ?: meta.genre ?: itemView.context.getString(R.string.unknown)
|
||||
|
||||
binding.whenPosted.text = MetadataUtil.EX_DATE_FORMAT.format(Date(meta.uploadDate ?: 0))
|
||||
binding.group.text = meta.group ?: itemView.context.getString(R.string.unknown)
|
||||
binding.language.text = meta.language ?: itemView.context.getString(R.string.unknown)
|
||||
|
||||
binding.moreInfo.bindDrawable(itemView.context, R.drawable.ic_info_24dp)
|
||||
|
||||
listOf(
|
||||
binding.genre,
|
||||
binding.group,
|
||||
binding.language,
|
||||
binding.whenPosted
|
||||
).forEach { textView ->
|
||||
|
@ -65,17 +65,6 @@
|
||||
app:layout_constraintBottom_toBottomOf="@+id/language"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/language" />
|
||||
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/group"
|
||||
style="@style/TextAppearance.Regular.Body1.Secondary"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/language" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</LinearLayout>
|
Loading…
x
Reference in New Issue
Block a user