Portuga Mangas: Add Custom User-Agent (#1486)

* Add random and custom User-Agent

* Replace GET request by client request

* Remove joinToString separator

* Add final newline

Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com>

* Remove unnecessary client wrapping

* Fix: add new line at the end

* Remove lazy modifier

Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com>

---------

Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com>
Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com>
This commit is contained in:
Chopper 2024-02-26 11:20:11 -03:00 committed by Draff
parent 1fc3a46632
commit dfb2092c75
2 changed files with 34 additions and 8 deletions

View File

@ -1,8 +1,13 @@
ext { ext {
extName = 'Portuga Mangas' extName = 'Portuga Mangas'
extClass = '.PortugaMangas' extClass = '.PortugaMangas'
extVersionCode = 1 extVersionCode = 2
isNsfw = true isNsfw = true
} }
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib:randomua'))
}

View File

@ -1,7 +1,15 @@
package eu.kanade.tachiyomi.extension.pt.portugamangas package eu.kanade.tachiyomi.extension.pt.portugamangas
import android.app.Application
import android.content.SharedPreferences
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.lib.randomua.addRandomUAPreferenceToScreen
import eu.kanade.tachiyomi.lib.randomua.getPrefCustomUA
import eu.kanade.tachiyomi.lib.randomua.getPrefUAType
import eu.kanade.tachiyomi.lib.randomua.setRandomUserAgent
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.Page
@ -15,12 +23,13 @@ import okhttp3.Request
import okhttp3.Response import okhttp3.Response
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Locale import java.util.Locale
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
class PortugaMangas : ParsedHttpSource() { class PortugaMangas : ParsedHttpSource(), ConfigurableSource {
override val name = "Portuga Mangas" override val name = "Portuga Mangas"
override val baseUrl = "https://portugamanga.online" override val baseUrl = "https://portugamanga.online"
@ -29,9 +38,17 @@ class PortugaMangas : ParsedHttpSource() {
override val supportsLatest = true override val supportsLatest = true
override val client: OkHttpClient = network.cloudflareClient.newBuilder() private val preferences: SharedPreferences =
.rateLimitHost(baseUrl.toHttpUrl(), 1, 2, TimeUnit.SECONDS) Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
.build()
override val client: OkHttpClient =
network.cloudflareClient.newBuilder()
.setRandomUserAgent(
preferences.getPrefUAType(),
preferences.getPrefCustomUA(),
)
.rateLimitHost(baseUrl.toHttpUrl(), 1, 2, TimeUnit.SECONDS)
.build()
override fun popularMangaRequest(page: Int): Request = GET(baseUrl, headers) override fun popularMangaRequest(page: Int): Request = GET(baseUrl, headers)
@ -46,7 +63,7 @@ class PortugaMangas : ParsedHttpSource() {
override fun popularMangaNextPageSelector(): String? = null override fun popularMangaNextPageSelector(): String? = null
override fun latestUpdatesRequest(page: Int): Request { override fun latestUpdatesRequest(page: Int): Request {
val url = "$baseUrl".toHttpUrl().newBuilder() val url = baseUrl.toHttpUrl().newBuilder()
.addQueryParameter("pagina", "$page") .addQueryParameter("pagina", "$page")
.build() .build()
return GET(url, headers) return GET(url, headers)
@ -112,7 +129,7 @@ class PortugaMangas : ParsedHttpSource() {
genre = document.select("h5.cg_color > a.label.label-warning") genre = document.select("h5.cg_color > a.label.label-warning")
.map { it?.text() ?: "" } .map { it?.text() ?: "" }
.filter { it.isNotBlank() } .filter { it.isNotBlank() }
.joinToString(", ") .joinToString()
status = when (getMangaStatus(document)) { status = when (getMangaStatus(document)) {
PAGE_STATUS_ONGOING -> SManga.ONGOING PAGE_STATUS_ONGOING -> SManga.ONGOING
@ -176,4 +193,8 @@ class PortugaMangas : ParsedHttpSource() {
SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR")) SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR"))
} }
} }
override fun setupPreferenceScreen(screen: PreferenceScreen) {
addRandomUAPreferenceToScreen(screen)
}
} }