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.multisrc.madara.Madara
|
2022-06-05 21:51:18 +00:00
|
|
|
import eu.kanade.tachiyomi.network.interceptor.rateLimit
|
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
|
2022-04-24 00:01:48 +00:00
|
|
|
import okhttp3.HttpUrl.Companion.toHttpUrl
|
2021-08-25 17:07:00 +00:00
|
|
|
import okhttp3.OkHttpClient
|
|
|
|
import org.jsoup.nodes.Element
|
2021-11-28 16:14:37 +00:00
|
|
|
import java.text.SimpleDateFormat
|
|
|
|
import java.util.Locale
|
2021-08-25 17:07:00 +00:00
|
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
|
2021-08-27 10:27:13 +00:00
|
|
|
class ReaperScansFactory : SourceFactory {
|
|
|
|
override fun createSources() = listOf(
|
|
|
|
ReaperScansEn(),
|
2022-04-24 00:01:48 +00:00
|
|
|
ReaperScansBr(),
|
|
|
|
ReaperScansTr(),
|
|
|
|
ReaperScansId(),
|
|
|
|
ReaperScansFr()
|
2021-08-27 10:27:13 +00:00
|
|
|
)
|
|
|
|
}
|
2021-08-25 17:07:00 +00:00
|
|
|
|
2021-08-27 10:27:13 +00:00
|
|
|
abstract class ReaperScans(
|
|
|
|
override val baseUrl: String,
|
2022-02-28 21:37:21 +00:00
|
|
|
lang: String,
|
2021-11-28 16:14:37 +00:00
|
|
|
dateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.US)
|
2022-04-24 00:01:48 +00:00
|
|
|
) : Madara("Reaper Scans", baseUrl, lang, dateFormat) {
|
2022-03-18 03:00:16 +00:00
|
|
|
|
2022-04-24 00:01:48 +00:00
|
|
|
override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply {
|
|
|
|
val urlElement = element.selectFirst(chapterUrlSelector)!!
|
|
|
|
|
|
|
|
name = urlElement.selectFirst("p.chapter-manhwa-title")?.text()
|
|
|
|
?: urlElement.ownText()
|
|
|
|
date_upload = urlElement.selectFirst("span.chapter-release-date > i")?.text()
|
|
|
|
.let { parseChapterDate(it) }
|
|
|
|
|
|
|
|
val fixedUrl = urlElement.attr("abs:href").toHttpUrl().newBuilder()
|
|
|
|
.removeAllQueryParameters("style")
|
|
|
|
.addQueryParameter("style", "list")
|
|
|
|
.toString()
|
2021-08-25 17:07:00 +00:00
|
|
|
|
2022-04-24 00:01:48 +00:00
|
|
|
setUrlWithoutDomain(fixedUrl)
|
2021-08-25 17:07:00 +00:00
|
|
|
}
|
|
|
|
}
|
2021-08-27 10:27:13 +00:00
|
|
|
|
2022-04-24 00:01:48 +00:00
|
|
|
class ReaperScansEn : ReaperScans(
|
|
|
|
"https://reaperscans.com",
|
|
|
|
"en",
|
|
|
|
SimpleDateFormat("MMM dd,yyyy", Locale.US)
|
|
|
|
) {
|
|
|
|
|
|
|
|
override val versionId = 2
|
|
|
|
}
|
|
|
|
|
|
|
|
class ReaperScansBr : ReaperScans(
|
|
|
|
"https://reaperscans.com.br",
|
|
|
|
"pt-BR",
|
|
|
|
SimpleDateFormat("dd/MM/yyyy", Locale.US)
|
|
|
|
) {
|
|
|
|
|
2021-08-27 10:27:13 +00:00
|
|
|
override val id = 7767018058145795388
|
|
|
|
|
|
|
|
override val client: OkHttpClient = super.client.newBuilder()
|
2022-06-05 21:51:18 +00:00
|
|
|
.rateLimit(1, 2, TimeUnit.SECONDS)
|
2021-08-27 10:27:13 +00:00
|
|
|
.build()
|
2022-04-24 00:01:48 +00:00
|
|
|
}
|
2021-08-27 10:27:13 +00:00
|
|
|
|
2022-04-24 00:01:48 +00:00
|
|
|
class ReaperScansTr : ReaperScans(
|
|
|
|
"https://reaperscanstr.com",
|
|
|
|
"tr",
|
|
|
|
SimpleDateFormat("MMMMM dd, yyyy", Locale("tr"))
|
|
|
|
) {
|
|
|
|
|
|
|
|
// Tags are useless as they are just SEO keywords.
|
|
|
|
override val mangaDetailsSelectorTag = ""
|
|
|
|
}
|
|
|
|
|
|
|
|
class ReaperScansId : ReaperScans("https://reaperscans.id", "id") {
|
|
|
|
|
|
|
|
// Tags are useless as they are just SEO keywords.
|
|
|
|
override val mangaDetailsSelectorTag = ""
|
|
|
|
}
|
|
|
|
|
|
|
|
class ReaperScansFr : ReaperScans(
|
|
|
|
"https://new.reaperscans.fr",
|
|
|
|
"fr",
|
|
|
|
SimpleDateFormat("dd/MM/yyyy", Locale.US)
|
|
|
|
) {
|
|
|
|
|
|
|
|
// Migrated from WpMangaReader to Madara.
|
|
|
|
override val versionId = 2
|
2021-08-27 10:27:13 +00:00
|
|
|
}
|