AwkwardPeak7 50b5d33614
Random User-Agent Refactor (#17059)
* lib-randomua

* NHentai: Random mobile ua

* Madara random UA overhaul

* MangaThemesia random UA overhaul

* MangaHub random UA overhaul

* build errors and warnings

* remove preference from Constellar

* change to singleton object

* network.client

* fix copy paste and chapter deep link

* exit early

* use data class and enum options

* missing import

* suggested changes

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>

* re-add empty check to filters

* convert to interceptor

* update comment

Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com>

* update error message

* initialize client by lazy

* dont check on excluded Filters

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>

* newlines

* move preference helper function into lib

* move preference helper function into lib x2

* move check to lib too

* move defaultRandomUserAgentType to constructor

* rename the interceptor

* organize the interceptor and preference stuff in different files

* hide custom ua setting when random ua is enabled

* English

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>

* catch specific exception

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>

* setVisible()

fresh stuff

* setVisible()

fresh stuff

* change summary

* workaround

* Update error message

Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com>

* Update comment

Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com>

---------

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com>
2023-07-15 19:52:35 -03:00

67 lines
2.6 KiB
Kotlin

package eu.kanade.tachiyomi.extension.ja.mangaraworg
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import rx.Observable
class MangaRawOrg : MangaThemesia("Manga Raw.org", "https://mangaraw.org", "ja") {
override val id = 6223520752496636410
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(4)
.build()
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/search?order=popular&page=$page", headers)
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/search?order=update&page=$page", headers)
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request =
GET("$baseUrl/search?s=$query&page=$page")
override fun searchMangaSelector() = "div.bsx"
override fun searchMangaFromElement(element: Element): SManga {
return SManga.create().apply {
element.select("div.bigor > a").let {
setUrlWithoutDomain(it.attr("href"))
title = it.text()
}
thumbnail_url = element.select("img").attr("abs:src")
}
}
override fun searchMangaNextPageSelector() = "a[rel=next]"
override fun mangaDetailsParse(document: Document): SManga = super.mangaDetailsParse(document)
.apply { description = document.select("div.bottom").firstOrNull()?.ownText() }
override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
return client.newCall(pageListRequest(chapter))
.asObservableSuccess()
.map { response ->
pageListParse(response, baseUrl + chapter.url.removeSuffix("/"))
}
}
private fun pageListParse(response: Response, chapterUrl: String): List<Page> {
return response.asJsoup().select("span.page-link").first()!!.ownText().substringAfterLast(" ").toInt()
.let { lastNum -> IntRange(1, lastNum) }
.map { num -> Page(num, "$chapterUrl/$num") }
}
override fun imageUrlParse(document: Document): String = document.select("a.img-block img").attr("abs:src")
override fun getFilterList(): FilterList = FilterList()
}