diff --git a/src/pt/anitube/build.gradle b/src/pt/anitube/build.gradle index d88cedbb..9b47e747 100644 --- a/src/pt/anitube/build.gradle +++ b/src/pt/anitube/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Anitube' extClass = '.Anitube' - extVersionCode = 15 + extVersionCode = 16 } apply from: "$rootDir/common.gradle" diff --git a/src/pt/anitube/src/eu/kanade/tachiyomi/animeextension/pt/anitube/Anitube.kt b/src/pt/anitube/src/eu/kanade/tachiyomi/animeextension/pt/anitube/Anitube.kt index d5ab8012..63937fde 100644 --- a/src/pt/anitube/src/eu/kanade/tachiyomi/animeextension/pt/anitube/Anitube.kt +++ b/src/pt/anitube/src/eu/kanade/tachiyomi/animeextension/pt/anitube/Anitube.kt @@ -38,7 +38,7 @@ class Anitube : ConfigurableAnimeSource, ParsedAnimeHttpSource() { } override fun headersBuilder() = super.headersBuilder() - .add("Referer", baseUrl) + .add("Referer", "$baseUrl/") .add("Accept-Language", ACCEPT_LANGUAGE) // ============================== Popular =============================== @@ -78,7 +78,11 @@ class Anitube : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun latestUpdatesNextPageSelector() = popularAnimeNextPageSelector() // =============================== Search =============================== - override suspend fun getSearchAnime(page: Int, query: String, filters: AnimeFilterList): AnimesPage { + override suspend fun getSearchAnime( + page: Int, + query: String, + filters: AnimeFilterList, + ): AnimesPage { return if (query.startsWith(PREFIX_SEARCH)) { val path = query.removePrefix(PREFIX_SEARCH) client.newCall(GET("$baseUrl/$path")) @@ -97,6 +101,7 @@ class Anitube : ConfigurableAnimeSource, ParsedAnimeHttpSource() { return AnimesPage(listOf(details), false) } + override fun getFilterList(): AnimeFilterList = AnitubeFilters.FILTER_LIST override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { @@ -108,7 +113,14 @@ class Anitube : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val char = params.initialChar when { season.isNotBlank() -> "$baseUrl/temporada/$season/$year" - genre.isNotBlank() -> "$baseUrl/genero/$genre/page/$page/${char.replace("todos", "")}" + genre.isNotBlank() -> + "$baseUrl/genero/$genre/page/$page/${ + char.replace( + "todos", + "", + ) + }" + else -> "$baseUrl/anime/page/$page/letra/$char" } } else { @@ -176,7 +188,9 @@ class Anitube : ConfigurableAnimeSource, ParsedAnimeHttpSource() { } // ============================ Video Links ============================= - override fun videoListParse(response: Response) = AnitubeExtractor.getVideoList(response, headers, client) + private val extractor by lazy { AnitubeExtractor(headers, client) } + + override fun videoListParse(response: Response) = extractor.getVideoList(response) override fun videoListSelector() = throw UnsupportedOperationException() override fun videoFromElement(element: Element) = throw UnsupportedOperationException() override fun videoUrlParse(document: Document) = throw UnsupportedOperationException() diff --git a/src/pt/anitube/src/eu/kanade/tachiyomi/animeextension/pt/anitube/extractors/AnitubeExtractor.kt b/src/pt/anitube/src/eu/kanade/tachiyomi/animeextension/pt/anitube/extractors/AnitubeExtractor.kt index e2c3854c..7d218de9 100644 --- a/src/pt/anitube/src/eu/kanade/tachiyomi/animeextension/pt/anitube/extractors/AnitubeExtractor.kt +++ b/src/pt/anitube/src/eu/kanade/tachiyomi/animeextension/pt/anitube/extractors/AnitubeExtractor.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.animeextension.pt.anitube.extractors +import android.util.Log import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST @@ -8,9 +9,90 @@ import okhttp3.FormBody import okhttp3.Headers import okhttp3.OkHttpClient import okhttp3.Response +import java.util.Calendar +import java.util.Date -object AnitubeExtractor { - fun getVideoList(response: Response, headers: Headers, client: OkHttpClient): List