@@ -17,6 +17,7 @@ import eu.kanade.tachiyomi.source.online.HttpSource
17
17
import eu.kanade.tachiyomi.source.online.MetadataSource
18
18
import eu.kanade.tachiyomi.source.online.NamespaceSource
19
19
import eu.kanade.tachiyomi.source.online.UrlImportableSource
20
+ import eu.kanade.tachiyomi.util.asJsoup
20
21
import exh.metadata.metadata.NHentaiSearchMetadata
21
22
import exh.metadata.metadata.RaisedSearchMetadata
22
23
import exh.metadata.metadata.base.RaisedTag
@@ -29,6 +30,7 @@ import kotlinx.serialization.Serializable
29
30
import kotlinx.serialization.json.Json
30
31
import okhttp3.CacheControl
31
32
import okhttp3.Response
33
+ import org.jsoup.nodes.Document
32
34
33
35
class NHentai (delegate : HttpSource , val context : Context ) :
34
36
DelegatedHttpSource (delegate),
@@ -101,7 +103,8 @@ class NHentai(delegate: HttpSource, val context: Context) :
101
103
preferredTitle = this @NHentai.preferredTitle
102
104
103
105
jsonResponse.images?.let { images ->
104
- coverImageType = images.cover?.type
106
+ coverImageType = input.asJsoup(strdata).parseCoverType()
107
+ ? : images.cover?.type
105
108
images.pages.mapNotNull {
106
109
it.type
107
110
}.let {
@@ -129,6 +132,18 @@ class NHentai(delegate: HttpSource, val context: Context) :
129
132
}
130
133
}
131
134
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
+
132
147
@Serializable
133
148
data class JsonResponse (
134
149
val id : Long ,
0 commit comments