Skip to content

Commit 7d38c10

Browse files
committed
Fix: delegate nhentai failed to load cover
Site might intended putting cover's type 'w' in JSON while it's in fact using 'cover.jpg.webp'
1 parent 974cc4d commit 7d38c10

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

app/src/main/java/eu/kanade/tachiyomi/source/online/all/NHentai.kt

+16-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import eu.kanade.tachiyomi.source.online.HttpSource
1717
import eu.kanade.tachiyomi.source.online.MetadataSource
1818
import eu.kanade.tachiyomi.source.online.NamespaceSource
1919
import eu.kanade.tachiyomi.source.online.UrlImportableSource
20+
import eu.kanade.tachiyomi.util.asJsoup
2021
import exh.metadata.metadata.NHentaiSearchMetadata
2122
import exh.metadata.metadata.RaisedSearchMetadata
2223
import exh.metadata.metadata.base.RaisedTag
@@ -29,6 +30,7 @@ import kotlinx.serialization.Serializable
2930
import kotlinx.serialization.json.Json
3031
import okhttp3.CacheControl
3132
import okhttp3.Response
33+
import org.jsoup.nodes.Document
3234

3335
class NHentai(delegate: HttpSource, val context: Context) :
3436
DelegatedHttpSource(delegate),
@@ -101,7 +103,8 @@ class NHentai(delegate: HttpSource, val context: Context) :
101103
preferredTitle = this@NHentai.preferredTitle
102104

103105
jsonResponse.images?.let { images ->
104-
coverImageType = images.cover?.type
106+
coverImageType = input.asJsoup(strdata).parseCoverType()
107+
?: images.cover?.type
105108
images.pages.mapNotNull {
106109
it.type
107110
}.let {
@@ -129,6 +132,18 @@ class NHentai(delegate: HttpSource, val context: Context) :
129132
}
130133
}
131134

135+
// KMK -->
136+
/**
137+
* Site JSON is saying cover of type `w` but instead it's using cover like `cover.jpg.webp`
138+
*/
139+
private fun Document.parseCoverType(): String? {
140+
return selectFirst("#cover > a > img")?.attr("data-src")
141+
?.substringAfterLast('/')
142+
?.substringAfter('.')
143+
?.first()?.toString()
144+
}
145+
// KMK <--
146+
132147
@Serializable
133148
data class JsonResponse(
134149
val id: Long,

source-api/src/commonMain/kotlin/exh/metadata/metadata/NHentaiSearchMetadata.kt

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class NHentaiSearchMetadata : RaisedSearchMetadata() {
5050

5151
val cover = if (mediaId != null) {
5252
// AZ -->
53+
// Default media server for cover is always 1 (see in page header)
5354
val server = mediaServer ?: 1
5455
// AZ <--
5556
typeToExtension(coverImageType)?.let {

0 commit comments

Comments
 (0)