nsfw true added in query param (#4051)
* nsfw fix * nsfw preference added * extension version changed from 5 to 6
This commit is contained in:
parent
2824b6c2cf
commit
980a8d2162
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'ReadManhwa'
|
extName = 'ReadManhwa'
|
||||||
pkgNameSuffix = 'en.readmanhwa'
|
pkgNameSuffix = 'en.readmanhwa'
|
||||||
extClass = '.ReadManhwa'
|
extClass = '.ReadManhwa'
|
||||||
extVersionCode = 5
|
extVersionCode = 6
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
package eu.kanade.tachiyomi.extension.en.readmanhwa
|
package eu.kanade.tachiyomi.extension.en.readmanhwa
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import android.support.v7.preference.CheckBoxPreference
|
||||||
|
import android.support.v7.preference.PreferenceScreen
|
||||||
import com.github.salomonbrys.kotson.fromJson
|
import com.github.salomonbrys.kotson.fromJson
|
||||||
import com.github.salomonbrys.kotson.get
|
import com.github.salomonbrys.kotson.get
|
||||||
import com.github.salomonbrys.kotson.int
|
import com.github.salomonbrys.kotson.int
|
||||||
|
@ -10,6 +14,7 @@ import com.google.gson.JsonArray
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.network.asObservableSuccess
|
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||||
|
import eu.kanade.tachiyomi.source.ConfigurableSource
|
||||||
import eu.kanade.tachiyomi.source.model.Filter
|
import eu.kanade.tachiyomi.source.model.Filter
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||||
|
@ -26,8 +31,10 @@ import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
|
import uy.kohesive.injekt.Injekt
|
||||||
|
import uy.kohesive.injekt.api.get
|
||||||
|
|
||||||
class ReadManhwa : HttpSource() {
|
class ReadManhwa : ConfigurableSource, HttpSource() {
|
||||||
|
|
||||||
override val name = "ReadManhwa"
|
override val name = "ReadManhwa"
|
||||||
|
|
||||||
|
@ -43,6 +50,10 @@ class ReadManhwa : HttpSource() {
|
||||||
.add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)")
|
.add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)")
|
||||||
.add("X-NSFW", enableNsfw.toString())
|
.add("X-NSFW", enableNsfw.toString())
|
||||||
|
|
||||||
|
private val preferences: SharedPreferences by lazy {
|
||||||
|
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||||
|
}
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient
|
override val client: OkHttpClient = network.cloudflareClient
|
||||||
|
|
||||||
private val gson = Gson()
|
private val gson = Gson()
|
||||||
|
@ -60,11 +71,15 @@ class ReadManhwa : HttpSource() {
|
||||||
|
|
||||||
return MangasPage(mangas, jsonObject["current_page"].int < jsonObject["last_page"].int)
|
return MangasPage(mangas, jsonObject["current_page"].int < jsonObject["last_page"].int)
|
||||||
}
|
}
|
||||||
|
private fun getMangaUrl(url: String): String {
|
||||||
|
return HttpUrl.parse(url)!!.newBuilder()
|
||||||
|
.setQueryParameter("nsfw", isNSFWEnabledInPref().toString()).toString()
|
||||||
|
}
|
||||||
|
|
||||||
// Popular
|
// Popular
|
||||||
|
|
||||||
override fun popularMangaRequest(page: Int): Request {
|
override fun popularMangaRequest(page: Int): Request {
|
||||||
return GET("$baseUrl/api/comics?page=$page&q=&sort=popularity&order=desc&duration=week", headers)
|
return GET(getMangaUrl("$baseUrl/api/comics?page=$page&q=&sort=popularity&order=desc&duration=week"), headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun popularMangaParse(response: Response): MangasPage = parseMangaFromJson(response)
|
override fun popularMangaParse(response: Response): MangasPage = parseMangaFromJson(response)
|
||||||
|
@ -72,7 +87,7 @@ class ReadManhwa : HttpSource() {
|
||||||
// Latest
|
// Latest
|
||||||
|
|
||||||
override fun latestUpdatesRequest(page: Int): Request {
|
override fun latestUpdatesRequest(page: Int): Request {
|
||||||
return GET("$baseUrl/api/comics?page=$page&q=&sort=uploaded_at&order=desc&duration=day", headers)
|
return GET(getMangaUrl("$baseUrl/api/comics?page=$page&q=&sort=uploaded_at&order=desc&duration=day"), headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun latestUpdatesParse(response: Response): MangasPage = parseMangaFromJson(response)
|
override fun latestUpdatesParse(response: Response): MangasPage = parseMangaFromJson(response)
|
||||||
|
@ -87,6 +102,7 @@ class ReadManhwa : HttpSource() {
|
||||||
.addQueryParameter("page", page.toString())
|
.addQueryParameter("page", page.toString())
|
||||||
.addQueryParameter("order", "desc")
|
.addQueryParameter("order", "desc")
|
||||||
.addQueryParameter("q", query)
|
.addQueryParameter("q", query)
|
||||||
|
.addQueryParameter("nsfw", enableNsfw.toString())
|
||||||
|
|
||||||
filters.forEach { filter ->
|
filters.forEach { filter ->
|
||||||
when (filter) {
|
when (filter) {
|
||||||
|
@ -108,10 +124,10 @@ class ReadManhwa : HttpSource() {
|
||||||
.map { mangaDetailsParse(it).apply { initialized = true } }
|
.map { mangaDetailsParse(it).apply { initialized = true } }
|
||||||
|
|
||||||
// Return the real URL for "Open in browser"
|
// Return the real URL for "Open in browser"
|
||||||
override fun mangaDetailsRequest(manga: SManga) = GET("$baseUrl/en/webtoon/${manga.url}", headers)
|
override fun mangaDetailsRequest(manga: SManga) = GET(getMangaUrl("$baseUrl/en/webtoon/${manga.url}"), headers)
|
||||||
|
|
||||||
private fun apiMangaDetailsRequest(manga: SManga): Request {
|
private fun apiMangaDetailsRequest(manga: SManga): Request {
|
||||||
return GET("$baseUrl/api/comics/${manga.url}", headers)
|
return GET(getMangaUrl("$baseUrl/api/comics/${manga.url}"), headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mangaDetailsParse(response: Response): SManga {
|
override fun mangaDetailsParse(response: Response): SManga {
|
||||||
|
@ -145,7 +161,7 @@ class ReadManhwa : HttpSource() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun chapterListRequest(manga: SManga): Request {
|
override fun chapterListRequest(manga: SManga): Request {
|
||||||
return GET("$baseUrl/api/comics/${manga.url}/chapters", headers)
|
return GET(getMangaUrl("$baseUrl/api/comics/${manga.url}/chapters"), headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun chapterListParse(response: Response, titleSlug: String): List<SChapter> {
|
private fun chapterListParse(response: Response, titleSlug: String): List<SChapter> {
|
||||||
|
@ -177,7 +193,7 @@ class ReadManhwa : HttpSource() {
|
||||||
// Pages
|
// Pages
|
||||||
|
|
||||||
override fun pageListRequest(chapter: SChapter): Request {
|
override fun pageListRequest(chapter: SChapter): Request {
|
||||||
return GET("$baseUrl/api/comics/${chapter.url}/images", headers)
|
return GET(getMangaUrl("$baseUrl/api/comics/${chapter.url}/images"), headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun pageListParse(response: Response): List<Page> {
|
override fun pageListParse(response: Response): List<Page> {
|
||||||
|
@ -191,7 +207,7 @@ class ReadManhwa : HttpSource() {
|
||||||
// Filters
|
// Filters
|
||||||
|
|
||||||
override fun getFilterList() = FilterList(
|
override fun getFilterList() = FilterList(
|
||||||
NSFWFilter(),
|
NSFWFilter().apply { state = isNSFWEnabledInPref() },
|
||||||
GenreFilter(getGenreList()),
|
GenreFilter(getGenreList()),
|
||||||
DurationFilter(getDurationList()),
|
DurationFilter(getDurationList()),
|
||||||
SortFilter(getSortList())
|
SortFilter(getSortList())
|
||||||
|
@ -279,4 +295,42 @@ class ReadManhwa : HttpSource() {
|
||||||
Pair("Popularity", "popularity"),
|
Pair("Popularity", "popularity"),
|
||||||
Pair("Date", "uploaded_at")
|
Pair("Date", "uploaded_at")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||||
|
val nsfw = CheckBoxPreference(screen.context).apply {
|
||||||
|
key = NSFW
|
||||||
|
title = NSFW_TITLE
|
||||||
|
setDefaultValue(NSFW_DEFAULT)
|
||||||
|
|
||||||
|
setOnPreferenceChangeListener { _, newValue ->
|
||||||
|
val selected = newValue as Boolean
|
||||||
|
preferences.edit().putBoolean(NSFW, selected).commit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
screen.addPreference(nsfw)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
|
||||||
|
val nsfw = androidx.preference.CheckBoxPreference(screen.context).apply {
|
||||||
|
key = NSFW
|
||||||
|
title = NSFW_TITLE
|
||||||
|
setDefaultValue(NSFW_DEFAULT)
|
||||||
|
|
||||||
|
setOnPreferenceChangeListener { _, newValue ->
|
||||||
|
val selected = newValue as Boolean
|
||||||
|
preferences.edit().putBoolean(NSFW, selected).commit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
screen.addPreference(nsfw)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isNSFWEnabledInPref(): Boolean {
|
||||||
|
return preferences.getBoolean(NSFW, NSFW_DEFAULT)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val NSFW = "NSFW"
|
||||||
|
private const val NSFW_TITLE = "Show NSFW"
|
||||||
|
private const val NSFW_DEFAULT = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue