Add more mangareader theme sources, fix cache tags

vianh 3 years ago
parent ad500a9db6
commit 42253e43b3

@ -199,7 +199,7 @@ internal abstract class MangaReaderParser(
return getOrCreateTagMap().values.toSet()
}
private suspend fun getOrCreateTagMap(): Map<String, MangaTag> = mutex.withLock {
protected suspend fun getOrCreateTagMap(): Map<String, MangaTag> = mutex.withLock {
tagCache?.let { return@withLock it }
val tagMap = ArrayMap<String, MangaTag>()
@ -210,11 +210,12 @@ internal abstract class MangaReaderParser(
tagMap[el.text()] = MangaTag(
title = el.text(),
key = el.selectFirst(".genre-item")?.attr("value") ?: continue,
key = el.selectFirst("input")?.attr("value") ?: continue,
source = source
)
}
tagCache = tagMap
return@withLock tagMap
}
@ -314,4 +315,39 @@ internal abstract class MangaReaderParser(
return super.parseInfoList(docs, manga, chapters).copy(state = mangaState)
}
}
@MangaSourceParser("WESTMANGA", "Westmanga", "id")
class WestmangaParser(override val context: MangaLoaderContext) : MangaReaderParser(MangaSource.WESTMANGA, pageSize = 20, searchPageSize = 10) {
override val configKeyDomain: ConfigKey.Domain
get() = ConfigKey.Domain("westmanga.info", null)
override val listUrl: String
get() = "/manga"
override val tableMode: Boolean
get() = true
override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH)
}
@MangaSourceParser("TEMPESTFANSUB", "Tempestfansub", "tr")
class TempestfansubParser(override val context: MangaLoaderContext) : MangaReaderParser(MangaSource.TEMPESTFANSUB, pageSize = 40, searchPageSize = 40) {
override val configKeyDomain: ConfigKey.Domain
get() = ConfigKey.Domain("manga.tempestfansub.com", null)
override val listUrl: String get() = "/manga"
override val tableMode: Boolean get() = true
override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr", "TR"))
override suspend fun parseInfoTable(docs: Document, manga: Manga, chapters: List<MangaChapter>): Manga {
val infoElement = docs.selectFirst("div.infox")
return manga.copy(
chapters = chapters,
description = infoElement?.selectFirst("div.entry-content")?.html(),
author = infoElement?.selectFirst(".flex-wrap div:contains(Artist)")?.lastElementSibling()?.text(),
tags = infoElement?.select(".wd-full .mgen > a")
?.mapNotNullToSet { getOrCreateTagMap()[it.text()] }
.orEmpty(),
isNsfw = docs.selectFirst(".postbody .alr") != null,
)
}
}
}
Loading…
Cancel
Save