Misc fixes

pull/259/head
Koitharu 3 years ago
parent f471a3513e
commit 8fef459346
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -61,7 +61,7 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
return doc.select("div.listupd .bs .bsx").ifEmpty {
doc.select("div.post-body .box")
}.map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.select(".tt, h3").text(),

@ -23,17 +23,17 @@ internal class CloneMangaParser(context: MangaLoaderContext) : MangaParser(conte
if (query != null || offset > 0) {
return emptyList()
}
val link = "https://${domain}/viewer_landing.php"
val link = "https://$domain/viewer_landing.php"
val doc = webClient.httpGet(link).parseHtml()
val mangas = doc.getElementsByClass("comicPreviewContainer")
return mangas.mapNotNull { item ->
val background = item.selectFirstOrThrow(".comicPreview").styleValueOrNull("background")
val href = item.selectFirst("a")?.attrAsAbsoluteUrl("href") ?: return@mapNotNull null
val href = item.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapNotNull null
val cover = background?.substring(background.indexOf("site/themes"), background.indexOf(")"))
Manga(
id = generateUid(href),
title = item.selectFirst("h3")?.text() ?: return@mapNotNull null,
coverUrl = "https://${domain}/$cover",
coverUrl = "https://$domain/$cover",
altTitle = null,
author = "Dan Kim",
rating = RATING_UNKNOWN,

@ -59,7 +59,7 @@ internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(contex
val doc = webClient.httpGet(url).parseHtml()
return doc.select("div.movie-list-index div.cartoon-box").map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("h3").text(),
@ -81,7 +81,6 @@ internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(contex
}
}
override suspend fun getTags(): Set<MangaTag> {
val doc = webClient.httpGet("https://$domain/popular-comic").parseHtml()
return doc.select("li.tag-item a").mapNotNullToSet { a ->
@ -146,5 +145,4 @@ internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(contex
)
}
}
}

@ -49,7 +49,6 @@ internal class Comicastle(context: MangaLoaderContext) : PagedMangaParser(contex
}
val postdata = "submit=Submit&search=" + query.urlEncoded()
webClient.httpPost(url, postdata).parseHtml()
} else if (!tags.isNullOrEmpty()) {
val url = buildString {
append("https://$domain/library/search/genre/")
@ -57,7 +56,6 @@ internal class Comicastle(context: MangaLoaderContext) : PagedMangaParser(contex
}
val postdata = "submit=Submit&search=" + tag?.key.orEmpty()
webClient.httpPost(url, postdata).parseHtml()
} else {
val url = buildString {
append("https://$domain")
@ -75,7 +73,7 @@ internal class Comicastle(context: MangaLoaderContext) : PagedMangaParser(contex
return doc.select("div.card-body div.match-height div.col-6")
.map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("p").text(),
@ -93,7 +91,6 @@ internal class Comicastle(context: MangaLoaderContext) : PagedMangaParser(contex
}
}
override suspend fun getTags(): Set<MangaTag> {
val doc = webClient.httpGet("https://$domain/library/").parseHtml()
return doc.requireElementById("sidebar").selectFirstOrThrow(".card-body").select("button")
@ -156,5 +153,4 @@ internal class Comicastle(context: MangaLoaderContext) : PagedMangaParser(contex
)
}
}
}

@ -56,7 +56,7 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont
if (!query.isNullOrEmpty()) {
return doc.select("dl.chapter-list dd")
.map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("a").text(),
@ -81,7 +81,7 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont
} else {
return doc.select("li.span2")
.map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("div.caption").text(),
@ -98,7 +98,6 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont
)
}
}
}
override suspend fun getTags(): Set<MangaTag> = emptySet()
@ -169,4 +168,3 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont
return pages
}
}

