diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt index 5574eccd..bf815d97 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt @@ -91,7 +91,7 @@ abstract class MangaParser @InternalParsersApi constructor(val source: MangaSour /** * Fetch direct link to the page image. */ - open suspend fun getPageUrl(page: MangaPage): String = page.url.withDomain() + open suspend fun getPageUrl(page: MangaPage): String = page.url.toAbsoluteUrl(getDomain()) /** * Fetch available tags (genres) for source diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/AnibelParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/AnibelParser.kt index 1cda9941..5ff44bd1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/AnibelParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/AnibelParser.kt @@ -11,6 +11,7 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.json.mapJSON import org.koitharu.kotatsu.parsers.util.json.mapJSONIndexed import org.koitharu.kotatsu.parsers.util.json.stringIterator +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl import java.util.* @MangaSourceParser("ANIBEL", "Anibel", "be") @@ -71,7 +72,7 @@ internal class AnibelParser(override val context: MangaLoaderContext) : MangaPar id = generateUid(mediaId), title = title.getString("be"), coverUrl = jo.getString("poster").removePrefix("/cdn") - .withDomain("cdn") + "?width=200&height=280", + .toAbsoluteUrl(getDomain(), "cdn") + "?width=200&height=280", altTitle = title.getString("alt").takeUnless(String::isEmpty), author = null, isNsfw = false, @@ -111,7 +112,7 @@ internal class AnibelParser(override val context: MangaLoaderContext) : MangaPar ).getJSONObject("media") val title = details.getJSONObject("title") val poster = details.getString("poster").removePrefix("/cdn") - .withDomain("cdn") + .toAbsoluteUrl(getDomain(), "cdn") val chapters = apiCall( """ chapters(mediaId: "${details.getString("mediaId")}") { @@ -212,7 +213,7 @@ internal class AnibelParser(override val context: MangaLoaderContext) : MangaPar id = generateUid(mediaId), title = title.getString("be"), coverUrl = jo.getString("poster").removePrefix("/cdn") - .withDomain("cdn") + "?width=200&height=280", + .toAbsoluteUrl(getDomain(), "cdn") + "?width=200&height=280", altTitle = title.getString("en").takeUnless(String::isEmpty), author = null, isNsfw = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BatoToParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BatoToParser.kt index 46c50ef9..32536008 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BatoToParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BatoToParser.kt @@ -69,7 +69,7 @@ internal class BatoToParser(override val context: MangaLoaderContext) : MangaPar } override suspend fun getDetails(manga: Manga): Manga { - val root = context.httpGet(manga.url.withDomain()).parseHtml() + val root = context.httpGet(manga.url.toAbsoluteUrl(getDomain())).parseHtml() .getElementById("mainer") ?: parseFailed("Cannot find root") val details = root.selectFirst(".detail-set") ?: parseFailed("Cannot find detail-set") val attrs = details.selectFirst(".attr-main")?.select(".attr-item")?.associate { @@ -100,7 +100,7 @@ internal class BatoToParser(override val context: MangaLoaderContext) : MangaPar } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.withDomain() + val fullUrl = chapter.url.toAbsoluteUrl(getDomain()) val scripts = context.httpGet(fullUrl).parseHtml().select("script") for (script in scripts) { val scriptSrc = script.html() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ChanParser.kt index 2296f5de..fff379f7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ChanParser.kt @@ -73,7 +73,7 @@ internal abstract class ChanParser(source: MangaSource) : MangaParser(source) { } override suspend fun getDetails(manga: Manga): Manga { - val doc = context.httpGet(manga.url.withDomain()).parseHtml() + val doc = context.httpGet(manga.url.toAbsoluteUrl(getDomain())).parseHtml() val root = doc.body().getElementById("dle-content") ?: parseFailed("Cannot find root") val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US) @@ -98,7 +98,7 @@ internal abstract class ChanParser(source: MangaSource) : MangaParser(source) { } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.withDomain() + val fullUrl = chapter.url.toAbsoluteUrl(getDomain()) val doc = context.httpGet(fullUrl).parseHtml() val scripts = doc.select("script") for (script in scripts) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/DesuMeParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/DesuMeParser.kt index cb4fe36f..5b759883 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/DesuMeParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/DesuMeParser.kt @@ -81,7 +81,7 @@ internal class DesuMeParser(override val context: MangaLoaderContext) : MangaPar } override suspend fun getDetails(manga: Manga): Manga { - val url = manga.url.withDomain() + val url = manga.url.toAbsoluteUrl(getDomain()) val json = context.httpGet(url).parseJson().getJSONObject("response") ?: throw ParseException("Invalid response") val baseChapterUrl = manga.url + "/chapter/" @@ -116,7 +116,7 @@ internal class DesuMeParser(override val context: MangaLoaderContext) : MangaPar } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.withDomain() + val fullUrl = chapter.url.toAbsoluteUrl(getDomain()) val json = context.httpGet(fullUrl) .parseJson() .getJSONObject("response") ?: throw ParseException("Invalid response") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt index 89186372..68067933 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt @@ -134,7 +134,7 @@ internal class ExHentaiParser( } override suspend fun getDetails(manga: Manga): Manga { - val doc = context.httpGet(manga.url.withDomain()).parseHtml() + val doc = context.httpGet(manga.url.toAbsoluteUrl(getDomain())).parseHtml() val root = doc.body().selectFirst("div.gm") ?: parseFailed("Cannot find root") val cover = root.getElementById("gd1")?.children()?.first() val title = root.getElementById("gd2") @@ -178,7 +178,7 @@ internal class ExHentaiParser( } override suspend fun getPages(chapter: MangaChapter): List { - val doc = context.httpGet(chapter.url.withDomain()).parseHtml() + val doc = context.httpGet(chapter.url.toAbsoluteUrl(getDomain())).parseHtml() val root = doc.body().getElementById("gdt") ?: parseFailed("Root not found") return root.select("a").map { a -> val url = a.attrAsRelativeUrl("href") @@ -193,7 +193,7 @@ internal class ExHentaiParser( } override suspend fun getPageUrl(page: MangaPage): String { - val doc = context.httpGet(page.url.withDomain()).parseHtml() + val doc = context.httpGet(page.url.toAbsoluteUrl(getDomain())).parseHtml() return doc.body().getElementById("img")?.absUrl("src") ?: parseFailed("Image not found") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/GroupleParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/GroupleParser.kt index 10022052..8f771b25 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/GroupleParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/GroupleParser.kt @@ -121,7 +121,7 @@ internal abstract class GroupleParser(source: MangaSource, userAgent: String) : } override suspend fun getDetails(manga: Manga): Manga { - val doc = context.httpGet(manga.url.withDomain(), headers).parseHtml() + val doc = context.httpGet(manga.url.toAbsoluteUrl(getDomain()), headers).parseHtml() val root = doc.body().getElementById("mangaBox")?.selectFirst("div.leftContent") ?: parseFailed("Cannot find root") val dateFormat = SimpleDateFormat("dd.MM.yy", Locale.US) @@ -166,7 +166,7 @@ internal abstract class GroupleParser(source: MangaSource, userAgent: String) : } override suspend fun getPages(chapter: MangaChapter): List { - val doc = context.httpGet(chapter.url.withDomain() + "?mtr=1", headers).parseHtml() + val doc = context.httpGet(chapter.url.toAbsoluteUrl(getDomain()) + "?mtr=1", headers).parseHtml() val scripts = doc.select("script") for (script in scripts) { val data = script.html() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/HenChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/HenChanParser.kt index b2cac4c8..629c14fe 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/HenChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/HenChanParser.kt @@ -7,6 +7,7 @@ import org.koitharu.kotatsu.parsers.exception.ParseException import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl import org.koitharu.kotatsu.parsers.util.toTitleCase @MangaSourceParser("HENCHAN", "Хентай-тян", "ru") @@ -32,7 +33,7 @@ internal class HenChanParser(override val context: MangaLoaderContext) : ChanPar } override suspend fun getDetails(manga: Manga): Manga { - val doc = context.httpGet(manga.url.withDomain()).parseHtml() + val doc = context.httpGet(manga.url.toAbsoluteUrl(getDomain())).parseHtml() val root = doc.body().getElementById("dle-content") ?: throw ParseException("Cannot find root") val readLink = manga.url.replace("manga", "online") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MadaraParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MadaraParser.kt index 40074eb0..4afc5ee0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MadaraParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MadaraParser.kt @@ -115,7 +115,7 @@ internal abstract class MadaraParser( } override suspend fun getDetails(manga: Manga): Manga { - val fullUrl = manga.url.withDomain() + val fullUrl = manga.url.toAbsoluteUrl(getDomain()) val doc = context.httpGet(fullUrl).parseHtml() val root = doc.body().selectFirst("div.profile-manga") ?.selectFirst("div.summary_content") @@ -160,7 +160,7 @@ internal abstract class MadaraParser( } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.withDomain() + val fullUrl = chapter.url.toAbsoluteUrl(getDomain()) val doc = context.httpGet(fullUrl).parseHtml() val root = doc.body().selectFirst("div.main-col-inner") ?.selectFirst("div.reading-content") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaInUaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaInUaParser.kt index 65e00da7..caf50c45 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaInUaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaInUaParser.kt @@ -35,11 +35,11 @@ class MangaInUaParser(override val context: MangaLoaderContext) : MangaParser(Ma "&full_search=1" + "&story=$query" + "&titleonly=3" - ).withDomain() - tags.isNullOrEmpty() -> "/mangas/page/$page".withDomain() + ).toAbsoluteUrl(getDomain()) + tags.isNullOrEmpty() -> "/mangas/page/$page".toAbsoluteUrl(getDomain()) tags.size == 1 -> "${tags.first().key}/page/$page" tags.size > 1 -> throw IllegalArgumentException("This source supports only 1 genre") - else -> "/mangas/page/$page".withDomain() + else -> "/mangas/page/$page".toAbsoluteUrl(getDomain()) } val doc = context.httpGet(url).parseHtml() val container = doc.body().getElementById("dle-content") ?: parseFailed("Container not found") @@ -77,7 +77,7 @@ class MangaInUaParser(override val context: MangaLoaderContext) : MangaParser(Ma } override suspend fun getDetails(manga: Manga): Manga { - val doc = context.httpGet(manga.url.withDomain()).parseHtml() + val doc = context.httpGet(manga.url.toAbsoluteUrl(getDomain())).parseHtml() val root = doc.body().getElementById("dle-content") ?: parseFailed("Cannot find root") val dateFormat = SimpleDateFormat("dd.MM.yyyy", Locale.US) @@ -118,7 +118,7 @@ class MangaInUaParser(override val context: MangaLoaderContext) : MangaParser(Ma } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.withDomain() + val fullUrl = chapter.url.toAbsoluteUrl(getDomain()) val doc = context.httpGet(fullUrl).parseHtml() val root = doc.body().getElementById("comics")?.selectFirst("ul.xfieldimagegallery") ?: parseFailed("Root not found") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaLibParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaLibParser.kt index db4f267c..cd98e513 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaLibParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaLibParser.kt @@ -84,7 +84,7 @@ internal open class MangaLibParser( } override suspend fun getDetails(manga: Manga): Manga { - val fullUrl = manga.url.withDomain() + val fullUrl = manga.url.toAbsoluteUrl(getDomain()) val doc = context.httpGet("$fullUrl?section=info").parseHtml() val root = doc.body().getElementById("main-page") ?: throw ParseException("Root not found") val title = root.selectFirst("div.media-header__wrap")?.children() @@ -165,7 +165,7 @@ internal open class MangaLibParser( } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.withDomain() + val fullUrl = chapter.url.toAbsoluteUrl(getDomain()) val doc = context.httpGet(fullUrl).parseHtml() if (doc.location().endsWith("/register")) { throw AuthRequiredException(source) @@ -279,8 +279,8 @@ internal open class MangaLibParser( state = null, isNsfw = false, source = source, - coverUrl = covers.getString("thumbnail").withDomain(), - largeCoverUrl = covers.getString("default").withDomain(), + coverUrl = covers.getString("thumbnail").toAbsoluteUrl(domain), + largeCoverUrl = covers.getString("default").toAbsoluteUrl(domain), ) } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaOwlParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaOwlParser.kt index fd942e43..70bfc7fd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaOwlParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaOwlParser.kt @@ -70,7 +70,7 @@ internal class MangaOwlParser(override val context: MangaLoaderContext) : MangaP isNsfw = false, tags = emptySet(), state = null, - publicUrl = href.withDomain(), + publicUrl = href.toAbsoluteUrl(getDomain()), source = source, ) } @@ -130,7 +130,7 @@ internal class MangaOwlParser(override val context: MangaLoaderContext) : MangaP } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.withDomain() + val fullUrl = chapter.url.toAbsoluteUrl(getDomain()) val doc = context.httpGet(fullUrl).parseHtml() val root = doc.body().select("div.item img.owl-lazy") ?: throw ParseException("Root not found") return root.map { div -> diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaTownParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaTownParser.kt index f03247f8..ad840e88 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaTownParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaTownParser.kt @@ -43,12 +43,12 @@ internal class MangaTownParser(override val context: MangaLoaderContext) : Manga if (offset != 0) { return emptyList() } - "/search?name=${query.urlEncoded()}".withDomain() + "/search?name=${query.urlEncoded()}".toAbsoluteUrl(getDomain()) } - tags.isNullOrEmpty() -> "/directory/$page.htm$sortKey".withDomain() - tags.size == 1 -> "/directory/${tags.first().key}/$page.htm$sortKey".withDomain() + tags.isNullOrEmpty() -> "/directory/$page.htm$sortKey".toAbsoluteUrl(getDomain()) + tags.size == 1 -> "/directory/${tags.first().key}/$page.htm$sortKey".toAbsoluteUrl(getDomain()) else -> tags.joinToString( - prefix = "/search?page=$page".withDomain(), + prefix = "/search?page=$page".toAbsoluteUrl(getDomain()), ) { tag -> "&genres[${tag.key}]=1" } @@ -94,7 +94,7 @@ internal class MangaTownParser(override val context: MangaLoaderContext) : Manga } override suspend fun getDetails(manga: Manga): Manga { - val doc = context.httpGet(manga.url.withDomain()).parseHtml() + val doc = context.httpGet(manga.url.toAbsoluteUrl(getDomain())).parseHtml() val root = doc.body().selectFirst("section.main") ?.selectFirst("div.article_content") ?: throw ParseException("Cannot find root") val info = root.selectFirst("div.detail_info")?.selectFirst("ul") @@ -136,7 +136,7 @@ internal class MangaTownParser(override val context: MangaLoaderContext) : Manga } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.withDomain() + val fullUrl = chapter.url.toAbsoluteUrl(getDomain()) val doc = context.httpGet(fullUrl).parseHtml() val root = doc.body().selectFirst("div.page_select") ?: throw ParseException("Cannot find root") @@ -156,12 +156,12 @@ internal class MangaTownParser(override val context: MangaLoaderContext) : Manga } override suspend fun getPageUrl(page: MangaPage): String { - val doc = context.httpGet(page.url.withDomain()).parseHtml() + val doc = context.httpGet(page.url.toAbsoluteUrl(getDomain())).parseHtml() return doc.getElementById("image")?.absUrl("src") ?: parseFailed("Image not found") } override suspend fun getTags(): Set { - val doc = context.httpGet("/directory/".withDomain()).parseHtml() + val doc = context.httpGet("/directory/".toAbsoluteUrl(getDomain())).parseHtml() val root = doc.body().selectFirst("aside.right") ?.getElementsContainingOwnText("Genres") ?.first() @@ -190,7 +190,7 @@ internal class MangaTownParser(override val context: MangaLoaderContext) : Manga } private suspend fun bypassLicensedChapters(manga: Manga): List { - val doc = context.httpGet(manga.url.withDomain("m")).parseHtml() + val doc = context.httpGet(manga.url.toAbsoluteUrl(getDomain(), "m")).parseHtml() val list = doc.body().selectFirst("ul.detail-ch-list") ?: return emptyList() val dateFormat = SimpleDateFormat("MMM dd,yyyy", Locale.US) return list.select("li").asReversed().mapIndexedNotNull { i, li -> diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NineMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NineMangaParser.kt index 9919d546..3b67d0d0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NineMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NineMangaParser.kt @@ -94,7 +94,7 @@ internal abstract class NineMangaParser( override suspend fun getDetails(manga: Manga): Manga { val doc = context.httpGet( - manga.url.withDomain() + "?waring=1", + manga.url.toAbsoluteUrl(getDomain()) + "?waring=1", headers, ).parseHtml() val root = doc.body().selectFirst("div.manga") @@ -134,13 +134,13 @@ internal abstract class NineMangaParser( } override suspend fun getPages(chapter: MangaChapter): List { - val doc = context.httpGet(chapter.url.withDomain(), headers).parseHtml() + val doc = context.httpGet(chapter.url.toAbsoluteUrl(getDomain()), headers).parseHtml() return doc.body().getElementById("page")?.select("option")?.map { option -> val url = option.attr("value") MangaPage( id = generateUid(url), url = url, - referer = chapter.url.withDomain(), + referer = chapter.url.toAbsoluteUrl(getDomain()), preview = null, source = source, ) @@ -148,7 +148,7 @@ internal abstract class NineMangaParser( } override suspend fun getPageUrl(page: MangaPage): String { - val doc = context.httpGet(page.url.withDomain(), headers).parseHtml() + val doc = context.httpGet(page.url.toAbsoluteUrl(getDomain()), headers).parseHtml() val root = doc.body() return root.selectFirst("a.pic_download")?.absUrl("href") ?: throw ParseException("Page image not found") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt index 18148ea6..b2acbcdd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt @@ -100,7 +100,7 @@ internal class NudeMoonParser( } override suspend fun getDetails(manga: Manga): Manga { - val body = context.httpGet(manga.url.withDomain()).parseHtml().body() + val body = context.httpGet(manga.url.toAbsoluteUrl(getDomain())).parseHtml().body() val root = body.selectFirst("table.shoutbox") ?: parseFailed("Cannot find root") val info = root.select("div.tbl2") @@ -136,7 +136,7 @@ internal class NudeMoonParser( } override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.withDomain() + val fullUrl = chapter.url.toAbsoluteUrl(getDomain()) val doc = context.httpGet(fullUrl).parseHtml() val mangaId = chapter.url.substringAfterLast('/').substringBefore('-').toIntOrNull() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/RemangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/RemangaParser.kt index e8e8792a..f81b093f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/RemangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/RemangaParser.kt @@ -171,7 +171,7 @@ internal class RemangaParser( override suspend fun getPages(chapter: MangaChapter): List { val referer = "https://${getDomain()}/" - val content = context.httpGet(chapter.url.withDomain(subdomain = "api"), getApiHeaders()) + val content = context.httpGet(chapter.url.toAbsoluteUrl(getDomain(), "api"), getApiHeaders()) .handle401() .parseJson() .getJSONObject("content") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/YaoiChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/YaoiChanParser.kt index 36d38d60..aefafb07 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/YaoiChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/YaoiChanParser.kt @@ -9,6 +9,7 @@ import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl @MangaSourceParser("YAOICHAN", "Яой-тян", "ru") internal class YaoiChanParser(override val context: MangaLoaderContext) : ChanParser(MangaSource.YAOICHAN) { @@ -16,7 +17,7 @@ internal class YaoiChanParser(override val context: MangaLoaderContext) : ChanPa override val configKeyDomain = ConfigKey.Domain("yaoi-chan.me", null) override suspend fun getDetails(manga: Manga): Manga { - val doc = context.httpGet(manga.url.withDomain()).parseHtml() + val doc = context.httpGet(manga.url.toAbsoluteUrl(getDomain())).parseHtml() val root = doc.body().getElementById("dle-content") ?: throw ParseException("Cannot find root") return manga.copy(