diff --git a/src/pt/algodaodoce/build.gradle b/src/pt/algodaodoce/build.gradle deleted file mode 100644 index 7aaeafe30..000000000 --- a/src/pt/algodaodoce/build.gradle +++ /dev/null @@ -1,10 +0,0 @@ -ext { - extName = 'Algodão Doce' - extClass = '.AlgodaoDoce' - themePkg = 'madara' - baseUrl = 'https://xn--algododoce-j5a.com' - overrideVersionCode = 2 - isNsfw = true -} - -apply from: "$rootDir/common.gradle" diff --git a/src/pt/algodaodoce/res/mipmap-hdpi/ic_launcher.png b/src/pt/algodaodoce/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 19ca1a185..000000000 Binary files a/src/pt/algodaodoce/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/algodaodoce/res/mipmap-mdpi/ic_launcher.png b/src/pt/algodaodoce/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 71c2248a4..000000000 Binary files a/src/pt/algodaodoce/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/algodaodoce/res/mipmap-xhdpi/ic_launcher.png b/src/pt/algodaodoce/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 218b984db..000000000 Binary files a/src/pt/algodaodoce/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/algodaodoce/res/mipmap-xxhdpi/ic_launcher.png b/src/pt/algodaodoce/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 5712b55d8..000000000 Binary files a/src/pt/algodaodoce/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/algodaodoce/res/mipmap-xxxhdpi/ic_launcher.png b/src/pt/algodaodoce/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 0a2bee8c7..000000000 Binary files a/src/pt/algodaodoce/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/algodaodoce/src/eu/kanade/tachiyomi/extension/pt/algodaodoce/AlgodaoDoce.kt b/src/pt/algodaodoce/src/eu/kanade/tachiyomi/extension/pt/algodaodoce/AlgodaoDoce.kt deleted file mode 100644 index 7230de479..000000000 --- a/src/pt/algodaodoce/src/eu/kanade/tachiyomi/extension/pt/algodaodoce/AlgodaoDoce.kt +++ /dev/null @@ -1,16 +0,0 @@ -package eu.kanade.tachiyomi.extension.pt.algodaodoce - -import eu.kanade.tachiyomi.multisrc.madara.Madara -import java.text.SimpleDateFormat -import java.util.Locale - -class AlgodaoDoce : Madara( - "Algodão Doce", - "https://xn--algododoce-j5a.com", - "pt-BR", - dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("pt", "BR")), -) { - override val useLoadMoreRequest = LoadMoreStrategy.Never - override val useNewChapterEndpoint = true - override val mangaDetailsSelectorStatus = "div.post-content_item:contains(Estado) > div.summary-content" -} diff --git a/src/pt/diskusscan/build.gradle b/src/pt/diskusscan/build.gradle deleted file mode 100644 index ffc060c80..000000000 --- a/src/pt/diskusscan/build.gradle +++ /dev/null @@ -1,10 +0,0 @@ -ext { - extName = 'Diskus Scan' - extClass = '.DiskusScan' - themePkg = 'mangathemesia' - baseUrl = 'https://diskusscan.online' - overrideVersionCode = 14 - isNsfw = false -} - -apply from: "$rootDir/common.gradle" diff --git a/src/pt/diskusscan/res/mipmap-hdpi/ic_launcher.png b/src/pt/diskusscan/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index bf46da6d4..000000000 Binary files a/src/pt/diskusscan/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/diskusscan/res/mipmap-mdpi/ic_launcher.png b/src/pt/diskusscan/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 42aef0eb3..000000000 Binary files a/src/pt/diskusscan/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/diskusscan/res/mipmap-xhdpi/ic_launcher.png b/src/pt/diskusscan/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index ddc843c7e..000000000 Binary files a/src/pt/diskusscan/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/diskusscan/res/mipmap-xxhdpi/ic_launcher.png b/src/pt/diskusscan/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 2ef8c3d05..000000000 Binary files a/src/pt/diskusscan/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/diskusscan/res/mipmap-xxxhdpi/ic_launcher.png b/src/pt/diskusscan/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index d61d369b8..000000000 Binary files a/src/pt/diskusscan/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/diskusscan/src/eu/kanade/tachiyomi/extension/pt/diskusscan/DiskusScan.kt b/src/pt/diskusscan/src/eu/kanade/tachiyomi/extension/pt/diskusscan/DiskusScan.kt deleted file mode 100644 index 497cac8e3..000000000 --- a/src/pt/diskusscan/src/eu/kanade/tachiyomi/extension/pt/diskusscan/DiskusScan.kt +++ /dev/null @@ -1,34 +0,0 @@ -package eu.kanade.tachiyomi.extension.pt.diskusscan - -import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import eu.kanade.tachiyomi.source.model.SManga -import java.text.SimpleDateFormat -import java.util.Locale - -class DiskusScan : MangaThemesia( - "Diskus Scan", - "https://diskusscan.online", - "pt-BR", - dateFormat = SimpleDateFormat("MMM dd, yyyy", Locale("pt", "BR")), -) { - - // Changed their theme from Madara to MangaThemesia. - override val versionId = 2 - - override val client = super.client.newBuilder() - .rateLimit(2) - .build() - - override val seriesAuthorSelector = ".infotable tr:contains(Autor) td:last-child" - override val seriesDescriptionSelector = ".entry-content[itemprop=description] > *:not([class^=disku])" - - override fun String?.parseStatus() = when (orEmpty().trim().lowercase()) { - "ativa" -> SManga.ONGOING - "finalizada" -> SManga.COMPLETED - "hiato" -> SManga.ON_HIATUS - else -> SManga.UNKNOWN - } - - override fun chapterListRequest(manga: SManga) = mangaDetailsRequest(manga) -} diff --git a/src/pt/gekkouscans/build.gradle b/src/pt/gekkouscans/build.gradle deleted file mode 100644 index 2fbc3d187..000000000 --- a/src/pt/gekkouscans/build.gradle +++ /dev/null @@ -1,8 +0,0 @@ -ext { - extName = 'Gekkou Scans' - extClass = '.GekkouScans' - extVersionCode = 43 - isNsfw = true -} - -apply from: "$rootDir/common.gradle" diff --git a/src/pt/gekkouscans/res/mipmap-hdpi/ic_launcher.png b/src/pt/gekkouscans/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 862bed497..000000000 Binary files a/src/pt/gekkouscans/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/gekkouscans/res/mipmap-mdpi/ic_launcher.png b/src/pt/gekkouscans/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 1e278c3b6..000000000 Binary files a/src/pt/gekkouscans/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/gekkouscans/res/mipmap-xhdpi/ic_launcher.png b/src/pt/gekkouscans/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 0e0e6ba9b..000000000 Binary files a/src/pt/gekkouscans/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/gekkouscans/res/mipmap-xxhdpi/ic_launcher.png b/src/pt/gekkouscans/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d48a35f9f..000000000 Binary files a/src/pt/gekkouscans/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/gekkouscans/res/mipmap-xxxhdpi/ic_launcher.png b/src/pt/gekkouscans/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 46e28be7b..000000000 Binary files a/src/pt/gekkouscans/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/gekkouscans/src/eu/kanade/tachiyomi/extension/pt/gekkouscans/GekkouScans.kt b/src/pt/gekkouscans/src/eu/kanade/tachiyomi/extension/pt/gekkouscans/GekkouScans.kt deleted file mode 100644 index 51d87103d..000000000 --- a/src/pt/gekkouscans/src/eu/kanade/tachiyomi/extension/pt/gekkouscans/GekkouScans.kt +++ /dev/null @@ -1,143 +0,0 @@ -package eu.kanade.tachiyomi.extension.pt.gekkouscans - -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.interceptor.rateLimitHost -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.MangasPage -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.source.online.HttpSource -import keiyoushi.utils.parseAs -import okhttp3.HttpUrl -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.Interceptor -import okhttp3.Request -import okhttp3.Response -import java.io.IOException -import java.net.HttpURLConnection.HTTP_FORBIDDEN - -class GekkouScans : HttpSource() { - - override val name: String = "Gekkou Scans" - - override val baseUrl: String = "https://new.gekkou.space" - - private val apiUrl = "$baseUrl/api" - - override val lang: String = "pt-BR" - - override val supportsLatest: Boolean = true - - // Moved from Madara - override val versionId: Int = 2 - - override val client = super.client.newBuilder() - .rateLimitHost(apiUrl.toHttpUrl(), 2, 1) - .addInterceptor(::verifyLogin) - .build() - - // ========================= Popular ==================================== - - override fun popularMangaRequest(page: Int): Request = GET("$apiUrl/manga/todos", headers) - - override fun popularMangaParse(response: Response): MangasPage { - val mangas = response.parseAs>() - .sortedByDescending(MangaDto::popular) - .map(MangaDto::toSManga) - return MangasPage(mangas, false) - } - - // ========================= Latest ===================================== - - override fun latestUpdatesRequest(page: Int): Request = - GET("$apiUrl/manga/recent-updates", headers) - - override fun latestUpdatesParse(response: Response): MangasPage { - val mangas = response.parseAs>().map { - SManga.create().apply { - title = it.name - url = "/projeto/${it.slug}" - thumbnail_url = it.thumbnailUrl - } - } - return MangasPage(mangas, false) - } - - // ========================= Search ===================================== - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$apiUrl/manga/search".toHttpUrl().newBuilder() - .setQueryParameter("query", query) - .setQueryParameter("limit", "10") - .build() - return GET(url, headers) - } - - override fun searchMangaParse(response: Response): MangasPage = popularMangaParse(response) - - // ========================= Details ==================================== - - override fun getMangaUrl(manga: SManga) = "$baseUrl/${manga.url}" - - override fun mangaDetailsRequest(manga: SManga): Request { - val slug = manga.url.substringAfterLast("/") - return GET("$apiUrl/manga/$slug", headers) - } - - override fun mangaDetailsParse(response: Response): SManga = - response.parseAs().let(MangaDto::toSManga) - - // ========================= Chapters =================================== - - override fun getChapterUrl(chapter: SChapter): String = "$baseUrl/${chapter.url}" - - override fun chapterListRequest(manga: SManga): Request = mangaDetailsRequest(manga) - - override fun chapterListParse(response: Response): List = - response.parseAs().toListSChapter().sortedByDescending(SChapter::chapter_number) - - // ========================= Pages ====================================== - - override fun pageListRequest(chapter: SChapter): Request { - val pathSegment = chapter.url.split("/").filter(String::isNotBlank) - .drop(1).joinToString("/") - return addRequestRequireSettings("$apiUrl/chapter/$pathSegment".toHttpUrl()) - } - - override fun pageListParse(response: Response): List { - return response.parseAs().pages.sortedBy(PagesDto.ImageUrl::index).map { - val imageUrl = "$apiUrl${it.url}" - Page(it.index, imageUrl = imageUrl) - } - } - - override fun imageRequest(page: Page): Request { - return addRequestRequireSettings(super.imageRequest(page).url) - } - - override fun imageUrlParse(response: Response): String = "" - - // ========================= Utilities ====================================== - - private fun addRequestRequireSettings(url: HttpUrl): Request { - val newUrl = url.newBuilder() - .addQueryParameter("cb", unixTime().toString()) - .build() - - // It's possible to add a real user here. - val newHeaders = headers.newBuilder() - .set("User-Id", (1..5000).random().toString()) - .build() - - return GET(newUrl, newHeaders) - } - - private fun verifyLogin(chain: Interceptor.Chain): Response = - chain.proceed(chain.request()).takeIf { it.code != HTTP_FORBIDDEN } ?: throw IOException("Faça o login na WebView") - - private fun unixTime(): Int { - val timestampMillis = System.currentTimeMillis() - return (timestampMillis / 1000).toInt() - } -} diff --git a/src/pt/gekkouscans/src/eu/kanade/tachiyomi/extension/pt/gekkouscans/GekkouScansDto.kt b/src/pt/gekkouscans/src/eu/kanade/tachiyomi/extension/pt/gekkouscans/GekkouScansDto.kt deleted file mode 100644 index d18d780d5..000000000 --- a/src/pt/gekkouscans/src/eu/kanade/tachiyomi/extension/pt/gekkouscans/GekkouScansDto.kt +++ /dev/null @@ -1,86 +0,0 @@ -package eu.kanade.tachiyomi.extension.pt.gekkouscans - -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -private val CDN_URL = "https://usc1.contabostorage.com/783e4d097dbf4f83aefe59be94798c82:gekkou" - -@Serializable -class MangaDto( - val slug: String, - val name: String, - val artists: String, - val author: String, - val genres: List, - val status: String, - val popular: Boolean, - val summary: String, - val chapters: List, - private val urlCover: String, -) { - val thumbnailUrl: String get() = getAbsoluteThumbnailUrl(urlCover) - - fun toSManga() = SManga.create().apply { - title = name - url = "/projeto/$slug" - description = summary - genre = genres.joinToString() - artist = artists - author = this@MangaDto.author - initialized = true - status = when (this@MangaDto.status.lowercase()) { - "completo" -> SManga.COMPLETED - "ativo" -> SManga.ONGOING - "cancelado" -> SManga.CANCELLED - else -> SManga.UNKNOWN - } - thumbnail_url = thumbnailUrl - } - - fun toListSChapter(): List { - return chapters.map { - SChapter.create().apply { - name = it.chapterNumber - chapter_number = it.chapterNumber.toFloat() - url = "/leitor/$slug/${it.chapterNumber}" - } - } - } -} - -@Serializable -class ChapterDto( - @SerialName("chapterSlug") - val chapterNumber: String, -) - -@Serializable -class LatestMangaDto( - @SerialName("mangaSlug") - val slug: String, - val name: String, - private val urlCover: String, -) { - val thumbnailUrl: String get() = getAbsoluteThumbnailUrl(urlCover) -} - -@Serializable -class PagesDto( - val pages: List, -) { - @Serializable - class ImageUrl( - @SerialName("pageNumber") - val index: Int, - val url: String, - ) -} - -fun getAbsoluteThumbnailUrl(urlCover: String): String { - return when { - urlCover.startsWith("http", ignoreCase = true) -> urlCover - else -> "$CDN_URL/$urlCover" - } -} diff --git a/src/pt/illusionscan/build.gradle b/src/pt/illusionscan/build.gradle deleted file mode 100644 index 501a9fc6f..000000000 --- a/src/pt/illusionscan/build.gradle +++ /dev/null @@ -1,10 +0,0 @@ -ext { - extName = 'Illusion Scan' - extClass = '.IllusionScan' - themePkg = 'madara' - baseUrl = 'https://illusionscan.com' - overrideVersionCode = 0 - isNsfw = true -} - -apply from: "$rootDir/common.gradle" diff --git a/src/pt/illusionscan/res/mipmap-hdpi/ic_launcher.png b/src/pt/illusionscan/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index bce12882d..000000000 Binary files a/src/pt/illusionscan/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/illusionscan/res/mipmap-mdpi/ic_launcher.png b/src/pt/illusionscan/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 01cd9b37c..000000000 Binary files a/src/pt/illusionscan/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/illusionscan/res/mipmap-xhdpi/ic_launcher.png b/src/pt/illusionscan/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 78f6d8c20..000000000 Binary files a/src/pt/illusionscan/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/illusionscan/res/mipmap-xxhdpi/ic_launcher.png b/src/pt/illusionscan/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 04cd0e398..000000000 Binary files a/src/pt/illusionscan/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/illusionscan/res/mipmap-xxxhdpi/ic_launcher.png b/src/pt/illusionscan/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 195d86b20..000000000 Binary files a/src/pt/illusionscan/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/pt/illusionscan/src/eu/kanade/tachiyomi/extension/pt/illusionscan/IllusionScan.kt b/src/pt/illusionscan/src/eu/kanade/tachiyomi/extension/pt/illusionscan/IllusionScan.kt deleted file mode 100644 index c0188961d..000000000 --- a/src/pt/illusionscan/src/eu/kanade/tachiyomi/extension/pt/illusionscan/IllusionScan.kt +++ /dev/null @@ -1,22 +0,0 @@ -package eu.kanade.tachiyomi.extension.pt.illusionscan - -import eu.kanade.tachiyomi.multisrc.madara.Madara -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import okhttp3.OkHttpClient -import java.text.SimpleDateFormat -import java.util.Locale -import java.util.concurrent.TimeUnit - -class IllusionScan : Madara( - "Illusion Scan", - "https://illusionscan.com", - "pt-BR", - SimpleDateFormat("dd 'de' MMMMM 'de' yyyy", Locale("pt", "BR")), -) { - - override val client: OkHttpClient = super.client.newBuilder() - .rateLimit(1, 2, TimeUnit.SECONDS) - .build() - - override val useNewChapterEndpoint = true -}