NHentai: configurable User-Agent
This commit is contained in:
@@ -25,6 +25,7 @@ import kotlin.random.Random
|
|||||||
|
|
||||||
private const val TOO_MANY_REQUESTS = 429
|
private const val TOO_MANY_REQUESTS = 429
|
||||||
private const val MAX_RETRY_COUNT = 5
|
private const val MAX_RETRY_COUNT = 5
|
||||||
|
private val JSON_MEDIA_TYPE get() = "application/json; charset=utf-8".toMediaType()
|
||||||
|
|
||||||
@MangaSourceParser("REAPERCOMICS", "ReaperComics", "en")
|
@MangaSourceParser("REAPERCOMICS", "ReaperComics", "en")
|
||||||
internal class ReaperComics(context: MangaLoaderContext) :
|
internal class ReaperComics(context: MangaLoaderContext) :
|
||||||
@@ -153,8 +154,9 @@ internal class ReaperComics(context: MangaLoaderContext) :
|
|||||||
|
|
||||||
override suspend fun getAvailableTags(): Set<MangaTag> = emptySet()
|
override suspend fun getAvailableTags(): Set<MangaTag> = emptySet()
|
||||||
|
|
||||||
companion object {
|
override fun onCreateConfig(keys: MutableCollection<ConfigKey<*>>) {
|
||||||
private val JSON_MEDIA_TYPE = "application/json; charset=utf-8".toMediaType()
|
super.onCreateConfig(keys)
|
||||||
|
keys.add(userAgentKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun chapterListNextPageSelector(): String = "button[wire:click*=nextPage]"
|
private fun chapterListNextPageSelector(): String = "button[wire:click*=nextPage]"
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.galleryadults.all
|
package org.koitharu.kotatsu.parsers.site.galleryadults.all
|
||||||
|
|
||||||
|
import okhttp3.Headers
|
||||||
import org.jsoup.internal.StringUtil
|
import org.jsoup.internal.StringUtil
|
||||||
import org.jsoup.nodes.Document
|
import org.jsoup.nodes.Document
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
|
import org.koitharu.kotatsu.parsers.config.ConfigKey
|
||||||
import org.koitharu.kotatsu.parsers.model.*
|
import org.koitharu.kotatsu.parsers.model.*
|
||||||
|
import org.koitharu.kotatsu.parsers.network.UserAgents
|
||||||
import org.koitharu.kotatsu.parsers.site.galleryadults.GalleryAdultsParser
|
import org.koitharu.kotatsu.parsers.site.galleryadults.GalleryAdultsParser
|
||||||
import org.koitharu.kotatsu.parsers.util.*
|
import org.koitharu.kotatsu.parsers.util.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -28,6 +31,13 @@ internal class NHentaiParser(context: MangaLoaderContext) :
|
|||||||
|
|
||||||
override val isMultipleTagsSupported = true
|
override val isMultipleTagsSupported = true
|
||||||
|
|
||||||
|
private val userAgentKey = ConfigKey.UserAgent(UserAgents.DEFAULT_BROWSER)
|
||||||
|
|
||||||
|
override val headers: Headers
|
||||||
|
get() = super.headers.newBuilder()
|
||||||
|
.set("User-Agent", config[userAgentKey])
|
||||||
|
.build()
|
||||||
|
|
||||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||||
|
|
||||||
val url = buildString {
|
val url = buildString {
|
||||||
@@ -67,7 +77,7 @@ internal class NHentaiParser(context: MangaLoaderContext) :
|
|||||||
if (filter.sortOrder == SortOrder.POPULARITY) {
|
if (filter.sortOrder == SortOrder.POPULARITY) {
|
||||||
append("popular")
|
append("popular")
|
||||||
}
|
}
|
||||||
if(page > 1){
|
if (page > 1) {
|
||||||
append("?")
|
append("?")
|
||||||
}
|
}
|
||||||
} else if (filter.locale != null) {
|
} else if (filter.locale != null) {
|
||||||
@@ -77,7 +87,7 @@ internal class NHentaiParser(context: MangaLoaderContext) :
|
|||||||
if (filter.sortOrder == SortOrder.POPULARITY) {
|
if (filter.sortOrder == SortOrder.POPULARITY) {
|
||||||
append("popular")
|
append("popular")
|
||||||
}
|
}
|
||||||
if(page > 1){
|
if (page > 1) {
|
||||||
append("?")
|
append("?")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -91,7 +101,7 @@ internal class NHentaiParser(context: MangaLoaderContext) :
|
|||||||
|
|
||||||
null -> append("/?")
|
null -> append("/?")
|
||||||
}
|
}
|
||||||
if(page > 1){
|
if (page > 1) {
|
||||||
append("page=")
|
append("page=")
|
||||||
append(page.toString())
|
append(page.toString())
|
||||||
}
|
}
|
||||||
@@ -146,6 +156,11 @@ internal class NHentaiParser(context: MangaLoaderContext) :
|
|||||||
Locale.CHINESE,
|
Locale.CHINESE,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
override fun onCreateConfig(keys: MutableCollection<ConfigKey<*>>) {
|
||||||
|
super.onCreateConfig(keys)
|
||||||
|
keys.add(userAgentKey)
|
||||||
|
}
|
||||||
|
|
||||||
private fun buildQuery(tags: Collection<MangaTag>, language: Locale?): String {
|
private fun buildQuery(tags: Collection<MangaTag>, language: Locale?): String {
|
||||||
val joiner = StringUtil.StringJoiner(" ")
|
val joiner = StringUtil.StringJoiner(" ")
|
||||||
tags.forEach { tag ->
|
tags.forEach { tag ->
|
||||||
|
|||||||
Reference in New Issue
Block a user