From 4dc21686deb2a4ebfaf9d8fc2e393e4654e4b66f Mon Sep 17 00:00:00 2001 From: imper1aldev <23511335+imper1aldev@users.noreply.github.com> Date: Sat, 10 Aug 2024 22:14:41 -0600 Subject: [PATCH] VerAnimes extension added --- src/es/veranimes/build.gradle | 15 + .../veranimes/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2577 bytes .../veranimes/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1410 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2941 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4383 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 5774 bytes .../animeextension/es/veranimes/VerAnimes.kt | 281 ++++++++++++++++++ .../veranimes/extractors/VidGuardExtractor.kt | 124 ++++++++ 8 files changed, 420 insertions(+) create mode 100644 src/es/veranimes/build.gradle create mode 100644 src/es/veranimes/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/es/veranimes/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/es/veranimes/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/es/veranimes/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/es/veranimes/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/VerAnimes.kt create mode 100644 src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/extractors/VidGuardExtractor.kt diff --git a/src/es/veranimes/build.gradle b/src/es/veranimes/build.gradle new file mode 100644 index 00000000..ffbb4521 --- /dev/null +++ b/src/es/veranimes/build.gradle @@ -0,0 +1,15 @@ +ext { + extName = 'VerAnimes' + extClass = '.VerAnimes' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(':lib:okru-extractor')) + implementation(project(':lib:streamwish-extractor')) + implementation(project(':lib:streamhidevid-extractor')) + implementation(project(':lib:voe-extractor')) + implementation(project(':lib:yourupload-extractor')) +} \ No newline at end of file diff --git a/src/es/veranimes/res/mipmap-hdpi/ic_launcher.png b/src/es/veranimes/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e729e395b8f96ade80a7773b912b4c3fa9d4d486 GIT binary patch literal 2577 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 literal 0 HcmV?d00001 diff --git a/src/es/veranimes/res/mipmap-xxhdpi/ic_launcher.png b/src/es/veranimes/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..14c3727ca53210cb658f30012744ebe2098c7ff9 GIT binary patch literal 4383 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 Z{txZ7YP&e^1{MGS002ovPDHLkV1l$1YD@qC literal 0 HcmV?d00001 diff --git a/src/es/veranimes/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/veranimes/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ab47807bea17423225e22ce788a75c14d2029624 GIT binary patch literal 5774 zcmZ`-_cz;N7yl;2rnN_@)e5am?U7VbTd8V|8Z}$7#RxTOZ!gs$2vxMTVuaEfMNuOu zsuads-e`G`$m`c^1acfi`a?HAN#^|igOuhXC ztKT)$c%n9h$;>V`KH zXXdSxNGTQS^>w}Km@TvVeXm(HO_=l)W8LpSdg&;YDqO_+9?%55{j)-lS#_w7AO-SV zc=0I-SJ_%7$qgg$Ij{#K!~86J0G?O{=5D`s_?D=L+sbDFxM4qDb+fRLwn@v_BNSE& zajtGj;|HF5H6k<4Otp~UENDj3aekI0fJp6p2tQ9A!@zC2W%O8B7O4!PW^>%7H&@*XqG65X5;DP8BzfBN##=MYZx2M{-m zQ<@9aLL7ph3y71wu~+0#xt(Wwoc<#;(ot%5V#s9TRk*g614&_g+VC@%bj;Jc2^-gN zg%p&%xilc{FvYZ%eeUBnSrL#%+=M$+akTLLifyM&xs>3XHKZoMSLG|yQpqCD4X9ol ze^n=H$~Dt2qvOlo-_{uO_}#-p(;DZ0A5}!78KS}`ygyOd0Ve-KU1ph;SX-t^mR$*4 z)yWEMk_>YXum}?Q<6Qw1Cj9v%+JEc``YHBkt7C_b)Ahg?62c z7TZ?FnTOa~=>tqKB8f-Wn^YxNcxvtgi|WX>8|@GRjrPFb6`%2Ze_s$sbU0|cZwE82 z%ypj~cxArxB-4_qy6;_SA#d2uCpT@z1jE*HH;!Izz$rmH^Wl4#g?Uf)w0wiq(mgEu ze<+c&-huuG)qUT>fTIKJ0j<#Rpnq#Bys|cc@Tp_NODS9GKO&v^Xi`fSaojCWflrKY z{Mujj=c3{PB>|vRupd|`7+$D^npE3~I@1u${NN;Ukn~k;{5%Nx&XSJ1+be%hplx}# zr9)h01Q|hQP~8=J3`n4JQCXGHOI^AN%Oj*)geH|Oxkp+#Xm| z@<N`u3TP*Gb71nf=7JPBYekPNwg%a9I^#aX6pq5Rg%~&$imX z-Pc>HJNP2$UphCciWujXXUR08KPZ!!b^e^-t*GHx{d3^OKkCeH|HM~zFA9de>;2th z_f_scIvX@)IXcU4s_%cO&Dav6B9; z13(W66~OJQ(JYY`3q18qt&Ss{A+|YfqpFXV6N+|b4AJ*`UWrqrF{u zSfA^cH%t2F9z_w!;#|N{(pTD#K>m!D61HK3JOiSPpXw2H2-{0mT#ky&2^KPJlcV0g z4D*c~rV;^9Lpc^092YQE?_^`e#|U2@2_K|Tl8+`!9x+p{AL_Ss@X|v?4*QRkT7)q; z0JF~e`03iGMPY)$1!`hV@5{}^Bfep321@>Pb7se}LGC;HBm*D~{Fr zf+gu-XB4;c^}eP(TY!3L-uN&_g>kK!wD&3$)EjBWeo`>~FdI%6g+1wy8G9^&WSP2G ziAU25kO}{=62~$CIG^>nMpK>28gY;M%xJDe_TW))-Gkc;d$FEsh3*FiSqQwHMs=1s zH9w1=X7xhmkw;`cwc1PGZ$-v$dqah9nbpeZypHNpp5ggNadnH<+%o~cg_j*?p#q6Gtc42OH8+cT!G66p6GuPyuUgm5=`9!6|{w#wD^(!gHmZ( zipRY|kU7O3JR8c}*S={k)_Y|OPa4;53iH(>`az=^F^m;21MFXq1=0ncr~`JuNX(Wl z|A>t8?-%Tsm>yUu^%1!308^SFj2!7?d08#op47rK6ZVWdN&%ln@RgoivZHFw-W706 zYy!}sX5(>PobcIz_=FFsKeQytyxi@n0hL6Ckri8=NY>W_&Z|v;TaHmtk!yuI{cqFl z176 zdNF1cDgWbF%Gv?QK@sUF-uZWT|8qaDby}Zf={Ec58${M|mA)UUj(CB7KFwaYU;FGc zM0E?EPbD4oQTER14eS+!1KZJwp-0yjd|aGc=5y+vI7SS^m!s;2h}Yo!KYROxWJX6J z4I29cSj%^^U{;&YbzB-zGo{<@DmM&&B&S%p{uzhA?Q&Arb#;&{KlG6B8h?K_bPmkZ z?TM@2sfj~}9%o;>BpsDwkC;sbt4;aoDf|!MX?;H1g>;L9X$A;ujslT=zgq3=yIybHDLusD~^nV!d)r9u|}PqL!8eM!7+>&&ZY`qE2?F)<24Nk1yIq> zi9ObLW1zV`_|GQv5 z&+RWpXwkq5x+-V5y!Q^I@~aOHQ^}B?z2vumvP9hAR@zxT9IAYr+BoL z;{g$_B6S59EQ&IvZWeRo>lgBAcb;rs!zf39E-SWpyyz_W290F0=y4+0K|WASLNX=V zKM-m(1?v$*RLyt%hij_2TD|()GT^w4fqw)DjYO1!7sW(qf0NGM(K&4aU+T0Pj6!SI zAd*4Z-0f1%>J!LVn8U!xZnK1CSZx#V9nvh4q9AE9Axu^Y$_&G?pBNdZPu`nL$W9=& z6%n~jG_xV34K}Rz>~1ZgP`5ohzAlCml-CT`3AlK z7(vX$UH^{pYhpia|M<*uX>d)L{8|L_un|J{1G_ER(MjDo<#=3A9yOsn7%>kn2P;;! znsDV$jDGX&#rl{`Y{w!yAAaFW>FawHYb!~$hIBfKC)2d}T;yl#F}$nf3rfAcrp9vI zr&TYLK&!AVGD-3D!38NB_@_40ZyY{@TmK~#$Ey$$qBX52#94=&{7=b9c!|D6$?aikQ}gaW9qi zd<`vH{)e%2uz@0yECok{ikTByH|e4<1!lo_r9iNr=2yj`)%W{f5EkqlC(R)qVI$c$ zCP27?hb5$b%*L|$Cqz~J)n}-Y_~1OsTSpv3=%i4JthKt+WbmzsHp9sFH}2C-Smbr$ zchAE$J1R|Nb9q9WR$bI&US0FfMd8|p@!usx@~CFF8Vy?d2U9-FPjQ3el`<3 zYX5;(n3Bi;D96ntDQW#h=G=1paz z)Z)XFB8~L)IGG)dHd{o5E9|#K8AS(=_iXp@;~vME2zZXJ-_w@2(E|uhX1}1?g)s+- zUnMF&NfX|1j9Kqn&ue;&Q-HPDLyh|Znr`B}1!msKr5|CxrE0YJ>?@$U$|9Xh!fEQ$ zIHmtUKrn}pS;t`UIbp0|B1MmwTbdc>fF3=EEthxu^3}ZL6)A6AVp$H+_5Gf@(e`8P z7YD(?=;}h*8_~v2UkH%DRv|yx8K+1)iL3_&=6iD{G%)@oJpIJ6nq8Q3`edG=600?1 z1>zfjx8d*t&KNb4Y(@NyD>7LO$s^L__)$1Qrv@m+d@aklTW0IUOWiV|u*mMos>#I1fAYcjM3qRCQCIgl||P-QBZ6X zFFgSZ5oEGWI=N>eYTQ6~KS9W!FQ3Y7o%6XS0oL6>!s#_*~G$4Nkdyj9cS*to0tS&9=E?w<9Ygk>?PvloHSdvAHB+3-pj`b@$ z(BZOsOg6kIz)IV=Ge#lEFAa!2@U93yYE6ii`C|pY1(KZ_#NyItVnRR~V#p+^Sz651 z%2VIpVi}VQWXOH?c6wZRHT(;p^|YT%zj{2U^tTRJ9pzp>SOTw#Ui{lcHfH+^2y}Kp z1hsV3ZP`xnoR|3kel`=bO;<0NoZ2su;tSg2?D{IiVgn!}8GnqFGy})U=uuN~hpBn6 zxZ5fiLo3k5}^=jlrw59v8V}B5<$Knfo9yviHJ$a-hk-fb-rP8M#$=oHCyt3`5Zi}qx?R(5* zFaG$>N@wxq92v)IcCICruBEeyncNLF!o!bp!v68+JI~-pVNO-p>F>GgY{RWmUEXpV zxce7Z+Br&oXW8(d`SZH{p&jMczE>W*zUeUo7Frj9rKZ7e*b%kCX|Z8U4WSoL%6yr9 zIZmeM$>8waqlPXPx&7siSbqJ9oe|*JJf+WL0W6f5Cn}c8rP=V=XSF85?Cf>kxtikW zgD&^P`IvXs7d_@q`nl6;W&_g@;O*IuzeeyF-lIyIcPMg54sO`5r{9Zf>>U{yc1f2l z%~(Q5G8uCXAq$?adtULlTK)PJawk(tdjz(S_}CHkAxgcQjNQNJupjHZaL`z@a{+|r z0>BARRfjV~e&93Uze=^Y>~37f^V&K@+qP$bisEusR$7_X4?$K0FY7MNx_x;U5v`iWP>1&v}c zUc2e<)4On^o`e_KmuaMxigw5jm5%gS|H!DwE3#f<)pyzKAoolURlq^IHW`pL1Wk#5ylXzV}^DUeQCfRVvd+GzM9;dJOJ}Z?dWX z82h^jm{fh2Nt6rd3*9#8Z1`+d*<08~$AYqn*s)y<*@`0HGp@MKSSG&lx#!_aA0^>| zf?Y!tizz)pQo+Q9*NeS%8z;Y<0Z)$*Q-oMr&#$%3-w7>HB>e4>cR2CvsMk&#B9DTO zjoRP5tm=Ta&7LlZ^8Bs?P3#?&7v`8ILTG!ijn3BAe1wjbY!RnBu#r{j6+K(ZMkULGI(B$^guu~ z;%UaZG0$f@cb!P)+bI;azOwL#n^d^7R?(IE4Aq`dXZ{nFQ^x+OXY0Xgbc(m!nR+H` q>%f0X&9&Y7RsZkqcELFBoHoC>f9;KYdCbM088FZ_y;F7DG3LLi2q1$1 literal 0 HcmV?d00001 diff --git a/src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/VerAnimes.kt b/src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/VerAnimes.kt new file mode 100644 index 00000000..93a849ba --- /dev/null +++ b/src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/VerAnimes.kt @@ -0,0 +1,281 @@ +package eu.kanade.tachiyomi.animeextension.es.veranimes + +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animeextension.es.veranimes.extractors.VidGuardExtractor +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.Video +import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource +import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor +import eu.kanade.tachiyomi.lib.streamhidevidextractor.StreamHideVidExtractor +import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor +import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor +import eu.kanade.tachiyomi.lib.youruploadextractor.YourUploadExtractor +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking +import eu.kanade.tachiyomi.util.parseAs +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.Request +import okhttp3.RequestBody.Companion.toRequestBody +import okhttp3.Response +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get + +class VerAnimes : ConfigurableAnimeSource, AnimeHttpSource() { + + override val name = "VerAnimes" + + override val baseUrl = "https://wwv.veranimes.net" + + 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 = "Voe" + private val SERVER_LIST = arrayOf( + "StreamWish", + "Voe", + "Okru", + "YourUpload", + "FileLions", + "StreamHideVid", + ) + } + + override fun animeDetailsParse(response: Response): SAnime { + val document = response.asJsoup() + val animeDetails = SAnime.create().apply { + title = document.selectFirst(".ti h1")?.text()?.trim() ?: "" + status = SAnime.UNKNOWN + description = document.selectFirst(".r .tx p")?.text() + genre = document.select(".gn li a").joinToString { it.text() } + thumbnail_url = document.selectFirst(".info figure img")?.attr("abs:data-src") + document.select(".info .u:not(.sp) > li").map { it.text() }.map { textContent -> + when { + "Estudio" in textContent -> author = textContent.substringAfter("Estudio(s):").trim() + "Producido" in textContent -> artist = textContent.substringAfter("Producido por:").trim() + } + } + } + return animeDetails + } + + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/animes?orden=desc&pag=$page", headers) + + override fun popularAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + val elements = document.select("article.li figure a") + val nextPage = document.select(".pag li a[title*=Siguiente]").any() + val animeList = elements.map { element -> + SAnime.create().apply { + setUrlWithoutDomain(element.attr("abs:href")) + title = element.attr("title") + thumbnail_url = element.selectFirst("img")!!.attr("abs:data-src") + } + } + return AnimesPage(animeList, nextPage) + } + + override fun latestUpdatesParse(response: Response) = popularAnimeParse(response) + + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/animes?estado=en-emision&orden=desc&pag=$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/animes?buscar=$query&pag=$page", headers) + genreFilter.state != 0 -> GET("$baseUrl/animes?genero=${genreFilter.toUriPart()}&orden=desc&pag=$page", headers) + else -> popularAnimeRequest(page) + } + } + + override fun searchAnimeParse(response: Response) = popularAnimeParse(response) + + override fun episodeListParse(response: Response): List { + val document = response.asJsoup() + val scriptEps = document.selectFirst("script:containsData(var eps =)")?.data() ?: return emptyList() + val slug = document.select("*[data-sl]").attr("data-sl") + return scriptEps.substringAfter("var eps = ").substringBefore(";").trim().parseAs>().map { + SEpisode.create().apply { + episode_number = it.toFloat() + name = "Episodio $it" + setUrlWithoutDomain("/ver/$slug-$it") + } + } + } + + private fun hex2a(hex: String): String { + return StringBuilder(hex.length / 2).apply { + for (i in hex.indices step 2) { + val charCode = hex.substring(i, i + 2).toInt(16) + append(charCode.toChar()) + } + }.toString() + } + + override fun videoListParse(response: Response): List