zh/boylove: fix unscrambler/filter selectors, Add VIP manga filter (#10206)
zh/boylove: fix unscrambler/filter selectors and add filter entry for VIP manga
This commit is contained in:
parent
510d50ab58
commit
508414951e
@ -1,7 +1,7 @@
|
|||||||
ext {
|
ext {
|
||||||
extName = 'BoyLove'
|
extName = 'BoyLove'
|
||||||
extClass = '.BoyLove'
|
extClass = '.BoyLove'
|
||||||
extVersionCode = 14
|
extVersionCode = 15
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,9 +137,9 @@ class BoyLove : HttpSource(), ConfigurableSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun Document.getPartsCount(): Int? {
|
private fun Document.getPartsCount(): Int? {
|
||||||
return selectFirst("script:containsData(do_mergeImg):containsData(context0 =)")?.data()?.run {
|
return selectFirst("script:containsData(firstMergeImg):containsData(imageData)")?.data()?.run {
|
||||||
substringBefore("canvas0.width")
|
substringBefore("var scrollTop")
|
||||||
.substringAfterLast("var ")
|
.substringAfterLast("var randomClass = ")
|
||||||
.substringBefore(';')
|
.substringBefore(';')
|
||||||
.trim()
|
.trim()
|
||||||
.substringAfterLast(" ")
|
.substringAfterLast(" ")
|
||||||
@ -169,6 +169,8 @@ class BoyLove : HttpSource(), ConfigurableSource {
|
|||||||
StatusFilter(),
|
StatusFilter(),
|
||||||
TypeFilter(),
|
TypeFilter(),
|
||||||
genreFilter,
|
genreFilter,
|
||||||
|
Filter.Header("若要观看VIP漫画,请先在Webview中登录网站,并确认您的账户已达到Lv3"),
|
||||||
|
VipFilter(),
|
||||||
// SortFilter(), // useless
|
// SortFilter(), // useless
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -179,7 +181,7 @@ class BoyLove : HttpSource(), ConfigurableSource {
|
|||||||
try {
|
try {
|
||||||
val request = client.newCall(GET("$baseUrl/home/book/cate.html", headers))
|
val request = client.newCall(GET("$baseUrl/home/book/cate.html", headers))
|
||||||
val document = request.execute().asJsoup()
|
val document = request.execute().asJsoup()
|
||||||
genres = document.select("ul[data-str=tag] > li[class] > a")
|
genres = document.select("div[data-str=tag] > a.button")
|
||||||
.map { it.ownText() }.toTypedArray()
|
.map { it.ownText() }.toTypedArray()
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
isFetchingGenres = false
|
isFetchingGenres = false
|
||||||
|
@ -12,23 +12,25 @@ import eu.kanade.tachiyomi.source.model.FilterList
|
|||||||
* [4] page, index from 1
|
* [4] page, index from 1
|
||||||
* [5] type, 0=all, 1=清水, 2=有肉
|
* [5] type, 0=all, 1=清水, 2=有肉
|
||||||
* [6] 1=manga, 2=novel, else=manga
|
* [6] 1=manga, 2=novel, else=manga
|
||||||
* [7] vip, 0=default, useless
|
* [7] vip, 2=all, 0=without, 1=hasvip
|
||||||
*/
|
*/
|
||||||
internal fun parseFilters(page: Int, filters: FilterList): String {
|
internal fun parseFilters(page: Int, filters: FilterList): String {
|
||||||
var status = '2'
|
var status = '2'
|
||||||
var type = '0'
|
var type = '0'
|
||||||
var genre = "0"
|
var genre = "0"
|
||||||
var sort = '1'
|
var sort = '1'
|
||||||
|
var vip = '2'
|
||||||
for (filter in filters) {
|
for (filter in filters) {
|
||||||
when (filter) {
|
when (filter) {
|
||||||
is StatusFilter -> status = STATUS_KEYS[filter.state]
|
is StatusFilter -> status = STATUS_KEYS[filter.state]
|
||||||
is TypeFilter -> type = TYPE_KEYS[filter.state]
|
is TypeFilter -> type = TYPE_KEYS[filter.state]
|
||||||
is GenreFilter -> if (filter.state > 0) genre = filter.values[filter.state]
|
is GenreFilter -> if (filter.state > 0) genre = filter.values[filter.state]
|
||||||
is SortFilter -> sort = SORT_KEYS[filter.state]
|
is SortFilter -> sort = SORT_KEYS[filter.state]
|
||||||
|
is VipFilter -> vip = VIP_KEYS[filter.state]
|
||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "1-$genre-$status-$sort-$page-$type-1-0"
|
return "1-$genre-$status-$sort-$page-$type-1-$vip"
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class StatusFilter : Filter.Select<String>("状态", STATUS_NAMES)
|
internal class StatusFilter : Filter.Select<String>("状态", STATUS_NAMES)
|
||||||
@ -47,3 +49,8 @@ internal class SortFilter : Filter.Select<String>("排序", SORT_NAMES)
|
|||||||
|
|
||||||
private val SORT_NAMES = arrayOf("顺序", "类似排行榜")
|
private val SORT_NAMES = arrayOf("顺序", "类似排行榜")
|
||||||
private val SORT_KEYS = arrayOf('1', '2')
|
private val SORT_KEYS = arrayOf('1', '2')
|
||||||
|
|
||||||
|
internal class VipFilter : Filter.Select<String>("漫画权限", VIP_NAMES)
|
||||||
|
|
||||||
|
private val VIP_NAMES = arrayOf("全部", "非会员可观看", "VIP 漫画")
|
||||||
|
private val VIP_KEYS = arrayOf('2', '0', '1')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user