add 10 new source

pull/203/head
devi 3 years ago
parent 74a4a3a8b4
commit c833563907

@ -123,6 +123,7 @@ internal abstract class MadaraParser(
"Terminé ⚫", "Terminé ⚫",
"Tamamlandı", "Tamamlandı",
"Đã hoàn thành", "Đã hoàn thành",
"Hoàn Thành",
"مكتملة", "مكتملة",
"Завершено", "Завершено",
"Finished", "Finished",
@ -189,7 +190,7 @@ internal abstract class MadaraParser(
"Devam ediyor", "Devam ediyor",
-> MangaState.ONGOING -> MangaState.ONGOING
"Completed", "Completo", "Complété", "Fini", "Achevé", "Terminé", "Terminé ⚫", "Tamamlandı", "Đã hoàn thành", "مكتملة", "Completed", "Completo", "Complété", "Fini", "Achevé", "Terminé", "Terminé ⚫", "Tamamlandı", "Đã hoàn thành", "Hoàn Thành", "مكتملة",
"Завершено", "Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído", "Concluido", "已完结", "Bitmiş", "Завершено", "Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído", "Concluido", "已完结", "Bitmiş",
-> MangaState.FINISHED -> MangaState.FINISHED
@ -373,6 +374,10 @@ internal abstract class MadaraParser(
date.endsWith(" önce", ignoreCase = true) -> { date.endsWith(" önce", ignoreCase = true) -> {
parseRelativeDate(date) parseRelativeDate(date)
} }
// Handle translated 'ago' in Viêt Nam.
date.endsWith(" trước", ignoreCase = true) -> {
parseRelativeDate(date)
}
// Handle translated 'ago' in french. // Handle translated 'ago' in french.
date.startsWith("il y a", ignoreCase = true) -> { date.startsWith("il y a", ignoreCase = true) -> {
parseRelativeDate(date) parseRelativeDate(date)
@ -448,7 +453,7 @@ internal abstract class MadaraParser(
) )
}.timeInMillis }.timeInMillis
WordSet("menit", "dakika", "min", "minute", "minuto", "mins").anyWordIn(date) -> cal.apply { WordSet("menit", "dakika", "min", "minute", "minuto", "mins", "phút").anyWordIn(date) -> cal.apply {
add( add(
Calendar.MINUTE, Calendar.MINUTE,
-number, -number,

@ -10,6 +10,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
internal class ColoredManga(context: MangaLoaderContext) : internal class ColoredManga(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.COLORED_MANGA, "coloredmanga.com") { 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"
} }

@ -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("HMANHWA", "HManhwa", "en")
internal class HManhwa(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HMANHWA, "hmanhwa.com") {
override val tagPrefix = "manhwa-genre/"
override val isNsfwSource = true
override val datePattern = "dd MMM"
override val postreq = true
}

@ -0,0 +1,16 @@
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("HENTAIMANGA", "Hentai Manga", "en")
internal class HentaiManga(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HENTAIMANGA, "hentaimanga.me", 36) {
override val datePattern = "MMMM d, yyyy"
override val isNsfwSource = true
override val postreq = true
}

@ -0,0 +1,17 @@
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("HENTAIWEBTOON", "Hentai Webtoon", "en")
internal class HentaiWebtoon(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HENTAIWEBTOON, "hentaiwebtoon.com") {
override val datePattern = "MMMM d, yyyy"
override val isNsfwSource = true
override val postreq = true
}

@ -0,0 +1,16 @@
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("HENTAIXCOMIC", "Hentai x Comic", "en")
internal class HentaixComic(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HENTAIXCOMIC, "hentaixcomic.com", 16) {
override val datePattern = "MMMM d, yyyy"
override val isNsfwSource = true
override val postreq = true
}

@ -0,0 +1,16 @@
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("HENTAIXYURI", "Hentai x Yuri", "en")
internal class HentaixYuri(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HENTAIXYURI, "hentaixyuri.com", 16) {
override val datePattern = "MMMM d, yyyy"
override val isNsfwSource = true
override val postreq = true
}

@ -0,0 +1,15 @@
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("HSCANS", "Hscans", "en")
internal class Hscans(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HSCANS, "hscans.com", 10) {
override val tagPrefix = "manga-tag/"
override val datePattern = "dd/MM/yyyy"
}

@ -0,0 +1,15 @@
package org.koitharu.kotatsu.parsers.site.madara.es
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("HERENSCAN", "Heren Scan", "es")
internal class HerenScan(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HERENSCAN, "herenscan.com") {
override val datePattern = "d 'de' MMMMM 'de' yyyy"
override val sourceLocale: Locale = Locale("es")
}

@ -0,0 +1,13 @@
package org.koitharu.kotatsu.parsers.site.madara.es
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("MANGAREADERPRO", "Manga Reader Pro", "es")
internal class MangaReaderpro(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.MANGAREADERPRO, "mangareaderpro.com", 10) {
override val datePattern = "MM/dd/yyyy"
}

@ -12,7 +12,7 @@ import java.util.Locale
internal class Anikiga(context: MangaLoaderContext) : internal class Anikiga(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.ANIKIGA, "anikiga.com") { MadaraParser(context, MangaSource.ANIKIGA, "anikiga.com") {
override val tagPrefix = "manga-tur" override val tagPrefix = "manga-tur/"
override val datePattern = "d MMMM yyyy" override val datePattern = "d MMMM yyyy"
override val sourceLocale: Locale = Locale("tr") override val sourceLocale: Locale = Locale("tr")
override val postreq = true override val postreq = true

@ -0,0 +1,15 @@
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
@MangaSourceParser("HAYALISTIC", "Hayalistic", "vi")
internal class Hayalistic(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HAYALISTIC, "hayalistic.com", 24) {
override val datePattern = "dd/MM/yyyy"
}

@ -0,0 +1,43 @@
package org.koitharu.kotatsu.parsers.site.madara.vi
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.exception.ParseException
import org.koitharu.kotatsu.parsers.model.MangaChapter
import org.koitharu.kotatsu.parsers.model.MangaPage
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
import org.koitharu.kotatsu.parsers.util.domain
import org.koitharu.kotatsu.parsers.util.generateUid
import org.koitharu.kotatsu.parsers.util.parseFailed
import org.koitharu.kotatsu.parsers.util.parseHtml
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
import org.koitharu.kotatsu.parsers.util.toRelativeUrl
@MangaSourceParser("HENTAICUBE", "Hentai Cube", "vi")
internal class HentaiCube(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HENTAICUBE, "hentaicube.net") {
override val isNsfwSource = true
override val datePattern = "dd/MM/yyyy"
override val tagPrefix = "the-loai/"
override val postreq = true
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
val fullUrl = chapter.url.toAbsoluteUrl(domain)
val doc = webClient.httpGet(fullUrl).parseHtml()
val root = doc.body().selectFirst("div.main-col-inner")?.selectFirst("div.reading-content")
?: throw ParseException("Root not found", fullUrl)
return root.select("img").map { img ->
val url = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found")
MangaPage(
id = generateUid(url),
url = url,
preview = null,
source = source,
)
}
}
}
Loading…
Cancel
Save