TraducoesDoLipe: Refactoring (#5659)

Refactoring
This commit is contained in:
Chopper 2024-10-24 08:40:55 -03:00 committed by GitHub
parent 97ce648e34
commit 360a00e325
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,18 +1,13 @@
package eu.kanade.tachiyomi.extension.pt.traducoesdolipe package eu.kanade.tachiyomi.extension.pt.traducoesdolipe
import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga
import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistMangaDto
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.decodeFromString import kotlinx.serialization.decodeFromString
import okhttp3.Request
import okhttp3.Response import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import rx.Observable
class TraducoesDoLipe : ZeistManga( class TraducoesDoLipe : ZeistManga(
"Traduções do Lipe", "Traduções do Lipe",
@ -42,32 +37,16 @@ class TraducoesDoLipe : ZeistManga(
setUrlWithoutDomain(document.location()) setUrlWithoutDomain(document.location())
} }
override fun chapterListRequest(manga: SManga): Request { override fun getChapterFeedUrl(doc: Document): String {
val projectName = manga.url.substringAfterLast("#") val feed = doc.select("script").map(Element::html)
val url = apiUrl(chapterCategory) .firstOrNull { script -> script.contains("catNameProject") }
.addPathSegments(projectName) ?.let { script -> PROJECT_NAME_REGEX.find(script)?.groups?.get("project")?.value }
?: throw Exception("Não foi possivel encontrar o nome do projeto")
return apiUrl(chapterCategory)
.addPathSegments(feed)
.addQueryParameter("max-results", maxChapterResults.toString()) .addQueryParameter("max-results", maxChapterResults.toString())
.build() .build().toString()
return GET(url, headers)
}
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
val project = client.newCall(mangaDetailsRequest(manga)).execute().let {
it.asJsoup().select("script").map(Element::html)
.firstOrNull { script -> script.contains("catNameProject") }
?.let { script -> PROJECT_NAME_REGEX.find(script)?.groups?.get("project")?.value }
}
return client.newCall(chapterListRequest(manga.apply { url = "$url#$project" }))
.asObservableSuccess()
.map(::chapterListParse)
}
override fun chapterListParse(response: Response): List<SChapter> {
val result = json.decodeFromString<ZeistMangaDto>(response.body.string())
return result.feed?.entry?.filter { it.category.orEmpty().any { category -> category.term == chapterCategory } }
?.map { it.toSChapter(baseUrl) }
?: throw Exception("Failed to parse from chapter API")
} }
override fun pageListParse(response: Response): List<Page> { override fun pageListParse(response: Response): List<Page> {