Remove dead source (#9358)

This commit is contained in:
Chopper 2025-06-21 07:55:27 -03:00 committed by Draff
parent 04c7052e01
commit 9995c4be38
Signed by: Draff
GPG Key ID: E8A89F3211677653
29 changed files with 0 additions and 339 deletions

View File

@ -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"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

View File

@ -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"
}

View File

@ -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"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -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)
}

View File

@ -1,8 +0,0 @@
ext {
extName = 'Gekkou Scans'
extClass = '.GekkouScans'
extVersionCode = 43
isNsfw = true
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -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<List<MangaDto>>()
.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<List<LatestMangaDto>>().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<MangaDto>().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<SChapter> =
response.parseAs<MangaDto>().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<Page> {
return response.parseAs<PagesDto>().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()
}
}

View File

@ -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<String>,
val status: String,
val popular: Boolean,
val summary: String,
val chapters: List<ChapterDto>,
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<SChapter> {
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<ImageUrl>,
) {
@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"
}
}

View File

@ -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"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@ -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
}