44 lines
2.2 KiB
Kotlin
44 lines
2.2 KiB
Kotlin
|
package eu.kanade.tachiyomi.extension.en.agentofchangetranslations
|
||
|
|
||
|
import android.annotation.SuppressLint
|
||
|
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||
|
import eu.kanade.tachiyomi.util.asJsoup
|
||
|
import okhttp3.Headers
|
||
|
import okhttp3.Response
|
||
|
|
||
|
class AgentofChangeTranslations : Madara("Agent of Change Translations", "https://aoc.moe", "en") {
|
||
|
override fun headersBuilder(): Headers.Builder = super.headersBuilder().add("Referer", baseUrl)
|
||
|
override fun popularMangaSelector() = "div.page-item-detail.manga:has(span.chapter)"
|
||
|
override fun chapterListSelector() = "li.wp-manga-chapter:has(a)"
|
||
|
|
||
|
@SuppressLint("DefaultLocale")
|
||
|
override fun chapterListParse(response: Response): List<SChapter> {
|
||
|
return response.asJsoup().let { document ->
|
||
|
document.select(chapterListSelector()).let { normalChapters ->
|
||
|
if (normalChapters.isNotEmpty()) {
|
||
|
normalChapters.map { chapterFromElement(it) }
|
||
|
} else {
|
||
|
// For their "fancy" volume/chapter lists
|
||
|
document.select("div.wpb_wrapper:contains(volume) a")
|
||
|
.filter { it.attr("href").contains(baseUrl) && !it.attr("href").contains("imgur") }
|
||
|
.map { volumeChapter ->
|
||
|
SChapter.create().apply {
|
||
|
volumeChapter.attr("href").let { url ->
|
||
|
name = if (url.contains("volume")) {
|
||
|
val volume = url.substringAfter("volume-").substringBefore("/")
|
||
|
val volChap = url.substringAfter("volume-$volume/").substringBefore("/").replace("-", " ").capitalize()
|
||
|
"Volume $volume - $volChap"
|
||
|
} else {
|
||
|
url.substringBefore("/p").substringAfterLast("/").replace("-", " ").capitalize()
|
||
|
}
|
||
|
setUrlWithoutDomain(url.substringBefore("?") + "?style=list")
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}.reversed()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|