Fix latest and chapter list not loading in MM. (#9555)
This commit is contained in:
parent
00f441e4df
commit
686885026e
|
@ -2,9 +2,13 @@ package eu.kanade.tachiyomi.extension.pt.meusmangas
|
|||
|
||||
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
|
||||
import eu.kanade.tachiyomi.multisrc.mangasar.MangaSar
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||
import eu.kanade.tachiyomi.source.model.SChapter
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Element
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
@ -28,6 +32,33 @@ class MeusMangas : MangaSar(
|
|||
setUrlWithoutDomain(element.selectFirst("a").attr("abs:href"))
|
||||
}
|
||||
|
||||
override fun latestUpdatesRequest(page: Int): Request {
|
||||
val newHeaders = headersBuilder()
|
||||
.add("X-Requested-With", "XMLHttpRequest")
|
||||
.build()
|
||||
|
||||
val pagePath = if (page > 1) "page/$page" else ""
|
||||
|
||||
return GET("$baseUrl/$pagePath", newHeaders)
|
||||
}
|
||||
|
||||
override fun latestUpdatesParse(response: Response): MangasPage {
|
||||
val document = response.asJsoup()
|
||||
|
||||
val mangaList = document.select("li.item_news-manga")
|
||||
.map(::latestMangaFromElement)
|
||||
|
||||
val hasNextPage = document.select("div.loadmore.morepage").firstOrNull() != null
|
||||
|
||||
return MangasPage(mangaList, hasNextPage)
|
||||
}
|
||||
|
||||
private fun latestMangaFromElement(element: Element): SManga = SManga.create().apply {
|
||||
title = element.select("h3.entry-title a").text()
|
||||
thumbnail_url = element.select("img.manga").attr("src")
|
||||
setUrlWithoutDomain(element.select("a").first().attr("abs:href"))
|
||||
}
|
||||
|
||||
override fun mangaDetailsParse(response: Response): SManga {
|
||||
val document = response.asJsoup()
|
||||
val infoElement = document.selectFirst("div.box-single:has(div.mangapage)")
|
||||
|
@ -36,12 +67,62 @@ class MeusMangas : MangaSar(
|
|||
title = infoElement.selectFirst("h1.kw-title").text()
|
||||
author = infoElement.selectFirst("div.mdq.author").text().trim()
|
||||
description = infoElement.selectFirst("div.sinopse-page").text()
|
||||
genre = infoElement.select("div.touchcarousel a.widget-btn").joinToString { it.text() }
|
||||
genre = infoElement.select("div.generos a.widget-btn").joinToString { it.text() }
|
||||
status = infoElement.selectFirst("span.mdq").text().toStatus()
|
||||
thumbnail_url = infoElement.selectFirst("div.thumb img").attr("abs:src")
|
||||
}
|
||||
}
|
||||
|
||||
override fun chapterListPaginatedRequest(mangaUrl: String, page: Int): Request {
|
||||
val newHeaders = headersBuilder()
|
||||
.add("X-Requested-With", "XMLHttpRequest")
|
||||
.build()
|
||||
|
||||
return GET("$baseUrl$mangaUrl/page/$page", newHeaders)
|
||||
}
|
||||
|
||||
override fun chapterListParse(response: Response): List<SChapter> {
|
||||
var document = response.asJsoup()
|
||||
|
||||
val chapterList = document.select(chapterListSelector())
|
||||
.map(::chapterFromElement)
|
||||
.toMutableList()
|
||||
|
||||
val mangaUrl = response.request.url.toString()
|
||||
.substringAfter(baseUrl)
|
||||
.substringBefore("/page")
|
||||
var hasNextPage = document.select(chapterListNextPageSelector())
|
||||
.firstOrNull()
|
||||
|
||||
while (hasNextPage != null && !hasNextPage.attr("href").endsWith("#")) {
|
||||
val page = hasNextPage.attr("href")
|
||||
.substringAfter("page/")
|
||||
.toInt()
|
||||
|
||||
val nextRequest = chapterListPaginatedRequest(mangaUrl, page)
|
||||
val nextResponse = client.newCall(nextRequest).execute()
|
||||
document = nextResponse.asJsoup()
|
||||
|
||||
chapterList += document.select(chapterListSelector())
|
||||
.map(::chapterFromElement)
|
||||
|
||||
hasNextPage = document.select(chapterListNextPageSelector())
|
||||
.firstOrNull()
|
||||
}
|
||||
|
||||
return chapterList
|
||||
}
|
||||
|
||||
private fun chapterListSelector() = "ul.list-of-chapters li > a"
|
||||
|
||||
private fun chapterListNextPageSelector() = "div.loadmore a.loadmore"
|
||||
|
||||
private fun chapterFromElement(element: Element): SChapter = SChapter.create().apply {
|
||||
name = element.select("span.cap-text").text()
|
||||
date_upload = element.select("span.chapter-date").text().toDate()
|
||||
setUrlWithoutDomain(element.attr("abs:href"))
|
||||
}
|
||||
|
||||
private fun String.toStatus(): Int = when (this) {
|
||||
"Em andamento" -> SManga.ONGOING
|
||||
"Completo" -> SManga.COMPLETED
|
||||
|
|
|
@ -143,7 +143,7 @@ abstract class MangaSar(
|
|||
|
||||
override fun chapterListRequest(manga: SManga): Request = chapterListPaginatedRequest(manga.url)
|
||||
|
||||
private fun chapterListPaginatedRequest(mangaUrl: String, page: Int = 1): Request {
|
||||
protected open fun chapterListPaginatedRequest(mangaUrl: String, page: Int = 1): Request {
|
||||
val mangaId = mangaUrl.substringAfterLast("/")
|
||||
|
||||
val newHeaders = apiHeadersBuilder()
|
||||
|
@ -268,7 +268,7 @@ abstract class MangaSar(
|
|||
return chain.proceed(chain.request())
|
||||
}
|
||||
|
||||
private fun String.toDate(): Long {
|
||||
protected fun String.toDate(): Long {
|
||||
return try {
|
||||
DATE_FORMATTER.parse(this)?.time ?: 0L
|
||||
} catch (e: ParseException) {
|
||||
|
|
|
@ -13,7 +13,7 @@ class MangaSarGenerator : ThemeSourceGenerator {
|
|||
|
||||
override val sources = listOf(
|
||||
SingleLang("MangaTube", "https://mangatube.site", "pt-BR"),
|
||||
SingleLang("Meus Mangás", "https://meusmangas.net", "pt-BR", isNsfw = true, className = "MeusMangas")
|
||||
SingleLang("Meus Mangás", "https://meusmangas.net", "pt-BR", isNsfw = true, className = "MeusMangas", overrideVersionCode = 1)
|
||||
)
|
||||
|
||||
companion object {
|
||||
|
|
Loading…
Reference in New Issue