Improve madara

master
devi 2 years ago
parent fd7684866e
commit e0e9d25a4f

@ -98,106 +98,96 @@ internal abstract class MadaraParser(
@JvmField
protected val ongoing = scatterSetOf(
"مستمرة",
"En curso",
"En Curso",
"Ongoing",
"OnGoing",
"On going",
"On Going",
"Ativo",
"En Cours",
"En cours",
"En cours \uD83D\uDFE2",
"En cours de publication",
"Activo",
"Đang tiến hành",
"Em lançamento",
"en curso",
"ongoing",
"on going",
"ativo",
"en cours",
"en cours \uD83D\uDFE2",
"en cours de publication",
"activo",
"đang tiến hành",
"em lançamento",
"Em Lançamento",
"Онгоінг",
"Publishing",
"Devam Ediyor",
"Em Andamento",
"Em andamento",
"In Corso",
"Güncel",
"Berjalan",
"Продолжается",
"Updating",
"Lançando",
"In Arrivo",
"Emision",
"En emision",
"онгоінг",
"publishing",
"devam ediyor",
"em andamento",
"in corso",
"güncel",
"berjalan",
"продолжается",
"updating",
"lançando",
"in arrivo",
"emision",
"en emision",
"مستمر",
"Curso",
"En marcha",
"Publicandose",
"Publicando",
"curso",
"en marcha",
"publicandose",
"publicando",
"连载中",
"Devam ediyor",
)
@JvmField
protected val finished = scatterSetOf(
"Completed",
"Complete",
"Completo",
"Complété",
"Fini",
"Achevé",
"Terminé",
"Terminé ⚫",
"Tamamlandı",
"Đã hoàn thành",
"Hoàn Thành",
"completed",
"complete",
"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",
"завершено",
"завершен",
"finished",
"finalizado",
"completata",
"one-shot",
"bitti",
"tamat",
"completado",
"concluído",
"concluido",
"已完结",
"Bitmiş",
"End",
"bitmiş",
"end",
"منتهية",
)
@JvmField
protected val abandoned = scatterSetOf(
"Canceled",
"Cancelled",
"Cancelado",
"canceled",
"cancelled",
"cancelado",
"cancellato",
"Cancelados",
"Dropped",
"Discontinued",
"cancelados",
"dropped",
"discontinued",
"abandonné",
"Abandonné",
)
@JvmField
protected val paused = scatterSetOf(
"Hiatus",
"On Hold",
"Pausado",
"En espera",
"En pause",
"En attente",
"hiatus",
"on hold",
"pausado",
"en espera",
"en pause",
"en attente",
)
@JvmField
protected val upcoming = scatterSetOf(
"Upcoming",
"upcoming",
"لم تُنشَر بعد",
"Prochainement",
"À venir",
"prochainement",
"à venir",
)
// Change these values only if the site does not support manga listings via ajax
@ -326,23 +316,19 @@ internal abstract class MadaraParser(
// }
if (filter.tags.isNotEmpty()) {
var nTag = 0
payload["vars[tax_query][0][taxonomy]"] = "wp-manga-genre"
payload["vars[tax_query][0][field]"] = "slug"
filter.tags.forEach {
payload["vars[tax_query][0][terms][$nTag]"] = it.key
nTag++
filter.tags.forEachIndexed { i, it ->
payload["vars[tax_query][0][terms][$i]"] = it.key
}
payload["vars[tax_query][0][operator]"] = "IN"
}
if (filter.tagsExclude.isNotEmpty()) {
var ntagsExclude = 0
payload["vars[tax_query][1][taxonomy]"] = "wp-manga-genre"
payload["vars[tax_query][1][field]"] = "slug"
filter.tagsExclude.forEach {
payload["vars[tax_query][1][terms][$ntagsExclude]"] = it.key
ntagsExclude++
filter.tagsExclude.forEachIndexed { i, it ->
payload["vars[tax_query][1][terms][$i]"] = it.key
}
payload["vars[tax_query][1][operator]"] = "NOT IN"
}
@ -357,7 +343,7 @@ internal abstract class MadaraParser(
// Support author
// filter.author.let {
// payload["vars[tax_query][3][taxonomy]"] = "wp-manga-author"
// payload["vars[tax_query][3][field]"] = "slug"
// payload["vars[tax_query][3][field]"] = "name"
// payload["vars[tax_query][3][terms][0]"] = filter.author
// payload["vars[tax_query][3][operator]"] = "IN"
//}
@ -365,10 +351,10 @@ internal abstract class MadaraParser(
// Support artist
// filter.artist.let {
// payload["vars[tax_query][3][taxonomy]"] = "wp-manga-artist"
// payload["vars[tax_query][3][field]"] = "slug"
// payload["vars[tax_query][3][terms][0]"] = filter.artist
// payload["vars[tax_query][3][operator]"] = "IN"
// payload["vars[tax_query][4][taxonomy]"] = "wp-manga-artist"
// payload["vars[tax_query][4][field]"] = "name"
// payload["vars[tax_query][4][terms][0]"] = filter.artist
// payload["vars[tax_query][4][operator]"] = "IN"
//}
/// for add filter.year need to add || filter.year
@ -379,21 +365,25 @@ internal abstract class MadaraParser(
when (filter.sortOrder) {
SortOrder.POPULARITY -> {
payload["vars[meta_key]"] = "_wp_manga_views"
payload["vars[orderby]"] = "meta_value_num"
payload["vars[order]"] = "desc"
}
SortOrder.POPULARITY_ASC -> {
payload["vars[meta_key]"] = "_wp_manga_views"
payload["vars[orderby]"] = "meta_value_num"
payload["vars[order]"] = "asc"
}
SortOrder.UPDATED -> {
payload["vars[meta_key]"] = "_latest_update"
payload["vars[orderby]"] = "meta_value_num"
payload["vars[order]"] = "desc"
}
SortOrder.UPDATED_ASC -> {
payload["vars[meta_key]"] = "_latest_update"
payload["vars[orderby]"] = "meta_value_num"
payload["vars[order]"] = "asc"
}
@ -504,7 +494,7 @@ internal abstract class MadaraParser(
state = when (
summary?.selectFirst(".mg_status")
?.selectFirst(".summary-content")
?.ownText()
?.ownText()?.lowercase()
.orEmpty()
) {
in ongoing -> MangaState.ONGOING
@ -575,7 +565,7 @@ internal abstract class MadaraParser(
val stateDiv = doc.selectFirst(selectState)?.selectLast("div.summary-content")
val state = stateDiv?.let {
when (it.text()) {
when (it.text().lowercase()) {
in ongoing -> MangaState.ONGOING
in finished -> MangaState.FINISHED
in abandoned -> MangaState.ABANDONED
@ -811,76 +801,30 @@ internal abstract class MadaraParser(
}
}
// Parses dates in this form:
// 21 hours ago
private fun parseRelativeDate(date: String): Long {
val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0
val cal = Calendar.getInstance()
return when {
WordSet(
"hari",
"gün",
"jour",
"día",
"dia",
"day",
"days",
"d",
"день",
).anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis
WordSet(
"jam",
"saat",
"heure",
"hora",
"horas",
"hour",
"hours",
"h",
"ساعات",
"ساعة",
).anyWordIn(date) -> cal.apply {
add(
Calendar.HOUR,
-number,
)
}.timeInMillis
WordSet(
"menit",
"dakika",
"min",
"minute",
"minutes",
"minuto",
"mins",
"phút",
"минут",
"دقيقة",
).anyWordIn(date) -> cal.apply {
add(
Calendar.MINUTE,
-number,
)
}.timeInMillis
WordSet("detik", "segundo", "second", "ثوان")
.anyWordIn(date) -> cal.apply { add(Calendar.SECOND, -number) }.timeInMillis
WordSet("detik", "segundo", "second", "ثوان").anyWordIn(date) -> cal.apply {
add(
Calendar.SECOND,
-number,
)
}.timeInMillis
WordSet("menit", "dakika", "min", "minute", "minutes", "minuto", "mins", "phút", "минут", "دقيقة")
.anyWordIn(date) -> cal.apply { add(Calendar.MINUTE, -number) }.timeInMillis
WordSet("month", "months", "أشهر", "mois").anyWordIn(date) -> cal.apply {
add(
Calendar.MONTH,
-number,
)
}.timeInMillis
WordSet("jam", "saat", "heure", "hora", "horas", "hour", "hours", "h", "ساعات", "ساعة")
.anyWordIn(date) -> cal.apply { add(Calendar.HOUR, -number) }.timeInMillis
WordSet("hari", "gün", "jour", "día", "dia", "day", "days", "d", "день")
.anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis
WordSet("month", "months", "أشهر", "mois")
.anyWordIn(date) -> cal.apply { add(Calendar.MONTH, -number) }.timeInMillis
WordSet("year")
.anyWordIn(date) -> cal.apply { add(Calendar.YEAR, -number) }.timeInMillis
WordSet("year").anyWordIn(date) -> cal.apply { add(Calendar.YEAR, -number) }.timeInMillis
else -> 0
}
}

Loading…
Cancel
Save