nHentai fix language searching in favorites, also cleanup the source
This commit is contained in:
parent
d7509c1ba9
commit
a2f2e7658d
@ -70,11 +70,6 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
val advQuery = combineQuery(filters)
|
val advQuery = combineQuery(filters)
|
||||||
val favoriteFilter = filters.findInstance<FavoriteFilter>()
|
val favoriteFilter = filters.findInstance<FavoriteFilter>()
|
||||||
val uploadedFilter = filters.findInstance<UploadedFilter>()
|
val uploadedFilter = filters.findInstance<UploadedFilter>()
|
||||||
val langFilter = filters.filterIsInstance<FilterLang>().firstOrNull()
|
|
||||||
var langFilterString = ""
|
|
||||||
if (langFilter != null) {
|
|
||||||
langFilterString = SOURCE_LANG_LIST.first { it.first == langFilter.values[langFilter.state] }.second
|
|
||||||
}
|
|
||||||
|
|
||||||
val url: HttpUrl.Builder
|
val url: HttpUrl.Builder
|
||||||
|
|
||||||
@ -84,7 +79,7 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
.addQueryParameter("page", page.toString())
|
.addQueryParameter("page", page.toString())
|
||||||
} else {
|
} else {
|
||||||
url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder()
|
url = "$baseUrl/search".toHttpUrlOrNull()!!.newBuilder()
|
||||||
.addQueryParameter("q", "$query +$langFilterString $advQuery")
|
.addQueryParameter("q", "$query $advQuery")
|
||||||
.addQueryParameter("page", page.toString())
|
.addQueryParameter("page", page.toString())
|
||||||
|
|
||||||
if (uploadedFilter!!.state.isBlank()) {
|
if (uploadedFilter!!.state.isBlank()) {
|
||||||
@ -135,7 +130,7 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
|
|
||||||
override fun mangaDetailsRequest(manga: SManga) = nhGet(baseUrl + manga.url)
|
override fun mangaDetailsRequest(manga: SManga) = nhGet(baseUrl + manga.url)
|
||||||
|
|
||||||
fun parseResultPage(response: Response): MangasPage {
|
private fun parseResultPage(response: Response): MangasPage {
|
||||||
val doc = response.asJsoup()
|
val doc = response.asJsoup()
|
||||||
|
|
||||||
// TODO Parse lang + tags
|
// TODO Parse lang + tags
|
||||||
@ -181,14 +176,14 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
englishTitle = title["english"].nullString
|
englishTitle = title["english"].nullString
|
||||||
}
|
}
|
||||||
|
|
||||||
obj["images"].nullObj?.let {
|
obj["images"].nullObj?.let { images ->
|
||||||
coverImageType = it["cover"]?.get("t").nullString
|
coverImageType = images["cover"]?.get("t").nullString
|
||||||
it["pages"].nullArray?.mapNotNull {
|
images["pages"].nullArray?.mapNotNull {
|
||||||
it?.asJsonObject?.get("t").nullString
|
it?.asJsonObject?.get("t").nullString
|
||||||
}?.let {
|
}?.let {
|
||||||
pageImageTypes = it
|
pageImageTypes = it
|
||||||
}
|
}
|
||||||
thumbnailImageType = it["thumbnail"]?.get("t").nullString
|
thumbnailImageType = images["thumbnail"]?.get("t").nullString
|
||||||
}
|
}
|
||||||
|
|
||||||
scanlator = obj["scanlator"].nullString
|
scanlator = obj["scanlator"].nullString
|
||||||
@ -206,13 +201,13 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getOrLoadMetadata(mangaId: Long?, nhId: Long) = getOrLoadMetadata(mangaId) {
|
private fun getOrLoadMetadata(mangaId: Long?, nhId: Long) = getOrLoadMetadata(mangaId) {
|
||||||
client.newCall(nhGet(baseUrl + NHentaiSearchMetadata.nhIdToPath(nhId)))
|
client.newCall(nhGet(baseUrl + NHentaiSearchMetadata.nhIdToPath(nhId)))
|
||||||
.asObservableSuccess()
|
.asObservableSuccess()
|
||||||
.toSingle()
|
.toSingle()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun fetchChapterList(manga: SManga) = Observable.just(
|
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> = Observable.just(
|
||||||
listOf(
|
listOf(
|
||||||
SChapter.create().apply {
|
SChapter.create().apply {
|
||||||
url = manga.url
|
url = manga.url
|
||||||
@ -222,7 +217,7 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun fetchPageList(chapter: SChapter) = getOrLoadMetadata(chapter.mangaId, NHentaiSearchMetadata.nhUrlToId(chapter.url)).map { metadata ->
|
override fun fetchPageList(chapter: SChapter): Observable<List<Page>> = getOrLoadMetadata(chapter.mangaId, NHentaiSearchMetadata.nhUrlToId(chapter.url)).map { metadata ->
|
||||||
if (metadata.mediaId == null) {
|
if (metadata.mediaId == null) {
|
||||||
emptyList()
|
emptyList()
|
||||||
} else {
|
} else {
|
||||||
@ -235,7 +230,7 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
|
|
||||||
override fun fetchImageUrl(page: Page) = Observable.just(page.imageUrl!!)!!
|
override fun fetchImageUrl(page: Page) = Observable.just(page.imageUrl!!)!!
|
||||||
|
|
||||||
fun imageUrlFromType(mediaId: String, page: Int, t: String) = NHentaiSearchMetadata.typeToExtension(t)?.let {
|
private fun imageUrlFromType(mediaId: String, page: Int, t: String) = NHentaiSearchMetadata.typeToExtension(t)?.let {
|
||||||
"https://i.nhentai.net/galleries/$mediaId/$page.$it"
|
"https://i.nhentai.net/galleries/$mediaId/$page.$it"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,6 +262,14 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
stringBuilder.append(" ")
|
stringBuilder.append(" ")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val langFilter = filters.filterIsInstance<FilterLang>().firstOrNull()
|
||||||
|
if (langFilter != null) {
|
||||||
|
val language = SOURCE_LANG_LIST.first { it.first == langFilter.values[langFilter.state] }.second
|
||||||
|
if (!language.isBlank()) {
|
||||||
|
stringBuilder.append("language:$language")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return stringBuilder.toString()
|
return stringBuilder.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -323,11 +326,11 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
|
|
||||||
private inline fun <reified T> Iterable<*>.findInstance() = find { it is T } as? T
|
private inline fun <reified T> Iterable<*>.findInstance() = find { it is T } as? T
|
||||||
|
|
||||||
val appName by lazy {
|
private val appName by lazy {
|
||||||
context.getString(R.string.app_name)
|
context.getString(R.string.app_name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun nhGet(url: String, tag: Any? = null) = GET(url)
|
private fun nhGet(url: String, tag: Any? = null) = GET(url)
|
||||||
.newBuilder()
|
.newBuilder()
|
||||||
.header(
|
.header(
|
||||||
"User-Agent",
|
"User-Agent",
|
||||||
@ -368,13 +371,11 @@ class NHentai(context: Context) : HttpSource(), LewdSource<NHentaiSearchMetadata
|
|||||||
private val UNICODE_ESCAPE_REGEX = Regex("\\\\u([0-9a-fA-F]{4})")
|
private val UNICODE_ESCAPE_REGEX = Regex("\\\\u([0-9a-fA-F]{4})")
|
||||||
private const val REVERSE_PARAM = "TEH_REVERSE"
|
private const val REVERSE_PARAM = "TEH_REVERSE"
|
||||||
|
|
||||||
private fun defaultSortFilterSelection() = Filter.Sort.Selection(0, false)
|
|
||||||
|
|
||||||
private val SOURCE_LANG_LIST = listOf(
|
private val SOURCE_LANG_LIST = listOf(
|
||||||
Pair("All", ""),
|
Pair("All", ""),
|
||||||
Pair("English", " english"),
|
Pair("English", "english"),
|
||||||
Pair("Japanese", " japanese"),
|
Pair("Japanese", "japanese"),
|
||||||
Pair("Chinese", " chinese")
|
Pair("Chinese", "chinese")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user