Add new source and add new scrapper for Chapter on theme madara

pull/203/head
devi 3 years ago
parent d05d5fa911
commit 1e98104eca

@ -33,6 +33,8 @@ internal abstract class MadaraParser(
protected open val isNsfwSource = false protected open val isNsfwSource = false
protected open val datePattern = "MMMM dd, yyyy" protected open val datePattern = "MMMM dd, yyyy"
protected open val postreq = false
init { init {
paginator.firstPage = 0 paginator.firstPage = 0
searchPaginator.firstPage = 0 searchPaginator.firstPage = 0
@ -202,8 +204,7 @@ internal abstract class MadaraParser(
val testchekasync = doc.body().select("div.listing-chapters_wrap") val testchekasync = doc.body().select("div.listing-chapters_wrap")
val chaptersDeferred = if (testchekasync.isNullOrEmpty()) { val chaptersDeferred = if (testchekasync.isNullOrEmpty()) {
async { loadChapters(manga.url) } async { loadChapters(manga.url, doc) }
} else { } else {
async { getChapters(manga, doc) } async { getChapters(manga, doc) }
} }
@ -277,10 +278,20 @@ internal abstract class MadaraParser(
} }
} }
protected open suspend fun loadChapters(mangaUrl: String): List<MangaChapter> { protected open suspend fun loadChapters(mangaUrl: String, document: Document): List<MangaChapter> {
val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/"
val doc = if (postreq == false) {
val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/"
webClient.httpPost(url, emptyMap()).parseHtml()
} else {
val mangaId = document.select("div#manga-chapters-holder").attr("data-id")
val url = "https://$domain/wp-admin/admin-ajax.php"
val postdata = "action=manga_get_chapters&manga=$mangaId"
webClient.httpPost(url, postdata).parseHtml()
}
val dateFormat = SimpleDateFormat(datePattern, sourceLocale) val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
val doc = webClient.httpPost(url, emptyMap()).parseHtml()
return doc.select("li.wp-manga-chapter").mapChapters(reversed = true) { i, li -> return doc.select("li.wp-manga-chapter").mapChapters(reversed = true) { i, li ->
val a = li.selectFirst("a") val a = li.selectFirst("a")
val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing")
@ -340,9 +351,11 @@ internal abstract class MadaraParser(
date.endsWith(" h", ignoreCase = true) -> { date.endsWith(" h", ignoreCase = true) -> {
parseRelativeDate(date) parseRelativeDate(date)
} }
date.endsWith(" d", ignoreCase = true) -> { date.endsWith(" d", ignoreCase = true) -> {
parseRelativeDate(date) parseRelativeDate(date)
} }
date.endsWith(" mins", ignoreCase = true) -> { date.endsWith(" mins", ignoreCase = true) -> {
parseRelativeDate(date) parseRelativeDate(date)
} }

@ -9,7 +9,7 @@ import java.util.Locale
@MangaSourceParser("AZORANOV", "Azoranov", "ar") @MangaSourceParser("AZORANOV", "Azoranov", "ar")
internal class Azoranov(context: MangaLoaderContext) : internal class Azoranov(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.AZORANOV, "azoranov.com", pageSize = 10,) { MadaraParser(context, MangaSource.AZORANOV, "azoranov.com", pageSize = 10) {
override val tagPrefix = "novel-genre/" override val tagPrefix = "novel-genre/"
override val datePattern = "MMMM d, yyyy" override val datePattern = "MMMM d, yyyy"

@ -0,0 +1,18 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("ADULT_WEBTOON", "Adult Webtoon", "en")
internal class AdultWebtoon(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.ADULT_WEBTOON, "adultwebtoon.com") {
override val isNsfwSource = true
override val tagPrefix = "adult-webtoon-genre/"
override val datePattern = "MMMM d, yyyy"
override val postreq = true
}

@ -7,7 +7,8 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("ANSHSCANS", "Ansh Scans", "en") @MangaSourceParser("ANSHSCANS", "Ansh Scans", "en")
internal class AnshScans(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ANSHSCANS, "anshscans.org", 10){ internal class AnshScans(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.ANSHSCANS, "anshscans.org", 10) {
override val tagPrefix = "genre/" override val tagPrefix = "genre/"

@ -0,0 +1,16 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("ASTRALLIBRARY", "Astrallibrary", "en")
internal class Astrallibrary(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.ASTRALLIBRARY, "astrallibrary.net", 18) {
override val datePattern = "dd MMM"
override val postreq = true
}

@ -0,0 +1,16 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("BLOG_MANGA", "Blog Manga", "en")
internal class BlogManga(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.BLOG_MANGA, "blogmanga.net") {
override val datePattern = "MMMM d, yyyy"
override val postreq = true
}

@ -0,0 +1,18 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("BOYS_LOVE", "Boys Love", "en")
internal class BoysLove(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.BOYS_LOVE, "boyslove.me", 20) {
override val isNsfwSource = true
override val tagPrefix = "boyslove-genre/"
override val datePattern = "MMMM d, yyyy"
override val postreq = true
}

@ -7,7 +7,8 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("COFFEE_MANGA", "Coffee Manga", "en") @MangaSourceParser("COFFEE_MANGA", "Coffee Manga", "en")
internal class CoffeeManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.COFFEE_MANGA, "coffeemanga.io") { internal class CoffeeManga(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.COFFEE_MANGA, "coffeemanga.io") {
override val datePattern = "MMMM d, yyyy" override val datePattern = "MMMM d, yyyy"
} }

@ -7,7 +7,8 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("COLORED_MANGA", "Colored Manga", "en") @MangaSourceParser("COLORED_MANGA", "Colored Manga", "en")
internal class ColoredManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.COLORED_MANGA, "coloredmanga.com") { internal class ColoredManga(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.COLORED_MANGA, "coloredmanga.com") {
override val tagPrefix = "manga-tag" override val tagPrefix = "manga-tag"
override val datePattern = "dd-MMM" override val datePattern = "dd-MMM"

@ -1,5 +1,6 @@
package org.koitharu.kotatsu.parsers.site.madara.fr package org.koitharu.kotatsu.parsers.site.madara.fr
import org.jsoup.nodes.Document
import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaChapter
@ -20,7 +21,7 @@ internal class Hentaizone(context: MangaLoaderContext) :
override val isNsfwSource = true override val isNsfwSource = true
override suspend fun loadChapters(mangaUrl: String): List<MangaChapter> { override suspend fun loadChapters(mangaUrl: String, document: Document): List<MangaChapter> {
val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/" val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/"
val dateFormat = SimpleDateFormat(datePattern, sourceLocale) val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
val doc = webClient.httpPost(url, emptyMap()).parseHtml() val doc = webClient.httpPost(url, emptyMap()).parseHtml()

@ -0,0 +1,15 @@
package org.koitharu.kotatsu.parsers.site.madara.pt
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("CAFECOMYAOI", "Cafecom Yaoi", "pt")
internal class CafecomYaoi(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.CAFECOMYAOI, "cafecomyaoi.com.br") {
override val datePattern = "dd/MM/yyyy"
override val postreq = true
}

@ -0,0 +1,16 @@
package org.koitharu.kotatsu.parsers.site.madara.ru
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("BEST_MANGA", "best manga", "ru")
internal class BestManga(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.BEST_MANGA, "bestmanga.club") {
override val datePattern = "dd.MM.yyyy"
override val postreq = true
}

@ -0,0 +1,19 @@
package org.koitharu.kotatsu.parsers.site.madara.tr
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
import java.util.Locale
@MangaSourceParser("ANIKIGA", "Anikiga", "tr")
internal class Anikiga(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.ANIKIGA, "anikiga.com") {
override val tagPrefix = "manga-tur"
override val datePattern = "d MMMM yyyy"
override val sourceLocale: Locale = Locale("tr")
override val postreq = true
}

@ -0,0 +1,17 @@
package org.koitharu.kotatsu.parsers.site.madara.tr
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
import java.util.Locale
@MangaSourceParser("ANISA_MANGA", "Anisa Manga", "tr")
internal class AnisaManga(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.ANISA_MANGA, "anisamanga.com") {
override val datePattern = "MMMM d, yyyy"
override val sourceLocale: Locale = Locale("tr")
}

@ -0,0 +1,18 @@
package org.koitharu.kotatsu.parsers.site.madara.tr
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
import java.util.Locale
@MangaSourceParser("ARAZNOVEL", "Araz Novel", "tr")
internal class ArazNovel(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.ARAZNOVEL, "araznovel.com", 10) {
override val datePattern = "d MMMM yyyy"
override val sourceLocale: Locale = Locale("tr")
override val postreq = true
}

@ -7,7 +7,8 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("WEBTOONTR", "Webtoontr", "tr") @MangaSourceParser("WEBTOONTR", "Webtoontr", "tr")
internal class Webtoontr(context: MangaLoaderContext) : MadaraParser(context, MangaSource.WEBTOONTR, "webtoon-tr.com", 16) { internal class Webtoontr(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.WEBTOONTR, "webtoon-tr.com", 16) {
override val tagPrefix = "webtoon-kategori/" override val tagPrefix = "webtoon-kategori/"
override val datePattern = "dd/MM/yyyy" override val datePattern = "dd/MM/yyyy"
} }

Loading…
Cancel
Save