Madara Updates (#5187)

* add missing Madara sources

* update gradle

* fix url

* adjust spacing

* fix some typos
This commit is contained in:
Carlos 2020-12-18 20:07:17 -05:00 committed by GitHub
parent 6d9f40967e
commit c580c9ceed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 65 additions and 36 deletions

View File

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

View File

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