Remove Reaper, Astra, Vortexfree (#8795)
* Delete reaperscans * Delete astrascans * Delete vortexscansfree
@ -1,10 +0,0 @@
|
||||
ext {
|
||||
extName = 'Astra Scans'
|
||||
extClass = '.AstraScans'
|
||||
themePkg = 'mangathemesia'
|
||||
baseUrl = 'https://astrascans.org'
|
||||
overrideVersionCode = 0
|
||||
isNsfw = false
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 23 KiB |
@ -1,15 +0,0 @@
|
||||
package eu.kanade.tachiyomi.extension.en.astrascans
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
|
||||
import eu.kanade.tachiyomi.network.interceptor.rateLimit
|
||||
|
||||
class AstraScans : MangaThemesia(
|
||||
"Astra Scans",
|
||||
"https://astrascans.org",
|
||||
"en",
|
||||
"/series",
|
||||
) {
|
||||
override val client = super.client.newBuilder()
|
||||
.rateLimit(3)
|
||||
.build()
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
ext {
|
||||
extName = 'Reaper Scans'
|
||||
extClass = '.ReaperScans'
|
||||
themePkg = 'heancms'
|
||||
baseUrl = 'https://reaperscans.com'
|
||||
overrideVersionCode = 29
|
||||
isNsfw = false
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 14 KiB |
@ -1,83 +0,0 @@
|
||||
package eu.kanade.tachiyomi.extension.en.reaperscans
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.heancms.HeanCms
|
||||
import eu.kanade.tachiyomi.multisrc.heancms.SortProperty
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.interceptor.rateLimit
|
||||
import eu.kanade.tachiyomi.source.model.Page
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
import java.util.TimeZone
|
||||
|
||||
class ReaperScans : HeanCms("Reaper Scans", "https://reaperscans.com", "en") {
|
||||
|
||||
override val versionId = 3
|
||||
|
||||
override val client = super.client.newBuilder()
|
||||
.rateLimit(1)
|
||||
.build()
|
||||
|
||||
override val useNewChapterEndpoint = true
|
||||
override val useNewQueryEndpoint = true
|
||||
override val enableLogin = true
|
||||
override val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US).apply { this.timeZone = TimeZone.getTimeZone("UTC") }
|
||||
override val cdnUrl = "https://media.reaperscans.com/file/4SRBHm"
|
||||
|
||||
override fun latestUpdatesRequest(page: Int): Request {
|
||||
val url = "$apiUrl/query".toHttpUrl().newBuilder()
|
||||
.addQueryParameter("query_string", "")
|
||||
.addQueryParameter(if (useNewQueryEndpoint) "status" else "series_status", "All")
|
||||
.addQueryParameter("order", "desc")
|
||||
.addQueryParameter("orderBy", "updated_at")
|
||||
.addQueryParameter("series_type", "Comic")
|
||||
.addQueryParameter("page", page.toString())
|
||||
.addQueryParameter("perPage", "12")
|
||||
.addQueryParameter("tags_ids", "[]")
|
||||
.addQueryParameter("adult", "true")
|
||||
|
||||
return GET(url.build(), headers)
|
||||
}
|
||||
|
||||
override fun chapterListRequest(manga: SManga): Request = GET(
|
||||
"$apiUrl/chapters/".toHttpUrl().newBuilder().apply {
|
||||
val mangaUrl = (baseUrl + manga.url).toHttpUrl()
|
||||
addPathSegment(mangaUrl.fragment!!)
|
||||
addQueryParameter("page", "1")
|
||||
addQueryParameter("perPage", "1000")
|
||||
fragment(mangaUrl.pathSegments.last())
|
||||
// not needed. just added to be authentic
|
||||
addQueryParameter("query", "")
|
||||
addQueryParameter("order", "desc")
|
||||
}.build(),
|
||||
headers,
|
||||
)
|
||||
|
||||
override fun pageListParse(response: Response): List<Page> {
|
||||
val result = response.parseAs<ReaperPagePayloadDto>()
|
||||
|
||||
if (result.isPaywalled() && result.chapter.chapterData == null) {
|
||||
throw Exception(intl["paid_chapter_error"])
|
||||
}
|
||||
|
||||
return if (useNewChapterEndpoint) {
|
||||
result.chapter.chapterData?.images().orEmpty().mapIndexed { i, img ->
|
||||
Page(i, imageUrl = img.toAbsoluteUrl())
|
||||
}
|
||||
} else {
|
||||
result.data.orEmpty().mapIndexed { i, img ->
|
||||
Page(i, imageUrl = img.toAbsoluteUrl())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getSortProperties(): List<SortProperty> = listOf(
|
||||
SortProperty(intl["sort_by_title"], "title"),
|
||||
SortProperty(intl["sort_by_views"], "total_views"),
|
||||
SortProperty(intl["sort_by_latest"], "updated_at"),
|
||||
SortProperty(intl["sort_by_created_at"], "created_at"),
|
||||
)
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
package eu.kanade.tachiyomi.extension.en.reaperscans
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
class ReaperPagePayloadDto(
|
||||
val chapter: ReaperPageDto,
|
||||
private val paywall: Boolean = false,
|
||||
val data: List<String>? = emptyList(),
|
||||
) {
|
||||
fun isPaywalled() = paywall
|
||||
}
|
||||
|
||||
@Serializable
|
||||
class ReaperPageDto(
|
||||
@SerialName("chapter_data") val chapterData: ReaperPageDataDto?,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
class ReaperPageDataDto(
|
||||
private val images: List<String>? = emptyList(),
|
||||
private val files: List<ReaperPageFileDto>? = emptyList(),
|
||||
) {
|
||||
fun images(): List<String> {
|
||||
return if (images.isNullOrEmpty()) {
|
||||
files?.map {
|
||||
it.url
|
||||
}.orEmpty()
|
||||
} else {
|
||||
images
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
class ReaperPageFileDto(
|
||||
val url: String,
|
||||
)
|
@ -1,10 +0,0 @@
|
||||
ext {
|
||||
extName = 'Vortex Scans Free (unoriginal)'
|
||||
extClass = '.VortexScansFree'
|
||||
themePkg = 'mangathemesia'
|
||||
baseUrl = 'https://vortexscansfree.com'
|
||||
overrideVersionCode = 0
|
||||
isNsfw = false
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 19 KiB |
@ -1,9 +0,0 @@
|
||||
package eu.kanade.tachiyomi.extension.en.vortexscansfree
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
|
||||
|
||||
class VortexScansFree : MangaThemesia(
|
||||
"Vortex Scans Free (unoriginal)",
|
||||
"https://vortexscansfree.com",
|
||||
"en",
|
||||
)
|