Madara Updates (#5187)
* add missing Madara sources * update gradle * fix url * adjust spacing * fix some typos
This commit is contained in:
parent
6d9f40967e
commit
c580c9ceed
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'Madara (multiple sources)'
|
extName = 'Madara (multiple sources)'
|
||||||
pkgNameSuffix = "all.madara"
|
pkgNameSuffix = "all.madara"
|
||||||
extClass = '.MadaraFactory'
|
extClass = '.MadaraFactory'
|
||||||
extVersionCode = 159
|
extVersionCode = 160
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
containsNsfw = true
|
containsNsfw = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,9 +27,9 @@ import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
class MadaraFactory : SourceFactory {
|
class MadaraFactory : SourceFactory {
|
||||||
override fun createSources(): List<Source> = listOf(
|
override fun createSources(): List<Source> = listOf(
|
||||||
ATMSubs(),
|
|
||||||
AdonisFansub(),
|
AdonisFansub(),
|
||||||
AkuManga(),
|
AkuManga(),
|
||||||
|
AlianzaMarcial(),
|
||||||
AllPornComic(),
|
AllPornComic(),
|
||||||
Aloalivn(),
|
Aloalivn(),
|
||||||
AniMangaEs(),
|
AniMangaEs(),
|
||||||
|
@ -37,9 +37,11 @@ class MadaraFactory : SourceFactory {
|
||||||
ApollComics(),
|
ApollComics(),
|
||||||
ArangScans(),
|
ArangScans(),
|
||||||
ArazNovel(),
|
ArazNovel(),
|
||||||
|
ArgosScan(),
|
||||||
AsgardTeam(),
|
AsgardTeam(),
|
||||||
AstralLibrary(),
|
AstralLibrary(),
|
||||||
Atikrost(),
|
Atikrost(),
|
||||||
|
ATMSubs(),
|
||||||
Azora(),
|
Azora(),
|
||||||
Bakaman(),
|
Bakaman(),
|
||||||
BestManga(),
|
BestManga(),
|
||||||
|
@ -60,7 +62,9 @@ class MadaraFactory : SourceFactory {
|
||||||
DoujinHentai(),
|
DoujinHentai(),
|
||||||
DoujinYosh(),
|
DoujinYosh(),
|
||||||
DropeScan(),
|
DropeScan(),
|
||||||
|
EarlyManga(),
|
||||||
EinherjarScan(),
|
EinherjarScan(),
|
||||||
|
FdmScan(),
|
||||||
FirstKissManga(),
|
FirstKissManga(),
|
||||||
FirstKissManhua(),
|
FirstKissManhua(),
|
||||||
FreeWebtoonCoins(),
|
FreeWebtoonCoins(),
|
||||||
|
@ -69,6 +73,7 @@ class MadaraFactory : SourceFactory {
|
||||||
GuncelManga(),
|
GuncelManga(),
|
||||||
HeroManhua(),
|
HeroManhua(),
|
||||||
HerozScanlation(),
|
HerozScanlation(),
|
||||||
|
HikariScan(),
|
||||||
HimeraFansub(),
|
HimeraFansub(),
|
||||||
Hiperdex(),
|
Hiperdex(),
|
||||||
Hscans(),
|
Hscans(),
|
||||||
|
@ -76,13 +81,15 @@ class MadaraFactory : SourceFactory {
|
||||||
IchirinNoHanaYuri(),
|
IchirinNoHanaYuri(),
|
||||||
ImmortalUpdates(),
|
ImmortalUpdates(),
|
||||||
IsekaiScanCom(),
|
IsekaiScanCom(),
|
||||||
JustForFun(),
|
|
||||||
JJutsuScans(),
|
JJutsuScans(),
|
||||||
KMangaIn(),
|
JustForFun(),
|
||||||
KingzManga(),
|
KingzManga(),
|
||||||
KisekiManga(),
|
KisekiManga(),
|
||||||
KlanKomik(),
|
KlanKomik(),
|
||||||
KlikManga(),
|
KlikManga(),
|
||||||
|
KMangaIn(),
|
||||||
|
KnightNoScanlation(),
|
||||||
|
Kombatch(),
|
||||||
KomikGo(),
|
KomikGo(),
|
||||||
LilyManga(),
|
LilyManga(),
|
||||||
Manga18Fun(),
|
Manga18Fun(),
|
||||||
|
@ -98,11 +105,14 @@ class MadaraFactory : SourceFactory {
|
||||||
MangaClash(),
|
MangaClash(),
|
||||||
MangaCultivator(),
|
MangaCultivator(),
|
||||||
MangaDods(),
|
MangaDods(),
|
||||||
|
MangaGecesi(),
|
||||||
MangaHentai(),
|
MangaHentai(),
|
||||||
MangaKiss(),
|
MangaKiss(),
|
||||||
|
MangaKitsu(),
|
||||||
MangaKomi(),
|
MangaKomi(),
|
||||||
MangaLord(),
|
|
||||||
MangaLandArabic(),
|
MangaLandArabic(),
|
||||||
|
Mangalek(),
|
||||||
|
MangaLord(),
|
||||||
ManganeloLink(),
|
ManganeloLink(),
|
||||||
MangaNine(),
|
MangaNine(),
|
||||||
MangaPhoenix(),
|
MangaPhoenix(),
|
||||||
|
@ -110,6 +120,7 @@ class MadaraFactory : SourceFactory {
|
||||||
MangaRawr(),
|
MangaRawr(),
|
||||||
MangaRead(),
|
MangaRead(),
|
||||||
MangaReadOrg(),
|
MangaReadOrg(),
|
||||||
|
Mangareceh(),
|
||||||
MangaRockTeam(),
|
MangaRockTeam(),
|
||||||
MangaRocky(),
|
MangaRocky(),
|
||||||
MangaRoma(),
|
MangaRoma(),
|
||||||
|
@ -117,15 +128,16 @@ class MadaraFactory : SourceFactory {
|
||||||
MangaSco(),
|
MangaSco(),
|
||||||
MangaSpark(),
|
MangaSpark(),
|
||||||
MangaStarz(),
|
MangaStarz(),
|
||||||
MangaSY(),
|
MangaStein(),
|
||||||
MangaTX(),
|
|
||||||
MangaTurf(),
|
|
||||||
MangaWT(),
|
|
||||||
MangaYosh(),
|
|
||||||
Mangalek(),
|
|
||||||
Mangareceh(),
|
|
||||||
Mangasushi(),
|
Mangasushi(),
|
||||||
|
MangaSY(),
|
||||||
|
MangaTeca(),
|
||||||
|
MangaTurf(),
|
||||||
|
MangaTX(),
|
||||||
|
MangaWOW(),
|
||||||
|
MangaWT(),
|
||||||
MangaYaku(),
|
MangaYaku(),
|
||||||
|
MangaYosh(),
|
||||||
MangazukiClubJP(),
|
MangazukiClubJP(),
|
||||||
MangazukiClubKO(),
|
MangazukiClubKO(),
|
||||||
MangazukiMe(),
|
MangazukiMe(),
|
||||||
|
@ -134,10 +146,10 @@ class MadaraFactory : SourceFactory {
|
||||||
ManhuaFast(),
|
ManhuaFast(),
|
||||||
Manhuaga(),
|
Manhuaga(),
|
||||||
ManhuaPlus(),
|
ManhuaPlus(),
|
||||||
ManhuaUS(),
|
Manhuasnet(),
|
||||||
ManhuasWorld(),
|
ManhuasWorld(),
|
||||||
ManhuaSY(),
|
ManhuaSY(),
|
||||||
Manhuasnet(),
|
ManhuaUS(),
|
||||||
ManhwaRaw(),
|
ManhwaRaw(),
|
||||||
ManhwaTop(),
|
ManhwaTop(),
|
||||||
ManwahentaiMe(),
|
ManwahentaiMe(),
|
||||||
|
@ -161,12 +173,14 @@ class MadaraFactory : SourceFactory {
|
||||||
Ninjavi(),
|
Ninjavi(),
|
||||||
NTSVoidScans(),
|
NTSVoidScans(),
|
||||||
OffScan(),
|
OffScan(),
|
||||||
|
OlaoeManga(),
|
||||||
OnManga(),
|
OnManga(),
|
||||||
OrigamiOrpheans(),
|
OrigamiOrpheans(),
|
||||||
PMScans(),
|
PMScans(),
|
||||||
PojokManga(),
|
PojokManga(),
|
||||||
PornComix(),
|
PornComix(),
|
||||||
PrimeManga(),
|
PrimeManga(),
|
||||||
|
ProjetoScanlator(),
|
||||||
QueensManga(),
|
QueensManga(),
|
||||||
RaiderScans(),
|
RaiderScans(),
|
||||||
RandomTranslations(),
|
RandomTranslations(),
|
||||||
|
@ -174,14 +188,15 @@ class MadaraFactory : SourceFactory {
|
||||||
RenaScans(),
|
RenaScans(),
|
||||||
RuyaManga(),
|
RuyaManga(),
|
||||||
S2Manga(),
|
S2Manga(),
|
||||||
|
ShoujoHearts(),
|
||||||
SpookyScanlations(),
|
SpookyScanlations(),
|
||||||
StageComics(),
|
StageComics(),
|
||||||
TheTopComic(),
|
TheTopComic(),
|
||||||
ThreeSixtyFiveManga(),
|
ThreeSixtyFiveManga(),
|
||||||
ToonPoint(),
|
|
||||||
Toonily(),
|
|
||||||
ToonGod(),
|
ToonGod(),
|
||||||
|
Toonily(),
|
||||||
ToonilyNet(),
|
ToonilyNet(),
|
||||||
|
ToonPoint(),
|
||||||
TopManhua(),
|
TopManhua(),
|
||||||
TritiniaScans(),
|
TritiniaScans(),
|
||||||
TruyenTranhAudioCom(),
|
TruyenTranhAudioCom(),
|
||||||
|
@ -190,33 +205,19 @@ class MadaraFactory : SourceFactory {
|
||||||
TurkceManga(),
|
TurkceManga(),
|
||||||
TwilightScans(),
|
TwilightScans(),
|
||||||
Wakascan(),
|
Wakascan(),
|
||||||
WebToonily(),
|
|
||||||
WeScans(),
|
|
||||||
WebNovel(),
|
WebNovel(),
|
||||||
|
WebToonily(),
|
||||||
WebtoonXYZ(),
|
WebtoonXYZ(),
|
||||||
|
WeScans(),
|
||||||
WoopRead(),
|
WoopRead(),
|
||||||
WuxiaWorld(),
|
WuxiaWorld(),
|
||||||
YaoiToshokan(),
|
YaoiToshokan(),
|
||||||
YokaiJump(),
|
YokaiJump(),
|
||||||
ZManga(),
|
|
||||||
ZinManga(),
|
|
||||||
ShoujoHearts(),
|
|
||||||
AlianzaMarcial(),
|
|
||||||
OlaoeManga(),
|
|
||||||
FdmScan(),
|
|
||||||
ArgosScan(),
|
|
||||||
Kombatch(),
|
|
||||||
ProjetoScanlator(),
|
|
||||||
HikariScan(),
|
|
||||||
YuriVerso(),
|
YuriVerso(),
|
||||||
MangaKitsu(),
|
ZinManga(),
|
||||||
MangaTeca()
|
ZManga(),
|
||||||
// Removed by request of site owner
|
|
||||||
// EarlyManga(),
|
// removed because scanlator site and they requested
|
||||||
// MangaGecesi(),
|
|
||||||
// MangaWOW(),
|
|
||||||
// MangaStein(),
|
|
||||||
// KnightNoScanlation(),
|
|
||||||
// AhStudios(),
|
// AhStudios(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -365,6 +366,7 @@ class AoCTranslations : Madara("Agent of Change Translations", "https://aoc.moe"
|
||||||
override fun headersBuilder(): Headers.Builder = super.headersBuilder().add("Referer", baseUrl)
|
override fun headersBuilder(): Headers.Builder = super.headersBuilder().add("Referer", baseUrl)
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga:has(span.chapter)"
|
override fun popularMangaSelector() = "div.page-item-detail.manga:has(span.chapter)"
|
||||||
override fun chapterListSelector() = "li.wp-manga-chapter:has(a)"
|
override fun chapterListSelector() = "li.wp-manga-chapter:has(a)"
|
||||||
|
|
||||||
@SuppressLint("DefaultLocale")
|
@SuppressLint("DefaultLocale")
|
||||||
override fun chapterListParse(response: Response): List<SChapter> {
|
override fun chapterListParse(response: Response): List<SChapter> {
|
||||||
return response.asJsoup().let { document ->
|
return response.asJsoup().let { document ->
|
||||||
|
@ -860,6 +862,7 @@ class GoldenManga : Madara("موقع لترجمة المانجا", "https://gold
|
||||||
thumbnail_url = element.select("img").firstOrNull()?.let { imageFromElement(it) }
|
thumbnail_url = element.select("img").firstOrNull()?.let { imageFromElement(it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun chapterListSelector() = "div.main a"
|
override fun chapterListSelector() = "div.main a"
|
||||||
override fun chapterFromElement(element: Element): SChapter {
|
override fun chapterFromElement(element: Element): SChapter {
|
||||||
return SChapter.create().apply {
|
return SChapter.create().apply {
|
||||||
|
@ -877,6 +880,7 @@ class AstralLibrary : Madara("Astral Library", "https://www.astrallibrary.net",
|
||||||
override fun popularMangaRequest(page: Int): Request {
|
override fun popularMangaRequest(page: Int): Request {
|
||||||
return GET("$baseUrl/manga-tag/manga/?m_orderby=views&page=$page", headers)
|
return GET("$baseUrl/manga-tag/manga/?m_orderby=views&page=$page", headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun latestUpdatesRequest(page: Int): Request {
|
override fun latestUpdatesRequest(page: Int): Request {
|
||||||
return GET("$baseUrl/manga-tag/manga/?m_orderby=latest&page=$page", headers)
|
return GET("$baseUrl/manga-tag/manga/?m_orderby=latest&page=$page", headers)
|
||||||
}
|
}
|
||||||
|
@ -998,6 +1002,7 @@ class ManhuasWorld : Madara("Manhuas World", "https://manhuasworld.com", "en")
|
||||||
class ArazNovel : Madara("ArazNovel", "https://www.araznovel.com", "tr", SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())) {
|
class ArazNovel : Madara("ArazNovel", "https://www.araznovel.com", "tr", SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())) {
|
||||||
override fun formBuilder(page: Int, popular: Boolean): FormBody.Builder = super.formBuilder(page, popular)
|
override fun formBuilder(page: Int, popular: Boolean): FormBody.Builder = super.formBuilder(page, popular)
|
||||||
.add("vars[meta_query][0][0][value]", "manga")
|
.add("vars[meta_query][0][0][value]", "manga")
|
||||||
|
|
||||||
override fun getGenreList() = listOf(
|
override fun getGenreList() = listOf(
|
||||||
Genre("Aksiyon", "action"),
|
Genre("Aksiyon", "action"),
|
||||||
Genre("Macera", "adventure"),
|
Genre("Macera", "adventure"),
|
||||||
|
@ -1043,6 +1048,7 @@ class ArazNovel : Madara("ArazNovel", "https://www.araznovel.com", "tr", SimpleD
|
||||||
Genre("Yaoi", "yaoi"),
|
Genre("Yaoi", "yaoi"),
|
||||||
Genre("Yuri", "yuri")
|
Genre("Yuri", "yuri")
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun chapterListParse(response: Response): List<SChapter> {
|
override fun chapterListParse(response: Response): List<SChapter> {
|
||||||
return getXhrChapters(response.asJsoup().select("div#manga-chapters-holder").attr("data-id")).let { document ->
|
return getXhrChapters(response.asJsoup().select("div#manga-chapters-holder").attr("data-id")).let { document ->
|
||||||
document.select("li.parent").let { elements ->
|
document.select("li.parent").let { elements ->
|
||||||
|
@ -1110,6 +1116,7 @@ class MartialScans : Madara("Martial Scans", "https://martialscans.com", "en") {
|
||||||
|
|
||||||
return manga
|
return manga
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element)
|
override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1230,6 +1237,7 @@ class DoujinYosh : Madara("DoujinYosh", "https://doujinyosh.work", "id") {
|
||||||
class Manga347 : Madara("Manga347", "https://manga347.com", "en", SimpleDateFormat("d MMM, yyyy", Locale.US)) {
|
class Manga347 : Madara("Manga347", "https://manga347.com", "en", SimpleDateFormat("d MMM, yyyy", Locale.US)) {
|
||||||
override val pageListParseSelector = "li.blocks-gallery-item"
|
override val pageListParseSelector = "li.blocks-gallery-item"
|
||||||
}
|
}
|
||||||
|
|
||||||
class RenaScans : Madara("Renascence Scans (Renascans)", "https://new.renascans.com", "en", SimpleDateFormat("dd/MM/yyyy", Locale.US))
|
class RenaScans : Madara("Renascence Scans (Renascans)", "https://new.renascans.com", "en", SimpleDateFormat("dd/MM/yyyy", Locale.US))
|
||||||
|
|
||||||
class QueensManga : Madara("QueensManga ملكات المانجا", "https://queensmanga.com", "ar") {
|
class QueensManga : Madara("QueensManga ملكات المانجا", "https://queensmanga.com", "ar") {
|
||||||
|
@ -1264,6 +1272,7 @@ class TruyenTranhAudioOnline : Madara("TruyenTranhAudio.online", "https://truyen
|
||||||
override val formHeaders: Headers = headersBuilder()
|
override val formHeaders: Headers = headersBuilder()
|
||||||
.add("Content-Type", "application/x-www-form-urlencoded")
|
.add("Content-Type", "application/x-www-form-urlencoded")
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun pageListParse(document: Document): List<Page> {
|
override fun pageListParse(document: Document): List<Page> {
|
||||||
return document.select("div.reading-content img").map { it.attr("abs:src") }
|
return document.select("div.reading-content img").map { it.attr("abs:src") }
|
||||||
.filterNot { it.isNullOrEmpty() }
|
.filterNot { it.isNullOrEmpty() }
|
||||||
|
@ -1321,8 +1330,10 @@ class Bakaman : Madara("Bakaman", "https://bakaman.net", "th")
|
||||||
class CatTranslator : Madara("CAT-translator", "https://cat-translator.com", "th") {
|
class CatTranslator : Madara("CAT-translator", "https://cat-translator.com", "th") {
|
||||||
override fun popularMangaRequest(page: Int): Request =
|
override fun popularMangaRequest(page: Int): Request =
|
||||||
POST("$baseUrl/manga/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK)
|
POST("$baseUrl/manga/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK)
|
||||||
|
|
||||||
override fun latestUpdatesRequest(page: Int): Request =
|
override fun latestUpdatesRequest(page: Int): Request =
|
||||||
POST("$baseUrl/manga/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, false).build(), CacheControl.FORCE_NETWORK)
|
POST("$baseUrl/manga/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, false).build(), CacheControl.FORCE_NETWORK)
|
||||||
|
|
||||||
override fun searchPage(page: Int): String = "manga/page/$page/"
|
override fun searchPage(page: Int): String = "manga/page/$page/"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1334,8 +1345,10 @@ class Wakascan : Madara("Wakascan", "https://wakascan.com", "fr")
|
||||||
class ShoujoHearts : Madara("ShoujoHearts", "http://shoujohearts.com", "en") {
|
class ShoujoHearts : Madara("ShoujoHearts", "http://shoujohearts.com", "en") {
|
||||||
override fun popularMangaRequest(page: Int): Request =
|
override fun popularMangaRequest(page: Int): Request =
|
||||||
POST("$baseUrl/reader/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK)
|
POST("$baseUrl/reader/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK)
|
||||||
|
|
||||||
override fun latestUpdatesRequest(page: Int): Request =
|
override fun latestUpdatesRequest(page: Int): Request =
|
||||||
POST("$baseUrl/reader/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, false).build(), CacheControl.FORCE_NETWORK)
|
POST("$baseUrl/reader/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, false).build(), CacheControl.FORCE_NETWORK)
|
||||||
|
|
||||||
override fun searchPage(page: Int): String = "reader/page/$page/"
|
override fun searchPage(page: Int): String = "reader/page/$page/"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1434,6 +1447,22 @@ class YuriVerso : Madara(
|
||||||
SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR"))
|
SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR"))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class MangaStein : Madara("MangaStein", "https://mangastein.com", "tr")
|
||||||
|
|
||||||
|
class EarlyManga : Madara("EarlyManga", "https://earlymanga.xyz", "en") {
|
||||||
|
override fun headersBuilder(): Headers.Builder {
|
||||||
|
return super.headersBuilder().add("Referer", "$baseUrl/manga/")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MangaGecesi : Madara("Manga Gecesi", "https://mangagecesi.com", "tr") {
|
||||||
|
override val chapterUrlSelector = "li.wp-manga-chapter div.chapter-thumbnail + a"
|
||||||
|
}
|
||||||
|
|
||||||
|
class MangaWOW : Madara("MangaWOW", "https://mangawow.com", "tr")
|
||||||
|
|
||||||
|
class KnightNoScanlation : Madara("Knight no Scanlation", "https://knightnoscanlation.com", "es")
|
||||||
|
|
||||||
class MangaTeca : Madara(
|
class MangaTeca : Madara(
|
||||||
"MangaTeca",
|
"MangaTeca",
|
||||||
"https://www.mangateca.com",
|
"https://www.mangateca.com",
|
||||||
|
|
Loading…
Reference in New Issue