Add rate limiting to more sources. (#6543)
This commit is contained in:
		
							parent
							
								
									08e71f3454
								
							
						
					
					
						commit
						c920c8e32b
					
				| @ -5,8 +5,13 @@ ext { | ||||
|     extName = 'Bruttal' | ||||
|     pkgNameSuffix = 'pt.bruttal' | ||||
|     extClass = '.Bruttal' | ||||
|     extVersionCode = 1 | ||||
|     extVersionCode = 2 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -7,6 +7,7 @@ import com.github.salomonbrys.kotson.string | ||||
| import com.google.gson.JsonElement | ||||
| import com.google.gson.JsonObject | ||||
| import com.google.gson.JsonParser | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.network.asObservableSuccess | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @ -16,9 +17,11 @@ import eu.kanade.tachiyomi.source.model.SChapter | ||||
| import eu.kanade.tachiyomi.source.model.SManga | ||||
| import eu.kanade.tachiyomi.source.online.HttpSource | ||||
| import okhttp3.Headers | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import okhttp3.Response | ||||
| import rx.Observable | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| class Bruttal : HttpSource() { | ||||
| 
 | ||||
| @ -30,6 +33,10 @@ class Bruttal : HttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = false | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.client.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("Referer", "$baseUrl/bruttal/") | ||||
|         .add("User-Agent", USER_AGENT) | ||||
| @ -181,7 +188,7 @@ class Bruttal : HttpSource() { | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private val JSON_PARSER by lazy { JsonParser() } | ||||
|     } | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'Central de Mangás' | ||||
|     pkgNameSuffix = 'pt.centraldemangas' | ||||
|     extClass = '.CentralDeMangas' | ||||
|     extVersionCode = 3 | ||||
|     extVersionCode = 4 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -5,6 +5,7 @@ import com.github.salomonbrys.kotson.get | ||||
| import com.github.salomonbrys.kotson.string | ||||
| import com.google.gson.JsonArray | ||||
| import com.google.gson.JsonParser | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.network.asObservableSuccess | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @ -38,13 +39,12 @@ class CentralDeMangas : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = true | ||||
| 
 | ||||
|     // Sometimes the site is very slow. | ||||
|     override val client: OkHttpClient = | ||||
|         network.client.newBuilder() | ||||
|             .connectTimeout(3, TimeUnit.MINUTES) | ||||
|             .readTimeout(3, TimeUnit.MINUTES) | ||||
|             .writeTimeout(3, TimeUnit.MINUTES) | ||||
|             .build() | ||||
|     override val client: OkHttpClient = network.client.newBuilder() | ||||
|         .connectTimeout(3, TimeUnit.MINUTES) | ||||
|         .readTimeout(3, TimeUnit.MINUTES) | ||||
|         .writeTimeout(3, TimeUnit.MINUTES) | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
| @ -195,7 +195,8 @@ class CentralDeMangas : ParsedHttpSource() { | ||||
|     private fun Response.asJsonArray(): JsonArray = JSON_PARSER.parse(body()!!.string()).array | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36" | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
|         private const val COVER_CDN = "http://capas.centraldemangas.com.br" | ||||
| 
 | ||||
|         private const val SCRIPT_URL_BEGIN = "var urlSulfix = '" | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'Golden Mangás' | ||||
|     pkgNameSuffix = 'pt.goldenmangas' | ||||
|     extClass = '.GoldenMangas' | ||||
|     extVersionCode = 8 | ||||
|     extVersionCode = 9 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| package eu.kanade.tachiyomi.extension.pt.goldenmangas | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| import eu.kanade.tachiyomi.source.model.Page | ||||
| @ -34,6 +35,7 @@ class GoldenMangas : ParsedHttpSource() { | ||||
|         .connectTimeout(1, TimeUnit.MINUTES) | ||||
|         .readTimeout(1, TimeUnit.MINUTES) | ||||
|         .writeTimeout(1, TimeUnit.MINUTES) | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
| @ -172,10 +174,12 @@ class GoldenMangas : ParsedHttpSource() { | ||||
|     private fun String.withoutLanguage(): String = replace(FLAG_REGEX, "").trim() | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" | ||||
|         private const val ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9," + | ||||
|             "image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" | ||||
|         private const val ACCEPT_IMAGE = "image/webp,image/apng,image/*,*/*;q=0.8" | ||||
|         private const val ACCEPT_LANGUAGE = "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7,es;q=0.6,gl;q=0.5" | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36" | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private val FLAG_REGEX = "\\((Pt[-/]br|Scan)\\)".toRegex(RegexOption.IGNORE_CASE) | ||||
| 
 | ||||
|  | ||||
| @ -5,9 +5,13 @@ ext { | ||||
|     extName = 'HipercooL' | ||||
|     pkgNameSuffix = 'pt.hipercool' | ||||
|     extClass = '.Hipercool' | ||||
|     extVersionCode = 5 | ||||
|     extVersionCode = 6 | ||||
|     libVersion = '1.2' | ||||
|     containsNsfw = true | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -10,6 +10,7 @@ import com.google.gson.JsonArray | ||||
| import com.google.gson.JsonObject | ||||
| import com.google.gson.JsonParser | ||||
| import eu.kanade.tachiyomi.annotations.Nsfw | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.network.POST | ||||
| import eu.kanade.tachiyomi.network.asObservableSuccess | ||||
| @ -30,6 +31,7 @@ import rx.Observable | ||||
| import java.text.ParseException | ||||
| import java.text.SimpleDateFormat | ||||
| import java.util.Locale | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| @Nsfw | ||||
| class Hipercool : HttpSource() { | ||||
| @ -45,7 +47,9 @@ class Hipercool : HttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = true | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.cloudflareClient | ||||
|     override val client: OkHttpClient = network.cloudflareClient.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
| @ -245,7 +249,8 @@ class Hipercool : HttpSource() { | ||||
|     companion object { | ||||
|         private const val STATIC_URL = "https://static.hiper.cool" | ||||
| 
 | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36" | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private const val DEFAULT_COUNT = 40 | ||||
| 
 | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'HQ Dragon' | ||||
|     pkgNameSuffix = 'pt.hqdragon' | ||||
|     extClass = '.HQDragon' | ||||
|     extVersionCode = 2 | ||||
|     extVersionCode = 3 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| package eu.kanade.tachiyomi.extension.pt.hqdragon | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.network.POST | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @ -15,6 +16,7 @@ import okhttp3.Request | ||||
| import okhttp3.Response | ||||
| import org.jsoup.nodes.Document | ||||
| import org.jsoup.nodes.Element | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| class HQDragon : ParsedHttpSource() { | ||||
| 
 | ||||
| @ -26,7 +28,9 @@ class HQDragon : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = true | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.cloudflareClient | ||||
|     override val client: OkHttpClient = network.cloudflareClient.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     // Popular | ||||
| 
 | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'HQ Now!' | ||||
|     pkgNameSuffix = 'pt.hqnow' | ||||
|     extClass = '.HQNow' | ||||
|     extVersionCode = 2 | ||||
|     extVersionCode = 3 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -4,6 +4,7 @@ import com.github.salomonbrys.kotson.fromJson | ||||
| import com.github.salomonbrys.kotson.get | ||||
| import com.google.gson.Gson | ||||
| import com.google.gson.JsonObject | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.POST | ||||
| import eu.kanade.tachiyomi.source.model.Filter | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @ -16,6 +17,7 @@ import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import okhttp3.RequestBody | ||||
| import okhttp3.Response | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| class HQNow : HttpSource() { | ||||
| 
 | ||||
| @ -28,7 +30,9 @@ class HQNow : HttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = true | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.cloudflareClient | ||||
|     override val client: OkHttpClient = network.cloudflareClient.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     private val gson = Gson() | ||||
| 
 | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'MangaYabu!' | ||||
|     pkgNameSuffix = 'pt.mangayabu' | ||||
|     extClass = '.MangaYabu' | ||||
|     extVersionCode = 5 | ||||
|     extVersionCode = 6 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| package eu.kanade.tachiyomi.extension.pt.mangayabu | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.network.POST | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @ -33,12 +34,12 @@ class MangaYabu : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = true | ||||
| 
 | ||||
|     override val client: OkHttpClient = | ||||
|         network.client.newBuilder() | ||||
|             .connectTimeout(2, TimeUnit.MINUTES) | ||||
|             .readTimeout(2, TimeUnit.MINUTES) | ||||
|             .writeTimeout(2, TimeUnit.MINUTES) | ||||
|             .build() | ||||
|     override val client: OkHttpClient = network.client.newBuilder() | ||||
|         .connectTimeout(2, TimeUnit.MINUTES) | ||||
|         .readTimeout(2, TimeUnit.MINUTES) | ||||
|         .writeTimeout(2, TimeUnit.MINUTES) | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
| @ -176,7 +177,7 @@ class MangaYabu : ParsedHttpSource() { | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private val FLAG_REGEX = "\\((Pt[-/]br|Scan)\\)".toRegex(RegexOption.IGNORE_CASE) | ||||
| 
 | ||||
|  | ||||
| @ -5,9 +5,13 @@ ext { | ||||
|     extName = 'Mundo Hentai' | ||||
|     pkgNameSuffix = 'pt.mundohentai' | ||||
|     extClass = '.MundoHentai' | ||||
|     extVersionCode = 1 | ||||
|     extVersionCode = 2 | ||||
|     libVersion = '1.2' | ||||
|     containsNsfw = true | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| package eu.kanade.tachiyomi.extension.pt.mundohentai | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.annotations.Nsfw | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.source.model.Filter | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @ -14,6 +15,7 @@ import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import org.jsoup.nodes.Document | ||||
| import org.jsoup.nodes.Element | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| @Nsfw | ||||
| class MundoHentai : ParsedHttpSource() { | ||||
| @ -26,7 +28,9 @@ class MundoHentai : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = false | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.cloudflareClient | ||||
|     override val client: OkHttpClient = network.cloudflareClient.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
| @ -183,6 +187,7 @@ class MundoHentai : ParsedHttpSource() { | ||||
|     override fun latestUpdatesNextPageSelector(): String? = throw UnsupportedOperationException("Not used") | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36" | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'Mundo Mangá-Kun' | ||||
|     pkgNameSuffix = 'pt.mundomangakun' | ||||
|     extClass = '.MundoMangaKun' | ||||
|     extVersionCode = 1 | ||||
|     extVersionCode = 2 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -4,6 +4,7 @@ import com.github.salomonbrys.kotson.array | ||||
| import com.github.salomonbrys.kotson.obj | ||||
| import com.github.salomonbrys.kotson.string | ||||
| import com.google.gson.JsonParser | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.source.model.Filter | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @ -13,11 +14,13 @@ import eu.kanade.tachiyomi.source.model.SManga | ||||
| import eu.kanade.tachiyomi.source.online.ParsedHttpSource | ||||
| import okhttp3.Headers | ||||
| import okhttp3.HttpUrl | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import okhttp3.Response | ||||
| import org.jsoup.nodes.Document | ||||
| import org.jsoup.nodes.Element | ||||
| import java.lang.UnsupportedOperationException | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| class MundoMangaKun : ParsedHttpSource() { | ||||
| 
 | ||||
| @ -29,6 +32,10 @@ class MundoMangaKun : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = false | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.client.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
|         .add("Origin", baseUrl) | ||||
| @ -230,7 +237,7 @@ class MundoMangaKun : ParsedHttpSource() { | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36" | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private val JSON_PARSER by lazy { JsonParser() } | ||||
|     } | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'Saikai Scan' | ||||
|     pkgNameSuffix = 'pt.saikaiscan' | ||||
|     extClass = '.SaikaiScan' | ||||
|     extVersionCode = 4 | ||||
|     extVersionCode = 5 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| package eu.kanade.tachiyomi.extension.pt.saikaiscan | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| import eu.kanade.tachiyomi.source.model.MangasPage | ||||
| @ -9,10 +10,12 @@ import eu.kanade.tachiyomi.source.model.SManga | ||||
| import eu.kanade.tachiyomi.source.online.ParsedHttpSource | ||||
| import okhttp3.Headers | ||||
| import okhttp3.HttpUrl | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import okhttp3.Response | ||||
| import org.jsoup.nodes.Document | ||||
| import org.jsoup.nodes.Element | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| class SaikaiScan : ParsedHttpSource() { | ||||
| 
 | ||||
| @ -27,6 +30,10 @@ class SaikaiScan : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = true | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.client.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
|         .add("Origin", baseUrl) | ||||
| @ -136,7 +143,8 @@ class SaikaiScan : ParsedHttpSource() { | ||||
|     private fun removeLabel(info: String) = info.substringAfter(":") | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36" | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
|         private val CHAPTER_REGEX = "Capítulo (\\d+)".toRegex() | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'Social Comics' | ||||
|     pkgNameSuffix = 'pt.socialcomics' | ||||
|     extClass = '.SocialComics' | ||||
|     extVersionCode = 1 | ||||
|     extVersionCode = 2 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -15,6 +15,7 @@ import com.github.salomonbrys.kotson.string | ||||
| import com.google.gson.JsonElement | ||||
| import com.google.gson.JsonObject | ||||
| import com.google.gson.JsonParser | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.network.POST | ||||
| import eu.kanade.tachiyomi.source.ConfigurableSource | ||||
| @ -37,6 +38,7 @@ import uy.kohesive.injekt.Injekt | ||||
| import uy.kohesive.injekt.api.get | ||||
| import java.io.IOException | ||||
| import java.lang.UnsupportedOperationException | ||||
| import java.util.concurrent.TimeUnit | ||||
| import androidx.preference.EditTextPreference as AndroidXEditTextPreference | ||||
| import androidx.preference.PreferenceScreen as AndroidXPreferenceScreen | ||||
| 
 | ||||
| @ -51,7 +53,8 @@ class SocialComics : HttpSource(), ConfigurableSource { | ||||
|     override val supportsLatest = false | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.cloudflareClient.newBuilder() | ||||
|         .addInterceptor { authIntercept(it) } | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .addInterceptor(::authIntercept) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
| @ -411,7 +414,7 @@ class SocialComics : HttpSource(), ConfigurableSource { | ||||
|         private const val ACCEPT_JSON = "application/json, text/plain, */*" | ||||
|         private const val ACCEPT_IMAGE = "image/avif,image/webp,image/apng,image/*,*/*;q=0.8" | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36" | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private val JSON_PARSER by lazy { JsonParser() } | ||||
| 
 | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'Tao Sect' | ||||
|     pkgNameSuffix = 'pt.taosect' | ||||
|     extClass = '.TaoSect' | ||||
|     extVersionCode = 1 | ||||
|     extVersionCode = 2 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| package eu.kanade.tachiyomi.extension.pt.taosect | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.source.model.Filter | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @ -9,6 +10,7 @@ import eu.kanade.tachiyomi.source.model.SManga | ||||
| import eu.kanade.tachiyomi.source.online.ParsedHttpSource | ||||
| import okhttp3.Headers | ||||
| import okhttp3.HttpUrl | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import okhttp3.Response | ||||
| import org.jsoup.nodes.Document | ||||
| @ -17,6 +19,7 @@ import java.lang.UnsupportedOperationException | ||||
| import java.text.ParseException | ||||
| import java.text.SimpleDateFormat | ||||
| import java.util.Locale | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| class TaoSect : ParsedHttpSource() { | ||||
| 
 | ||||
| @ -28,6 +31,10 @@ class TaoSect : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = false | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.client.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
|         .add("Origin", baseUrl) | ||||
| @ -256,7 +263,8 @@ class TaoSect : ParsedHttpSource() { | ||||
|     ) | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private val DATE_FORMATTER by lazy { SimpleDateFormat("(dd/MM/yyyy)", Locale.ENGLISH) } | ||||
| 
 | ||||
|  | ||||
| @ -5,7 +5,7 @@ ext { | ||||
|     extName = 'Tsuki Mangás' | ||||
|     pkgNameSuffix = 'pt.tsukimangas' | ||||
|     extClass = '.TsukiMangas' | ||||
|     extVersionCode = 12 | ||||
|     extVersionCode = 13 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -40,7 +40,7 @@ class TsukiMangas : HttpSource() { | ||||
|     override val supportsLatest = true | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.cloudflareClient.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(3, 1, TimeUnit.SECONDS)) | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'Union Mangás' | ||||
|     pkgNameSuffix = 'pt.unionmangas' | ||||
|     extClass = '.UnionMangas' | ||||
|     extVersionCode = 18 | ||||
|     extVersionCode = 19 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -5,6 +5,7 @@ import com.github.salomonbrys.kotson.obj | ||||
| import com.github.salomonbrys.kotson.string | ||||
| import com.google.gson.JsonObject | ||||
| import com.google.gson.JsonParser | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.network.POST | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @ -39,13 +40,12 @@ class UnionMangas : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = true | ||||
| 
 | ||||
|     // Sometimes the site is very slow. | ||||
|     override val client: OkHttpClient = | ||||
|         network.cloudflareClient.newBuilder() | ||||
|             .connectTimeout(3, TimeUnit.MINUTES) | ||||
|             .readTimeout(3, TimeUnit.MINUTES) | ||||
|             .writeTimeout(3, TimeUnit.MINUTES) | ||||
|             .build() | ||||
|     override val client: OkHttpClient = network.cloudflareClient.newBuilder() | ||||
|         .connectTimeout(3, TimeUnit.MINUTES) | ||||
|         .readTimeout(3, TimeUnit.MINUTES) | ||||
|         .writeTimeout(3, TimeUnit.MINUTES) | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
| @ -222,7 +222,7 @@ class UnionMangas : ParsedHttpSource() { | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private val JSON_PARSER by lazy { JsonParser() } | ||||
| 
 | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'YES Mangás' | ||||
|     pkgNameSuffix = 'pt.yesmangas' | ||||
|     extClass = '.YesMangas' | ||||
|     extVersionCode = 6 | ||||
|     extVersionCode = 7 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| package eu.kanade.tachiyomi.extension.pt.yesmangas | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| import eu.kanade.tachiyomi.source.model.Page | ||||
| @ -8,10 +9,12 @@ import eu.kanade.tachiyomi.source.model.SManga | ||||
| import eu.kanade.tachiyomi.source.online.ParsedHttpSource | ||||
| import okhttp3.Headers | ||||
| import okhttp3.HttpUrl | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import org.jsoup.nodes.Document | ||||
| import org.jsoup.nodes.Element | ||||
| import org.jsoup.select.Elements | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| class YesMangas : ParsedHttpSource() { | ||||
| 
 | ||||
| @ -26,6 +29,10 @@ class YesMangas : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = true | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.cloudflareClient.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
|         .add("Origin", baseUrl) | ||||
| @ -131,7 +138,7 @@ class YesMangas : ParsedHttpSource() { | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36" | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private val LANG_REGEX = "( )?\\((PT-)?BR\\)".toRegex() | ||||
|         private val IMAGE_REGEX = "_(small|medium|xmedium|xlarge)\\.".toRegex() | ||||
|  | ||||
| @ -5,8 +5,12 @@ ext { | ||||
|     extName = 'Zinnes' | ||||
|     pkgNameSuffix = 'pt.zinnes' | ||||
|     extClass = '.Zinnes' | ||||
|     extVersionCode = 2 | ||||
|     extVersionCode = 3 | ||||
|     libVersion = '1.2' | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation project(':lib-ratelimit') | ||||
| } | ||||
| 
 | ||||
| apply from: "$rootDir/common.gradle" | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| package eu.kanade.tachiyomi.extension.pt.zinnes | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| import eu.kanade.tachiyomi.source.model.MangasPage | ||||
| @ -10,6 +11,7 @@ import eu.kanade.tachiyomi.source.online.ParsedHttpSource | ||||
| import eu.kanade.tachiyomi.util.asJsoup | ||||
| import okhttp3.Headers | ||||
| import okhttp3.HttpUrl | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import okhttp3.Response | ||||
| import org.jsoup.nodes.Document | ||||
| @ -17,6 +19,7 @@ import org.jsoup.nodes.Element | ||||
| import java.text.ParseException | ||||
| import java.text.SimpleDateFormat | ||||
| import java.util.Locale | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| class Zinnes : ParsedHttpSource() { | ||||
| 
 | ||||
| @ -31,6 +34,10 @@ class Zinnes : ParsedHttpSource() { | ||||
| 
 | ||||
|     override val supportsLatest = false | ||||
| 
 | ||||
|     override val client: OkHttpClient = network.client.newBuilder() | ||||
|         .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) | ||||
|         .build() | ||||
| 
 | ||||
|     override fun headersBuilder(): Headers.Builder = Headers.Builder() | ||||
|         .add("User-Agent", USER_AGENT) | ||||
|         .add("Referer", baseUrl) | ||||
| @ -135,7 +142,8 @@ class Zinnes : ParsedHttpSource() { | ||||
|     } | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36" | ||||
|         private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + | ||||
|             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36" | ||||
| 
 | ||||
|         private val ID_REGEX = "var titulo = \\{\"id\":\"(\\d+)\"".toRegex() | ||||
|         private val FILES_REGEX = "var arquivos = \\[(.*)\\];".toRegex() | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Alessandro Jean
						Alessandro Jean