@ -64,7 +64,7 @@ internal class KskMoe(context: MangaLoaderContext) : PagedMangaParser(context, M
return emptyList()
}
return doc.requireElementById("galleries").select("article").map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectLastOrThrow("h3 span").text(),
@ -72,7 +72,7 @@ internal class KskMoe(context: MangaLoaderContext) : PagedMangaParser(context, M
url = href,
publicUrl = href.toAbsoluteUrl(domain),
rating = RATING_UNKNOWN,
isNsfw = false,
isNsfw = true,
coverUrl = div.selectFirstOrThrow("img").src()?.toAbsoluteUrl(domain).orEmpty(),
tags = div.select("footer span").mapNotNullToSet { span ->
MangaTag(
@ -97,25 +97,23 @@ internal class KskMoe(context: MangaLoaderContext) : PagedMangaParser(context, M
}
private suspend fun getTags(page: Int): Set<MangaTag> {
val root = if (page == 1) {
webClient.httpGet("https://${domain}/tags").parseHtml().body()
.getElementById("tags")
val url = if (page == 1) {
"https://$domain/tags"
} else {
webClient.httpGet("https://${domain}/tags/page/$page").parseHtml().body()
.getElementById("tags")
"https://$domain/tags/page/$page"
}
val root = webClient.httpGet(url).parseHtml().body().getElementById("tags")
return root?.parseTags().orEmpty()
}
private fun Element.parseTags() = select("section.tags div a").mapToSet { a ->
MangaTag(
key = a.attr("href").substringAfter("/tags/"),
key = a.attr("href").substringAfterLast("/tags/"),
title = a.selectFirstOrThrow("span").text(),
source = source,
)
}
private val date = SimpleDateFormat("dd.MM.yyyy hh:mm 'UTC'", Locale.US)
override suspend fun getDetails(manga: Manga): Manga {
val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
@ -123,7 +121,7 @@ internal class KskMoe(context: MangaLoaderContext) : PagedMangaParser(context, M
return manga.copy(
tags = doc.requireElementById("metadata").select("main div:contains(Tag) a").mapNotNullToSet { a ->
MangaTag(
key = a.attr("href").substringAfter("/tags/"),
key = a.attr("href").substringAfterLast("/tags/"),
title = a.selectFirstOrThrow("span").text(),
source = source,
)
@ -150,7 +148,6 @@ internal class KskMoe(context: MangaLoaderContext) : PagedMangaParser(context, M
)
}
// For the moment the pages are in poor quality.
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
val fullUrl = chapter.url.toAbsoluteUrl(domain)

@ -58,7 +58,7 @@ internal class LikeManga(context: MangaLoaderContext) : PagedMangaParser(context
}
val doc = webClient.httpGet(url).parseHtml()
return doc.select("div.card-body div.video").map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("p.title-manga").text(),
@ -134,7 +134,9 @@ internal class LikeManga(context: MangaLoaderContext) : PagedMangaParser(context
private suspend fun loadChapters(mangaId: Int, page: Int): List<MangaChapter> {
val json =
webClient.httpGet("https://$domain/?act=ajax&code=load_list_chapter&manga_id=$mangaId&page_num=$page&chap_id=0&keyword=")
webClient.httpGet(
"https://$domain/?act=ajax&code=load_list_chapter&manga_id=$mangaId&page_num=$page&chap_id=0&keyword=",
)
.parseJson().getString("list_chap")
val chapters = json.split("wp-manga-chapter").drop(1)
return chapters.map { chapter ->

@ -59,7 +59,7 @@ internal class MangaGeko(context: MangaLoaderContext) : PagedMangaParser(context
val doc = webClient.httpGet(url).parseHtml()
return doc.select("li.novel-item").map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("h4").text(),
@ -77,7 +77,6 @@ internal class MangaGeko(context: MangaLoaderContext) : PagedMangaParser(context
}
}
override suspend fun getTags(): Set<MangaTag> {
val doc = webClient.httpGet("https://$domain/browse-comics/").parseHtml()
return doc.select("label.checkbox-inline").mapNotNullToSet { label ->
@ -143,5 +142,4 @@ internal class MangaGeko(context: MangaLoaderContext) : PagedMangaParser(context
)
}
}
}

@ -23,7 +23,7 @@ class Manhwa18Parser(context: MangaLoaderContext) :
override suspend fun getFavicons(): Favicons {
return Favicons(
listOf(
Favicon("https://${domain}/uploads/logos/logo-mini.png", 92, null),
Favicon("https://$domain/uploads/logos/logo-mini.png", 92, null),
),
domain,
)

@ -28,7 +28,7 @@ internal class Po2Scans(context: MangaLoaderContext) : MangaParser(context, Mang
}
val doc = webClient.httpGet(url).parseHtml()
return doc.select(".series-list").map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("h2").text(),

@ -55,7 +55,7 @@ internal class LireScan(context: MangaLoaderContext) : PagedMangaParser(context,
}
return doc.select("div.sect__content.grid-items div.item-poster").map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.select(".item-poster__title").text(),

@ -41,7 +41,6 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con
append(page.toString())
append("/?s=")
append(query.urlEncoded())
}
!tags.isNullOrEmpty() -> {
@ -55,7 +54,6 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con
}
else -> {
if (sortOrder == SortOrder.ALPHABETICAL) {
append("/manga/")
append("/page/")
@ -65,7 +63,6 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con
if (sortOrder == SortOrder.UPDATED) {
append("")
}
}
}
}
@ -74,7 +71,7 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con
val root = doc.requireElementById("dernierschapitres")
return root.select("div.colonne")
.map { article ->
val href = article.selectFirstOrThrow("a.index-top4-a").attrAsAbsoluteUrl("href")
val href = article.selectFirstOrThrow("a.index-top4-a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = article.select(".carteinfos a").text(),
@ -94,7 +91,7 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con
val root = doc.requireElementById("main")
return root.select("article.post-outer")
.map { article ->
val href = article.selectFirstOrThrow("a.thumb-link").attrAsAbsoluteUrl("href")
val href = article.selectFirstOrThrow("a.thumb-link").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = article.select(".index-post-header a").text(),
@ -111,8 +108,6 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con
)
}
}
}
override suspend fun getDetails(manga: Manga): Manga {

@ -1,6 +1,5 @@
package org.koitharu.kotatsu.parsers.site.heancmsalt
import kotlinx.coroutines.coroutineScope
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.PagedMangaParser
import org.koitharu.kotatsu.parsers.config.ConfigKey
@ -26,7 +25,6 @@ internal abstract class HeanCmsAlt(
protected open val listUrl = "/comics"
protected open val datePattern = "MMMM d, yyyy"
init {
paginator.firstPage = 1
searchPaginator.firstPage = 1
@ -82,11 +80,12 @@ internal abstract class HeanCmsAlt(
protected open val selectChapter = "ul.MuiList-root a"
protected open val selectChapterTitle = "div.MuiListItemText-multiline span"
protected open val selectChapterDate = "div.MuiListItemText-multiline p"
override suspend fun getDetails(manga: Manga): Manga = coroutineScope {
override suspend fun getDetails(manga: Manga): Manga {
val fullUrl = manga.url.toAbsoluteUrl(domain)
val doc = webClient.httpGet(fullUrl).parseHtml()
val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
manga.copy(
return manga.copy(
altTitle = doc.selectFirst(selectAlt)?.text().orEmpty(),
description = doc.selectFirstOrThrow(selectDesc).html(),
chapters = doc.select(selectChapter)

@ -27,7 +27,6 @@ internal class Bakai(context: MangaLoaderContext) : PagedMangaParser(context, Ma
tags: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
val url = buildString {
append("https://")
append(domain)
@ -45,7 +44,6 @@ internal class Bakai(context: MangaLoaderContext) : PagedMangaParser(context, Ma
}
append("&quick=1&type=cms_records1&page=")
append(page.toString())
} else {
append("/hentai/")
append("page/")
@ -54,10 +52,9 @@ internal class Bakai(context: MangaLoaderContext) : PagedMangaParser(context, Ma
}
val doc = webClient.httpGet(url).parseHtml()
if (!tags.isNullOrEmpty() or !query.isNullOrEmpty()) {
return doc.select("ol.ipsStream li.ipsStreamItem")
.map { div ->
val href = div.selectFirstOrThrow("div.ipsStreamItem_snippet a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("div.ipsStreamItem_snippet a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("h2.ipsStreamItem_title").text(),

@ -42,7 +42,6 @@ internal class BrMangas(context: MangaLoaderContext) : PagedMangaParser(context,
}
append("/?s=")
append(query.urlEncoded())
} else {
when (sortOrder) {
SortOrder.POPULARITY -> append("/")
@ -64,7 +63,7 @@ internal class BrMangas(context: MangaLoaderContext) : PagedMangaParser(context,
}
return item.map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("h2").text(),

@ -26,7 +26,6 @@ internal class GoldenManga(context: MangaLoaderContext) : PagedMangaParser(conte
tags: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
val url = buildString {
append("https://")
append(domain)
@ -48,7 +47,7 @@ internal class GoldenManga(context: MangaLoaderContext) : PagedMangaParser(conte
val doc = webClient.httpGet(url).parseHtml()
return doc.select("section.row div.mangas")
.map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("a h3").text(),
@ -102,7 +101,6 @@ internal class GoldenManga(context: MangaLoaderContext) : PagedMangaParser(conte
author = root.select("h5.cg_color a")[1].text(),
description = root.getElementById("manga_capitulo_descricao")?.html(),
chapters = root.requireElementById("capitulos").select("li")
.mapChapters(reversed = true) { i, div ->
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
val dateText = div.selectFirstOrThrow("div.col-sm-5 span").text()

@ -28,7 +28,7 @@ internal class SadScans(context: MangaLoaderContext) : MangaParser(context, Mang
}
val doc = webClient.httpGet(url).parseHtml()
return doc.select(".series-list").map { div ->
val href = div.selectFirstOrThrow("a").attrAsAbsoluteUrl("href")
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
title = div.selectFirstOrThrow("h2").text(),

Loading…
Cancel
Save