From 5970b350a45b8a64d2db80a17a430d21413ebde6 Mon Sep 17 00:00:00 2001 From: imper1aldev <23511335+imper1aldev@users.noreply.github.com> Date: Wed, 21 Aug 2024 18:08:31 -0600 Subject: [PATCH 1/7] feat(src/es): New source: Veohentai (#164) * feat(src/es): New source: Veohentai Closes #80 * fix bug in videoListParse --- src/es/veohentai/build.gradle | 8 + .../veohentai/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2332 bytes .../veohentai/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 4591 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2865 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4879 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 7294 bytes .../animeextension/es/veohentai/VeoHentai.kt | 267 ++++++++++++++++++ 7 files changed, 275 insertions(+) create mode 100644 src/es/veohentai/build.gradle create mode 100644 src/es/veohentai/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/es/veohentai/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/es/veohentai/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/es/veohentai/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/es/veohentai/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/es/veohentai/src/eu/kanade/tachiyomi/animeextension/es/veohentai/VeoHentai.kt diff --git a/src/es/veohentai/build.gradle b/src/es/veohentai/build.gradle new file mode 100644 index 00000000..c58a952b --- /dev/null +++ b/src/es/veohentai/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'VeoHentai' + extClass = '.VeoHentai' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" \ No newline at end of file diff --git a/src/es/veohentai/res/mipmap-hdpi/ic_launcher.png b/src/es/veohentai/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f9806b8ce84561b2bdf7233698473a88473722d7 GIT binary patch literal 2332 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 literal 0 HcmV?d00001 diff --git a/src/es/veohentai/res/mipmap-xhdpi/ic_launcher.png b/src/es/veohentai/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b4f0715a9757413e823f43557fec50a243717e GIT binary patch literal 2865 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 LV~TjI<$SfTb7B^9ei&7@+N8kH6y_O6xKD?zGN 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 Kr5`V?5dRO3f%cUE literal 0 HcmV?d00001 diff --git a/src/es/veohentai/src/eu/kanade/tachiyomi/animeextension/es/veohentai/VeoHentai.kt b/src/es/veohentai/src/eu/kanade/tachiyomi/animeextension/es/veohentai/VeoHentai.kt new file mode 100644 index 00000000..a3c78848 --- /dev/null +++ b/src/es/veohentai/src/eu/kanade/tachiyomi/animeextension/es/veohentai/VeoHentai.kt @@ -0,0 +1,267 @@ +package eu.kanade.tachiyomi.animeextension.es.veohentai + +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +import eu.kanade.tachiyomi.animesource.model.AnimeFilter +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.Track +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get + +open class VeoHentai : ConfigurableAnimeSource, AnimeHttpSource() { + + override val name = "VeoHentai" + + override val baseUrl = "https://veohentai.com" + + override val lang = "es" + + override val supportsLatest = true + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + companion object { + private const val PREF_QUALITY_KEY = "preferred_quality" + private const val PREF_QUALITY_DEFAULT = "1080" + private val QUALITY_LIST = arrayOf("1080", "720", "480", "360") + + private const val PREF_SERVER_KEY = "preferred_server" + private const val PREF_SERVER_DEFAULT = "VeoHentai" + private val SERVER_LIST = arrayOf("VeoHentai") + } + + override fun animeDetailsParse(response: Response): SAnime { + val document = response.asJsoup() + val animeDetails = SAnime.create().apply { + title = document.selectFirst(".pb-2 h1")?.text()?.trim() ?: "" + status = SAnime.UNKNOWN + description = document.select(".entry-content p").joinToString { it.text() } + genre = document.select(".tags a").joinToString { it.text() } + thumbnail_url = document.selectFirst("#thumbnail-post img")?.getImageUrl() + document.select(".gap-4 div").map { it.text() }.map { textContent -> + when { + "Marca" in textContent -> author = textContent.substringAfter("Marca").trim() + } + } + } + return animeDetails + } + + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/mas-visitados/page/$page", headers) + + override fun popularAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + val elements = document.select(".gap-6 a") + val nextPage = document.select(".nav-links a:contains(Next)").any() + val animeList = elements.map { element -> + SAnime.create().apply { + title = element.selectFirst("h2")?.text()?.trim() ?: "" + thumbnail_url = element.selectFirst("img:not([class*=cover])")?.getImageUrl() + setUrlWithoutDomain(element.attr("abs:href")) + } + } + return AnimesPage(animeList, nextPage) + } + + override fun latestUpdatesParse(response: Response) = popularAnimeParse(response) + + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/page/$page", headers) + + 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 + + return when { + query.isNotBlank() -> GET("$baseUrl/page/$page/?s=$query", headers) + genreFilter.state != 0 -> GET("$baseUrl/${genreFilter.toUriPart()}/page/$page", headers) + else -> popularAnimeRequest(page) + } + } + + override fun searchAnimeParse(response: Response) = popularAnimeParse(response) + + override fun episodeListParse(response: Response): List { + val document = response.asJsoup() + return listOf( + SEpisode.create().apply { + episode_number = 1f + name = "Capítulo" + setUrlWithoutDomain(document.location()) + }, + ) + } + + override fun videoListParse(response: Response): List