Daily Update Portugues (#447)

* Hipercool change url

* Fix Url HiperCool

* Arkham Scan -> HuntersScan (Fusion)

* CeriseScans Change Url

* animaregia (Down)

* SssScanlatorHentai (is closed)

* Update multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt

Co-authored-by: Vetle Ledaal <vetle.ledaal@gmail.com>

* Update multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt

Co-authored-by: Vetle Ledaal <vetle.ledaal@gmail.com>

---------

Co-authored-by: Vetle Ledaal <vetle.ledaal@gmail.com>
This commit is contained in:
Deivid Gabriel Pereira de Oliveira 2024-01-22 01:02:17 -03:00 committed by Draff
parent 11e66824c4
commit ee11eaa24f
13 changed files with 4 additions and 180 deletions

View File

@ -13,7 +13,7 @@ import java.util.concurrent.TimeUnit
class CeriseScan : Madara(
"Cerise Scan",
"https://cerisescan.com",
"https://cerisescan.net",
"pt-BR",
SimpleDateFormat("dd 'de' MMMMM 'de' yyyy", Locale("pt", "BR")),
) {

View File

@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.network.interceptor.rateLimit
import okhttp3.OkHttpClient
import java.util.concurrent.TimeUnit
class Hipercool : Madara("HipercooL", "https://hipercool.xyz", "pt-BR") {
class Hipercool : Madara("HipercooL", "https://hiper.cool", "pt-BR") {
// Migrated from a custom CMS to Madara.
override val versionId = 2

View File

@ -1,22 +0,0 @@
package eu.kanade.tachiyomi.extension.pt.arkhamscan
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import okhttp3.OkHttpClient
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.concurrent.TimeUnit
class ArkhamScan : MangaThemesia(
"Arkham Scan",
"https://arkhamscan.com",
"pt-BR",
dateFormat = SimpleDateFormat("MMMMM dd, yyyy", Locale("pt", "BR")),
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(1, 2, TimeUnit.SECONDS)
.build()
override val altNamePrefix = "Nomes alternativos: "
}

View File

@ -1,36 +0,0 @@
package eu.kanade.tachiyomi.extension.pt.ssshentais
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.Page
import okhttp3.OkHttpClient
import okhttp3.Request
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.concurrent.TimeUnit
class SssHentais : MangaThemesia(
"SSS Hentais",
"https://hentais.sssscanlator.com",
"pt-BR",
dateFormat = SimpleDateFormat("MMMMM dd, yyyy", Locale("pt", "BR")),
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(1, 2, TimeUnit.SECONDS)
.build()
override fun imageRequest(page: Page): Request {
val newHeaders = headersBuilder()
.set("Referer", page.url)
.set("Accept", "image/avif,image/webp,*/*")
.set("Accept-Language", "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3")
.set("Sec-Fetch-Dest", "image")
.set("Sec-Fetch-Mode", "no-cors")
.set("Sec-Fetch-Site", "same-origin")
.build()
return GET(page.imageUrl!!, newHeaders)
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

View File

@ -1,115 +0,0 @@
package eu.kanade.tachiyomi.extension.pt.animaregia
import eu.kanade.tachiyomi.multisrc.mmrcms.MMRCMS
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.MangasPage
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.Response
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.concurrent.TimeUnit
class AnimaRegia : MMRCMS("AnimaRegia", "https://animaregia.net", "pt-BR") {
override val id: Long = 4378659695320121364
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(1, 2, TimeUnit.SECONDS)
.build()
// Remove the language tag from the title name.
override fun internalMangaParse(response: Response): MangasPage {
return super.internalMangaParse(response).let {
it.copy(
mangas = it.mangas.map { manga ->
manga.apply { title = title.removeSuffix(LANGUAGE_SUFFIX) }
},
)
}
}
override fun latestUpdatesFromElement(element: Element, urlSelector: String): SManga? {
return super.latestUpdatesFromElement(element, urlSelector)
?.apply { title = title.removeSuffix(LANGUAGE_SUFFIX) }
}
override fun gridLatestUpdatesFromElement(element: Element): SManga {
return super.gridLatestUpdatesFromElement(element)
.apply { title = title.removeSuffix(LANGUAGE_SUFFIX) }
}
// Override searchMangaParse with same body from internalMangaParse since
// it can use the other endpoint instead.
override fun searchMangaParse(response: Response): MangasPage {
return super.searchMangaParse(response).let {
it.copy(
mangas = it.mangas.map { manga ->
manga.apply { title = title.removeSuffix(LANGUAGE_SUFFIX) }
},
)
}
}
// The website modified the information panel.
override fun mangaDetailsParse(response: Response): SManga = SManga.create().apply {
val document = response.asJsoup()
title = document.selectFirst("h1.widget-title")!!.text()
thumbnail_url = coverGuess(
document.select("div.col-sm-5 img.img-thumbnail").firstOrNull()?.attr("abs:src"),
document.location(),
)
description = document.select("div.row div.well p")!!.text().trim()
for (element in document.select("div.col-sm-5 ul.list-group li.list-group-item")) {
when (element.text().trim().lowercase(BRAZILIAN_LOCALE).substringBefore(":")) {
"autor(es)" -> author = element.select("a")
.joinToString(", ") { it.text().trim() }
"artist(s)" -> artist = element.select("a")
.joinToString(", ") { it.text().trim() }
"categorias" -> genre = element.select("a")
.joinToString(", ") { it.text().trim() }
"status" -> status = when (element.select("span.label").text()) {
"Completo", "Concluído" -> SManga.COMPLETED
"Ativo" -> SManga.ONGOING
else -> SManga.UNKNOWN
}
}
}
}
override fun chapterListSelector(): String = "div.row ul.chapters > li"
override fun chapterListParse(response: Response): List<SChapter> {
return response.asJsoup()
.select(chapterListSelector())
.map { el ->
SChapter.create().apply {
name = el.select("h5.chapter-title-rtl").text()
scanlator = el.select("div.col-md-3 ul li")
.joinToString(" & ") { it.text().trim() }
date_upload = el.select("div.col-md-4").firstOrNull()
?.text()?.removeSuffix("Download")?.toDate() ?: 0L
setUrlWithoutDomain(el.select("h5.chapter-title-rtl a").first()!!.attr("href"))
}
}
}
private fun String.toDate(): Long {
return runCatching { DATE_FORMAT.parse(trim())?.time }
.getOrNull() ?: 0L
}
companion object {
private const val LANGUAGE_SUFFIX = " (pt-br)"
private val BRAZILIAN_LOCALE = Locale("pt", "BR")
private val DATE_FORMAT by lazy {
SimpleDateFormat("dd MMM. yyyy", Locale.ENGLISH)
}
}
}

View File

@ -66,7 +66,7 @@ class MadaraGenerator : ThemeSourceGenerator {
SingleLang("Cat300", "https://cat300.com", "th", isNsfw = true, className = "Cat300", overrideVersionCode = 1),
SingleLang("CatOnHeadTranslations", "https://catonhead.com", "en", overrideVersionCode = 2),
SingleLang("CBHentai", "https://cbhentai.net", "vi", isNsfw = true, overrideVersionCode = 7, pkgName = "hentaicube", className = "HentaiCB"),
SingleLang("Cerise Scan", "https://cerisescan.com", "pt-BR", pkgName = "cerisescans", isNsfw = true, overrideVersionCode = 7),
SingleLang("Cerise Scan", "https://cerisescan.net", "pt-BR", pkgName = "cerisescans", isNsfw = true, overrideVersionCode = 8),
SingleLang("Clover Manga", "https://clover-manga.com", "tr", overrideVersionCode = 2),
SingleLang("Coco Rip", "https://cocorip.net", "es"),
SingleLang("Coffee Manga", "https://coffeemanga.io", "en", isNsfw = false, overrideVersionCode = 2),
@ -144,7 +144,7 @@ class MadaraGenerator : ThemeSourceGenerator {
SingleLang("HentaiZM", "https://manga.hentaizm.fun", "tr", isNsfw = true),
SingleLang("HentaiZone", "https://hentaizone.xyz", "fr", isNsfw = true, overrideVersionCode = 1),
SingleLang("HerenScan", "https://herenscan.com", "es"),
SingleLang("HipercooL", "https://hipercool.xyz", "pt-BR", isNsfw = true, className = "Hipercool"),
SingleLang("HipercooL", "https://hiper.cool", "pt-BR", isNsfw = true, className = "Hipercool", overrideVersionCode = 1),
SingleLang("Hiperdex", "https://hiperdex.com", "en", isNsfw = true, overrideVersionCode = 11),
SingleLang("HistoireDHentai", "https://hhentai.fr", "fr", isNsfw = true),
SingleLang("Hizomanga", "https://hizomanga.com", "ar", overrideVersionCode = 1),

View File

@ -20,7 +20,6 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("Alceascan", "https://alceascan.my.id", "id"),
SingleLang("Animated Glitched Comics", "https://agscomics.com", "en"),
SingleLang("Animated Glitched Scans", "https://anigliscans.xyz", "en", overrideVersionCode = 1),
SingleLang("Arkham Scan", "https://arkhamscan.com", "pt-BR"),
SingleLang("Arven Scans", "https://arvenscans.com", "en"),
SingleLang("AscalonScans", "https://ascalonscans.com", "en"),
SingleLang("Asura Scans", "https://asuratoon.com", "en"),
@ -143,7 +142,6 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("SkyMangas", "https://skymangas.com", "es", overrideVersionCode = 1),
SingleLang("Snudae Scans", "https://snudaescans.com", "en", isNsfw = true, className = "BatotoScans", overrideVersionCode = 1),
SingleLang("Soul Scans", "https://soulscans.my.id", "id", overrideVersionCode = 1),
SingleLang("SSS Hentais", "https://hentais.sssscanlator.com", "pt-BR", isNsfw = true, className = "SssHentais", overrideVersionCode = 1),
SingleLang("SSSScanlator", "https://sssscanlator.com.br", "pt-BR", overrideVersionCode = 2),
SingleLang("Starlight Scan", "https://starligthscan.com", "pt-BR", isNsfw = true),
SingleLang("Summer Fansub", "https://smmr.in", "pt-BR", isNsfw = true),

View File

@ -18,7 +18,6 @@ object SourceData {
"https://manga.utsukushii-bg.com" -> """{"name":"Utsukushii","base_url":"https://manga.utsukushii-bg.com","supports_latest":true,"item_url":"https://manga.utsukushii-bg.com/manga/","categories":[{"id":"1","name":"Екшън"},{"id":"2","name":"Приключенски"},{"id":"3","name":"Комедия"},{"id":"4","name":"Драма"},{"id":"5","name":"Фентъзи"},{"id":"6","name":"Исторически"},{"id":"7","name":"Ужаси"},{"id":"8","name":"Джосей"},{"id":"9","name":"Бойни изкуства"},{"id":"10","name":"Меха"},{"id":"11","name":"Мистерия"},{"id":"12","name":"Самостоятелна/Пилотна глава"},{"id":"13","name":"Психологически"},{"id":"14","name":"Романтика"},{"id":"15","name":"Училищни"},{"id":"16","name":"Научна фантастика"},{"id":"17","name":"Сейнен"},{"id":"18","name":"Шоджо"},{"id":"19","name":"Реализъм"},{"id":"20","name":"Спорт"},{"id":"21","name":"Свръхестествено"},{"id":"22","name":"Трагедия"},{"id":"23","name":"Йокаи"},{"id":"24","name":"Паралелна вселена"},{"id":"25","name":"Супер сили"},{"id":"26","name":"Пародия"},{"id":"27","name":"Шонен"}]}"""
"https://phoenix-scans.pl" -> """{"name":"Phoenix-Scans","base_url":"https://phoenix-scans.pl","supports_latest":true,"item_url":"https://phoenix-scans.pl/manga/","categories":[{"id":"1","name":"Shounen"},{"id":"2","name":"Tragedia"},{"id":"3","name":"Szkolne życie"},{"id":"4","name":"Romans"},{"id":"5","name":"Zagadka"},{"id":"6","name":"Horror"},{"id":"7","name":"Dojrzałe"},{"id":"8","name":"Psychologiczne"},{"id":"9","name":"Przygodowe"},{"id":"10","name":"Akcja"},{"id":"11","name":"Komedia"},{"id":"12","name":"Zboczone"},{"id":"13","name":"Fantasy"},{"id":"14","name":"Harem"},{"id":"15","name":"Historyczne"},{"id":"16","name":"Manhua"},{"id":"17","name":"Manhwa"},{"id":"18","name":"Sztuki walki"},{"id":"19","name":"One shot"},{"id":"20","name":"Sci fi"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shounen ai"},{"id":"23","name":"Spokojne życie"},{"id":"24","name":"Sport"},{"id":"25","name":"Nadprzyrodzone"},{"id":"26","name":"Webtoons"},{"id":"27","name":"Dramat"},{"id":"28","name":"Hentai"},{"id":"29","name":"Mecha"},{"id":"30","name":"Gender Bender"},{"id":"31","name":"Gry"},{"id":"32","name":"Yaoi"}],"tags":[{"id":"aktywne","name":"aktywne"},{"id":"zakonczone","name":"zakończone"},{"id":"porzucone","name":"porzucone"},{"id":"zawieszone","name":"zawieszone"},{"id":"zlicencjonowane","name":"zlicencjonowane"},{"id":"hentai","name":"Hentai"}]}"""
"https://lelscanvf.cc" -> """{"name":"Lelscan-VF","base_url":"https://lelscanvf.cc","supports_latest":true,"item_url":"https://lelscanvf.cc/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}]}"""
"https://animaregia.net" -> """{"name":"AnimaRegia","base_url":"https://animaregia.net","supports_latest":true,"item_url":"http://animaregia.net/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}]}"""
"https://mangaid.click" -> """{"name":"MangaID","base_url":"https://mangaid.click","supports_latest":true,"item_url":"https://mangaid.click/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"Psychological"},{"id":"18","name":"Romance"},{"id":"19","name":"School Life"},{"id":"20","name":"Sci-fi"},{"id":"21","name":"Seinen"},{"id":"22","name":"Shoujo"},{"id":"23","name":"Shoujo Ai"},{"id":"24","name":"Shounen"},{"id":"25","name":"Shounen Ai"},{"id":"26","name":"Slice of Life"},{"id":"27","name":"Sports"},{"id":"28","name":"Supernatural"},{"id":"29","name":"Tragedy"},{"id":"30","name":"Yaoi"},{"id":"31","name":"Yuri"},{"id":"32","name":"School"},{"id":"33","name":"Isekai"},{"id":"34","name":"Military"}]}"""
"https://jpmangas.xyz" -> """{"name":"Jpmangas","base_url":"https://jpmangas.xyz","supports_latest":true,"item_url":"https://jpmangas.xyz/manga/","categories":[{"id":"1","name":"Action"},{"id":"2","name":"Adventure"},{"id":"3","name":"Comedy"},{"id":"4","name":"Doujinshi"},{"id":"5","name":"Drama"},{"id":"6","name":"Ecchi"},{"id":"7","name":"Fantasy"},{"id":"8","name":"Gender Bender"},{"id":"9","name":"Harem"},{"id":"10","name":"Historical"},{"id":"11","name":"Horror"},{"id":"12","name":"Josei"},{"id":"13","name":"Martial Arts"},{"id":"14","name":"Mature"},{"id":"15","name":"Mecha"},{"id":"16","name":"Mystery"},{"id":"17","name":"One Shot"},{"id":"18","name":"Psychological"},{"id":"19","name":"Romance"},{"id":"20","name":"School Life"},{"id":"21","name":"Sci-fi"},{"id":"22","name":"Seinen"},{"id":"23","name":"Shoujo"},{"id":"24","name":"Shoujo Ai"},{"id":"25","name":"Shounen"},{"id":"26","name":"Shounen Ai"},{"id":"27","name":"Slice of Life"},{"id":"28","name":"Sports"},{"id":"29","name":"Supernatural"},{"id":"30","name":"Tragedy"},{"id":"31","name":"Yaoi"},{"id":"32","name":"Yuri"}]}"""
"https://www.hentaishark.com" -> """{"name":"HentaiShark","base_url":"https://www.hentaishark.com","supports_latest":true,"item_url":"https://www.hentaishark.com/manga/","categories":[{"id":"1","name":"Doujinshi"},{"id":"2","name":"Manga"},{"id":"3","name":"Western"},{"id":"4","name":"non-h"},{"id":"5","name":"imageset"},{"id":"6","name":"artistcg"},{"id":"7","name":"misc"}]}"""