Remove extensions with parked domains ()

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
src
all/noisemanga
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/all/noisemanga
en
mangatoread
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/en/mangatoread
mangaus
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/en/mangaus
mangaxp
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/en/mangaxp
neatmanga
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/en/neatmanga
queenscans
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/en/queenscans
sawamics
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/en/sawamics
zahard
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/en/zahard
es/legendscanlations
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/es/legendscanlations
id/komikplay
build.gradle
res
mipmap-hdpi
mipmap-mdpi
mipmap-xhdpi
mipmap-xxhdpi
mipmap-xxxhdpi
src/eu/kanade/tachiyomi/extension/id/komikplay
pt/rainbowfairyscan
build.gradle
src/eu/kanade/tachiyomi/extension/pt/rainbowfairyscan

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

Binary file not shown.

Before

(image error) Size: 3.9 KiB

Binary file not shown.

Before

(image error) Size: 1.9 KiB

Binary file not shown.

Before

(image error) Size: 5.9 KiB

Binary file not shown.

Before

(image error) Size: 12 KiB

Binary file not shown.

Before

(image error) Size: 18 KiB

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

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

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

(image error) Size: 5.6 KiB

Binary file not shown.

Before

(image error) Size: 2.9 KiB

Binary file not shown.

Before

(image error) Size: 8.9 KiB

Binary file not shown.

Before

(image error) Size: 17 KiB

Binary file not shown.

Before

(image error) Size: 29 KiB

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

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

(image error) Size: 3.4 KiB

Binary file not shown.

Before

(image error) Size: 1.7 KiB

Binary file not shown.

Before

(image error) Size: 5.1 KiB

Binary file not shown.

Before

(image error) Size: 10 KiB

Binary file not shown.

Before

(image error) Size: 16 KiB

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

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

(image error) Size: 3.1 KiB

Binary file not shown.

Before

(image error) Size: 1.8 KiB

Binary file not shown.

Before

(image error) Size: 4.4 KiB

Binary file not shown.

Before

(image error) Size: 7.2 KiB

Binary file not shown.

Before

(image error) Size: 12 KiB

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

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

(image error) Size: 3.2 KiB

Binary file not shown.

Before

(image error) Size: 1.7 KiB

Binary file not shown.

Before

(image error) Size: 4.0 KiB

Binary file not shown.

Before

(image error) Size: 7.5 KiB

Binary file not shown.

Before

(image error) Size: 11 KiB

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

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

(image error) Size: 4.9 KiB

Binary file not shown.

Before

(image error) Size: 2.6 KiB

Binary file not shown.

Before

(image error) Size: 6.9 KiB

Binary file not shown.

Before

(image error) Size: 13 KiB

Binary file not shown.

Before

(image error) Size: 18 KiB

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

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

(image error) Size: 7.8 KiB

Binary file not shown.

Before

(image error) Size: 3.8 KiB

Binary file not shown.

Before

(image error) Size: 13 KiB

Binary file not shown.

Before

(image error) Size: 26 KiB

Binary file not shown.

Before

(image error) Size: 43 KiB

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

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

(image error) Size: 3.8 KiB

Binary file not shown.

Before

(image error) Size: 2.2 KiB

Binary file not shown.

Before

(image error) Size: 5.3 KiB

Binary file not shown.

Before

(image error) Size: 9.5 KiB

Binary file not shown.

Before

(image error) Size: 14 KiB

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

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

(image error) Size: 8.4 KiB

Binary file not shown.

Before

(image error) Size: 4.2 KiB

Binary file not shown.

Before

(image error) Size: 13 KiB

Binary file not shown.

Before

(image error) Size: 26 KiB

Binary file not shown.

Before

(image error) Size: 40 KiB

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

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

(image error) Size: 4.8 KiB

Binary file not shown.

Before

(image error) Size: 2.3 KiB

Binary file not shown.

Before

(image error) Size: 6.8 KiB

Binary file not shown.

Before

(image error) Size: 14 KiB

Binary file not shown.

Before

(image error) Size: 21 KiB

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

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

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