Madara: add some more sites (#17579)
* Madara overrides - code * Madara overrides - icons * MadaraGenerator - sort * MadaraGenerator - +71 sources * suggested changes Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> --------- Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com>
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 16 KiB |
BIN
multisrc/overrides/madara/archerscans/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 89 KiB |
9
multisrc/overrides/madara/archerscans/src/ArcheRScans.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.archerscans
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class ArcheRScans : Madara("ArcheR Scans", "https://www.archerscans.com", "en") {
|
||||
override val useNewChapterEndpoint = false
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 20 KiB |
BIN
multisrc/overrides/madara/asurascansus/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 116 KiB |
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.asurascansus
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class AsuraScansUs : Madara("Asura Scans.us (unoriginal)", "https://asurascans.us", "en") {
|
||||
override val useNewChapterEndpoint = true
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 14 KiB |
BIN
multisrc/overrides/madara/bananamanga/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 67 KiB |
9
multisrc/overrides/madara/bananamanga/src/BananaManga.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.bananamanga
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class BananaManga : Madara("Banana Manga", "https://bananamanga.net", "en") {
|
||||
override val useNewChapterEndpoint = true
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 25 KiB |
BIN
multisrc/overrides/madara/coffeemangatop/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 152 KiB |
@ -0,0 +1,64 @@
|
||||
package eu.kanade.tachiyomi.extension.en.coffeemangatop
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.source.model.Page
|
||||
import eu.kanade.tachiyomi.source.model.SChapter
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Document
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
class CoffeeMangaTop : Madara(
|
||||
"CoffeeManga.top (unoriginal)",
|
||||
"https://coffeemanga.top",
|
||||
"en",
|
||||
dateFormat = SimpleDateFormat("MMM dd, HH:mm", Locale.ENGLISH),
|
||||
) {
|
||||
override val useNewChapterEndpoint = false
|
||||
|
||||
override fun searchPage(page: Int): String = "search?page=$page"
|
||||
|
||||
override fun popularMangaRequest(page: Int): Request =
|
||||
GET("$baseUrl/popular-manga?page=$page", headers)
|
||||
|
||||
override fun latestUpdatesRequest(page: Int): Request =
|
||||
GET("$baseUrl/latest-manga?page=$page", headers)
|
||||
|
||||
// Copied from IsekaiScan.top (unoriginal)
|
||||
override fun chapterListParse(response: Response): List<SChapter> {
|
||||
val document = response.asJsoup()
|
||||
val chaptersWrapper = document.select("div[id^=manga-chapters-holder]")
|
||||
|
||||
var chapterElements = document.select(chapterListSelector())
|
||||
|
||||
if (chapterElements.isEmpty() && !chaptersWrapper.isNullOrEmpty()) {
|
||||
val mangaId = chaptersWrapper.attr("data-id")
|
||||
val xhrHeaders = headersBuilder()
|
||||
.add("X-Requested-With", "XMLHttpRequest")
|
||||
.build()
|
||||
val xhrRequest = GET("$baseUrl/ajax-list-chapter?mangaID=$mangaId", xhrHeaders)
|
||||
val xhrResponse = client.newCall(xhrRequest).execute()
|
||||
|
||||
chapterElements = xhrResponse.asJsoup().select(chapterListSelector())
|
||||
xhrResponse.close()
|
||||
}
|
||||
|
||||
countViews(document)
|
||||
return chapterElements.map(::chapterFromElement)
|
||||
}
|
||||
|
||||
// Copied from IsekaiScan.top (unoriginal)
|
||||
override fun pageListParse(document: Document): List<Page> {
|
||||
val stringArray = document.select("p#arraydata").text().split(",").toTypedArray()
|
||||
return stringArray.mapIndexed { index, url ->
|
||||
Page(
|
||||
index,
|
||||
document.location(),
|
||||
url,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
9
multisrc/overrides/madara/comicscans/src/ComicScans.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.comicscans
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class ComicScans : Madara("Comic Scans", "https://www.comicscans.org", "en") {
|
||||
override val useNewChapterEndpoint = true
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 12 KiB |
BIN
multisrc/overrides/madara/comicznetv2/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 66 KiB |
9
multisrc/overrides/madara/comicznetv2/src/ComiczNetV2.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.all.comicznetv2
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class ComiczNetV2 : Madara("Comicz.net v2", "https://v2.comiz.net", "all") {
|
||||
override val useNewChapterEndpoint = false
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 16 KiB |
BIN
multisrc/overrides/madara/elitemanga/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 71 KiB |
10
multisrc/overrides/madara/elitemanga/src/EliteManga.kt
Normal file
@ -0,0 +1,10 @@
|
||||
package eu.kanade.tachiyomi.extension.en.elitemanga
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class EliteManga : Madara("Elite Manga", "https://www.elitemanga.org", "en") {
|
||||
override val useNewChapterEndpoint = true
|
||||
override val filterNonMangaItems = false
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 19 KiB |
BIN
multisrc/overrides/madara/factmanga/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 68 KiB |
9
multisrc/overrides/madara/factmanga/src/FactManga.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.factmanga
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class FactManga : Madara("FactManga", "https://factmanga.com", "en") {
|
||||
override val useNewChapterEndpoint = true
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 488 KiB |
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.firstkissdashmanga
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class FirstKissDashManga : Madara("1st Kiss-Manga (unoriginal)", "https://1stkiss-manga.com", "en") {
|
||||
override val useNewChapterEndpoint = false
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 54 KiB |
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.firstkissmangablog
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class FirstKissMangaBlog : Madara("1stKissManga.blog", "https://1stkissmanga.blog", "en") {
|
||||
override val useNewChapterEndpoint = false
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 76 KiB |
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.firstkissmangatv
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class FirstKissMangaTv : Madara("1stKissManga.tv", "https://1stkissmanga.tv", "en") {
|
||||
override val useNewChapterEndpoint = false
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 18 KiB |
BIN
multisrc/overrides/madara/firstmanhwa/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 107 KiB |
11
multisrc/overrides/madara/firstmanhwa/src/FirstManhwa.kt
Normal file
@ -0,0 +1,11 @@
|
||||
package eu.kanade.tachiyomi.extension.en.firstmanhwa
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class FirstManhwa : Madara("1st Manhwa", "https://1stmanhwa.com", "en") {
|
||||
override val useNewChapterEndpoint = true
|
||||
override val filterNonMangaItems = false
|
||||
override val mangaDetailsSelectorStatus = "div.summary-heading:contains(Status) + div.summary-content"
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
@ -1,9 +1,5 @@
|
||||
package eu.kanade.tachiyomi.extension.en.fizmanga
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
import okhttp3.Headers
|
||||
|
||||
class FizManga : Madara("Fiz Manga", "https://fizmanga.com", "en") {
|
||||
override fun headersBuilder(): Headers.Builder = super.headersBuilder()
|
||||
.add("Referer", baseUrl)
|
||||
}
|
||||
class FizManga : Madara("Fiz Manga", "https://fizmanga.com", "en")
|
||||
|
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 27 KiB |
BIN
multisrc/overrides/madara/freemanhwa/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 166 KiB |
9
multisrc/overrides/madara/freemanhwa/src/FreeManhwa.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.freemanhwa
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class FreeManhwa : Madara("Free Manhwa", "https://manhwas.com", "en") {
|
||||
override val useNewChapterEndpoint = false
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 65 KiB |
BIN
multisrc/overrides/madara/girlslovemanga/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 419 KiB |
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.girlslovemanga
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class GirlsLoveManga : Madara("Girls Love Manga!", "https://glmanga.com", "en") {
|
||||
override val useNewChapterEndpoint = true
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|
After Width: | Height: | Size: 9.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 53 KiB |
BIN
multisrc/overrides/madara/hentai3z/res/web_hi_res_512.png
Normal file
After Width: | Height: | Size: 370 KiB |
9
multisrc/overrides/madara/hentai3z/src/Hentai3z.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.en.hentai3z
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
||||
|
||||
class Hentai3z : Madara("Hentai3z", "https://hentai3z.xyz", "en") {
|
||||
override val useNewChapterEndpoint = false
|
||||
|
||||
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
|
||||
}
|