Add Comic1000, ThunderScans, WhaleManga, SussyScan, EDoujin, 3XYaoi, SussyScan #444
Url TeamXNovel, WestManga Remove AzureManga, BabelToon, FranxxMangas, LsHistoria, MangaGenki, Wowomik, MiraiScans, Nonbiri, PeaceScans, ReaperScansTr, TurkToon
parent
656f621711
commit
6ad08f13d4
@ -0,0 +1,10 @@
|
|||||||
|
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("WHALEMANGA", "WhaleManga", "en")
|
||||||
|
internal class WhaleManga(context: MangaLoaderContext) :
|
||||||
|
MadaraParser(context, MangaSource.WHALEMANGA, "whalemanga.com", 10)
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
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("SUSSYSCAN", "SussyScan", "pt")
|
||||||
|
internal class SussyScan(context: MangaLoaderContext) :
|
||||||
|
MadaraParser(context, MangaSource.SUSSYSCAN, "sussyscan.com") {
|
||||||
|
override val datePattern: String = "dd/MM/yyyy"
|
||||||
|
}
|
||||||
@ -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.ContentType
|
||||||
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||||
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
|
@MangaSourceParser("YAOIX3", "3XYaoi", "pt", ContentType.HENTAI)
|
||||||
|
internal class YaoiX3(context: MangaLoaderContext) :
|
||||||
|
MadaraParser(context, MangaSource.YAOIX3, "3xyaoi.com") {
|
||||||
|
override val datePattern = "dd/MM/yyyy"
|
||||||
|
override val listUrl = "bl/"
|
||||||
|
override val tagPrefix = "genero/"
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
package org.koitharu.kotatsu.parsers.site.manga18.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.manga18.Manga18Parser
|
||||||
|
|
||||||
|
@MangaSourceParser("COMIC1000", "Comic1000", "en")
|
||||||
|
internal class Comic1000(context: MangaLoaderContext) :
|
||||||
|
Manga18Parser(context, MangaSource.COMIC1000, "comic1000.com")
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
package org.koitharu.kotatsu.parsers.site.mangareader.ar
|
||||||
|
|
||||||
|
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("THUNDERSCANS", "ThunderScans", "ar")
|
||||||
|
internal class ThunderScans(context: MangaLoaderContext) :
|
||||||
|
MangaReaderParser(context, MangaSource.THUNDERSCANS, "thunderscans.com", pageSize = 32, searchPageSize = 10)
|
||||||
@ -1,12 +0,0 @@
|
|||||||
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("AZUREMANGA", "AzureManga", "en")
|
|
||||||
internal class AzureManga(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.AZUREMANGA, "azuremanga.com", pageSize = 20, searchPageSize = 10) {
|
|
||||||
override val datePattern = "MMM d, yyyy"
|
|
||||||
}
|
|
||||||
@ -1,54 +0,0 @@
|
|||||||
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.Manga
|
|
||||||
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.mangareader.MangaReaderParser
|
|
||||||
import org.koitharu.kotatsu.parsers.util.*
|
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
|
|
||||||
@MangaSourceParser("BABELTOON", "BabelToon", "en")
|
|
||||||
internal class BabelToon(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.BABELTOON, "babeltoon.com", pageSize = 20, searchPageSize = 10) {
|
|
||||||
|
|
||||||
override val listUrl = "/series"
|
|
||||||
override val selectMangaList = ".postbody .listupd .maindet .inmain"
|
|
||||||
|
|
||||||
override suspend fun getDetails(manga: Manga): Manga {
|
|
||||||
val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
|
|
||||||
val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
|
|
||||||
val chapters = docs.select(".eplister > ul > li").mapChapters(reversed = true) { index, element ->
|
|
||||||
val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null
|
|
||||||
MangaChapter(
|
|
||||||
id = generateUid(url),
|
|
||||||
name = element.selectFirst(".epl-num")?.text() ?: "Chapter ${index + 1}",
|
|
||||||
url = url,
|
|
||||||
number = index + 1,
|
|
||||||
scanlator = null,
|
|
||||||
uploadDate = dateFormat.tryParse(element.selectFirst(".epl-date")?.text()),
|
|
||||||
branch = null,
|
|
||||||
source = source,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
return parseInfo(docs, manga, chapters)
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
|
||||||
val chapterUrl = chapter.url.toAbsoluteUrl(domain)
|
|
||||||
val docs = webClient.httpGet(chapterUrl).parseHtml()
|
|
||||||
|
|
||||||
return docs.select("div.epcontent 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,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
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("PEACESCANS", "PeaceScans", "en")
|
|
||||||
internal class PeaceScans(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.PEACESCANS, "peacescans.com", pageSize = 14, searchPageSize = 10)
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.mangareader.id
|
|
||||||
|
|
||||||
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("MELOKOMIK", "Wowomik", "id")
|
|
||||||
internal class Melokomik(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.MELOKOMIK, "wowomik.com", pageSize = 20, searchPageSize = 10)
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.mangareader.id
|
|
||||||
|
|
||||||
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
|
|
||||||
import java.util.Locale
|
|
||||||
|
|
||||||
@MangaSourceParser("MIRAISCANS", "MiraiScans", "id")
|
|
||||||
internal class MiraiScans(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.MIRAISCANS, "miraiscans.com", pageSize = 20, searchPageSize = 10) {
|
|
||||||
override val sourceLocale: Locale = Locale.ENGLISH
|
|
||||||
override val listUrl = "/komik"
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.mangareader.id
|
|
||||||
|
|
||||||
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("NONBIRI", "Nonbiri", "id")
|
|
||||||
internal class Nonbiri(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.NONBIRI, "nonbiri.space", pageSize = 15, searchPageSize = 10) {
|
|
||||||
override val datePattern = "MMM d, yyyy"
|
|
||||||
}
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
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.ContentType
|
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
|
||||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
|
||||||
|
|
||||||
@MangaSourceParser("FRANXXMANGAS", "FranxxMangas", "pt", type = ContentType.HENTAI)
|
|
||||||
internal class FranxxMangas(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.FRANXXMANGAS, "franxxmangas.net", pageSize = 20, searchPageSize = 20) {
|
|
||||||
override val datePattern = "MMM d, yyyy"
|
|
||||||
override val isTagsExclusionSupported = false
|
|
||||||
}
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.mangareader.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.mangareader.MangaReaderParser
|
|
||||||
|
|
||||||
@MangaSourceParser("LSHISTORIA", "LsHistoria", "tr")
|
|
||||||
internal class Lshistoria(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.LSHISTORIA, "lshistoria.com", pageSize = 20, searchPageSize = 10)
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.mangareader.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.mangareader.MangaReaderParser
|
|
||||||
|
|
||||||
@MangaSourceParser("REAPERSCANSTR", "ReaperScansTr", "tr")
|
|
||||||
internal class ReaperScansTr(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.REAPERSCANSTR, "reaperscans.com.tr", pageSize = 20, searchPageSize = 10)
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.mangareader.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.mangareader.MangaReaderParser
|
|
||||||
|
|
||||||
@MangaSourceParser("TURKTOON", "TurkToon", "tr")
|
|
||||||
internal class TurktoonParser(context: MangaLoaderContext) :
|
|
||||||
MangaReaderParser(context, MangaSource.TURKTOON, "turktoon.com", pageSize = 20, searchPageSize = 10)
|
|
||||||
Loading…
Reference in New Issue