2021-08-27 10:27:13 +00:00
|
|
|
package eu.kanade.tachiyomi.extension.all.reaperscans
|
2021-08-25 17:07:00 +00:00
|
|
|
|
|
|
|
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
|
|
|
|
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
2021-08-27 10:27:13 +00:00
|
|
|
import eu.kanade.tachiyomi.source.SourceFactory
|
2021-08-25 17:07:00 +00:00
|
|
|
import eu.kanade.tachiyomi.source.model.SChapter
|
|
|
|
import okhttp3.OkHttpClient
|
|
|
|
import org.jsoup.nodes.Element
|
|
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
|
2021-08-27 10:27:13 +00:00
|
|
|
class ReaperScansFactory : SourceFactory {
|
|
|
|
override fun createSources() = listOf(
|
|
|
|
ReaperScansEn(),
|
|
|
|
ReaperScansBr()
|
|
|
|
)
|
|
|
|
}
|
2021-08-25 17:07:00 +00:00
|
|
|
|
2021-08-27 10:27:13 +00:00
|
|
|
abstract class ReaperScans(
|
|
|
|
override val baseUrl: String,
|
|
|
|
override val lang: String
|
|
|
|
) : Madara("Reaper Scans", baseUrl, lang) {
|
2021-08-25 17:07:00 +00:00
|
|
|
|
|
|
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
|
|
|
|
|
|
|
override fun chapterFromElement(element: Element): SChapter {
|
|
|
|
val chapter = SChapter.create()
|
|
|
|
|
|
|
|
with(element) {
|
|
|
|
select(chapterUrlSelector).first()?.let { urlElement ->
|
|
|
|
chapter.url = urlElement.attr("abs:href").let {
|
|
|
|
it.substringBefore("?style=paged") + if (!it.endsWith(chapterUrlSuffix)) chapterUrlSuffix else ""
|
|
|
|
}
|
|
|
|
chapter.name = urlElement.ownText()
|
|
|
|
}
|
|
|
|
// Dates can be part of a "new" graphic or plain text
|
|
|
|
// Added "title" alternative
|
|
|
|
chapter.date_upload = select("img").firstOrNull()?.attr("alt")?.let { parseRelativeDate(it) }
|
|
|
|
?: select("span a").firstOrNull()?.attr("title")?.let { parseRelativeDate(it) }
|
2021-09-07 23:44:51 +00:00
|
|
|
?: parseChapterDate(select("span.chapter-release-date i").firstOrNull()?.text())
|
2021-08-25 17:07:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return chapter
|
|
|
|
}
|
|
|
|
}
|
2021-08-27 10:27:13 +00:00
|
|
|
|
|
|
|
class ReaperScansEn : ReaperScans("https://reaperscans.com", "en") {
|
|
|
|
override val versionId = 2
|
|
|
|
}
|
|
|
|
|
|
|
|
class ReaperScansBr : ReaperScans("https://reaperscans.com.br", "pt-BR") {
|
|
|
|
override val id = 7767018058145795388
|
|
|
|
|
|
|
|
override val client: OkHttpClient = super.client.newBuilder()
|
|
|
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
|
|
|
.build()
|
|
|
|
|
|
|
|
override val altName: String = "Nome alternativo: "
|
|
|
|
}
|