Remove extensions with parked domains (#8077)

Remove some parked domains

Fairy Manga
KomikPlay
LegendScanlations
MangaToRead
MangaUS
MangaXP
NeatManga
NOISE Manga
Rainbow Fairy Scan
Sawamics
Zahard
This commit is contained in:
Vetle Ledaal 2025-03-15 06:56:31 +01:00 committed by Draff
parent 5508ced068
commit 1c3e40c5dc
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
73 changed files with 0 additions and 458 deletions

View File

@ -1,7 +0,0 @@
ext {
extName = 'NOISE Manga'
extClass = '.NoiseMangaFactory'
extVersionCode = 5
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,152 +0,0 @@
package eu.kanade.tachiyomi.extension.all.noisemanga
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.interceptor.rateLimit
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.ParsedHttpSource
import okhttp3.Headers
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import rx.Observable
import java.util.concurrent.TimeUnit
abstract class NoiseManga(override val lang: String) : ParsedHttpSource() {
override val name = "NOISE"
override val baseUrl = "https://noisemanga.com"
override val supportsLatest = false
override val client: OkHttpClient = network.client.newBuilder()
.rateLimit(1, 2, TimeUnit.SECONDS)
.build()
override fun headersBuilder(): Headers.Builder = Headers.Builder()
.add("User-Agent", USER_AGENT)
.add("Origin", baseUrl)
.add("Referer", baseUrl)
override fun popularMangaRequest(page: Int): Request = GET(baseUrl, headers)
override fun popularMangaSelector(): String = "ul#menu-home li a[title=\"Séries\"] + ul li a"
override fun popularMangaFromElement(element: Element): SManga = SManga.create().apply {
title = element.text()
setUrlWithoutDomain(element.attr("href"))
thumbnail_url = baseUrl + SLUG_TO_DETAILS_MAP[url]?.thumbnail_url
}
override fun popularMangaNextPageSelector(): String? = null
/**
* Since there are only three series, it's worth to do a client-side search.
*/
override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
return super.fetchSearchManga(page, query, filters)
.map {
val mangas = it.mangas.filter { m -> m.title.contains(query, true) }
MangasPage(mangas, it.hasNextPage)
}
}
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = popularMangaRequest(page)
override fun searchMangaSelector() = popularMangaSelector()
override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element)
override fun searchMangaNextPageSelector(): String? = null
override fun mangaDetailsRequest(manga: SManga): Request = GET(baseUrl + manga.url, headers)
override fun mangaDetailsParse(document: Document): SManga {
val mainContent = document.select("div.main-content-page").first()!!
val entryContent = mainContent.select("div.entry-content").first()!!
val descriptionSelector = if (lang == "en") "h4 + h4, h4 + div h4" else "h1 + h4"
val mangaSlug = document.location().replace(baseUrl, "")
return SManga.create().apply {
title = mainContent.select("header h1.single-title").first()!!.text()
author = SLUG_TO_DETAILS_MAP[mangaSlug]?.author
artist = SLUG_TO_DETAILS_MAP[mangaSlug]?.artist
status = SManga.ONGOING
description = entryContent.select(descriptionSelector).last()!!.text()
thumbnail_url = baseUrl + SLUG_TO_DETAILS_MAP[mangaSlug]?.thumbnail_url
}
}
override fun chapterListRequest(manga: SManga): Request = GET(baseUrl + manga.url, headers)
override fun chapterListParse(response: Response): List<SChapter> {
return super.chapterListParse(response).reversed()
}
override fun chapterListSelector(): String {
val columnSelector = if (lang == "pt-BR") 1 else 2
return "div.entry-content div table tr td:nth-child($columnSelector) a"
}
override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply {
name = element.text()
scanlator = "NOISE Manga"
setUrlWithoutDomain(element.attr("href"))
}
override fun pageListRequest(chapter: SChapter): Request = GET(baseUrl + chapter.url, headers)
override fun pageListParse(document: Document): List<Page> {
return document.select("div.single-content div.single-entry-summary img.aligncenter")
.mapIndexed { i, element ->
val imgUrl = element.attr("srcset")
.substringAfterLast(", ")
.substringBeforeLast(" ")
Page(i, "", imgUrl)
}
}
override fun imageUrlParse(document: Document) = ""
override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException()
override fun latestUpdatesSelector() = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element) = throw UnsupportedOperationException()
override fun latestUpdatesNextPageSelector() = throw UnsupportedOperationException()
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"
/**
* There isn't a good title list available with all the information.
* Since the service does only have three series, it's worth to manually
* add the missing information, such as artist, author, and thumbnail.
*/
private val SLUG_TO_DETAILS_MAP = mapOf(
"/quack/" to SManga.create().apply {
artist = "Kaji Pato"
author = "Kaji Pato"
thumbnail_url = "/wp-content/uploads/2019/11/quack1.jpg"
},
"/japow/" to SManga.create().apply {
artist = "Eduardo Capelo"
author = "Jun Sugiyama"
thumbnail_url = "/wp-content/uploads/2019/11/JAPOW_000_NOISE_0000.jpg"
},
"/tools-challenge/" to SManga.create().apply {
artist = "Max Andrade"
author = "Max Andrade"
thumbnail_url = "/wp-content/uploads/2019/11/TC_001_NOISE_0000-1.jpg"
},
)
}
}

