From dfc91f27b233a0767d0cce839b31fb62d5f02f74 Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Mon, 17 Aug 2020 20:31:34 -0400 Subject: [PATCH] Madara - add sources, fix some chapter lists (#4153) * Madara - add sources * fix some chapters, remove Indiancomicsonline * Add Wakascan --- src/all/madara/build.gradle | 2 +- .../tachiyomi/extension/all/madara/Madara.kt | 2 +- .../extension/all/madara/MadaraFactory.kt | 63 +++++++++++++++++-- 3 files changed, 61 insertions(+), 6 deletions(-) diff --git a/src/all/madara/build.gradle b/src/all/madara/build.gradle index e626435e9..daebc53b5 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 = 127 + extVersionCode = 128 libVersion = '1.2' containsNsfw = true } diff --git a/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt b/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt index c165014d4..cdd74f61c 100644 --- a/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt +++ b/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt @@ -379,7 +379,7 @@ abstract class Madara( override fun chapterListParse(response: Response): List { val document = response.asJsoup() - val dataIdSelector = "div#manga-chapters-holder" + val dataIdSelector = "div[id^=manga-chapters-holder]" return document.select(chapterListSelector()) .let { elements -> 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 844e69216..c2e646201 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 @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.extension.all.madara import android.annotation.SuppressLint import eu.kanade.tachiyomi.annotations.Nsfw import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceFactory @@ -46,7 +47,6 @@ class MadaraFactory : SourceFactory { Hiperdex(), HunterFansub(), IchirinNoHanaYuri(), - Indiancomicsonline(), IsekaiScanCom(), JustForFun(), KingzManga(), @@ -151,7 +151,17 @@ class MadaraFactory : SourceFactory { ToonilyNet(), BestManga(), TwilightScans(), - DetectiveConanAr() + DetectiveConanAr(), + WordExcerpt(), + WoopRead(), + Ninjavi(), + ManhwaTop(), + ImmortalUpdates(), + Bakaman(), + CatTranslator(), + ComicsValley(), + FriendlyTranslations(), + Wakascan() // Removed by request of site owner // EarlyManga(), // MangaGecesi(), @@ -307,8 +317,6 @@ class ManwahentaiMe : Madara("Manwahentai.me", "https://manhwahentai.me", "en") class Manga3asq : Madara("مانجا العاشق", "https://3asq.org", "ar") -class Indiancomicsonline : Madara("Indian Comics Online", "http://www.indiancomicsonline.com", "hi") - class AdonisFansub : Madara("Adonis Fansub", "https://manga.adonisfansub.com", "tr") { override val userAgentRandomizer = "" override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=views", headers) @@ -334,6 +342,7 @@ class GetManhwa : Madara("GetManhwa", "https://getmanhwa.co", "en") { } } +@Nsfw class AllPornComic : Madara("AllPornComic", "https://allporncomic.com", "en") { override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=views", headers) override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=latest", headers) @@ -520,6 +529,7 @@ class Hiperdex : Madara("Hiperdex", "https://hiperdex.com", "en") { ) } +@Nsfw class DoujinHentai : Madara("DoujinHentai", "https://doujinhentai.net", "es", SimpleDateFormat("d MMM. yyyy", Locale.ENGLISH)) { override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/lista-manga-hentai?orderby=views&page=$page", headers) override fun popularMangaSelector() = "div.col-md-3 a" @@ -851,6 +861,7 @@ class NeoxScanlator : Madara("Neox Scanlator", "https://neoxscans.com", "pt-BR", class MangaLord : Madara("Manga Lord", "https://mangalord.com", "en") +@Nsfw class PornComix : Madara("PornComix", "https://www.porncomixonline.net", "en") class PMScans : Madara("PMScans", "http://www.pmscans.com", "en") @@ -975,6 +986,7 @@ class ArangScans : Madara("Arang Scans", "https://www.arangscans.com", "en", Sim override fun latestUpdatesNextPageSelector(): String? = null } +@Nsfw class MangaHentai : Madara("Manga Hentai", "https://mangahentai.me", "en") class MangaPhoenix : Madara("Manga Diyari", "https://mangadiyari.com", "tr") { @@ -1207,3 +1219,46 @@ class BestManga : Madara("BestManga", "https://bestmanga.club", "ru", SimpleDate class TwilightScans : Madara("Twilight Scans", "https://twilightscans.com", "en") class DetectiveConanAr : Madara("شبكة كونان العربية", "https://www.manga.detectiveconanar.com", "ar") + +// mostly novels, doesn't include year in chapter dates (even for past years) +class WordExcerpt : Madara("Word Excerpt", "https://wordexcerpt.com", "en") { + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/archive/webtoon/page/$page/?m_orderby=views", headers) + override fun popularMangaNextPageSelector() = "div.nav-previous a" + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/archive/webtoon/page/$page/?m_orderby=latest", headers) + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = GET("$baseUrl/?s=the&post_type=wp-manga&genre[]=webtoon", headers) + override fun getFilterList(): FilterList = FilterList() +} + +// mostly novels +class WoopRead : Madara("WoopRead", "https://woopread.com", "en") { + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/?s&post_type=wp-manga&genre[0]=manhua&genre[1]=manhwa&m_orderby=views", headers) + override fun popularMangaParse(response: Response) = searchMangaParse(response) + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/?s&post_type=wp-manga&genre[0]=manhua&genre[1]=manhwa&m_orderby=latest", headers) + override fun latestUpdatesParse(response: Response) = searchMangaParse(response) + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = + GET("$baseUrl/?s=$query&post_type=wp-manga&genre[0]=manhua&genre[1]=manhwa&m_orderby=latest", headers) + override fun getFilterList(): FilterList = FilterList() +} + +class Ninjavi : Madara("Ninjavi", "https://ninjavi.com", "ar") + +class ManhwaTop : Madara("Manhwatop", "https://manhwatop.com", "en") + +class ImmortalUpdates : Madara("Immortal Updates", "https://immortalupdates.com", "en") + +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/" +} + +@Nsfw +class ComicsValley : Madara("Comics Valley", "https://comicsvalley.com", "hi") + +class FriendlyTranslations : Madara("Friendly Translations", "https://friendlytranslationsscan.website", "en") + +class Wakascan : Madara("Wakascan", "https://wakascan.com", "fr")