[MangaOwl] Add nsfw flag support
This commit is contained in:
@@ -19,6 +19,8 @@ internal class MangaOwlParser(override val context: MangaLoaderContext) : MangaP
|
|||||||
SortOrder.UPDATED,
|
SortOrder.UPDATED,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private val regexNsfw = Regex("(yaoi)|(yuri)|(smut)|(mature)|(adult)", RegexOption.IGNORE_CASE)
|
||||||
|
|
||||||
override suspend fun getList(
|
override suspend fun getList(
|
||||||
offset: Int,
|
offset: Int,
|
||||||
query: String?,
|
query: String?,
|
||||||
@@ -82,22 +84,29 @@ internal class MangaOwlParser(override val context: MangaLoaderContext) : MangaP
|
|||||||
doc.getElementsByTag("script").find { trRegex.find(it.data()) != null } ?: parseFailed("Oops, tr not found")
|
doc.getElementsByTag("script").find { trRegex.find(it.data()) != null } ?: parseFailed("Oops, tr not found")
|
||||||
val tr = trRegex.find(trElement.data())!!.groups[1]!!.value
|
val tr = trRegex.find(trElement.data())!!.groups[1]!!.value
|
||||||
val s = context.encodeBase64(getDomain().toByteArray())
|
val s = context.encodeBase64(getDomain().toByteArray())
|
||||||
|
var isNsfw = manga.isNsfw
|
||||||
|
val parsedTags = info.select("div.col-xs-12.col-md-8.single-right-grid-right > p > a[href*=genres]")
|
||||||
|
.mapNotNullToSet {
|
||||||
|
val a = it.selectFirst("a") ?: return@mapNotNullToSet null
|
||||||
|
val name = a.text()
|
||||||
|
if (!isNsfw && isNsfwGenre(name)) {
|
||||||
|
isNsfw = true
|
||||||
|
}
|
||||||
|
MangaTag(
|
||||||
|
title = name.toTitleCase(),
|
||||||
|
key = a.attr("href"),
|
||||||
|
source = source,
|
||||||
|
)
|
||||||
|
}
|
||||||
return manga.copy(
|
return manga.copy(
|
||||||
description = info.selectFirst(".description")?.html(),
|
description = info.selectFirst(".description")?.html(),
|
||||||
largeCoverUrl = info.select("img").first()?.let { img ->
|
largeCoverUrl = info.select("img").first()?.let { img ->
|
||||||
if (img.hasAttr("data-src")) img.attr("abs:data-src") else img.attr("abs:src")
|
if (img.hasAttr("data-src")) img.attr("abs:data-src") else img.attr("abs:src")
|
||||||
},
|
},
|
||||||
|
isNsfw = isNsfw,
|
||||||
author = info.selectFirst("p.fexi_header_para a.author_link")?.text(),
|
author = info.selectFirst("p.fexi_header_para a.author_link")?.text(),
|
||||||
state = parseStatus(info.select("p.fexi_header_para:contains(status)").first()?.ownText()),
|
state = parseStatus(info.select("p.fexi_header_para:contains(status)").first()?.ownText()),
|
||||||
tags = manga.tags + info.select("div.col-xs-12.col-md-8.single-right-grid-right > p > a[href*=genres]")
|
tags = manga.tags + parsedTags,
|
||||||
.mapNotNull {
|
|
||||||
val a = it.selectFirst("a") ?: return@mapNotNull null
|
|
||||||
MangaTag(
|
|
||||||
title = a.text().toTitleCase(),
|
|
||||||
key = a.attr("href"),
|
|
||||||
source = source,
|
|
||||||
)
|
|
||||||
},
|
|
||||||
chapters = table.select("div.table.table-chapter-list").select("li.list-group-item.chapter_list")
|
chapters = table.select("div.table.table-chapter-list").select("li.list-group-item.chapter_list")
|
||||||
.asReversed().mapIndexed { i, li ->
|
.asReversed().mapIndexed { i, li ->
|
||||||
val a = li.select("a")
|
val a = li.select("a")
|
||||||
@@ -169,4 +178,6 @@ internal class MangaOwlParser(override val context: MangaLoaderContext) : MangaP
|
|||||||
SortOrder.UPDATED -> "3"
|
SortOrder.UPDATED -> "3"
|
||||||
else -> "3"
|
else -> "3"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun isNsfwGenre(name: String): Boolean = regexNsfw.containsMatchIn(name)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user