View File

@ -1,18 +0,0 @@
package eu.kanade.tachiyomi.extension.all.noisemanga
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceFactory
class NoiseMangaFactory : SourceFactory {
override fun createSources(): List<Source> = listOf(
NoiseMangaEnglish(),
NoiseMangaPortuguese(),
)
}
class NoiseMangaEnglish : NoiseManga("en")
class NoiseMangaPortuguese : NoiseManga("pt-BR") {
// Hardcode the id because the language wasn't specific.
override val id: Long = 8279458690164834090
}

View File

@ -1,9 +0,0 @@
ext {
extName = 'MangaToRead'
extClass = '.MangaToRead'
themePkg = 'madara'
baseUrl = 'https://mangatoread.com'
overrideVersionCode = 0
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangatoread
import eu.kanade.tachiyomi.multisrc.madara.Madara
class MangaToRead : Madara("MangaToRead", "https://mangatoread.com", "en")

View File

@ -1,9 +0,0 @@
ext {
extName = 'MangaUS'
extClass = '.MangaUS'
themePkg = 'madara'
baseUrl = 'https://mangaus.xyz'
overrideVersionCode = 2
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,7 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangaus
import eu.kanade.tachiyomi.multisrc.madara.Madara
class MangaUS : Madara("MangaUS", "https://mangaus.xyz", "en") {
override val pageListParseSelector = "img"
}

View File

@ -1,9 +0,0 @@
ext {
extName = 'MangaXP'
extClass = '.MangaXP'
themePkg = 'madara'
baseUrl = 'https://mangaxp.com'
overrideVersionCode = 1
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangaxp
import eu.kanade.tachiyomi.multisrc.madara.Madara
class MangaXP : Madara("MangaXP", "https://mangaxp.com", "en")

View File

@ -1,9 +0,0 @@
ext {
extName = 'NeatManga'
extClass = '.NeatManga'
themePkg = 'madara'
baseUrl = 'https://neatmanga.com'
overrideVersionCode = 2
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,9 +0,0 @@
package eu.kanade.tachiyomi.extension.en.neatmanga
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class NeatManga : Madara("NeatManga", "https://neatmanga.com", "en", SimpleDateFormat("dd MMM yyyy", Locale.US)) {
override val useNewChapterEndpoint = true
}

View File

@ -1,9 +0,0 @@
ext {
extName = 'Fairy Manga'
extClass = '.QueenScans'
themePkg = 'mangathemesia'
baseUrl = 'https://fairymanga.com'
overrideVersionCode = 1
}
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: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,28 +0,0 @@
package eu.kanade.tachiyomi.extension.en.queenscans
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.SManga
import okhttp3.Request
class QueenScans : MangaThemesia("Fairy Manga", "https://fairymanga.com", "en") {
override val client = super.client.newBuilder()
.rateLimit(2)
.build()
override val id = 4680104728999154642
override fun mangaDetailsRequest(manga: SManga): Request {
if (manga.url.startsWith("/comics")) {
manga.url.replaceFirst("/comics", mangaUrlDirectory)
}
return super.mangaDetailsRequest(manga)
}
override fun chapterListRequest(manga: SManga): Request {
if (manga.url.startsWith("/comics")) {
manga.url.replaceFirst("/comics", mangaUrlDirectory)
}
return super.chapterListRequest(manga)
}
}

View File

@ -1,9 +0,0 @@
ext {
extName = 'Sawamics'
extClass = '.Sawamics'
themePkg = 'madara'
baseUrl = 'https://sawamics.com'
overrideVersionCode = 0
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.sawamics
import eu.kanade.tachiyomi.multisrc.madara.Madara
class Sawamics : Madara("Sawamics", "https://sawamics.com", "en")

View File

@ -1,9 +0,0 @@
ext {
extName = 'Zahard'
extClass = '.Zahard'
themePkg = 'mangathemesia'
baseUrl = 'https://zahard.xyz'
overrideVersionCode = 0
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,36 +0,0 @@
package eu.kanade.tachiyomi.extension.en.zahard
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.FilterList
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Request
class Zahard : MangaThemesia(
"Zahard",
"https://zahard.xyz",
"en",
mangaUrlDirectory = "/library",
) {
override val versionId = 2
override val supportsLatest = false
override val pageSelector = "div#chapter_imgs img"
override fun searchMangaNextPageSelector() = "a[rel=next]"
override fun chapterListSelector() = "#chapterlist > ul > a"
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = baseUrl.toHttpUrl().newBuilder()
.addPathSegment(mangaUrlDirectory.substring(1))
.addQueryParameter("search", query)
.addQueryParameter("page", page.toString())
.build()
return GET(url, headers)
}
override fun getFilterList() = FilterList()
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'LegendScanlations'
extClass = '.LegendScanlations'
themePkg = 'madara'
baseUrl = 'https://legendscanlations.com'
overrideVersionCode = 0
isNsfw = false
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

View File

@ -1,14 +0,0 @@
package eu.kanade.tachiyomi.extension.es.legendscanlations
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class LegendScanlations : Madara(
"LegendScanlations",
"https://legendscanlations.com",
"es",
SimpleDateFormat("dd/MM/yyyy", Locale("es")),
) {
override val useNewChapterEndpoint = true
}

View File

@ -1,9 +0,0 @@
ext {
extName = 'KomikPlay'
extClass = '.KomikPlay'
themePkg = 'zmanga'
baseUrl = 'https://komikplay.com'
overrideVersionCode = 1
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

View File

@ -1,58 +0,0 @@
package eu.kanade.tachiyomi.extension.id.komikplay
import eu.kanade.tachiyomi.multisrc.zmanga.ZManga
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.SManga
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Request
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
class KomikPlay : ZManga("KomikPlay", "https://komikplay.com", "id", SimpleDateFormat("d MMM yyyy", Locale.US)) {
override fun popularMangaRequest(page: Int): Request {
return GET("$baseUrl/${pagePathSegment(page)}/?s")
}
override fun latestUpdatesRequest(page: Int): Request {
return GET("$baseUrl/${pagePathSegment(page)}")
}
override fun latestUpdatesSelector() = "h2:contains(New) + .flexbox3 .flexbox3-item"
override fun latestUpdatesFromElement(element: Element): SManga {
return SManga.create().apply {
setUrlWithoutDomain(element.select("div.flexbox3-content a").attr("href"))
title = element.select("div.flexbox3-content a").attr("title")
thumbnail_url = element.select("img").attr("abs:src")
}
}
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
var url = "$baseUrl/${pagePathSegment(page)}".toHttpUrl().newBuilder()
url.addQueryParameter("s", query)
(if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
when (filter) {
// if site has project page, default value "hasProjectPage" = false
is ProjectFilter -> {
if (filter.toUriPart() == "project-filter-on") {
url = "$baseUrl$projectPageString/page/$page".toHttpUrl().newBuilder()
}
}
else -> {}
}
}
return GET(url.build(), headers)
}
override fun getFilterList() = FilterList(
Filter.Header("NOTE: cant be used with other filter!"),
Filter.Header("$name Project List page"),
ProjectFilter(),
)
override val hasProjectPage = true
}

View File

@ -1,9 +0,0 @@
ext {
extName = 'Rainbow Fairy Scan'
extClass = '.RainbowFairyScan'
themePkg = 'madara'
baseUrl = 'https://rainbowfairyscan.com'
overrideVersionCode = 0
}
apply from: "$rootDir/common.gradle"

View File

@ -1,23 +0,0 @@
package eu.kanade.tachiyomi.extension.pt.rainbowfairyscan
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 RainbowFairyScan : Madara(
"Rainbow Fairy Scan",
"https://rainbowfairyscan.com",
"pt-BR",
SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR")),
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(1, 2, TimeUnit.SECONDS)
.build()
// Page has custom link to scan website.
override val popularMangaUrlSelector = "div.post-title a:not([target])"
}