From 130a201f6e11456fd4fd4e410e69a0110ec4efa1 Mon Sep 17 00:00:00 2001 From: Claudemirovsky <63046606+Claudemirovsky@users.noreply.github.com> Date: Sat, 26 Mar 2022 07:48:31 -0300 Subject: [PATCH] New source: Goyabu (#429) --- src/pt/goyabu/AndroidManifest.xml | 2 + src/pt/goyabu/build.gradle | 14 + src/pt/goyabu/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5091 bytes src/pt/goyabu/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3330 bytes .../goyabu/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7144 bytes .../goyabu/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 11741 bytes .../goyabu/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 17552 bytes .../animeextension/pt/goyabu/GYConstants.kt | 11 + .../animeextension/pt/goyabu/GYFilters.kt | 230 +++++++++++++ .../animeextension/pt/goyabu/Goyabu.kt | 305 ++++++++++++++++++ .../pt/goyabu/dto/SearchResultDto.kt | 26 ++ .../goyabu/extractors/PlayerOneExtractor.kt | 17 + .../goyabu/extractors/PlayerTwoExtractor.kt | 25 ++ 13 files changed, 630 insertions(+) create mode 100644 src/pt/goyabu/AndroidManifest.xml create mode 100644 src/pt/goyabu/build.gradle create mode 100644 src/pt/goyabu/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/pt/goyabu/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/pt/goyabu/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/pt/goyabu/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/pt/goyabu/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/pt/goyabu/src/eu/kanade/tachiyomi/animeextension/pt/goyabu/GYConstants.kt create mode 100644 src/pt/goyabu/src/eu/kanade/tachiyomi/animeextension/pt/goyabu/GYFilters.kt create mode 100644 src/pt/goyabu/src/eu/kanade/tachiyomi/animeextension/pt/goyabu/Goyabu.kt create mode 100644 src/pt/goyabu/src/eu/kanade/tachiyomi/animeextension/pt/goyabu/dto/SearchResultDto.kt create mode 100644 src/pt/goyabu/src/eu/kanade/tachiyomi/animeextension/pt/goyabu/extractors/PlayerOneExtractor.kt create mode 100644 src/pt/goyabu/src/eu/kanade/tachiyomi/animeextension/pt/goyabu/extractors/PlayerTwoExtractor.kt diff --git a/src/pt/goyabu/AndroidManifest.xml b/src/pt/goyabu/AndroidManifest.xml new file mode 100644 index 000000000..94339ee7a --- /dev/null +++ b/src/pt/goyabu/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/src/pt/goyabu/build.gradle b/src/pt/goyabu/build.gradle new file mode 100644 index 000000000..1263411a7 --- /dev/null +++ b/src/pt/goyabu/build.gradle @@ -0,0 +1,14 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlinx-serialization' + +ext { + extName = 'Goyabu' + pkgNameSuffix = 'pt.goyabu' + extClass = '.Goyabu' + extVersionCode = 1 + libVersion = '12' +} + + +apply from: "$rootDir/common.gradle" diff --git a/src/pt/goyabu/res/mipmap-hdpi/ic_launcher.png b/src/pt/goyabu/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b90b7a71e63193e01a8a8d70219485998be38a GIT binary patch literal 5091 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 Qt{nhXMRkQLIm__>1K-D2LjV8( literal 0 HcmV?d00001 diff --git a/src/pt/goyabu/res/mipmap-mdpi/ic_launcher.png b/src/pt/goyabu/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5adebc4687f831c3ddce3474843b3fc0638ed928 GIT binary patch literal 3330 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 literal 0 HcmV?d00001 diff --git a/src/pt/goyabu/res/mipmap-xhdpi/ic_launcher.png b/src/pt/goyabu/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8c8548ae0732d417c6d5b6b2b2bf444e9db95183 GIT binary patch literal 7144 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
  • }=u1GpF?{37;a#uq7X-M#=Wy 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 + ) : AnimeFilter.Select( + displayName, + vals.map { it.first }.toTypedArray() + ) { + fun toQueryPart() = vals[state].second + } + + open class TriStateFilterList(name: String, values: List) : AnimeFilter.Group(name, values) + private class TriStateVal(name: String) : AnimeFilter.TriState(name) + + private inline fun AnimeFilterList.getFirst(): R { + return this.filterIsInstance().first() + } + + private inline fun AnimeFilterList.asQueryPart(): String { + return this.getFirst().let { + (it as QueryPartFilter).toQueryPart() + } + } + + class LanguageFilter : QueryPartFilter("Idioma", GYFiltersData.languages) + class InitialLetterFilter : QueryPartFilter("Primeira letra", GYFiltersData.initialLetter) + + class EpisodeFilter : AnimeFilter.Text("Episódios") + class EpisodeFilterMode : QueryPartFilter("Modo de filtro", GYFiltersData.episodeFilterMode) + class SortFilter : AnimeFilter.Sort( + "Ordenar", + GYFiltersData.orders.map { it.first }.toTypedArray(), + Selection(0, true) + ) + + class GenresFilter : TriStateFilterList( + "Gêneros", + GYFiltersData.genres.map { TriStateVal(it) } + ) + + val filterList = AnimeFilterList( + LanguageFilter(), + InitialLetterFilter(), + SortFilter(), + AnimeFilter.Separator(), + EpisodeFilter(), + EpisodeFilterMode(), + AnimeFilter.Separator(), + GenresFilter(), + ) + + data class FilterSearchParams( + val language: String = "", + val initialLetter: String = "", + val episodesFilterMode: String = ">=", + var numEpisodes: Int = 0, + var orderAscending: Boolean = true, + var sortBy: String = "", + val blackListedGenres: ArrayList = ArrayList(), + val includedGenres: ArrayList = ArrayList(), + var animeName: String = "" + ) + + internal fun getSearchParameters(filters: AnimeFilterList): FilterSearchParams { + val searchParams = FilterSearchParams( + filters.asQueryPart(), + filters.asQueryPart(), + filters.asQueryPart(), + ) + + searchParams.numEpisodes = try { + filters.getFirst().state.toInt() + } catch (e: NumberFormatException) { 0 } + + filters.getFirst().state?.let { + val order = GYFiltersData.orders[it.index].second + searchParams.orderAscending = it.ascending + searchParams.sortBy = order + } + + filters.getFirst() + .state.forEach { genre -> + if (genre.isIncluded()) { + searchParams.includedGenres.add(genre.name) + } else if (genre.isExcluded()) { + searchParams.blackListedGenres.add(genre.name) + } + } + + return searchParams + } + + private fun mustRemove(anime: SearchResultDto, params: FilterSearchParams): Boolean { + val epFilterMode = params.episodesFilterMode + return when { + params.animeName != "" && params.animeName.lowercase() !in anime.title.lowercase() -> true + anime.title == "null" -> true + params.language != "" && params.language !in anime.type -> true + params.initialLetter != "" && !anime.title.startsWith(params.initialLetter) -> true + params.blackListedGenres.size > 0 && params.blackListedGenres.any { + it.lowercase() in anime.genre.lowercase() + } -> true + params.includedGenres.size > 0 && params.includedGenres.any { + it.lowercase() !in anime.genre.lowercase() + } -> true + params.numEpisodes > 0 -> { + when (epFilterMode) { + "==" -> params.numEpisodes != anime.videos + ">=" -> params.numEpisodes >= anime.videos + "<=" -> params.numEpisodes <= anime.videos + else -> false + } + } + else -> false + } + } + + fun MutableList.applyFilterParams(params: FilterSearchParams) { + this.removeAll { anime -> mustRemove(anime, params) } + when (params.sortBy) { + "A-Z" -> { + if (!params.orderAscending) + this.reverse() + } + "num" -> { + if (params.orderAscending) + this.sortBy { it.videos } + else + this.sortByDescending { it.videos } + } + } + } + + private object GYFiltersData { + + val languages = arrayOf( + Pair("Todos", ""), + Pair("Legendado", "Leg"), + Pair("Dublado", "Dub") + ) + + val orders = arrayOf( + Pair("Alfabeticamente", "A-Z"), + Pair("Por número de eps", "num") + ) + + val initialLetter = arrayOf(Pair("Qualquer uma", "")) + ('A'..'Z').map { + Pair(it.toString(), it.toString()) + }.toTypedArray() + + val episodeFilterMode = arrayOf( + Pair("Maior ou igual", ">="), + Pair("Menor ou igual", "<="), + Pair("Igual", "=="), + ) + + val genres = arrayOf( + "Alien", + "Animação Chinesa", + "Anjos", + "Artes Marciais", + "Astronautas", + "Aventura", + "Ação", + "Carros", + "Comédia", + "Crianças", + "Demência", + "Demônios", + "Drama", + "Ecchi", + "Escolar", + "Espacial", + "Espaço", + "Esporte", + "Fantasia", + "Fantasmas", + "Ficção Científica", + "Harém", + "Histórico", + "Horror", + "Idol", + "Infantil", + "Isekai", + "Jogo", + "Josei", + "Magia", + "Mecha", + "Militar", + "Mistério", + "Monstros", + "Magia", + "Música", + "Otaku", + "Paródia", + "Piratas", + "Policial", + "Psicológico", + "RPG", + "Realidade Virtual", + "Romance", + "Samurai", + "Sci-Fi", + "Seinen", + "Shoujo", + "Shoujo Ai", + "Shounen", + "Shounen Ai", + "Slice of life", + "Sobrenatural", + "Super Poder", + "Supernatural", + "Superpotência", + "Suspense", + "Teatro", + "Terror", + "Thriller", + "Vampiro", + "Vida Escolar", + "Yaoi", + "Yuri" + ) + } +} diff --git a/src/pt/goyabu/src/eu/kanade/tachiyomi/animeextension/pt/goyabu/Goyabu.kt b/src/pt/goyabu/src/eu/kanade/tachiyomi/animeextension/pt/goyabu/Goyabu.kt new file mode 100644 index 000000000..156f922f5 --- /dev/null +++ b/src/pt/goyabu/src/eu/kanade/tachiyomi/animeextension/pt/goyabu/Goyabu.kt @@ -0,0 +1,305 @@ +package eu.kanade.tachiyomi.animeextension.pt.goyabu + +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animeextension.pt.goyabu.GYFilters.applyFilterParams +import eu.kanade.tachiyomi.animeextension.pt.goyabu.extractors.PlayerOneExtractor +import eu.kanade.tachiyomi.animeextension.pt.goyabu.extractors.PlayerTwoExtractor +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.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import okhttp3.Headers +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import rx.Observable +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import java.lang.Exception + +class Goyabu : ConfigurableAnimeSource, ParsedAnimeHttpSource() { + + override val name = "Goyabu" + + override val baseUrl = "https://goyabu.com" + + override val lang = "pt-BR" + + override val supportsLatest = true + + override val client: OkHttpClient = network.cloudflareClient + + private val json = Json { + ignoreUnknownKeys = true + } + + private var searchJson: List? = null + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + override fun headersBuilder(): Headers.Builder = Headers.Builder() + .add("Accept-Language", GYConstants.ACCEPT_LANGUAGE) + .add("Referer", baseUrl) + + // ============================== Popular =============================== + override fun popularAnimeSelector(): String = "div.item > div.anime-episode" + override fun popularAnimeRequest(page: Int): Request = GET(baseUrl) + + override fun popularAnimeFromElement(element: Element): SAnime { + val anime: SAnime = SAnime.create() + anime.setUrlWithoutDomain(element.selectFirst("a").attr("href")) + anime.title = element.selectFirst("h3").text() + anime.thumbnail_url = element.selectFirst("img").attr("src") + return anime + } + + override fun popularAnimeNextPageSelector() = throw Exception("not used") + + override fun popularAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + val content = document.select("div.episodes-container").get(2) + val animes = content.select(popularAnimeSelector()).map { element -> + popularAnimeFromElement(element) + } + return AnimesPage(animes, false) + } + + // ============================== Episodes ============================== + override fun episodeListSelector(): String = "div.episodes-container > div.anime-episode" + + private fun getAllEps(response: Response): List { + val epList = mutableListOf() + val url = response.request.url.toString() + val doc = if (url.contains("/videos/")) { + getRealDoc(response.asJsoup()) + } else { response.asJsoup() } + + val epElementList = doc.select(episodeListSelector()) + epList.addAll(epElementList.map { episodeFromElement(it) }) + + val next = doc.selectFirst("div.naco > a.next") + if (next != null) { + val newResponse = client.newCall(GET(next.attr("href"))).execute() + epList.addAll(getAllEps(newResponse)) + } + return epList + } + + override fun episodeListParse(response: Response): List { + return getAllEps(response).reversed() + } + + override fun episodeFromElement(element: Element): SEpisode { + val episode = SEpisode.create() + + episode.setUrlWithoutDomain(element.selectFirst("a").attr("href")) + val epName = element.selectFirst("h3").text().substringAfter("– ") + episode.name = epName + episode.episode_number = try { + epName.substringAfter(" ").substringBefore(" ").toFloat() + } catch (e: NumberFormatException) { 0F } + return episode + } + + // ============================ Video Links ============================= + override fun videoListParse(response: Response): List