From c580c9ceed18e97ff0111e2b4acd843d79f55e56 Mon Sep 17 00:00:00 2001 From: Carlos <2092019+CarlosEsco@users.noreply.github.com> Date: Fri, 18 Dec 2020 20:07:17 -0500 Subject: [PATCH] Madara Updates (#5187) * add missing Madara sources * update gradle * fix url * adjust spacing * fix some typos --- src/all/madara/build.gradle | 2 +- .../extension/all/madara/MadaraFactory.kt | 99 ++++++++++++------- 2 files changed, 65 insertions(+), 36 deletions(-) diff --git a/src/all/madara/build.gradle b/src/all/madara/build.gradle index 8ec00a105..e3cf463b8 100644 --- a/src/all/madara/build.gradle +++ b/src/all/madara/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Madara (multiple sources)' pkgNameSuffix = "all.madara" extClass = '.MadaraFactory' - extVersionCode = 159 + extVersionCode = 160 libVersion = '1.2' containsNsfw = true } diff --git a/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/MadaraFactory.kt b/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/MadaraFactory.kt index e3d3e50ed..0391e2407 100644 --- a/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/MadaraFactory.kt +++ b/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/MadaraFactory.kt @@ -27,9 +27,9 @@ import java.util.concurrent.TimeUnit class MadaraFactory : SourceFactory { override fun createSources(): List = listOf( - ATMSubs(), AdonisFansub(), AkuManga(), + AlianzaMarcial(), AllPornComic(), Aloalivn(), AniMangaEs(), @@ -37,9 +37,11 @@ class MadaraFactory : SourceFactory { ApollComics(), ArangScans(), ArazNovel(), + ArgosScan(), AsgardTeam(), AstralLibrary(), Atikrost(), + ATMSubs(), Azora(), Bakaman(), BestManga(), @@ -60,7 +62,9 @@ class MadaraFactory : SourceFactory { DoujinHentai(), DoujinYosh(), DropeScan(), + EarlyManga(), EinherjarScan(), + FdmScan(), FirstKissManga(), FirstKissManhua(), FreeWebtoonCoins(), @@ -69,6 +73,7 @@ class MadaraFactory : SourceFactory { GuncelManga(), HeroManhua(), HerozScanlation(), + HikariScan(), HimeraFansub(), Hiperdex(), Hscans(), @@ -76,13 +81,15 @@ class MadaraFactory : SourceFactory { IchirinNoHanaYuri(), ImmortalUpdates(), IsekaiScanCom(), - JustForFun(), JJutsuScans(), - KMangaIn(), + JustForFun(), KingzManga(), KisekiManga(), KlanKomik(), KlikManga(), + KMangaIn(), + KnightNoScanlation(), + Kombatch(), KomikGo(), LilyManga(), Manga18Fun(), @@ -98,11 +105,14 @@ class MadaraFactory : SourceFactory { MangaClash(), MangaCultivator(), MangaDods(), + MangaGecesi(), MangaHentai(), MangaKiss(), + MangaKitsu(), MangaKomi(), - MangaLord(), MangaLandArabic(), + Mangalek(), + MangaLord(), ManganeloLink(), MangaNine(), MangaPhoenix(), @@ -110,6 +120,7 @@ class MadaraFactory : SourceFactory { MangaRawr(), MangaRead(), MangaReadOrg(), + Mangareceh(), MangaRockTeam(), MangaRocky(), MangaRoma(), @@ -117,15 +128,16 @@ class MadaraFactory : SourceFactory { MangaSco(), MangaSpark(), MangaStarz(), - MangaSY(), - MangaTX(), - MangaTurf(), - MangaWT(), - MangaYosh(), - Mangalek(), - Mangareceh(), + MangaStein(), Mangasushi(), + MangaSY(), + MangaTeca(), + MangaTurf(), + MangaTX(), + MangaWOW(), + MangaWT(), MangaYaku(), + MangaYosh(), MangazukiClubJP(), MangazukiClubKO(), MangazukiMe(), @@ -134,10 +146,10 @@ class MadaraFactory : SourceFactory { ManhuaFast(), Manhuaga(), ManhuaPlus(), - ManhuaUS(), + Manhuasnet(), ManhuasWorld(), ManhuaSY(), - Manhuasnet(), + ManhuaUS(), ManhwaRaw(), ManhwaTop(), ManwahentaiMe(), @@ -161,12 +173,14 @@ class MadaraFactory : SourceFactory { Ninjavi(), NTSVoidScans(), OffScan(), + OlaoeManga(), OnManga(), OrigamiOrpheans(), PMScans(), PojokManga(), PornComix(), PrimeManga(), + ProjetoScanlator(), QueensManga(), RaiderScans(), RandomTranslations(), @@ -174,14 +188,15 @@ class MadaraFactory : SourceFactory { RenaScans(), RuyaManga(), S2Manga(), + ShoujoHearts(), SpookyScanlations(), StageComics(), TheTopComic(), ThreeSixtyFiveManga(), - ToonPoint(), - Toonily(), ToonGod(), + Toonily(), ToonilyNet(), + ToonPoint(), TopManhua(), TritiniaScans(), TruyenTranhAudioCom(), @@ -190,33 +205,19 @@ class MadaraFactory : SourceFactory { TurkceManga(), TwilightScans(), Wakascan(), - WebToonily(), - WeScans(), WebNovel(), + WebToonily(), WebtoonXYZ(), + WeScans(), WoopRead(), WuxiaWorld(), YaoiToshokan(), YokaiJump(), - ZManga(), - ZinManga(), - ShoujoHearts(), - AlianzaMarcial(), - OlaoeManga(), - FdmScan(), - ArgosScan(), - Kombatch(), - ProjetoScanlator(), - HikariScan(), YuriVerso(), - MangaKitsu(), - MangaTeca() - // Removed by request of site owner - // EarlyManga(), - // MangaGecesi(), - // MangaWOW(), - // MangaStein(), - // KnightNoScanlation(), + ZinManga(), + ZManga(), + + // removed because scanlator site and they requested // 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 popularMangaSelector() = "div.page-item-detail.manga:has(span.chapter)" override fun chapterListSelector() = "li.wp-manga-chapter:has(a)" + @SuppressLint("DefaultLocale") override fun chapterListParse(response: Response): List { return response.asJsoup().let { document -> @@ -860,6 +862,7 @@ class GoldenManga : Madara("موقع لترجمة المانجا", "https://gold thumbnail_url = element.select("img").firstOrNull()?.let { imageFromElement(it) } } } + override fun chapterListSelector() = "div.main a" override fun chapterFromElement(element: Element): SChapter { return SChapter.create().apply { @@ -877,6 +880,7 @@ class AstralLibrary : Madara("Astral Library", "https://www.astrallibrary.net", override fun popularMangaRequest(page: Int): Request { return GET("$baseUrl/manga-tag/manga/?m_orderby=views&page=$page", headers) } + override fun latestUpdatesRequest(page: Int): Request { 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())) { override fun formBuilder(page: Int, popular: Boolean): FormBody.Builder = super.formBuilder(page, popular) .add("vars[meta_query][0][0][value]", "manga") + override fun getGenreList() = listOf( Genre("Aksiyon", "action"), Genre("Macera", "adventure"), @@ -1043,6 +1048,7 @@ class ArazNovel : Madara("ArazNovel", "https://www.araznovel.com", "tr", SimpleD Genre("Yaoi", "yaoi"), Genre("Yuri", "yuri") ) + override fun chapterListParse(response: Response): List { return getXhrChapters(response.asJsoup().select("div#manga-chapters-holder").attr("data-id")).let { document -> document.select("li.parent").let { elements -> @@ -1110,6 +1116,7 @@ class MartialScans : Madara("Martial Scans", "https://martialscans.com", "en") { return manga } + 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)) { 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 QueensManga : Madara("QueensManga ملكات المانجا", "https://queensmanga.com", "ar") { @@ -1264,6 +1272,7 @@ class TruyenTranhAudioOnline : Madara("TruyenTranhAudio.online", "https://truyen override val formHeaders: Headers = headersBuilder() .add("Content-Type", "application/x-www-form-urlencoded") .build() + override fun pageListParse(document: Document): List { return document.select("div.reading-content img").map { it.attr("abs:src") } .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") { override fun popularMangaRequest(page: Int): Request = POST("$baseUrl/manga/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK) + override fun latestUpdatesRequest(page: Int): Request = 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/" } @@ -1334,8 +1345,10 @@ class Wakascan : Madara("Wakascan", "https://wakascan.com", "fr") class ShoujoHearts : Madara("ShoujoHearts", "http://shoujohearts.com", "en") { override fun popularMangaRequest(page: Int): Request = POST("$baseUrl/reader/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK) + override fun latestUpdatesRequest(page: Int): Request = 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/" } @@ -1434,6 +1447,22 @@ class YuriVerso : Madara( 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( "MangaTeca", "https://www.mangateca.com",