MangaBox - referer headers (#3058)

MangaBox - referer headers
This commit is contained in:
Mike 2020-05-07 15:08:54 -04:00 committed by GitHub
parent 5684ab0d06
commit 138c03839e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 12 deletions

View File

@ -5,7 +5,7 @@ ext {
appName = 'Tachiyomi: MangaBox (Mangakakalot and others)'
pkgNameSuffix = 'all.mangabox'
extClass = '.MangaBoxFactory'
extVersionCode = 20
extVersionCode = 21
libVersion = '1.2'
}

View File

@ -1,5 +1,6 @@
package eu.kanade.tachiyomi.extension.all.mangabox
import android.annotation.SuppressLint
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
@ -13,6 +14,7 @@ import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Locale
import java.util.concurrent.TimeUnit
import okhttp3.Headers
import okhttp3.HttpUrl
import okhttp3.OkHttpClient
import okhttp3.Request
@ -36,6 +38,9 @@ abstract class MangaBox(
.readTimeout(30, TimeUnit.SECONDS)
.build()
override fun headersBuilder(): Headers.Builder = super.headersBuilder()
.add("Referer", baseUrl) // for covers
open val popularUrlPath = "manga_list?type=topview&category=all&state=all&page="
open val latestUrlPath = "manga_list?type=latest&category=all&state=all&page="
@ -130,7 +135,7 @@ abstract class MangaBox(
} ?: checkForRedirectMessage(document)
description = document.select(descriptionSelector)?.firstOrNull()?.ownText()
?.replace("""^$title summary:\s""".toRegex(), "")
?.replace("""<\s*br\s*\/?>""".toRegex(), "\n")
?.replace("""<\s*br\s*/?>""".toRegex(), "\n")
?.replace("<[^>]*>".toRegex(), "")
thumbnail_url = document.select(thumbnailSelector).attr("abs:src")
}
@ -213,21 +218,26 @@ abstract class MangaBox(
src
}
}
Page(i, "", url)
Page(i, document.location(), url)
}
}
override fun imageRequest(page: Page): Request {
return GET(page.imageUrl!!, headersBuilder().set("Referer", page.url).build())
}
override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used")
// Based on change_alias JS function from Mangakakalot's website
@SuppressLint("DefaultLocale")
open fun normalizeSearchQuery(query: String): String {
var str = query.toLowerCase()
str = str.replace("à|á|||ã|â||||||ă|||||".toRegex(), "a")
str = str.replace("è|é||||ê||ế|||".toRegex(), "e")
str = str.replace("ì|í|||ĩ".toRegex(), "i")
str = str.replace("ò|ó|||õ|ô||||||ơ|||||".toRegex(), "o")
str = str.replace("ù|ú|||ũ|ư|||||".toRegex(), "u")
str = str.replace("|ý|||".toRegex(), "y")
str = str.replace("[àáạảãâầấậẩẫăằắặẳẵ]".toRegex(), "a")
str = str.replace("[èéẹẻẽêềếệểễ]".toRegex(), "e")
str = str.replace("[ìíịỉĩ]".toRegex(), "i")
str = str.replace("[òóọỏõôồốộổỗơờớợởỡ]".toRegex(), "o")
str = str.replace("[ùúụủũưừứựửữ]".toRegex(), "u")
str = str.replace("[ỳýỵỷỹ]".toRegex(), "y")
str = str.replace("đ".toRegex(), "d")
str = str.replace("""!|@|%|\^|\*|\(|\)|\+|=|<|>|\?|/|,|\.|:|;|'| |"|&|#|\[|]|~|-|$|_""".toRegex(), "_")
str = str.replace("_+_".toRegex(), "_")
@ -249,7 +259,7 @@ abstract class MangaBox(
Pair("topview", "Top read")
))
open class StatusFilter(val statusPairs: Array<Pair<String, String>>) : UriPartFilter("Status", statusPairs)
open class StatusFilter(statusPairs: Array<Pair<String, String>>) : UriPartFilter("Status", statusPairs)
open fun getStatusPairs() = arrayOf(
Pair("all", "ALL"),
@ -258,7 +268,7 @@ abstract class MangaBox(
Pair("drop", "Dropped")
)
private class GenreFilter(val genrePairs: Array<Pair<String, String>>) : UriPartFilter("Category", genrePairs)
private class GenreFilter(genrePairs: Array<Pair<String, String>>) : UriPartFilter("Category", genrePairs)
open fun getGenrePairs(): Array<Pair<String, String>> = arrayOf(
Pair("all", "ALL"),
@ -304,7 +314,7 @@ abstract class MangaBox(
Pair("42", "Yuri")
)
open class UriPartFilter(displayName: String, val vals: Array<Pair<String, String>>) :
open class UriPartFilter(displayName: String, private val vals: Array<Pair<String, String>>) :
Filter.Select<String>(displayName, vals.map { it.second }.toTypedArray()) {
fun toUriPart() = vals[state].first
}

View File

@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Headers
import java.text.SimpleDateFormat
import java.util.Locale
import okhttp3.Request
@ -60,6 +61,7 @@ abstract class MangaBoxPathedGenres(
}
class Mangakakalot : MangaBox("Mangakakalot", "https://mangakakalot.com", "en") {
override fun headersBuilder(): Headers.Builder = super.headersBuilder().set("Referer", "https://manganelo.com") // for covers
override fun searchMangaSelector() = "${super.searchMangaSelector()}, div.list-truyen-item-wrap"
}