From e5c53a0a22c10b157cb97d9a93e7805fd1b39652 Mon Sep 17 00:00:00 2001 From: imper1aldev <23511335+imper1aldev@users.noreply.github.com> Date: Fri, 10 Jan 2025 18:01:50 -0600 Subject: [PATCH 1/2] HLA fixes Closes #372 Closes #371 --- src/es/hentaila/build.gradle | 3 +- .../animeextension/es/hentaila/Hentaila.kt | 61 ++++++++----------- 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/src/es/hentaila/build.gradle b/src/es/hentaila/build.gradle index 2c12913f..f47d942d 100644 --- a/src/es/hentaila/build.gradle +++ b/src/es/hentaila/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'HentaiLA' extClass = '.Hentaila' - extVersionCode = 27 + extVersionCode = 28 isNsfw = true } @@ -14,4 +14,5 @@ dependencies { implementation(project(':lib:voe-extractor')) implementation(project(':lib:yourupload-extractor')) implementation(project(':lib:streamhidevid-extractor')) + implementation(project(':lib:sendvid-extractor')) } \ No newline at end of file diff --git a/src/es/hentaila/src/eu/kanade/tachiyomi/animeextension/es/hentaila/Hentaila.kt b/src/es/hentaila/src/eu/kanade/tachiyomi/animeextension/es/hentaila/Hentaila.kt index e622f374..5edc725e 100644 --- a/src/es/hentaila/src/eu/kanade/tachiyomi/animeextension/es/hentaila/Hentaila.kt +++ b/src/es/hentaila/src/eu/kanade/tachiyomi/animeextension/es/hentaila/Hentaila.kt @@ -14,6 +14,7 @@ import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource import eu.kanade.tachiyomi.lib.burstcloudextractor.BurstCloudExtractor import eu.kanade.tachiyomi.lib.mp4uploadextractor.Mp4uploadExtractor +import eu.kanade.tachiyomi.lib.sendvidextractor.SendvidExtractor import eu.kanade.tachiyomi.lib.streamhidevidextractor.StreamHideVidExtractor import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor @@ -30,7 +31,6 @@ import okhttp3.Response import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import java.io.IOException import java.text.SimpleDateFormat import java.util.Locale @@ -65,6 +65,7 @@ class Hentaila : ConfigurableAnimeSource, AnimeHttpSource() { "Mp4Upload", "BurstCloud", "StreamHideVid", + "Sendvid", ) private val DATE_FORMATTER by lazy { @@ -94,45 +95,27 @@ class Hentaila : ConfigurableAnimeSource, AnimeHttpSource() { override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { val filterList = if (filters.isEmpty()) getFilterList() else filters - val genreFilter = filterList.find { it is GenreFilter } as GenreFilter + val genreFilter = filterList.filterIsInstance().firstOrNull() if (query.isNotEmpty()) { - if (query.length < 2) throw IOException("La búsqueda debe tener al menos 2 caracteres") + require(query.length >= 2) { "La búsqueda debe tener al menos 2 caracteres" } return POST("$baseUrl/api/search", headers, FormBody.Builder().add("value", query).build()) } - var url = "$baseUrl/directorio?p=$page".toHttpUrl().newBuilder() - - if (genreFilter.state != 0) { - url = "$baseUrl/genero/${genreFilter.toUriPart()}?p=$page".toHttpUrl().newBuilder() - } + val urlBuilder = "$baseUrl/${if (genreFilter?.state != 0) "genero/${genreFilter?.toUriPart()}" else "directorio?p=$page"}" + .toHttpUrl().newBuilder() filterList.forEach { filter -> when (filter) { - is OrderFilter -> { - url.addQueryParameter("filter", filter.toUriPart()) - } - is StatusOngoingFilter -> { - if (filter.state) { - url.addQueryParameter("status[1]", "on") - } - } - is StatusCompletedFilter -> { - if (filter.state) { - url.addQueryParameter("status[2]", "on") - } - } - is UncensoredFilter -> { - if (filter.state) { - url.addQueryParameter("uncensored", "on") - } - } - + is OrderFilter -> urlBuilder.addQueryParameter("filter", filter.toUriPart()) + is StatusOngoingFilter -> if (filter.state) urlBuilder.addQueryParameter("status[1]", "on") + is StatusCompletedFilter -> if (filter.state) urlBuilder.addQueryParameter("status[2]", "on") + is UncensoredFilter -> if (filter.state) urlBuilder.addQueryParameter("uncensored", "on") else -> {} } } - return GET(url.build().toString(), headers) + return GET(urlBuilder.build().toString(), headers) } override fun searchAnimeParse(response: Response): AnimesPage { @@ -150,7 +133,7 @@ class Hentaila : ConfigurableAnimeSource, AnimeHttpSource() { } val document = response.asJsoup() - val animes = document.select("div.columns main section.section div.grid.hentais article.hentai").map { + val animeList = document.select("div.columns main section.section div.grid.hentais article.hentai").map { SAnime.create().apply { title = it.select("header.h-header h2").text() setUrlWithoutDomain(it.select("a").attr("abs:href")) @@ -160,7 +143,7 @@ class Hentaila : ConfigurableAnimeSource, AnimeHttpSource() { val hasNextPage = document.select("a.btn.rnd.npd.fa-arrow-right").any() - return AnimesPage(animes, hasNextPage) + return AnimesPage(animeList, hasNextPage) } override fun animeDetailsParse(response: Response): SAnime { @@ -206,6 +189,7 @@ class Hentaila : ConfigurableAnimeSource, AnimeHttpSource() { private val mp4uploadExtractor by lazy { Mp4uploadExtractor(client) } private val burstCloudExtractor by lazy { BurstCloudExtractor(client) } private val streamHideVidExtractor by lazy { StreamHideVidExtractor(client) } + private val sendvidExtractor by lazy { SendvidExtractor(client, headers) } override fun videoListParse(response: Response): List