Add 3 new sources
parent
4192ffdbfe
commit
1998ceac5a
@ -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("FBSQUADS", "Fbsquads", "pt")
|
||||
internal class Fbsquads(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.FBSQUADS, "fbsquads.com") {
|
||||
|
||||
override val tagPrefix = "manga-tag/"
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
override val isNsfwSource = 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
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
@MangaSourceParser("FINALSCANS", "Final Scans", "pt")
|
||||
internal class FinalScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.FINALSCANS, "finalscans.com") {
|
||||
|
||||
override val datePattern: String = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "PT")
|
||||
override val isNsfwSource = true
|
||||
}
|
||||
@ -0,0 +1,97 @@
|
||||
package org.koitharu.kotatsu.parsers.site.mangareader.ar
|
||||
|
||||
import org.jsoup.nodes.Document
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.config.ConfigKey
|
||||
import org.koitharu.kotatsu.parsers.model.Manga
|
||||
import org.koitharu.kotatsu.parsers.model.MangaChapter
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaState
|
||||
import org.koitharu.kotatsu.parsers.model.MangaTag
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl
|
||||
import org.koitharu.kotatsu.parsers.util.domain
|
||||
import org.koitharu.kotatsu.parsers.util.generateUid
|
||||
import org.koitharu.kotatsu.parsers.util.mapChapters
|
||||
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
||||
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
|
||||
import org.koitharu.kotatsu.parsers.util.toTitleCase
|
||||
import org.koitharu.kotatsu.parsers.util.tryParse
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("SWATEAM", "Swa Team", "ar")
|
||||
internal class SwaTeam(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.SWATEAM, pageSize = 42, searchPageSize = 39) {
|
||||
|
||||
override val configKeyDomain: ConfigKey.Domain
|
||||
get() = ConfigKey.Domain("swateam.me")
|
||||
|
||||
override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("dd-MM-yyyy", Locale("ar", "AR"))
|
||||
|
||||
|
||||
override suspend fun getDetails(manga: Manga): Manga {
|
||||
val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
|
||||
val chapters = docs.select("div.bixbox li").mapChapters(reversed = true) { index, element ->
|
||||
val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null
|
||||
MangaChapter(
|
||||
id = generateUid(url),
|
||||
name = element.selectFirst("a")?.text() ?: "Chapter ${index + 1}",
|
||||
url = url,
|
||||
number = index + 1,
|
||||
scanlator = null,
|
||||
uploadDate = chapterDateFormat.tryParse(element.selectFirst(".chapterdate")?.text()),
|
||||
branch = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
return parseInfo(docs, manga, chapters)
|
||||
}
|
||||
|
||||
override suspend fun parseInfo(docs: Document, manga: Manga, chapters: List<MangaChapter>): Manga {
|
||||
|
||||
/// set if is table
|
||||
|
||||
val states = docs.selectFirst("div.spe span:contains(Ongoing)")?.text()
|
||||
|
||||
val state = if (states.isNullOrEmpty()) {
|
||||
"Completed"
|
||||
} else {
|
||||
"Ongoing"
|
||||
}
|
||||
|
||||
val mangaState = state.let {
|
||||
when (it) {
|
||||
"Ongoing" -> MangaState.ONGOING
|
||||
|
||||
"Completed" -> MangaState.FINISHED
|
||||
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
val author = docs.selectFirst("span.author i")?.text()
|
||||
|
||||
val nsfw = docs.selectFirst(".restrictcontainer") != null
|
||||
|| docs.selectFirst(".info-right .alr") != null
|
||||
|| docs.selectFirst(".postbody .alr") != null
|
||||
|
||||
return manga.copy(
|
||||
description = docs.selectFirst("span.desc")?.html(),
|
||||
state = mangaState,
|
||||
author = author,
|
||||
isNsfw = manga.isNsfw || nsfw,
|
||||
tags = docs.select("div.spe a[rel*=tag]").mapNotNullToSet { a ->
|
||||
MangaTag(
|
||||
key = a.attr("href").removeSuffix("/").substringAfterLast('/'),
|
||||
title = a.text().toTitleCase(),
|
||||
source = source,
|
||||
)
|
||||
},
|
||||
chapters = chapters,
|
||||
)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue