add change requested and fix url

devi 3 years ago
parent 4120514256
commit b10fa0fd10

@ -28,7 +28,8 @@ internal class HentaiFox(context: MangaLoaderContext) : PagedMangaParser(context
val tag = tags.oneOrThrowIfMany() val tag = tags.oneOrThrowIfMany()
val url = buildString { val url = buildString {
append("https://$domain") append("https://")
append(domain)
if (!tags.isNullOrEmpty()) { if (!tags.isNullOrEmpty()) {
append("/tag/") append("/tag/")
append(tag?.key.orEmpty()) append(tag?.key.orEmpty())
@ -173,6 +174,6 @@ internal class HentaiFox(context: MangaLoaderContext) : PagedMangaParser(context
override suspend fun getPageUrl(page: MangaPage): String { override suspend fun getPageUrl(page: MangaPage): String {
val doc = webClient.httpGet(page.url.toAbsoluteUrl(domain)).parseHtml() val doc = webClient.httpGet(page.url.toAbsoluteUrl(domain)).parseHtml()
val root = doc.body() 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( MangaChapter(
id = generateUid(url), id = generateUid(url),
url = url, url = url,
name = j.getString("slug").replace("-", " "), name = j.getString("slug").replace('-', ' '),
number = i + 1, number = i + 1,
branch = null, branch = null,
uploadDate = dateFormat.tryParse(date), uploadDate = dateFormat.tryParse(date),

@ -26,9 +26,9 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
sortOrder: SortOrder, sortOrder: SortOrder,
): List<Manga> { ): List<Manga> {
val tag = tags.oneOrThrowIfMany() val tag = tags.oneOrThrowIfMany()
val url = buildString { val url = buildString {
append("https://$domain") append("https://")
append(domain)
if (!tags.isNullOrEmpty()) { if (!tags.isNullOrEmpty()) {
append("/series?genre=") append("/series?genre=")
append(tag?.key.orEmpty()) append(tag?.key.orEmpty())
@ -57,7 +57,6 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
} }
val doc = webClient.httpGet(url).parseHtml() val doc = webClient.httpGet(url).parseHtml()
return doc.select("div.listupd .bs .bsx").ifEmpty { return doc.select("div.listupd .bs .bsx").ifEmpty {
doc.select("div.post-body .box") doc.select("div.post-body .box")
}.map { div -> }.map { div ->
@ -97,7 +96,6 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
override suspend fun getDetails(manga: Manga): Manga { override suspend fun getDetails(manga: Manga): Manga {
val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
val mangaUrl = manga.url.toAbsoluteUrl(domain) val mangaUrl = manga.url.toAbsoluteUrl(domain)
val maxPageChapterSelect = doc.select(".pagination .page-item a") val maxPageChapterSelect = doc.select(".pagination .page-item a")
var maxPageChapter = 1 var maxPageChapter = 1
if (!maxPageChapterSelect.isNullOrEmpty()) { if (!maxPageChapterSelect.isNullOrEmpty()) {
@ -108,7 +106,6 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
} }
} }
} }
return manga.copy( return manga.copy(
altTitle = null, altTitle = null,
state = when (doc.selectFirstOrThrow(".full-list-info:contains(الحالة:) a").text()) { 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.network.UserAgents
import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.*
import org.koitharu.kotatsu.parsers.util.json.mapJSON import org.koitharu.kotatsu.parsers.util.json.mapJSON
import java.lang.IllegalArgumentException
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
@ -48,24 +49,19 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont
tags: Set<MangaTag>?, tags: Set<MangaTag>?,
sortOrder: SortOrder, sortOrder: SortOrder,
): List<Manga> { ): List<Manga> {
if (!query.isNullOrEmpty()) { if (!query.isNullOrEmpty()) {
return emptyList() throw IllegalArgumentException("Search is not supported by this source")
} }
if (sortOrder == SortOrder.ALPHABETICAL) { if (sortOrder == SortOrder.ALPHABETICAL) {
if (page > 1) { if (page > 1) {
return emptyList() return emptyList()
} }
val url = buildString { val url = buildString {
append("https://") append("https://")
append(domain) append(domain)
append("/api/get/catalog?page=0&filter=all") append("/api/get/catalog?page=0&filter=all")
} }
val json = webClient.httpGet(url).parseJsonArray() val json = webClient.httpGet(url).parseJsonArray()
return json.mapJSON { j -> return json.mapJSON { j ->
val urlManga = "https://$domain/api/get/card/${j.getString("slug")}" val urlManga = "https://$domain/api/get/card/${j.getString("slug")}"
val img = "https://$domain/upload/min_cover/${j.getString("image")}" 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 { override suspend fun getDetails(manga: Manga): Manga {
val json = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseJson() val json = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseJson()
val jsonManga = json.getJSONObject("manga") val jsonManga = json.getJSONObject("manga")
val chapters = json.getJSONObject("chapters").toString().split("{\"id\":").drop(1) // Possible improvement here val chapters = json.getJSONObject("chapters").toString().split("{\"id\":").drop(1) // Possible improvement here
val slug = manga.url.substringAfterLast("/") val slug = manga.url.substringAfterLast("/")
val dateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE) val dateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE)
return manga.copy( return manga.copy(
@ -163,18 +157,14 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont
private val simpleDateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE) private val simpleDateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE)
private fun getDateString(time: Long): String = simpleDateFormat.format(time * 1000L) private fun getDateString(time: Long): String = simpleDateFormat.format(time * 1000L)
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> { override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
val fullUrl = chapter.url.toAbsoluteUrl(domain) val fullUrl = chapter.url.toAbsoluteUrl(domain)
val jsonPage = webClient.httpGet(fullUrl).parseJson() val jsonPage = webClient.httpGet(fullUrl).parseJson()
val idManga = jsonPage.getJSONObject("manga").getString("id") val idManga = jsonPage.getJSONObject("manga").getString("id")
val slugChapter = chapter.url.substringAfterLast("/") val slugChapter = chapter.url.substringAfterLast("/")
val pages = jsonPage.getJSONObject("chapter").getJSONArray("files").toString() val pages = jsonPage.getJSONObject("chapter").getJSONArray("files").toString()
.replace("[", "").replace("]", "").replace("\"", "") .replace("[", "").replace("]", "").replace("\"", "")
.split(",") // Possible improvement here .split(",") // Possible improvement here
return pages.map { img -> return pages.map { img ->
val url = "https://$domain/upload/chapitre/$idManga/$slugChapter/$img" val url = "https://$domain/upload/chapitre/$idManga/$slugChapter/$img"
MangaPage( MangaPage(

@ -31,7 +31,8 @@ internal class TmoManga(context: MangaLoaderContext) :
): List<Manga> { ): List<Manga> {
val tag = tags.oneOrThrowIfMany() val tag = tags.oneOrThrowIfMany()
val url = buildString { val url = buildString {
append("https://$domain") append("https://")
append(domain)
when { when {
!query.isNullOrEmpty() -> { !query.isNullOrEmpty() -> {
append("/$listUrl") append("/$listUrl")

@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("BEASTSCANS", "Beast Scans", "ar") @MangaSourceParser("BEASTSCANS", "Beast Scans", "ar")
internal class BeastScans(context: MangaLoaderContext) : 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.config.ConfigKey
import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.model.*
import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.*
import java.lang.IllegalArgumentException
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
@ -24,7 +25,7 @@ class LerMangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, Ma
sortOrder: SortOrder, sortOrder: SortOrder,
): List<Manga> { ): List<Manga> {
if (!query.isNullOrEmpty()) { if (!query.isNullOrEmpty()) {
return emptyList() // Research revisits non-manga chapters throw IllegalArgumentException("Search is not supported by this source")
} }
val tag = tags.oneOrThrowIfMany() val tag = tags.oneOrThrowIfMany()
val url = buildString { 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 tagQuery = if (tags.isNullOrEmpty()) "" else tags.joinToString(separator = ",") { it.key }
val url = if (!query.isNullOrEmpty()) { val url = if (!query.isNullOrEmpty()) {
buildString { buildString {
append("https://$domain") append("https://")
append(domain)
append("/tim-kiem/trang-$page.html") append("/tim-kiem/trang-$page.html")
append("?q=") append("?q=")
append(query.urlEncoded()) append(query.urlEncoded())
} }
} else { } else {
buildString { buildString {
append("https://$domain") append("https://")
append(domain)
append("/tim-kiem-nang-cao/trang-$page.html") append("/tim-kiem-nang-cao/trang-$page.html")
append("?status=-1&country=0&sort=") append("?status=-1&country=0&sort=")
when (sortOrder) { when (sortOrder) {

Loading…
Cancel
Save