Update language in Brazilian sources. (#2860)
This commit is contained in:
parent
a2fa6231f0
commit
42ad92bbff
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: FoolSlide (multiple sources)'
|
appName = 'Tachiyomi: FoolSlide (multiple sources)'
|
||||||
pkgNameSuffix = 'all.foolslide'
|
pkgNameSuffix = 'all.foolslide'
|
||||||
extClass = '.FoolSlideFactory'
|
extClass = '.FoolSlideFactory'
|
||||||
extVersionCode = 40
|
extVersionCode = 41
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -142,7 +142,10 @@ class KirishimaFansub : FoolSlide("Kirishima Fansub", "https://kirishimafansub.n
|
||||||
|
|
||||||
class PowerMangaIT : FoolSlide("PowerManga", "https://reader.powermanga.org", "it", "")
|
class PowerMangaIT : FoolSlide("PowerManga", "https://reader.powermanga.org", "it", "")
|
||||||
|
|
||||||
class BaixarHentai : FoolSlide("Baixar Hentai", "https://leitura.baixarhentai.net", "pt") {
|
class BaixarHentai : FoolSlide("Baixar Hentai", "https://leitura.baixarhentai.net", "pt-BR") {
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 8908032188831949972
|
||||||
|
|
||||||
override fun mangaDetailsParse(document: Document): SManga {
|
override fun mangaDetailsParse(document: Document): SManga {
|
||||||
return SManga.create().apply {
|
return SManga.create().apply {
|
||||||
title = document.select("h1.title").text()
|
title = document.select("h1.title").text()
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: NOISE Manga'
|
appName = 'Tachiyomi: NOISE Manga'
|
||||||
pkgNameSuffix = 'all.noisemanga'
|
pkgNameSuffix = 'all.noisemanga'
|
||||||
extClass = '.NoiseMangaFactory'
|
extClass = '.NoiseMangaFactory'
|
||||||
extVersionCode = 1
|
extVersionCode = 2
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ abstract class NoiseManga(override val lang: String) : ParsedHttpSource() {
|
||||||
override fun chapterListRequest(manga: SManga): Request = GET(baseUrl + manga.url, headers)
|
override fun chapterListRequest(manga: SManga): Request = GET(baseUrl + manga.url, headers)
|
||||||
|
|
||||||
override fun chapterListSelector(): String {
|
override fun chapterListSelector(): String {
|
||||||
val columnSelector = if (lang == "pt") 1 else 2
|
val columnSelector = if (lang == "pt-BR") 1 else 2
|
||||||
|
|
||||||
return "div.entry-content div table tr td:nth-child($columnSelector) a"
|
return "div.entry-content div table tr td:nth-child($columnSelector) a"
|
||||||
}
|
}
|
||||||
|
@ -108,6 +108,6 @@ abstract class NoiseManga(override val lang: String) : ParsedHttpSource() {
|
||||||
override fun latestUpdatesNextPageSelector() = throw Exception("This method should not be called!")
|
override fun latestUpdatesNextPageSelector() = throw Exception("This method should not be called!")
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
|
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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,4 +11,8 @@ class NoiseMangaFactory : SourceFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
class NoiseMangaEnglish : NoiseManga("en")
|
class NoiseMangaEnglish : NoiseManga("en")
|
||||||
class NoiseMangaPortuguese : NoiseManga("pt")
|
|
||||||
|
class NoiseMangaPortuguese : NoiseManga("pt-BR") {
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 8279458690164834090
|
||||||
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: Toomics'
|
appName = 'Tachiyomi: Toomics'
|
||||||
pkgNameSuffix = 'all.toomics'
|
pkgNameSuffix = 'all.toomics'
|
||||||
extClass = '.ToomicsFactory'
|
extClass = '.ToomicsFactory'
|
||||||
extVersionCode = 3
|
extVersionCode = 4
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,4 +27,8 @@ class ToomicsSpanish : ToomicsGlobal("es", SimpleDateFormat("d MMM, yyyy", Local
|
||||||
class ToomicsItalian : ToomicsGlobal("it", SimpleDateFormat("d MMM, yyyy", Locale.ITALIAN))
|
class ToomicsItalian : ToomicsGlobal("it", SimpleDateFormat("d MMM, yyyy", Locale.ITALIAN))
|
||||||
class ToomicsGerman : ToomicsGlobal("de", SimpleDateFormat("d. MMM yyyy", Locale.GERMAN))
|
class ToomicsGerman : ToomicsGlobal("de", SimpleDateFormat("d. MMM yyyy", Locale.GERMAN))
|
||||||
class ToomicsFrench : ToomicsGlobal("fr", SimpleDateFormat("dd MMM. yyyy", Locale.ENGLISH))
|
class ToomicsFrench : ToomicsGlobal("fr", SimpleDateFormat("dd MMM. yyyy", Locale.ENGLISH))
|
||||||
class ToomicsPortuguese : ToomicsGlobal("por", SimpleDateFormat("d 'de' MMM 'de' yyyy", Locale("pt", "BR")), "pt")
|
|
||||||
|
class ToomicsPortuguese : ToomicsGlobal("por", SimpleDateFormat("d 'de' MMM 'de' yyyy", Locale("pt", "BR")), "pt-BR") {
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 4488498756724948818
|
||||||
|
}
|
||||||
|
|
|
@ -160,6 +160,6 @@ abstract class ToomicsGlobal(
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
|
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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: AnimaRegia'
|
appName = 'Tachiyomi: AnimaRegia'
|
||||||
pkgNameSuffix = 'pt.animaregia'
|
pkgNameSuffix = 'pt.animaregia'
|
||||||
extClass = '.AnimaRegia'
|
extClass = '.AnimaRegia'
|
||||||
extVersionCode = 1
|
extVersionCode = 2
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,11 +24,14 @@ import org.jsoup.nodes.Element
|
||||||
|
|
||||||
class AnimaRegia : ParsedHttpSource() {
|
class AnimaRegia : ParsedHttpSource() {
|
||||||
|
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 4378659695320121364
|
||||||
|
|
||||||
override val name = "AnimaRegia"
|
override val name = "AnimaRegia"
|
||||||
|
|
||||||
override val baseUrl = "https://animaregia.net"
|
override val baseUrl = "https://animaregia.net"
|
||||||
|
|
||||||
override val lang = "pt"
|
override val lang = "pt-BR"
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
|
@ -170,7 +173,7 @@ class AnimaRegia : ParsedHttpSource() {
|
||||||
private fun Response.asJsonObject(): JsonObject = JSON_PARSER.parse(body()!!.string()).obj
|
private fun Response.asJsonObject(): JsonObject = JSON_PARSER.parse(body()!!.string()).obj
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
|
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 val JSON_PARSER by lazy { JsonParser() }
|
private val JSON_PARSER by lazy { JsonParser() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: Central de Mangás'
|
appName = 'Tachiyomi: Central de Mangás'
|
||||||
pkgNameSuffix = 'pt.centraldemangas'
|
pkgNameSuffix = 'pt.centraldemangas'
|
||||||
extClass = '.CentralDeMangas'
|
extClass = '.CentralDeMangas'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,11 +27,14 @@ import rx.Observable
|
||||||
|
|
||||||
class CentralDeMangas : ParsedHttpSource() {
|
class CentralDeMangas : ParsedHttpSource() {
|
||||||
|
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 711589261250964163
|
||||||
|
|
||||||
override val name = "Central de Mangás"
|
override val name = "Central de Mangás"
|
||||||
|
|
||||||
override val baseUrl = "http://centraldemangas.online"
|
override val baseUrl = "http://centraldemangas.online"
|
||||||
|
|
||||||
override val lang = "pt"
|
override val lang = "pt-BR"
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
|
@ -192,7 +195,7 @@ class CentralDeMangas : ParsedHttpSource() {
|
||||||
private fun Response.asJsonArray(): JsonArray = JSON_PARSER.parse(body()!!.string()).array
|
private fun Response.asJsonArray(): JsonArray = JSON_PARSER.parse(body()!!.string()).array
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
|
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 COVER_CDN = "http://capas.centraldemangas.com.br"
|
private const val COVER_CDN = "http://capas.centraldemangas.com.br"
|
||||||
|
|
||||||
private const val SCRIPT_URL_BEGIN = "var urlSulfix = '"
|
private const val SCRIPT_URL_BEGIN = "var urlSulfix = '"
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: Golden Mangás'
|
appName = 'Tachiyomi: Golden Mangás'
|
||||||
pkgNameSuffix = 'pt.goldenmangas'
|
pkgNameSuffix = 'pt.goldenmangas'
|
||||||
extClass = '.GoldenMangas'
|
extClass = '.GoldenMangas'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package eu.kanade.tachiyomi.extension.pt.goldenmangas
|
package eu.kanade.tachiyomi.extension.pt.goldenmangas
|
||||||
|
|
||||||
import android.util.Log
|
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
|
@ -20,11 +19,14 @@ import org.jsoup.nodes.Element
|
||||||
|
|
||||||
class GoldenMangas : ParsedHttpSource() {
|
class GoldenMangas : ParsedHttpSource() {
|
||||||
|
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 6858719406079923084
|
||||||
|
|
||||||
override val name = "Golden Mangás"
|
override val name = "Golden Mangás"
|
||||||
|
|
||||||
override val baseUrl = "https://goldenmanga.top"
|
override val baseUrl = "https://goldenmanga.top"
|
||||||
|
|
||||||
override val lang = "pt"
|
override val lang = "pt-BR"
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
|
@ -59,7 +61,6 @@ class GoldenMangas : ParsedHttpSource() {
|
||||||
override fun latestUpdatesSelector() = "div.col-sm-12.atualizacao > div.row"
|
override fun latestUpdatesSelector() = "div.col-sm-12.atualizacao > div.row"
|
||||||
|
|
||||||
override fun latestUpdatesFromElement(element: Element): SManga = SManga.create().apply {
|
override fun latestUpdatesFromElement(element: Element): SManga = SManga.create().apply {
|
||||||
Log.d("golden", element.html())
|
|
||||||
val infoElement = element.select("div.col-sm-10.col-xs-8 h3").first()
|
val infoElement = element.select("div.col-sm-10.col-xs-8 h3").first()
|
||||||
val thumb = element.select("a:first-child div img").first().attr("src")
|
val thumb = element.select("a:first-child div img").first().attr("src")
|
||||||
|
|
||||||
|
@ -148,7 +149,7 @@ class GoldenMangas : ParsedHttpSource() {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
|
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 val FLAG_REGEX = "\\((Pt-br|Scan)\\)".toRegex(RegexOption.IGNORE_CASE)
|
private val FLAG_REGEX = "\\((Pt[-/]br|Scan)\\)".toRegex(RegexOption.IGNORE_CASE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: HipercooL'
|
appName = 'Tachiyomi: HipercooL'
|
||||||
pkgNameSuffix = 'pt.hipercool'
|
pkgNameSuffix = 'pt.hipercool'
|
||||||
extClass = '.Hipercool'
|
extClass = '.Hipercool'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,18 +29,22 @@ import okhttp3.Response
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
|
|
||||||
class Hipercool : HttpSource() {
|
class Hipercool : HttpSource() {
|
||||||
|
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 5898568703656160
|
||||||
|
|
||||||
override val name = "HipercooL"
|
override val name = "HipercooL"
|
||||||
|
|
||||||
override val baseUrl = "https://hiper.cool"
|
override val baseUrl = "https://hiper.cool"
|
||||||
|
|
||||||
override val lang = "pt"
|
override val lang = "pt-BR"
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
.add("User-Agent", USER_AGENT)
|
.add("User-Agent", USER_AGENT)
|
||||||
.add("Referer", baseUrl)
|
.add("Referer", baseUrl)
|
||||||
.add("X-Requested-With", "XMLHttpRequest")
|
.add("X-Requested-With", "XMLHttpRequest")
|
||||||
|
|
||||||
private fun generalListMangaParse(obj: JsonObject): SManga {
|
private fun generalListMangaParse(obj: JsonObject): SManga {
|
||||||
val book = obj["_book"].obj
|
val book = obj["_book"].obj
|
||||||
|
@ -70,8 +74,8 @@ class Hipercool : HttpSource() {
|
||||||
return MangasPage(emptyList(), false)
|
return MangasPage(emptyList(), false)
|
||||||
|
|
||||||
val latestMangas = result
|
val latestMangas = result
|
||||||
.map { latestMangaItemParse(it.obj) }
|
.map { latestMangaItemParse(it.obj) }
|
||||||
.distinctBy { it.title }
|
.distinctBy { it.title }
|
||||||
|
|
||||||
return MangasPage(latestMangas, result.size() == 40)
|
return MangasPage(latestMangas, result.size() == 40)
|
||||||
}
|
}
|
||||||
|
@ -101,8 +105,8 @@ class Hipercool : HttpSource() {
|
||||||
return MangasPage(emptyList(), false)
|
return MangasPage(emptyList(), false)
|
||||||
|
|
||||||
val searchMangas = result
|
val searchMangas = result
|
||||||
.map { searchMangaItemParse(it.obj) }
|
.map { searchMangaItemParse(it.obj) }
|
||||||
.distinctBy { it.title }
|
.distinctBy { it.title }
|
||||||
|
|
||||||
return MangasPage(searchMangas, result.size() == 40)
|
return MangasPage(searchMangas, result.size() == 40)
|
||||||
}
|
}
|
||||||
|
@ -112,10 +116,10 @@ class Hipercool : HttpSource() {
|
||||||
// Workaround to allow "Open in browser" use the real URL.
|
// Workaround to allow "Open in browser" use the real URL.
|
||||||
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
||||||
return client.newCall(mangaDetailsApiRequest(manga))
|
return client.newCall(mangaDetailsApiRequest(manga))
|
||||||
.asObservableSuccess()
|
.asObservableSuccess()
|
||||||
.map { response ->
|
.map { response ->
|
||||||
mangaDetailsParse(response).apply { initialized = true }
|
mangaDetailsParse(response).apply { initialized = true }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun mangaDetailsApiRequest(manga: SManga): Request {
|
private fun mangaDetailsApiRequest(manga: SManga): Request {
|
||||||
|
@ -128,19 +132,19 @@ class Hipercool : HttpSource() {
|
||||||
val result = response.asJsonObject()
|
val result = response.asJsonObject()
|
||||||
|
|
||||||
val artists = result["tags"].array
|
val artists = result["tags"].array
|
||||||
.filter { it["label"].string == "Artista" }
|
.filter { it["label"].string == "Artista" }
|
||||||
.flatMap { it["values"].array }
|
.flatMap { it["values"].array }
|
||||||
.joinToString("; ") { it["label"].string }
|
.joinToString("; ") { it["label"].string }
|
||||||
|
|
||||||
val authors = result["tags"].array
|
val authors = result["tags"].array
|
||||||
.filter { it["label"].string == "Autor" }
|
.filter { it["label"].string == "Autor" }
|
||||||
.flatMap { it["values"].array }
|
.flatMap { it["values"].array }
|
||||||
.joinToString("; ") { it["label"].string }
|
.joinToString("; ") { it["label"].string }
|
||||||
|
|
||||||
val tags = result["tags"].array
|
val tags = result["tags"].array
|
||||||
.filter { it["label"].string == "Tags" }
|
.filter { it["label"].string == "Tags" }
|
||||||
.flatMap { it["values"].array }
|
.flatMap { it["values"].array }
|
||||||
.joinToString(", ") { it["label"].string }
|
.joinToString(", ") { it["label"].string }
|
||||||
|
|
||||||
return SManga.create().apply {
|
return SManga.create().apply {
|
||||||
title = result["title"].string
|
title = result["title"].string
|
||||||
|
@ -162,8 +166,8 @@ class Hipercool : HttpSource() {
|
||||||
return emptyList()
|
return emptyList()
|
||||||
|
|
||||||
return result["chapters"].array
|
return result["chapters"].array
|
||||||
.map { chapterListItemParse(result, it.obj) }
|
.map { chapterListItemParse(result, it.obj) }
|
||||||
.reversed()
|
.reversed()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun chapterListItemParse(book: JsonObject, obj: JsonObject): SChapter = SChapter.create().apply {
|
private fun chapterListItemParse(book: JsonObject, obj: JsonObject): SChapter = SChapter.create().apply {
|
||||||
|
@ -208,11 +212,11 @@ class Hipercool : HttpSource() {
|
||||||
|
|
||||||
override fun imageRequest(page: Page): Request {
|
override fun imageRequest(page: Page): Request {
|
||||||
val newHeaders = Headers.Builder()
|
val newHeaders = Headers.Builder()
|
||||||
.apply {
|
.apply {
|
||||||
add("Referer", page.url)
|
add("Referer", page.url)
|
||||||
add("User-Agent", USER_AGENT)
|
add("User-Agent", USER_AGENT)
|
||||||
}
|
}
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
return GET(page.imageUrl!!, newHeaders)
|
return GET(page.imageUrl!!, newHeaders)
|
||||||
}
|
}
|
||||||
|
@ -220,8 +224,8 @@ class Hipercool : HttpSource() {
|
||||||
private fun parseChapterDate(date: String): Long {
|
private fun parseChapterDate(date: String): Long {
|
||||||
return try {
|
return try {
|
||||||
SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH)
|
SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH)
|
||||||
.parse(date.substringBefore("T"))
|
.parse(date.substringBefore("T"))
|
||||||
.time
|
.time
|
||||||
} catch (e: ParseException) {
|
} catch (e: ParseException) {
|
||||||
0L
|
0L
|
||||||
}
|
}
|
||||||
|
@ -239,7 +243,7 @@ class Hipercool : HttpSource() {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val STATIC_URL = "https://static.hiper.cool"
|
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/69.0.3497.92 Safari/537.36"
|
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 CHAPTER_REGEX = "\\/books\\/(.*)\\/(.*)\\?images=(\\d+)&revision=(\\d+)\$"
|
private const val CHAPTER_REGEX = "\\/books\\/(.*)\\/(.*)\\?images=(\\d+)&revision=(\\d+)\$"
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: MangaYabu!'
|
appName = 'Tachiyomi: MangaYabu!'
|
||||||
pkgNameSuffix = 'pt.mangayabu'
|
pkgNameSuffix = 'pt.mangayabu'
|
||||||
extClass = '.MangaYabu'
|
extClass = '.MangaYabu'
|
||||||
extVersionCode = 1
|
extVersionCode = 2
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,14 @@ import rx.Observable
|
||||||
|
|
||||||
class MangaYabu : ParsedHttpSource() {
|
class MangaYabu : ParsedHttpSource() {
|
||||||
|
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 7152688036023311164
|
||||||
|
|
||||||
override val name = "MangaYabu!"
|
override val name = "MangaYabu!"
|
||||||
|
|
||||||
override val baseUrl = "https://mangayabu.com"
|
override val baseUrl = "https://mangayabu.com"
|
||||||
|
|
||||||
override val lang = "pt"
|
override val lang = "pt-BR"
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
|
@ -33,7 +36,7 @@ class MangaYabu : ParsedHttpSource() {
|
||||||
override fun fetchPopularManga(page: Int): Observable<MangasPage> {
|
override fun fetchPopularManga(page: Int): Observable<MangasPage> {
|
||||||
return super.fetchPopularManga(page)
|
return super.fetchPopularManga(page)
|
||||||
.map {
|
.map {
|
||||||
MangasPage(it.mangas.distinctBy { m -> m.title }, it.hasNextPage)
|
MangasPage(it.mangas.distinctBy { m -> m.url }, it.hasNextPage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +55,7 @@ class MangaYabu : ParsedHttpSource() {
|
||||||
override fun fetchLatestUpdates(page: Int): Observable<MangasPage> {
|
override fun fetchLatestUpdates(page: Int): Observable<MangasPage> {
|
||||||
return super.fetchLatestUpdates(page)
|
return super.fetchLatestUpdates(page)
|
||||||
.map {
|
.map {
|
||||||
MangasPage(it.mangas.distinctBy { m -> m.title }, it.hasNextPage)
|
MangasPage(it.mangas.distinctBy { m -> m.url }, it.hasNextPage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +148,7 @@ class MangaYabu : ParsedHttpSource() {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36"
|
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 val SLUG_EXCEPTIONS = mapOf(
|
private val SLUG_EXCEPTIONS = mapOf(
|
||||||
"the-promised-neverland-yakusoku-no-neverland" to "yakusoku-no-neverland-the-promised-neverland"
|
"the-promised-neverland-yakusoku-no-neverland" to "yakusoku-no-neverland-the-promised-neverland"
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: Saikai Scan'
|
appName = 'Tachiyomi: Saikai Scan'
|
||||||
pkgNameSuffix = 'pt.saikaiscan'
|
pkgNameSuffix = 'pt.saikaiscan'
|
||||||
extClass = '.SaikaiScan'
|
extClass = '.SaikaiScan'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,14 @@ import org.jsoup.nodes.Element
|
||||||
|
|
||||||
class SaikaiScan : ParsedHttpSource() {
|
class SaikaiScan : ParsedHttpSource() {
|
||||||
|
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 2686610366990303664
|
||||||
|
|
||||||
override val name = "Saikai Scan"
|
override val name = "Saikai Scan"
|
||||||
|
|
||||||
override val baseUrl = "https://saikaiscan.com.br"
|
override val baseUrl = "https://saikaiscan.com.br"
|
||||||
|
|
||||||
override val lang = "pt"
|
override val lang = "pt-BR"
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
|
@ -133,7 +136,7 @@ class SaikaiScan : ParsedHttpSource() {
|
||||||
private fun removeLabel(info: String) = info.substringAfter(":")
|
private fun removeLabel(info: String) = info.substringAfter(":")
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
|
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 val CHAPTER_REGEX = "Capítulo (\\d+)".toRegex()
|
private val CHAPTER_REGEX = "Capítulo (\\d+)".toRegex()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: YES Mangás'
|
appName = 'Tachiyomi: YES Mangás'
|
||||||
pkgNameSuffix = 'pt.yesmangas'
|
pkgNameSuffix = 'pt.yesmangas'
|
||||||
extClass = '.YesMangas'
|
extClass = '.YesMangas'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,11 +15,14 @@ import org.jsoup.nodes.Element
|
||||||
|
|
||||||
class YesMangas : ParsedHttpSource() {
|
class YesMangas : ParsedHttpSource() {
|
||||||
|
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 7187189302580957274
|
||||||
|
|
||||||
override val name = "YES Mangás"
|
override val name = "YES Mangás"
|
||||||
|
|
||||||
override val baseUrl = "https://yesmangas1.com"
|
override val baseUrl = "https://yesmangas1.com"
|
||||||
|
|
||||||
override val lang = "pt"
|
override val lang = "pt-BR"
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
|
@ -120,7 +123,7 @@ class YesMangas : ParsedHttpSource() {
|
||||||
private fun removeLabel(info: String) = info.substringAfter(":")
|
private fun removeLabel(info: String) = info.substringAfter(":")
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
|
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 val LANG_REGEX = "( )?\\((PT-)?BR\\)".toRegex()
|
private val LANG_REGEX = "( )?\\((PT-)?BR\\)".toRegex()
|
||||||
|
|
||||||
private const val SCRIPT_BEGIN = "var images = ["
|
private const val SCRIPT_BEGIN = "var images = ["
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: Zinnes'
|
appName = 'Tachiyomi: Zinnes'
|
||||||
pkgNameSuffix = 'pt.zinnes'
|
pkgNameSuffix = 'pt.zinnes'
|
||||||
extClass = '.Zinnes'
|
extClass = '.Zinnes'
|
||||||
extVersionCode = 1
|
extVersionCode = 2
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,11 +20,14 @@ import org.jsoup.nodes.Element
|
||||||
|
|
||||||
class Zinnes : ParsedHttpSource() {
|
class Zinnes : ParsedHttpSource() {
|
||||||
|
|
||||||
|
// Hardcode the id because the language wasn't specific.
|
||||||
|
override val id: Long = 568551799323473384
|
||||||
|
|
||||||
override val name = "Zinnes"
|
override val name = "Zinnes"
|
||||||
|
|
||||||
override val baseUrl = "https://www.zinnes.com.br"
|
override val baseUrl = "https://www.zinnes.com.br"
|
||||||
|
|
||||||
override val lang = "pt"
|
override val lang = "pt-BR"
|
||||||
|
|
||||||
override val supportsLatest = false
|
override val supportsLatest = false
|
||||||
|
|
||||||
|
@ -132,7 +135,7 @@ class Zinnes : ParsedHttpSource() {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
|
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 val ID_REGEX = "var titulo = \\{\"id\":\"(\\d+)\"".toRegex()
|
private val ID_REGEX = "var titulo = \\{\"id\":\"(\\d+)\"".toRegex()
|
||||||
private val FILES_REGEX = "var arquivos = \\[(.*)\\];".toRegex()
|
private val FILES_REGEX = "var arquivos = \\[(.*)\\];".toRegex()
|
||||||
|
|
Loading…
Reference in New Issue