Update domains

master
Koitharu 10 months ago
parent 06a9209b9e
commit f8992457dc
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -71,7 +71,7 @@ internal abstract class GroupleParser(
override val authUrl: String override val authUrl: String
get() { get() {
val targetUri = "https://${domain}/".urlEncoded() val targetUri = "https://${domain}/".urlEncoded()
return "https://grouple.co/internal/auth/sso?siteId=$siteId&=targetUri=$targetUri" return "https://3.grouple.co/internal/auth/sso?siteId=$siteId&=targetUri=$targetUri"
} }
override suspend fun isAuthorized(): Boolean = hasAuthCookie() override suspend fun isAuthorized(): Boolean = hasAuthCookie()

@ -19,6 +19,7 @@ internal class ReadmangaParser(
companion object { companion object {
val domains = arrayOf( val domains = arrayOf(
"t.readmanga.io",
"zz.readmanga.io", "zz.readmanga.io",
"readmanga.live", "readmanga.live",
"readmanga.io", "readmanga.io",

@ -1,7 +1,9 @@
package org.koitharu.kotatsu.parsers.site.ru.multichan package org.koitharu.kotatsu.parsers.site.ru.multichan
import okhttp3.HttpUrl import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrl
import org.jsoup.internal.StringUtil import org.jsoup.internal.StringUtil
import org.jsoup.nodes.Element
import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaParserAuthProvider import org.koitharu.kotatsu.parsers.MangaParserAuthProvider
import org.koitharu.kotatsu.parsers.core.LegacyMangaParser import org.koitharu.kotatsu.parsers.core.LegacyMangaParser
@ -54,7 +56,7 @@ internal abstract class ChanParser(
"/mangaka", "/mangaka",
).firstOrNull()?.text() ).firstOrNull()?.text()
Manga( Manga(
id = generateUid(href), id = generateUid(a.attrAsRelativeUrlAnyHost("href")),
url = href, url = href,
publicUrl = href.toAbsoluteUrl(a.host ?: domain), publicUrl = href.toAbsoluteUrl(a.host ?: domain),
altTitles = setOfNotNull(title.second), altTitles = setOfNotNull(title.second),
@ -87,10 +89,10 @@ internal abstract class ChanParser(
description = root.getElementById("description")?.html()?.substringBeforeLast("<div"), description = root.getElementById("description")?.html()?.substringBeforeLast("<div"),
largeCoverUrl = root.getElementById("cover")?.absUrl("src"), largeCoverUrl = root.getElementById("cover")?.absUrl("src"),
chapters = root.select("table.table_cha tr:gt(1)").mapChapters(reversed = true) { i, tr -> chapters = root.select("table.table_cha tr:gt(1)").mapChapters(reversed = true) { i, tr ->
val href = tr.selectFirst("a")?.attrAsRelativeUrlOrNull("href") val a = tr.selectFirst("a")
?: return@mapChapters null val href = a?.attrAsRelativeUrlOrNull("href") ?: return@mapChapters null
MangaChapter( MangaChapter(
id = generateUid(href), id = generateUid(a.attrAsRelativeUrlAnyHost("href")),
title = tr.selectFirst("a")?.textOrNull(), title = tr.selectFirst("a")?.textOrNull(),
number = i + 1f, number = i + 1f,
volume = 0, volume = 0,
@ -170,7 +172,7 @@ internal abstract class ChanParser(
"/mangaka", "/mangaka",
).firstOrNull()?.text() ).firstOrNull()?.text()
Manga( Manga(
id = generateUid(href), id = generateUid(a.attrAsRelativeUrlAnyHost("href")),
url = href, url = href,
publicUrl = href.toAbsoluteUrl(a.host ?: domain), publicUrl = href.toAbsoluteUrl(a.host ?: domain),
altTitles = setOfNotNull(title.second), altTitles = setOfNotNull(title.second),
@ -256,4 +258,16 @@ internal abstract class ChanParser(
} }
return this to null return this to null
} }
private fun Element.attrAsRelativeUrlAnyHost(attributeKey: String): String {
val attr = attr(attributeKey)
if (attr.isEmpty() || attr.startsWith("data:")) {
throw IllegalArgumentException("Wrong url $attr")
}
if (attr.startsWith('/')) {
return attr
}
val host = attr.toHttpUrl().host
return attr.substringAfter(host)
}
} }

@ -13,6 +13,8 @@ import org.koitharu.kotatsu.parsers.util.*
internal class YaoiChanParser(context: MangaLoaderContext) : ChanParser(context, MangaParserSource.YAOICHAN) { internal class YaoiChanParser(context: MangaLoaderContext) : ChanParser(context, MangaParserSource.YAOICHAN) {
override val configKeyDomain = ConfigKey.Domain( override val configKeyDomain = ConfigKey.Domain(
"v9.yaoi-chan.me",
"v10.yaoi-chan.me",
"v3.yaoi-chan.me", "v3.yaoi-chan.me",
"v2.yaoi-chan.me", "v2.yaoi-chan.me",
"v1.yaoi-chan.me", "v1.yaoi-chan.me",

Loading…
Cancel
Save