Minor daily update ( and remove warning for name )

pull/355/head
devi 3 years ago
parent 4ca3a492b0
commit 508647eb5a

@ -0,0 +1,11 @@
package org.koitharu.kotatsu.parsers.site.heancms.en
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.heancms.HeanCms
@MangaSourceParser("OMEGASCANS", "OmegaScans", "en", ContentType.HENTAI)
internal class OmegaScans(context: MangaLoaderContext) :
HeanCms(context, MangaSource.OMEGASCANS, "omegascans.org")

@ -16,7 +16,7 @@ import org.koitharu.kotatsu.parsers.util.json.mapJSON
import org.koitharu.kotatsu.parsers.util.parseJson
import org.koitharu.kotatsu.parsers.util.urlEncoded
@MangaSourceParser("YUGEN_MANGAS_ES", "YugenMangas", "es", ContentType.HENTAI)
@MangaSourceParser("YUGEN_MANGAS_ES", "YugenMangas.lat", "es", ContentType.HENTAI)
internal class YugenMangasEs(context: MangaLoaderContext) :
HeanCms(context, MangaSource.YUGEN_MANGAS_ES, "yugenmangas.lat") {

@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.heancms.HeanCms
@MangaSourceParser("REAPERSCANSPT", "ReaperScans", "pt")
@MangaSourceParser("REAPERSCANSPT", "ReaperScans.net", "pt")
internal class ReaperScansPt(context: MangaLoaderContext) :
HeanCms(context, MangaSource.REAPERSCANSPT, "reaperscans.net") {
override val configKeyDomain = ConfigKey.Domain("reaperscans.net", "reaperbr.online")

@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
import java.util.Locale
@MangaSourceParser("MANYTOON_CLUB", "ManyToon Club", "", ContentType.HENTAI)
@MangaSourceParser("MANYTOON_CLUB", "ManyToon.club", "", ContentType.HENTAI)
internal class ManyToonClub(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.MANYTOON_CLUB, "manytoon.club") {
override val postReq = true

@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("HUNTERSSCANEN", "HuntersScan", "en")
@MangaSourceParser("HUNTERSSCANEN", "EnHuntersScan", "en")
internal class HuntersScanEn(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HUNTERSSCANEN, "en.huntersscan.xyz") {
override val withoutAjax = true

@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("MANGA_ONLINE", "MangaOnline", "en")
@MangaSourceParser("MANGA_ONLINE", "MangaOnline.team", "en")
internal class MangaOnline(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.MANGA_ONLINE, "mangaonline.team", 18)

@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("PANTHEONSCAN", "PantheonScan", "fr")
@MangaSourceParser("PANTHEONSCAN", "PantheonScan.com", "fr")
internal class PantheonScan(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.PANTHEONSCAN, "pantheon-scan.com") {
override val datePattern = "d MMMM yyyy"

@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("REAPERSCANS_FR", "ReaperScans", "fr")
@MangaSourceParser("REAPERSCANS_FR", "ReaperScans.fr", "fr")
internal class ReaperScansFr(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.REAPERSCANS_FR, "reaperscans.fr") {
override val datePattern = "MM/dd/yyyy"

@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("GOURMETSCANS_ID", "GourmetScans", "id")
@MangaSourceParser("GOURMETSCANS_ID", "IdGourmetScans", "id")
internal class GourmetScansId(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.GOURMETSCANS_ID, "id.gourmetscans.net") {
override val listUrl = "project/"

@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("REAPERSCANSTR", "ReaperScans", "tr")
@MangaSourceParser("REAPERSCANSTR", "ReaperScansTr", "tr")
internal class ReaperScansTr(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.REAPERSCANSTR, "reaperscanstr.com", 5) {
override val listUrl = "seri/"

@ -13,7 +13,7 @@ import org.koitharu.kotatsu.parsers.util.mapChapters
import org.koitharu.kotatsu.parsers.util.parseHtml
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
@MangaSourceParser("MANJANOON", "Manjanoon", "ar")
@MangaSourceParser("MANJANOON", "Manjanoon.com", "ar")
internal class Manjanoon(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.MANJANOON, "manjanoon.com", pageSize = 21, searchPageSize = 10) {

@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("OZULSCANS", "OzulScans", "ar")
@MangaSourceParser("OZULSCANS", "Ar-OzulScans", "ar")
internal class Ozulscans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.OZULSCANS, "ar-ozulscans.com", pageSize = 30, searchPageSize = 30)

@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("COSMICSCANS", "CosmicScans", "en")
@MangaSourceParser("COSMICSCANS", "CosmicScans.com", "en")
internal class CosmicScansParser(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.COSMICSCANS, "cosmic-scans.com", pageSize = 20, searchPageSize = 10) {
override val datePattern = "MMM d, yyyy"

@ -0,0 +1,12 @@
package org.koitharu.kotatsu.parsers.site.mangareader.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.mangareader.MangaReaderParser
@MangaSourceParser("FLAMECOMICS", "FlameComics", "en")
internal class FlameComics(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.FLAMECOMICS, "flamecomics.com", pageSize = 24, searchPageSize = 10) {
override val listUrl = "/series"
}

@ -11,14 +11,13 @@ import java.text.SimpleDateFormat
import java.util.Calendar
@MangaSourceParser("MANHWA_FREAK", "ManhwaFreak", "en")
@MangaSourceParser("MANHWA_FREAK", "Manhwa-Freak.com", "en")
internal class ManhwaFreak(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.MANHWA_FREAK, "manhwa-freak.com", pageSize = 0, searchPageSize = 10) {
override val selectMangaList = ".listupd .lastest-serie"
override val selectMangaListImg = "img"
override suspend fun getListPage(
page: Int,
query: String?,
@ -29,7 +28,6 @@ internal class ManhwaFreak(context: MangaLoaderContext) :
if (page > lastSearchPage) {
return emptyList()
}
val url = buildString {
append("https://")
append(domain)
@ -38,20 +36,16 @@ internal class ManhwaFreak(context: MangaLoaderContext) :
append("/?s=")
append(query.urlEncoded())
}
val docs = webClient.httpGet(url).parseHtml()
lastSearchPage = docs.selectFirst(".pagination .next")
?.previousElementSibling()
?.text()?.toIntOrNull() ?: 1
return parseMangaList(docs)
}
if (!tags.isNullOrEmpty()) {
if (page > 1) {
return emptyList()
}
val tag = tags.oneOrThrowIfMany()
val url = buildString {
append("https://")
@ -59,10 +53,8 @@ internal class ManhwaFreak(context: MangaLoaderContext) :
append("/genres/?genre=")
append(tag?.key.orEmpty())
}
return parseMangaList(webClient.httpGet(url).parseHtml())
}
if (page > 1) {
return emptyList()
}
@ -73,7 +65,6 @@ internal class ManhwaFreak(context: MangaLoaderContext) :
SortOrder.UPDATED -> ""
else -> ""
}
val url = buildString {
append("https://")
append(domain)
@ -81,13 +72,11 @@ internal class ManhwaFreak(context: MangaLoaderContext) :
append("/?order=")
append(sortQuery)
}
return parseMangaList(webClient.httpGet(url).parseHtml())
}
override suspend fun getTags(): Set<MangaTag> {
val doc = webClient.httpGet("https://$domain/genres/").parseHtml()
return doc.select("ul.genre-list li a").mapNotNullToSet { a ->
val href = a.attr("href").substringAfterLast("=")
MangaTag(
@ -129,11 +118,9 @@ internal class ManhwaFreak(context: MangaLoaderContext) :
}
override suspend fun parseInfo(docs: Document, manga: Manga, chapters: List<MangaChapter>): Manga {
val tagMap = getOrCreateTagMap()
val selectTag = docs.requireElementById("info").select("div:contains(Genre) > p:last-child").text().split(",")
val tags = selectTag.mapNotNullToSet { tagMap[it] }
val mangaState = docs.requireElementById("info").select("div:contains(Status) > p:last-child").text().let {
when (it) {
"Ongoing" -> MangaState.ONGOING
@ -142,7 +129,6 @@ internal class ManhwaFreak(context: MangaLoaderContext) :
}
}
val author = docs.requireElementById("info").select("div:contains(Author(s)) > p:last-child").text()
return manga.copy(
altTitle = docs.requireElementById("info").select("div:contains(Alternative) > p:last-child").text(),
description = docs.requireElementById("summary").html(),
@ -192,7 +178,6 @@ internal class ManhwaFreak(context: MangaLoaderContext) :
private fun parseRelativeDate(date: String): Long {
val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0
val cal = Calendar.getInstance()
return when {
WordSet(
"day",

@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("MANJANOON_EN", "Manjanoon", "en")
@MangaSourceParser("MANJANOON_EN", "Manjanoon.net", "en")
internal class Manjanoon(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.MANJANOON_EN, "manjanoon.net", pageSize = 20, searchPageSize = 10)

@ -11,7 +11,7 @@ import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Locale
@MangaSourceParser("MANHWA_FREAK_FR", "ManhwaFreak", "fr")
@MangaSourceParser("MANHWA_FREAK_FR", "ManhwaFreak.fr", "fr")
internal class ManhwaFreakFr(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.MANHWA_FREAK_FR, "manhwafreak.fr", pageSize = 0, searchPageSize = 10) {
@ -29,7 +29,6 @@ internal class ManhwaFreakFr(context: MangaLoaderContext) :
if (page > lastSearchPage) {
return emptyList()
}
val url = buildString {
append("https://")
append(domain)
@ -38,20 +37,17 @@ internal class ManhwaFreakFr(context: MangaLoaderContext) :
append("/?s=")
append(query.urlEncoded())
}
val docs = webClient.httpGet(url).parseHtml()
lastSearchPage = docs.selectFirst(".pagination .next")
?.previousElementSibling()
?.text()?.toIntOrNull() ?: 1
return parseMangaList(docs)
}
if (!tags.isNullOrEmpty()) {
if (page > 1) {
return emptyList()
}
val tag = tags.oneOrThrowIfMany()
val url = buildString {
append("https://")
@ -59,10 +55,8 @@ internal class ManhwaFreakFr(context: MangaLoaderContext) :
append("/genres/?genre=")
append(tag?.key.orEmpty())
}
return parseMangaList(webClient.httpGet(url).parseHtml())
}
if (page > 1) {
return emptyList()
}
@ -73,7 +67,6 @@ internal class ManhwaFreakFr(context: MangaLoaderContext) :
SortOrder.UPDATED -> ""
else -> ""
}
val url = buildString {
append("https://")
append(domain)
@ -81,13 +74,11 @@ internal class ManhwaFreakFr(context: MangaLoaderContext) :
append("/?order=")
append(sortQuery)
}
return parseMangaList(webClient.httpGet(url).parseHtml())
}
override suspend fun getTags(): Set<MangaTag> {
val doc = webClient.httpGet("https://$domain/genres/").parseHtml()
return doc.select("ul.genre-list li a").mapNotNullToSet { a ->
val href = a.attr("href").substringAfterLast("=")
MangaTag(
@ -129,11 +120,9 @@ internal class ManhwaFreakFr(context: MangaLoaderContext) :
}
override suspend fun parseInfo(docs: Document, manga: Manga, chapters: List<MangaChapter>): Manga {
val tagMap = getOrCreateTagMap()
val selectTag = docs.requireElementById("info").select("div:contains(Genre) > p:last-child").text().split(",")
val tags = selectTag.mapNotNullToSet { tagMap[it] }
val mangaState = docs.requireElementById("info").select("div:contains(Status) > p:last-child").text().let {
when (it) {
"Ongoing" -> MangaState.ONGOING
@ -142,7 +131,6 @@ internal class ManhwaFreakFr(context: MangaLoaderContext) :
}
}
val author = docs.requireElementById("info").select("div:contains(Author(s)) > p:last-child").text()
return manga.copy(
altTitle = docs.requireElementById("info").select("div:contains(Alternative) > p:last-child").text(),
description = docs.requireElementById("summary").html(),
@ -192,7 +180,6 @@ internal class ManhwaFreakFr(context: MangaLoaderContext) :
private fun parseRelativeDate(date: String): Long {
val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0
val cal = Calendar.getInstance()
return when {
WordSet(
"day",

@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("PANTHEONSCAN_FR", "PantheonScan", "fr")
@MangaSourceParser("PANTHEONSCAN_FR", "PantheonScan.fr", "fr")
internal class PantheonScanFr(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.PANTHEONSCAN_FR, "www.pantheon-scan.fr", pageSize = 40, searchPageSize = 10)

@ -12,7 +12,7 @@ import org.koitharu.kotatsu.parsers.util.parseHtml
import org.koitharu.kotatsu.parsers.util.urlEncoded
import java.util.Locale
@MangaSourceParser("COSMIC_SCANS", "CosmicScans", "id")
@MangaSourceParser("COSMIC_SCANS", "CosmicScans.id", "id")
internal class CosmicScans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaSource.COSMIC_SCANS, "cosmicscans.id", pageSize = 30, searchPageSize = 30) {

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.madara.pt
package org.koitharu.kotatsu.parsers.site.mangareader.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
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("HIKARISCAN", "HikariScan", "pt")
internal class HikariScan(context: MangaLoaderContext) :
MadaraParser(context, MangaSource.HIKARISCAN, "hikariscan.com.br", pageSize = 10) {
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
}
MangaReaderParser(context, MangaSource.HIKARISCAN, "hikariscan.org", pageSize = 20, searchPageSize = 10)

@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.site.otakusanctuary.OtakuSanctuaryParser
@MangaSourceParser("OTAKUSAN_EN", "OtakuSan", "en")
@MangaSourceParser("OTAKUSAN_EN", "OtakuSan-En", "en")
internal class OtakusanEn(context: MangaLoaderContext) :
OtakuSanctuaryParser(context, MangaSource.OTAKUSAN_EN, "otakusan.net") {
override val lang = "us"

@ -1,16 +1,13 @@
package org.koitharu.kotatsu.parsers.site.otakusanctuary.vi
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.otakusanctuary.OtakuSanctuaryParser
@MangaSourceParser("OTAKUSAN_VI", "OtakuSan", "vi")
@MangaSourceParser("OTAKUSAN_VI", "OtakuSan-Vi", "vi")
internal class OtakusanVi(context: MangaLoaderContext) :
OtakuSanctuaryParser(context, MangaSource.OTAKUSAN_VI, "otakusan.net") {
override val selectState = ".table-info tr:contains(Status) td"
override val lang = "vn"
}

@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.util.*
import java.text.SimpleDateFormat
import java.util.*
@MangaSourceParser("MANGAONLINE", "MangaOnline", "pt")
@MangaSourceParser("MANGAONLINE", "MangaOnline.biz", "pt")
class MangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.MANGAONLINE, 20) {
override val sortOrders: Set<SortOrder> = EnumSet.of(SortOrder.UPDATED)

@ -10,11 +10,10 @@ import org.koitharu.kotatsu.parsers.util.json.mapJSON
import java.text.SimpleDateFormat
import java.util.*
@MangaSourceParser("YUGENMANGAS", "YugenMangas", "pt")
@MangaSourceParser("YUGENMANGAS", "YugenMangas.org", "pt")
class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.YUGENMANGAS, 28) {
override val sortOrders: Set<SortOrder> = EnumSet.of(SortOrder.ALPHABETICAL, SortOrder.UPDATED)
override val configKeyDomain = ConfigKey.Domain("yugenmangas.org")
override suspend fun getListPage(

Loading…
Cancel
Save