diff --git a/src/es/ennovelas/build.gradle b/src/es/ennovelas/build.gradle index a4185b295..a48c55cfa 100644 --- a/src/es/ennovelas/build.gradle +++ b/src/es/ennovelas/build.gradle @@ -5,16 +5,8 @@ ext { extName = 'EnNovelas' pkgNameSuffix = 'es.ennovelas' extClass = '.EnNovelas' - extVersionCode = 3 + extVersionCode = 4 libVersion = '13' } -dependencies { - implementation(project(':lib-okru-extractor')) - implementation project(path: ':lib-streamsb-extractor') - implementation project(path: ':lib-fembed-extractor') - implementation project(path: ':lib-voe-extractor') - implementation project(path: ':lib-streamtape-extractor') - implementation project(path: ':lib-dood-extractor') -} apply from: "$rootDir/common.gradle" diff --git a/src/es/ennovelas/src/eu/kanade/tachiyomi/animeextension/es/ennovelas/EnNovelas.kt b/src/es/ennovelas/src/eu/kanade/tachiyomi/animeextension/es/ennovelas/EnNovelas.kt index 0e132d97e..6955c168e 100644 --- a/src/es/ennovelas/src/eu/kanade/tachiyomi/animeextension/es/ennovelas/EnNovelas.kt +++ b/src/es/ennovelas/src/eu/kanade/tachiyomi/animeextension/es/ennovelas/EnNovelas.kt @@ -4,40 +4,29 @@ import android.app.Application import android.content.SharedPreferences import androidx.preference.ListPreference import androidx.preference.PreferenceScreen -import eu.kanade.tachiyomi.animeextension.es.ennovelas.extractors.StreamlareExtractor import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.AnimeFilterList -import eu.kanade.tachiyomi.animesource.model.AnimesPage import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SEpisode import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource -import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor -import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor -import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor -import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor -import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor -import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.Headers -import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request -import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.text.Normalizer import kotlin.Exception class EnNovelas : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override val name = "EnNovelas" - override val baseUrl = "https://w.ennovelas.net" + override val baseUrl = "https://www.zonevipz.com/" override val lang = "es" @@ -49,59 +38,43 @@ class EnNovelas : ConfigurableAnimeSource, ParsedAnimeHttpSource() { Injekt.get().getSharedPreferences("source_$id", 0x0000) } - override fun popularAnimeSelector(): String = ".block-post" + override fun popularAnimeSelector(): String = "#container section.search-videos div.section-content div.row div div.col-xs-6 div.video-post" - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/telenovelas/page/$page") + override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/?op=categories_all&per_page=60&page=$page") override fun popularAnimeFromElement(element: Element): SAnime { val anime = SAnime.create() - anime.setUrlWithoutDomain(element.select("a").attr("href")) - anime.title = element.select("a .title").text() - anime.thumbnail_url = element.select("a img").attr("data-img") + anime.setUrlWithoutDomain(changeUrlFormat(element.select("a").attr("href"))) + anime.title = element.select("a p").text() + anime.thumbnail_url = element.select("a div.thumb").attr("style") + .substringAfter("background-image:url(").substringBefore(")") anime.description = "" return anime } - override fun popularAnimeNextPageSelector(): String = ".pagination .current ~ a" + private fun changeUrlFormat(link: String): String { + val novel = link.substringAfter("/category/").replace("+", "%20") + // "$baseUrl/?cat_name=$novel&op=search&per_page=all" + return "$baseUrl/?cat_name=$novel&op=search&per_page=100000" + } + + override fun popularAnimeNextPageSelector(): String = "#container section div.section-content div.paging a:last-of-type" override fun episodeListParse(response: Response): List { val document = response.asJsoup() val episodeList = mutableListOf() - val seasonIds = document.select(".listSeasons li[data-season]") - var noEp = 1F - if (seasonIds.any()) { - seasonIds.reversed().map { - val headers = headers.newBuilder() - .add("authority", "w.ennovelas.net") - .add("referer", response.request.url.toString()) - .add("accept", "*/*") - .add("accept-language", "es-MX,es;q=0.9,en;q=0.8") - .add("sec-fetch-mode", "cors") - .add("x-requested-with", "XMLHttpRequest") - .build() - val season = getNumberFromEpsString(it.text()) - client.newCall(GET("$baseUrl/wp-content/themes/vo2022/temp/ajax/seasons.php?seriesID=${it.attr("data-season")}", headers = headers)) - .execute().asJsoup().select(".block-post").forEach { element -> - val ep = SEpisode.create() - val noEpisode = getNumberFromEpsString(element.selectFirst("a .episodeNum span:nth-child(2)")!!.text()).ifEmpty { noEp } - ep.setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) - ep.name = "T$season - E$noEpisode - Cap" + element.selectFirst("a .title")!!.text().substringAfter("Cap") - ep.episode_number = noEp - episodeList.add(ep) - noEp += 1 - } - } - } else { - document.select(".block-post").forEach { element -> - val ep = SEpisode.create() - val noEpisode = getNumberFromEpsString(element.selectFirst("a .episodeNum span:nth-child(2)")!!.text()) - ep.setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) - ep.name = "Cap" + element.selectFirst("a .title")!!.text().substringAfter("Cap") - ep.episode_number = noEpisode.toFloat() - episodeList.add(ep) - } + document.select("#col3 div.videobox").forEach { element -> + val ep = SEpisode.create() + val noEpisode = getNumberFromEpsString( + element.selectFirst("a:nth-child(2)")!!.text().substringAfter("Cap") + .substringBefore("FIN").substringBefore("fin"), + ) + ep.setUrlWithoutDomain(element.selectFirst("a.video200")!!.attr("href")) + ep.name = "Cap" + element.selectFirst("a:nth-child(2)")!!.text().substringAfter("Cap") + ep.episode_number = noEpisode.toFloat() + episodeList.add(ep) } - return episodeList.reversed() + return episodeList.sortedByDescending { x -> x.episode_number } } override fun episodeListSelector() = "uwu" @@ -115,126 +88,16 @@ class EnNovelas : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun videoListParse(response: Response): List