add change requested and fix url
This commit is contained in:
@@ -28,7 +28,8 @@ internal class HentaiFox(context: MangaLoaderContext) : PagedMangaParser(context
|
||||
val tag = tags.oneOrThrowIfMany()
|
||||
|
||||
val url = buildString {
|
||||
append("https://$domain")
|
||||
append("https://")
|
||||
append(domain)
|
||||
if (!tags.isNullOrEmpty()) {
|
||||
append("/tag/")
|
||||
append(tag?.key.orEmpty())
|
||||
@@ -173,6 +174,6 @@ internal class HentaiFox(context: MangaLoaderContext) : PagedMangaParser(context
|
||||
override suspend fun getPageUrl(page: MangaPage): String {
|
||||
val doc = webClient.httpGet(page.url.toAbsoluteUrl(domain)).parseHtml()
|
||||
val root = doc.body()
|
||||
return root.requireElementById("gimg").attr("data-src") ?: doc.parseFailed("Page image not found")
|
||||
return root.requireElementById("gimg").attrAsAbsoluteUrl("data-src")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ internal class FlixScans(context: MangaLoaderContext) : PagedMangaParser(context
|
||||
MangaChapter(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
name = j.getString("slug").replace("-", " "),
|
||||
name = j.getString("slug").replace('-', ' '),
|
||||
number = i + 1,
|
||||
branch = null,
|
||||
uploadDate = dateFormat.tryParse(date),
|
||||
|
||||
@@ -26,9 +26,9 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
|
||||
sortOrder: SortOrder,
|
||||
): List<Manga> {
|
||||
val tag = tags.oneOrThrowIfMany()
|
||||
|
||||
val url = buildString {
|
||||
append("https://$domain")
|
||||
append("https://")
|
||||
append(domain)
|
||||
if (!tags.isNullOrEmpty()) {
|
||||
append("/series?genre=")
|
||||
append(tag?.key.orEmpty())
|
||||
@@ -57,7 +57,6 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
|
||||
}
|
||||
|
||||
val doc = webClient.httpGet(url).parseHtml()
|
||||
|
||||
return doc.select("div.listupd .bs .bsx").ifEmpty {
|
||||
doc.select("div.post-body .box")
|
||||
}.map { div ->
|
||||
@@ -97,7 +96,6 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
|
||||
override suspend fun getDetails(manga: Manga): Manga {
|
||||
val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
|
||||
val mangaUrl = manga.url.toAbsoluteUrl(domain)
|
||||
|
||||
val maxPageChapterSelect = doc.select(".pagination .page-item a")
|
||||
var maxPageChapter = 1
|
||||
if (!maxPageChapterSelect.isNullOrEmpty()) {
|
||||
@@ -108,7 +106,6 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return manga.copy(
|
||||
altTitle = null,
|
||||
state = when (doc.selectFirstOrThrow(".full-list-info:contains(الحالة:) a").text()) {
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.koitharu.kotatsu.parsers.model.*
|
||||
import org.koitharu.kotatsu.parsers.network.UserAgents
|
||||
import org.koitharu.kotatsu.parsers.util.*
|
||||
import org.koitharu.kotatsu.parsers.util.json.mapJSON
|
||||
import java.lang.IllegalArgumentException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
@@ -48,24 +49,19 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont
|
||||
tags: Set<MangaTag>?,
|
||||
sortOrder: SortOrder,
|
||||
): List<Manga> {
|
||||
|
||||
if (!query.isNullOrEmpty()) {
|
||||
return emptyList()
|
||||
throw IllegalArgumentException("Search is not supported by this source")
|
||||
}
|
||||
|
||||
if (sortOrder == SortOrder.ALPHABETICAL) {
|
||||
|
||||
if (page > 1) {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
val url = buildString {
|
||||
append("https://")
|
||||
append(domain)
|
||||
append("/api/get/catalog?page=0&filter=all")
|
||||
}
|
||||
val json = webClient.httpGet(url).parseJsonArray()
|
||||
|
||||
return json.mapJSON { j ->
|
||||
val urlManga = "https://$domain/api/get/card/${j.getString("slug")}"
|
||||
val img = "https://$domain/upload/min_cover/${j.getString("image")}"
|
||||
@@ -123,10 +119,8 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont
|
||||
|
||||
override suspend fun getDetails(manga: Manga): Manga {
|
||||
val json = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseJson()
|
||||
|
||||
val jsonManga = json.getJSONObject("manga")
|
||||
val chapters = json.getJSONObject("chapters").toString().split("{\"id\":").drop(1) // Possible improvement here
|
||||
|
||||
val slug = manga.url.substringAfterLast("/")
|
||||
val dateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE)
|
||||
return manga.copy(
|
||||
@@ -163,18 +157,14 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont
|
||||
private val simpleDateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE)
|
||||
private fun getDateString(time: Long): String = simpleDateFormat.format(time * 1000L)
|
||||
|
||||
|
||||
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
||||
val fullUrl = chapter.url.toAbsoluteUrl(domain)
|
||||
val jsonPage = webClient.httpGet(fullUrl).parseJson()
|
||||
|
||||
val idManga = jsonPage.getJSONObject("manga").getString("id")
|
||||
val slugChapter = chapter.url.substringAfterLast("/")
|
||||
|
||||
val pages = jsonPage.getJSONObject("chapter").getJSONArray("files").toString()
|
||||
.replace("[", "").replace("]", "").replace("\"", "")
|
||||
.split(",") // Possible improvement here
|
||||
|
||||
return pages.map { img ->
|
||||
val url = "https://$domain/upload/chapitre/$idManga/$slugChapter/$img"
|
||||
MangaPage(
|
||||
|
||||
@@ -31,7 +31,8 @@ internal class TmoManga(context: MangaLoaderContext) :
|
||||
): List<Manga> {
|
||||
val tag = tags.oneOrThrowIfMany()
|
||||
val url = buildString {
|
||||
append("https://$domain")
|
||||
append("https://")
|
||||
append(domain)
|
||||
when {
|
||||
!query.isNullOrEmpty() -> {
|
||||
append("/$listUrl")
|
||||
|
||||
@@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("BEASTSCANS", "Beast Scans", "ar")
|
||||
internal class BeastScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.BEASTSCANS, "beast-scans.com", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.BEASTSCANS, "beastscans.net", pageSize = 20, searchPageSize = 10)
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.koitharu.kotatsu.parsers.PagedMangaParser
|
||||
import org.koitharu.kotatsu.parsers.config.ConfigKey
|
||||
import org.koitharu.kotatsu.parsers.model.*
|
||||
import org.koitharu.kotatsu.parsers.util.*
|
||||
import java.lang.IllegalArgumentException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
@@ -24,7 +25,7 @@ class LerMangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, Ma
|
||||
sortOrder: SortOrder,
|
||||
): List<Manga> {
|
||||
if (!query.isNullOrEmpty()) {
|
||||
return emptyList() // Research revisits non-manga chapters
|
||||
throw IllegalArgumentException("Search is not supported by this source")
|
||||
}
|
||||
val tag = tags.oneOrThrowIfMany()
|
||||
val url = buildString {
|
||||
|
||||
@@ -24,14 +24,16 @@ internal class Truyenqq(context: MangaLoaderContext) : PagedMangaParser(context,
|
||||
val tagQuery = if (tags.isNullOrEmpty()) "" else tags.joinToString(separator = ",") { it.key }
|
||||
val url = if (!query.isNullOrEmpty()) {
|
||||
buildString {
|
||||
append("https://$domain")
|
||||
append("https://")
|
||||
append(domain)
|
||||
append("/tim-kiem/trang-$page.html")
|
||||
append("?q=")
|
||||
append(query.urlEncoded())
|
||||
}
|
||||
} else {
|
||||
buildString {
|
||||
append("https://$domain")
|
||||
append("https://")
|
||||
append(domain)
|
||||
append("/tim-kiem-nang-cao/trang-$page.html")
|
||||
append("?status=-1&country=0&sort=")
|
||||
when (sortOrder) {
|
||||
|
||||
Reference in New Issue
Block a user