diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt index f67529c1..29362779 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt @@ -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(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt index 96e1d0ce..5e5327e2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt @@ -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, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt index a25e2b7d..82d0a4a5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt @@ -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 { 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 ) } } - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Comicastle.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Comicastle.kt index 22213527..28311d8c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Comicastle.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Comicastle.kt @@ -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 { 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 ) } } - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt index 34286593..fb63265b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt @@ -52,11 +52,11 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont } val doc = webClient.httpGet(url).parseHtml() - //There are no images on the search page + // There are no images on the search page 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 = emptySet() @@ -169,4 +168,3 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont return pages } } - diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/KskMoe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/KskMoe.kt index 3d4dab91..3e290adb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/KskMoe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/KskMoe.kt @@ -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 { - 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, ) @@ -147,11 +145,10 @@ internal class KskMoe(context: MangaLoaderContext) : PagedMangaParser(context, M emptyList() }, - ) + ) } - - //For the moment the pages are in poor quality. + // For the moment the pages are in poor quality. override suspend fun getPages(chapter: MangaChapter): List { val fullUrl = chapter.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/LikeManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/LikeManga.kt index 264c1ab9..8c349aef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/LikeManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/LikeManga.kt @@ -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 { 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 -> diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt index 9ef23aa7..01d70193 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt @@ -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 { 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 ) } } - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt index 1e8bbbd3..35547add 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt @@ -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, ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt index e8594e0f..bf5b7838 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt @@ -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(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt index 91553f23..69913484 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt @@ -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(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt index 211f18e7..630bf2af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt @@ -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 { @@ -169,7 +164,7 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con ?: throw ParseException("Root not found", fullUrl) return root.select("img").map { img -> val url = img.attrAsRelativeUrlOrNull("data-src") ?: img.attrAsRelativeUrlOrNull("src") - ?: img.parseFailed("Image src not found") + ?: img.parseFailed("Image src not found") MangaPage( id = generateUid(url), url = url, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt index ba3250b9..1c0b310d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt @@ -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 @@ -41,7 +39,7 @@ internal abstract class HeanCmsAlt( tags: Set?, sortOrder: SortOrder, ): List { - //No search or tag + // No search or tag if (!query.isNullOrEmpty()) { return emptyList() } @@ -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) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/Bakai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/Bakai.kt index 4eea28c4..8971e26e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/Bakai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/Bakai.kt @@ -27,7 +27,6 @@ internal class Bakai(context: MangaLoaderContext) : PagedMangaParser(context, Ma tags: Set?, sortOrder: SortOrder, ): List { - 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(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt index 6f5c5aae..51fdcce3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt @@ -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(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/GoldenManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/GoldenManga.kt index 2b52dd49..1d7fd482 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/GoldenManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/GoldenManga.kt @@ -26,7 +26,6 @@ internal class GoldenManga(context: MangaLoaderContext) : PagedMangaParser(conte tags: Set?, sortOrder: SortOrder, ): List { - 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() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt index c1bc6fb1..3e0594a3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt @@ -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(),