From 42ed33eec606ff9c57919115227e7c285a2a1d5d Mon Sep 17 00:00:00 2001 From: Claudemirovsky <63046606+Claudemirovsky@users.noreply.github.com> Date: Mon, 1 May 2023 04:24:14 -0300 Subject: [PATCH] New source: Flixei(pt) (#1557) * feat(pt): create Flixei base * feat: Implement latest animes page * feat: Implement popular animes page * feat: Add search animes page * feat: Implement anime details page * feat: Implement episode list page * feat: Add video extractors * feat: Add video preferences * chore: Add source icon --- src/pt/flixei/AndroidManifest.xml | 24 ++ src/pt/flixei/build.gradle | 19 + src/pt/flixei/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2691 bytes src/pt/flixei/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1540 bytes .../flixei/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3639 bytes .../flixei/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6509 bytes .../flixei/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9136 bytes .../animeextension/pt/flixei/Flixei.kt | 363 ++++++++++++++++++ .../pt/flixei/FlixeiUrlActivity.kt | 42 ++ .../animeextension/pt/flixei/dto/FlixeiDto.kt | 33 ++ 10 files changed, 481 insertions(+) create mode 100644 src/pt/flixei/AndroidManifest.xml create mode 100644 src/pt/flixei/build.gradle create mode 100644 src/pt/flixei/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/pt/flixei/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/pt/flixei/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/pt/flixei/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/pt/flixei/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/pt/flixei/src/eu/kanade/tachiyomi/animeextension/pt/flixei/Flixei.kt create mode 100644 src/pt/flixei/src/eu/kanade/tachiyomi/animeextension/pt/flixei/FlixeiUrlActivity.kt create mode 100644 src/pt/flixei/src/eu/kanade/tachiyomi/animeextension/pt/flixei/dto/FlixeiDto.kt diff --git a/src/pt/flixei/AndroidManifest.xml b/src/pt/flixei/AndroidManifest.xml new file mode 100644 index 000000000..4bdf041ec --- /dev/null +++ b/src/pt/flixei/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + diff --git a/src/pt/flixei/build.gradle b/src/pt/flixei/build.gradle new file mode 100644 index 000000000..f7a57c451 --- /dev/null +++ b/src/pt/flixei/build.gradle @@ -0,0 +1,19 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.serialization) +} + +ext { + extName = 'Flixei' + pkgNameSuffix = 'pt.flixei' + extClass = '.Flixei' + extVersionCode = 1 +} + +dependencies { + implementation(project(":lib-streamtape-extractor")) + implementation(project(":lib-mixdrop-extractor")) +} + +apply from: "$rootDir/common.gradle" diff --git a/src/pt/flixei/res/mipmap-hdpi/ic_launcher.png b/src/pt/flixei/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..61d07595c120415cff4bed45c401a797f0a447ba GIT binary patch literal 2691 zcmV-}3Vij6P)-&OCGP z-t(O2JkRHTe=pB-p0gT8U!erFQ9j`WMgd6_G74xEP%t?%87`?W{k<$>tBK2TRzw|ih=+L2=+(6Jk!j6sb-~;>U*N>K#maSwJb9(6&q@*xF+4lDK zYx?^7R*`Z}5-*?%M5SI_fMVNm+t4)aa8py$!h;77Zlv~x{8SVKh`+CCZEd~NvaEZk z1A%6x0-+Lh;zIHK&{j5^T{bv4ct7=Vkd4F(DF~2G73)ZX_maKduHthl0U=475df|r z3;6+EtIyBO!T>cC0p02Xs+5_H5QzLRe84?OfR@prBYw_02#`UQ>s>%zFy0F#8K570 z_j(aj5Hxs|?;k1xIvg1gg~EF&6dqHM42Tidd&|fWl1fc!wqQJsm(v%q+|V zy~i?|1Cw%F4ku|SPN9utfGCQUn3$h3q5$yga7`AtuwBD~OEgS8Rl}|>2M_atYPjlr9kZtBXsj6q^45ME*F9=te{X4O5(Sn@UAkgA zfK*H@ir+cyB;bxKHC#H$z{w5XB?2d}h?{?D;`!Hx=aMP|j#?)XAWFl_qL_+_1%c8i zsbCn_en!W)FW2dFG0PApylygU(|6zaSq{H@qoAOu16Qq2^&X<;IS+~+=KTPvD9O(Z z$29?8JXgmYf^+t18Vt_W-IoUt!`bpr8{b@OqVH&B{ZOiaRN$0FB?2*P3UK3PIzHK| zgB>y}DG1JB&c<(Fx3S_C8}A-SzLX+UUt&OhQB1|mvXqNYI2pKmwvNx8rK2jtR0N0X zSw|Yo0ee5Nv3#S6?e9>i7glIg%tZ!bSgfVcQwQXyB0ts4y->q#GYyPucID!kC>H^- zIla2q#=4z0UfyNnQ2&UpJ0I0r(VWVce;rz$?d*2&_#Z87 z`n!z-G*#q9(Kr+0BipIO9U^@zH>T?>%Q?(?1+og>`hnU;8`d zm;+aBH$6ZqaJW|u)xcvn7H_yYaxj@70sXE3}dcaWjec<3%f3dK6mxCcQ z-RLF&PX|yC7*`#B$3K0BgLO-?sI4jw^}YQL7Co86mNy+_C}&zaL&K8G4K&nf$8Oy^ zB%=c~0l4+oIRdKYuT)J{s23kleSLjk6!Vk3AFK!F>X`Rg18hFxi#xb}r-i%LS$Xxm zcuR(q17z za@Z~P8fH*h;Oc0|bnxVM3-@of(9QQfi!W943CoiN(~J+Owzf9XT+D9(qK~+^19)ap z2KCkD(P|$pbzHyNL@RBux!_C^RTO9-e35 zs`GT($W+=@2D0`~7Vdc7-;~14%1^PZJs8YbrA`21uIk9^g@*v4{)-A7sVbwADF z&wJIwxeQL2`4{_?OhHlSVlsbJMH^{;GGE7+&Nm8qQOSBVu>EZd^B$wz$Y(8D21BMY zAM;ACATJ=9npEa$XMKzp)G|0lR8hY74uy0F-+9)=3$K&!30V$_>aYXgqytC>MWz~W z=h(Qub*YBsSMwC4)M4|rw!UTK#-}WN_)&1K6ID$W0aRUGooW;lLG!ZghMO{&+{ROo z((VsZ?z8ym9DYM8l7Ub;9s(zsg1mszR1)78V-vSb(yJZasf_rHTLa_^f9K z?5tIA$bPKiJ81?KHq{WXrs8|N_4#HZPh`)V!27idK1lQ}t7$?1Zkp|jt|&?tEm4kp zIDJ4eB}IWXmsTEE&CitHX)QF_n`pAQ=?#m-qYSg3hlp96YhW zz-+oL?G5|9sQ>s@3(II8HXv-$jTz2^1QlOFv_&>_!A!-(f_`0bkW<=#^%V9`Z6e3y z$%|fn$HEP3Oj6VE)golcDpr<0Aeow?PDl8DJ+C}|5SwmZnt?IP9dM1++LP|_$C=0HX8 zyz+R(*}z>_8aQLDhHg^K(>rXe*=FM~Ey-304mX=FAQd%5H8HV%mO$|$em^hKrV91n|2CNjI zh)pB|L@oK=oA>La4Bl}FCz+FG6H@_{CK#ClQ&vxGK%9&;5THBholAZ;DFdP6FQTZZ z0x-Ny@+Ryb6-%VYq4E#Z(UU%N>HPsJV^lgT19+Ul;UV$Oq@`5W7eALh+#C8xCY>~% z!u%TAhIdI2AQ=>y@>I@O`Eg>_*-7Wkr_x1bfQ`i4PUu6uRGA+G?;uF4s7#{I{4|BT zcoWzs*`Q^|V-8mJG&U=Sv4_eMDs&G8JQa@gP%mGM&5VIGQlVXkm`+NXNbhx2!obpE zd-y*XP#sAH>ajxj;a%D%f*n-;TZF^k`F1*VphdOtCOX8SS(75p&}y1x3*AfD}oXqsU)SXm4f)f z7t#u~P!$PUss0d4eN-#;M{Ct0DV0VVR$~)mO?Kzu_wCN?PA2oXvu+KA4&0sDoxAs* z^PTT;?~H^C{E#ki{J2P9rWN#4fbYp>n@OBHP0r151K~=bqoX6PY1+2Q$;mr)T~Atn zG>rTh*4cjTyeINKXgt0zNz$Jc6&1S)Pft3X9(R&(BM@nAZGCxseEgxH2}B8qkO>+q z9*@5=Iy$<6`l)sjZUo}Z&CNrqswTWFUk*S)fUW!1T#BNMWHOm6==UiqI0^9gWMgCF zALq+$f`I!Ohupc5{y$=m2PXjz+6E$!cJuR~$^GJ^9I6q4Su_V5mxDTYxDrUEQfa3G zZs5ZZnh^q}s$eH3QTEd*d4(b1)mK=7hK7cM0zqlhRT)ZuOJ+-W{AL*~DG9s3*0B9! zEffj2aYGXbQowDJ*_QxMuaMEzA?K=KzK@RUw`K9;Z&T|?7*%*2VFJlyGEf00_@-Lm z(d7#6SR^49q0lmm9v4tmGqAWngI_89!h*KVGUdNX&4^$ zcO6k;!U|Xf{1oWCl7e$h1ai*Ni|Z`%Qyln7$EFW7{CvhJ+q%glDds|Tb#;LX^sbb# z_J+t5@W+R=9PooD^g;-Tx{RO-;RyICuxyTmoexH6wOI7~U0=c1nU+v zVgwS2M4$pP0e^qJg2ioCvIN-gyPnP9#Be@XqYAL}DhZ8o1K*xB@XPRjj)iapoC-KI z(YzMmqm2c2rIw?b4FTsqiJok z4t#e~!-CeLGMtu1#tmHEn;|7kT^w6fza3y`0&dp#a;5re;G5nkl61C?Gow0=kqTXN z@-gt&gn>0Xv)F$$d>|J`6^wzJni}6M78LQylpIl!4z# z0T18yO}Qlz2%`W`P(j!a^hD4;%Pb7!9%s)PSk#|IddwCF0#7#F3>3atRNQPPd+l=-J@4j=o5)iRAMkujEQpyvSOs`=E(Ze}6fB|KZ@Cf|x6Uou+`7mK z&TYTpHE$>ds;a6=Qh+B}*aqx-B$^{*9Ro*H-1BB}N9IK&0KB*Ym6es#(x?T-Z+&C| zd*faOs}>Y%0RLy@^I2Nt1?PX8_qkn)xsa1UP(gEAw5ZvI0%q&l$wa}oB<}xB6+jwyibD>x)Ry4Pc`iLWcpq~!0Prc z;R%SQQ!iJF5qRG8Ok}6~en{}*E)nMt6sh7n?nI=55f_XD1f*O@>FFl^~8HGVI4mfAVH^?3-d_r&}=1CN^EXX=eU6JUR568v^@ q+PmVJ0w!jEfnFC02pH+ScKH`O$nAWrVJ2545ET0rV>I0HNg;~ zf>fpCu8yf20iwo$VnhK2w^%uLxfZ5pI`7R)@AmX`_y7Lxzh|JBuIlRD z>GxmX_m2PS?hq7?ydn_FYw3l;p+G>Mm7qXCfq*Gl-9UXpn;*+?rQeS=sL9=H{>A?-%flk*9VdK|}!g z{$f1KYinzdpxES0k_t>sHmv9rKRNtEb}a$m)&B4h=8Q~!LzbUmoA?; z^<=yR;-Co%l1xtCiA171wy_z{7B@G zWK;s`wX8G&O_-hnu{sL~8hlZM^L?L7u5tpZtE;nIkk#y*%u+^9)WDz#5S7oppECly z#sNDZg9bO~{LNSdPJoOn;xycgObELWMPVH@9BanYLmjS$I$5P#dYQZfBftrGCyn;1 z>28EXaCms%fDn9RP#C&*1ZcuAx8aQhEZ-T2%cgKA0~kjEWb#u^K&MWf9AkiA@VSjA z;BW33f;nR%Fz9pmk7*j5{#?34gP*L8w~qT|0OQudEzSk%f}9BO>xwuHCz%^-ba?cx z2;AL248>9OJy~lIIQYTeM*l7b|N2njT3Orp|rx;DH}c=iQo#)i{1cks#GEZq@@7qFWt8)*G#vr$Kpg;`vY+8}Ia0bbqFUuHz0e^2V+ zm=A|_Yt-x*PV~I~P6Fm{iKD+4Zvs;Rw%?k9Bpm#7-Ts>a%33V zZVhJY#{qU0AOpO)hGPbX;P>B&;$SPQ-mQ~tl=s{Xsh$p}x55FEBf}|+Nk}jjAOc+! z11LT9e%4Kk!ocfH4A^ud8=4X@;^`QiqW#9^h+!ie4$)SS%;B2|C@+La5TurX%F0S# zF~Hi`p}hdsOf5={d~N4De&oNxvayT^J8$ZA+rbc<$8c66QfYuA(ZiC z2$glVMTcoCHQ0?>todi^o``Ek!3jDrwtE({&55b*V_bFlM84(tHZmWBw%PSdUnKp`g+@eIE-72 zy(gplWa3tlpSN{uIVV5_I@cB5c2fvePl-a2>-H1ug6`2^Ag&u<-_=5vi6~kv8@*72 z4;s}>UvsR%V!LW%fY}9c0QcgG2=_HVh`{jPsNF83W9s8Sup|bL;6|+>y~3&BotCG% zy@_iE590#;{$qIqpPH|h0DST<&=_D4)(4-gqFzpWdNeTWXajV^8yZYnimvGMA@~YT zMO5R`X43^7c7LG5tN%?c;#dz(FNmw@3? z_DW-b$SNvIbl5sG3iVx_dpeZI{$mLkwLnWwMXU1p3c#l<)Vd%J0bI*)lQZ9Y;MUaO ztaZ1XP0xt7q|=7nmv+ccH@8L?!Bm4tS@LQDT+lgFOG|Sa0}N6K_mz|I$(VjL_0Z}xvf6y=d;;$LO$-j5u+Zc%pyOHzM}e*w0=ShG z$yx7z={kUoI0IUooT6~pL5IJu#{HtxR<*sJ$ElngfUiCX+gX4JNULUuh~ghKT8gJL-1ehOX)g zbGJ0x8g?AS!P#?K)-q&{!B=kqvIK~(hCQW0i_JqDZk8#k7ZZ3xELZ}( zR92LRbAR065WM(ZS~+ujWECH6T^7T&VEea5a)YoW;K5ozyLRmYivc2cWCpAh2WK0m z)06V)fb0-I7Qd#!6Zq6Trz0RD-XjreEkK3a>vXjlCLNyIsKL{l zGA$rSnjee{5)mK*GXoyKJtIuNb{cNZ>SOJerUEZ5#(WhQUTXl17UfUo+kXi!p1=V?r0Zu^DuIO2~X3+OD z^k6r@;ZJo~fv+i8zB6I_IFroSL;`3h(fko0qg^6dxBGN2iojF%l;(_@@R8L^>GuWY z$?cfQ$Q=P95IH>&85t2Nb}A`b$1BzXyf%cJP9%4gfKU9XwE%n{vUCg(fhiN9y#Oy7 zUntOWw=D8QfDGsyfJFIS0lq#rLD0K?IKw>%xAktzPf<$?V?&nbRl@dT>efnraB@*yn`fta!cmaWv<|@*90~>m>nZC8- z`|asO0KLAx5=X*+#g}J%K}KtxnDPrcCwS*U<6Daihr@3pR`dxIdS@Jcz`^s|(`llm zBy9oH5x7}i8^!^h3oJJ;uXR(E6JKA@FuoyEh8fi$vm096%Bl#6mCKimLLiEoOCqk^Hif%)teeD<@NS0I~$~ z`*?1|a~+h>rh@g+R5h@Nklbe`rCL5FWk?baJ;w!$^ zXT%r@_*!%$5)*^O7hu$AFi2QL2bHIeFLVZ&uBx2V-8EC)Q&sn#TerHZneOi^n&~?C zQRn=1?zy+_y_JIMr>cPv8c2mmTTNQk08|00LJ&#=Re(aNubQ|DP?dpD8mIykN`2MD zRe-7tgwjA2pit_oCawZhWgwIWssM#jUo~+Rpeh5QG*AU7l=`ZP%K=b1%BWg0SOa!c z3es&{CqMdj|KF**dg8>1<4x1N zw6(SMYj`xZwY35Modbt+;f~@sX*jY`8=g~_a>yb;kjZ2KZ)#|0XlTXb$(ov)TUW1M zy`lgSfu!t>Q~`3slbJMW(g{fR4O_Qv9n#+3UX-VwlDLM9TApJ}U3KAgr zXwar!y?T9X)v8rX3J_&gAyNg1Vjc24HRHyO8;`E>euQVwux?kEVUm`QF5{Q#my>U) zPKFE_@;-W_Q`W9s`zoGmcQt8#QG)01DgaR$f+sU<*sy**d-j~y($X@;vYY_Fvz$ut zKDvP87?dOHSHCcM7=}Tf=ux!WrJFWw`oIMdE3j4pC>QhKQ9EkXs3Ujm*s%!XogT7x zN06~}88Yg8!Wb?|FA?ypza!v`1m9hfO6gkk9rKm)?=@$QRJ3o&U2L)wZe6H zlqmDyUcaAy>+0%0#$lI#EC93vzX>4f+Dm;n0Ff+tAOeVDo`!(~2W|`+=aB)2s|Zn^ zTo850>&Qbz4_@VR>O!&@OhY!C9g5|*;z0mWEaVI@3L)YGlfgPsDz*< zEl6p)6si+Aj&XF>KP)IBPl!FSy-?Q1C#$07U^#xjdFg;iX#DAz$u1+~pxa|4;zP z38W(dsAKe*;K8F2Jy5e3q9S-yK~TASRnq7%rl{En1EG%kc>qLB7{x)(c#u?2j1vP% z0Tc&3Iw9farNfwU!&dM>1Q2;38V@SJ2MP<0s#j7OchZ@L0}w~HoFK;vkPJAEyH+ur zD6LAKQ5uqKc&>aDb&n08{{8!V#z3;|y9f@M^STtuHDuKCx~@wmpF{&B@=z)sq?};M z7{GnQRDyhI9TN$V2pmz&BRa1NUL_c~+}oej(1v|;;> zJXEr=URVQ*^v22GOEz|ZWZ{vK6UnGFU9xHV;PB`P2c_WDL(;JS7gEqzXG7XZx?Z$b;&iSPvuvkH`R` z^P)1m&Qowaav;F8LsM}4SOfONIHxAeqWI3Ce(*WdEKrsMbJ>nu3?t}J|xPmba;ysmN+0T2fo zkynw4nMCE4p6`uQ;Evcg1!o^-z=V+ocF#Q+@%22#@X%k&)|fE+ZWFur{;Obg893^E zVh2cM%u-Xy$ctoT;tujH4LEyy!iW^im}tQGeGH(U7OwX7{zx=k4*Wk|oP`^o;xF5l zskf}YIA8_I;yIcRRQ{*&ef#!p_A!O$&mt&fJdcd`qH-vtIcRUlHC12R-+%!L2Mi4li z)C%Js%6~ILbJ;^#c=Gk#1D=9Tlk0(W!6V9tV&MTzHk|yW6imZ`z)^#-XO(fcRRJq@ z1>T3srry@Zk8HRO2N8essts*Eu@9$N5qVs0UaInm^gtqmb9!1L&(jyFmSO zaKO+M)Z@TlzPai!k$+1o0net7ZS*)6Jh0M&HJfoK0-Ud>YOJvFO^_})b#lul0w4}B zA|PbpqMp=2xFF@CuNW|KWC}-+Y1VBQ6Dh$%*VDSoh8N$m;D7#L!b@-CTu)kZM^O}W zvn-V~+%m$*#|jV^9Fg0WfhU8UjKQUF)5jZd{6Pj#7d;>6FyP5swQCCejmCCfZnogT z7fo357aMjIz!8DZHDXf0iVYxKSKaJ?dwZYZ0Ouu3y{jo>Qt;iWX&5mOci-}II(a`4 zT(uH-=udh?@x~?#9(l>cho(06vgD?4R61CR2PiBw4hiIAjvk$Y>!zn+P;cy(`y#>% znCVIT`?!;Z7=%rqRh zS5PmkK!_`*p>FzYJk zDs<-e6tzjdQ9Gr79;cyRFfR)q(JnZ?+yym@-s{0s;VEMi<$1L(-NyqEzHgz~-xR@T zWWjNAamyb!mPVs9ovSE1g#ruB;=tj5Ki&>^EVFZq1xr6(b)qNxLva9;=2AD|>_!T} zKSltzZMR`7KI+&N@MJ#8V3k~JWdX#2$4izBdEImaPCVGvBMY3CkuznEmyI7;aL(OX zSoK~pKBeW*{Gx+#M&p_Iz;^7g6bwYqSBLY9D4uG=J-pt<#~n|vvElv~Ecozq-lLBM zf|Y!LIM9d`Oy`dt4RF(p8W@P4LHy}7FnOUnmf`BsC01^|yH{DX&~V0t6kIwbjo^4c zbEE4aZ`9mk!bSI)_!tBq#+G#&o%XiU9j2}3+<0@Ji7yXc%yN_VerQr%zK_`$FZj3HS_L#R6r;baPa_y?+R-c z#~=O@9Ps>PhxP-QHz$KL6a~w6imH(ZVC9=8oPVzg+i-A^R&&fgJO%%8Vg`EBn?QU& z{@whKTP-;8#&%e}v1?-8@Ms3B@&Mw%6QnHaEzLs1Ux9{i3^aU)59_dQ8_s#A!NmnD z^2>p)o@U@WvUKkM-k;z{Cs~ZDfAW7>xOu7fR9W9#1A35U3dEBS5EmFu(>Ab|4R@cD z!40821{XW5=55sH{@=pqWF~xyJ0#zAZaTLJQN{bvBqO@UU#~P_?gC3{H!~G4BGQWr zaF}Ou0g4hFN15a?Xk(~r&&WWpdfw#vPupzx(PQ+a-hz4OWpeuivAs{hgV41;{1O8B zYcsd>M`Uc>0I4>Ui33OlnvMoWI3U<*UUxZ7*!{k1b{Zxhz?&~bd92%F!Kt@obMuXk z9Ya03QV8Xq`cq!>o-^Tl4_W#5XbY}I#o)Tr6to$S2f}x5HV627=~E&_muBQAf5>ov z2QJFwro8%Ypy1BTW#9!kp`Hd7XC2Py(Ukx~vmL+tU_0EuJlOk)u2&}{qOvL)AjymC zjA8_LG|gJP@+1R$Q)yh*EWxiUzfW3ic>FaJj>8S7`ZYPt7;kmQh7TZn=o40A)aFEg|`YIVW4x>A=vqqz9EAlqz%;;ekX73u)6iM%XQreP*o_xyf_e({WrTe{e}4LK<$YQT9y7%Sr{R=`PQ zof|KNX-Z;@d)(@(EP$c}#~pyv{ON1Hk%r?A^cq~u-K(BAB-QUvZ`trKxD;qTdK%SO zO>~{A;HjnyxQ^rkBvPWPab)A6sbc_c#+i#WIjr*|=%S+_d7dBRBaYjadB1yBbX{SL ztddq#A3+?EJb*%8knk~pY|}=Q;;+KN#W@{o>c#LlLH8z{KYiAnS$JJAe_FOKZtv)4 zP!)I-KI*at6 z(oItXm^iGCa2)vkIzWHnWwYKYWd8DZ{F9AJDGXcOmsbA&a1{m zyA41h<%uqon?6XMy7db#LN7EF=lqBY&PO~QQp<7v^z_?I+}W%+VORsJrswLVqGBLj z7st&+72p zD%&NAib6PP+_KbkO{L8laQf%{1t3c zc>sk`1UGG|JiXSNo{>$%xA}C=e-;lgQa-CUT5#??__Thj{(xF^U83^};5bPt2cR%Y z;HC|dACK>ZUwCm1^zPU)SPT#a)f5Ze{5SX>Djd=eDjxP?tL1fauW^@U1&T2_2|(Pjp_!b9GCAWE3Y-3^xxMd0Gmz@WM14F)C=&*F;K zIXJlZeuzbd-4dX>y1Hf=7&tOq2;6yd(w557BaS2Y!x!4kz&#h;%c3RLl)bjWgju+C z@CJO5i{D37H_>^H4i#kM@jyBN3Zpn~T9G{MaCXhHUhL6 z$Ar2_Bro3a;;XU%5*bo-2dSi&O*0a^^^aeg0h&A1b)TRjf7kKH{N-7gyU>DNuD3hO zHc7Je66qx5`N{xDhq6@ikWJ&r&BAW|&%Tk#ZT0K@>Fl;sSAN>9?XY5fv81R>(fN=- zaFZtoAl-^l&5x6=RF>^WNu8xcMmyw&POg z3Tv`Tx!ZjJ;sC%6SUK{vYdvifGwsk69KNpsd-sRjWc)3kSn${PY}`kPHl(uQ)5?d3 z)KZxMg@HxYQ*p{9S$aZ7uX^f(%^GcnPu_-J*y|3MW%87f(bOENWK%f+=}@Ff9-K6? zvNCcqGAb6=oF>@-=~SXhUYsdXBuTtgKu_oi3VCjxs#cCL zU1b2IOVO(NaMDF38zBT?vQ92Q97D)xKqWtJ8d-T+IhpHb|KWQ*Uu019g$ZhDS9M^@H)36R@8019gyZu+R@699&670Ln-J&&fTdboxG za36SR#3t+w`j)LFXFNqVPc8)9rcot-*}5l0j#jmO5f9qH4`2KVw4EruZ_#^yCu+jn03E(-*RJ`6 z-(>47Ef>a+Drr^HNMB4c1>4i<^aa?8EG+;;vzu_9Wv&T}3?O=$B);M{=Ys}Ok}TFL*Pcr13o<1}9ckW}-f0uZGkFGO(=b>|7920E}Q z8;{?!(Kr*3A@WYSPZY)qlV_N;YW7N0DuU#BJScAc6CTuTk>{b`-QFj1fZPx{@eqCQ zfgp`UBTdHtPsC#o9_(=kSb&GXp@YVL=%A)c zy7{82aGNkE4W*-Cnhx?r1dschey3Q84w7}sQ7MnFvT6#)gU~k}1O+usbPy=yZJdMt zroh>0x}?32DnL#;C!ls9a+)>zcHklz2cRlEKp%G-b}W6D%vkquVRE z17&yMth=1u!?fkQiqe4E{deeEMC}=(&OfvQx={w9JdK~8ss`>x1VwSFRe++_orRQhtI%g#!S<6IB(3SC4(?e+>)c@%w7U0TTci096H9 zT_4lmCfJ{h73-ziMlD&F6XO)#slclu0jQ9bFUt=ca42YrMAnKNL?oNIcP^ExNErPg zTyY-2!3s#Cm4%QuzzIVMp$yoBazZs)yr)?w6+_v}jW<~>dW|=0%Z(iu!YL)Mi%PZb zg6B#k(TCWoWpIrc=DMx4V{!}tD42!8)()2iVta6?jgw2r&?Td8#K0({t{?mg6%Jry z82$odgA7})Q@Yt8DtwdEWGYyb({s5bQj9X8A?Xb=a`5zu`+Oue2#Qx%hYkhTd0etZ zXk#UsVH{A@=ZnZPx$>NG0n03j21+b*n$__wjLn-N{O` z!+ew4CIG#3skmj`aE%uCI$qpaU0o%%p2*QGFJS_Oz~XQXvgV*wvT#$xK=`k!%MPpg zA8#?;nm0LAz)sP48Cr=O=5w?K0ZHO@b8n1R1uXhwUsSjMG-2WU!X)?P<{*XtxpQgP>;WmKrk~o0ybzZ&q3Vol|=+R+%RbSqkL}JFj8lLn*Gng%Fp< z``_Zf>t>oyTmOtV7b2V?O^*2+jdE#$p;W-Yb6BQh!_t-Yc$Tkw1Taf1Qlugp)$?K{ z9C*K5w0-sZC}G{};-M(`VoF(je)x(0bEuh$6^orKKkEjotLBhhvRCbu zydhgi`)1X+-KE}#vVze0?Ey%a7hz02=@q7dm3JGg2$xcTZ}dcU6g3E|7`(u{wQZBb6H6Q$%ap00HjJB-Ne6&%Y{ z{l)6q93YOxS11R#g%o2lKv6mPm+HVC9^u&iWMdc>d^vl4>L5zw`@vr*G%!met0#;r zGup|{_!wkMeOHQu9gErhh*KUyqCEL1!1!wqR!~I&j#yUh+eds%{$>C!feXPe*!+xe ze;nOQp!TUGU^8kBm$pSlnn>%jv2HYMGJ%9#FMuf)zy{9*sSbadl(hXZ1>4;x(bqoJ zi5xUbAybZJUx_YIhlz+Kx$LUW56IG>!5lE&`fiaj2!(T6E_O}my_@Z6zQ*P^R`%Y; z>LeYvZ)J$HP}lkvm9o*DsY%EaEE~BzOG^oMiKq~KnciQ^&NkIIROjZCXytu`F9|}* z)Y_5_R*o>+sirwqyvuJ9ku+{%q194;(G#X&r0>o3sL!u&YvrH_HOr>+KG7AgrFY7} zxQuKF3~U@7%kq$=k@^UbpBX2Mgzy)}lRU{Rfz*%Ahi3%?`>3F+V0{#60ENFO9{Q08 z;WAIQ8;IKutWi|idaohOvtQZkXmYa5DC!>}D)FIJu>})>2PH!;GeztB+U>Y*nFHd^ z$&q8qB<2eGIQ&f|mXuB>*|k+zyrbORe@;ov1%JEt64=yQM+!6lR(WKSdXQQSc@~#L zc|QD_JSXL*-^otI_NRb@2n+h%^~)oeX>3utwEnYhOm*P?{5@TvgihyrSR2=;vJC6U z1vT+k5Conr8cGKU#(3U-W6h50+n}V7O#Msvh7i^RC`2m5MtT~ZM=viRL4L~P_hWch znO^(Yd_G7s*byMc?V)QOiGjFZ)Ql=Zpd_b}1&-5`ODBtdea7h8-kobG4Sb&4*Ps@= zvW%l1kjgZlf~yOS5m<#|mH>-IW|A?NCHJ!~QU6vOMbz)akT9u?NOLq3fBd(|47a#W z-fo?aqsStg17i4y&8MED9qx1pf}@8QnF+e@x{Gn?m$DNvTNe0{fVRS=d8SLAmwu)H z??!C>;hubow57zGoS~YWjo8vBvBg3W7=IabyJp?2jOGgWM|uH!w4XvQuk~&NPQiQ# z-p2dGKmE60nu{YEt^#>@3>~N=zh_SUMURCnFb=OL{6?(JVb38k4(WpWU=QM6B)M2a8omZ&f%?Vxe zoFSnRV|?Q8^cmyJrlm9&%D?gcqT?+tjtk#k;Nw9X2?*50uP7;z3_-*?;i8~$mDLY^ zZgq*5ZGkVU2FUCvVkF@inJ_(8dITG-c56=5_sTIe9-`j%%ZyoAK9(6cAo}?V!;Gpn z(^2ZsHzVm*Ttsp9jLWbo<^IgBhbKf?=Pg+G=$TnotCOdEZM=i{nn#PQK9Sa!)JSHpaT)(r zc1=)~V5hcM9&Mhx6i;`=)i&a@@WLf;R-8u9Qz3rMo;SDunXgK@^=siA-Jlf=_>Jc) z7nBy|q8XvLNwNvD($FZJ@{|;DpMm4Dj;m-;_s-AyY8P<(>qNE zEwyds$8q3sK(?5MFA#aEL`mSt&%*F2oL52oz zYJ=#uWKO{DaesvRapwV|n>tB}#UF^?FlbHdPn4S!O`ZEF|L0#OKBkC!2i~!;R9xm9 zOY^hF`ET0Ux3Ai*m!Ds6&Gn=9EbBmpT)>sEY* z5(;Sx2-WsUttZa-z!Q6mNXGNNZGJTAr?t?#+r2f8&RkdTJ^4y9b!CRTRM|c|NYm5H z&Yd1FpW{czIm&B0*!8)|3g`Z`3NN;M>jN~ZC@Y;3rP{-Jy0hV}O@=rS{#fNgS*iUF zO)C*BpemXaxTQfB{P==hO z_mcfb_x#C~dftCJH*+L-i~p=3tl>n$!waK7E;ZiASGX?(Rr5VuN9yg{@Bvs)^DQ|p za%EZ3K+&jP&740FD*7mF#&!{rSd+l}2<0!2ho9)AI>&_iK(VYM>IU7hLeoL;hE!FE zq()uZT_o*K?(bGFj{2T~9VMoQjz0$oh)jWyt%BX^2& zrGKk#!u0Md{0apGgrAJ_7Vd4(8FyX2$l!fipMNZ5N%b{M{ky3Tiyu${r@>p@2)Zos zd8qZpIT876>Q;W06eb-t_`pl2mnHQb5SDxmj~HpYR6FNRs#b)m8fM{<^9*qoF;7GG z4-ac<@EM+4YO?k3xI0UMwclhfW0VYYJItMJBiL*n=55?vMrzT00;Sdt4qR;#wAMuV zR6Lg^XRv6EsX~!1^dG7pT_Tp}vTFj!hMEU{cQoMW^KHb;$el8}Aiqc|yXW^Xoj*AT zWy&s$iJX;^hu63%d^9V5@}~?d1c6hD8&Gun_NH)yYh^umUUIA;Rpi6v**R0dU5k^C zYlSjwx|1^3^KIFBnCkI+`N$b_DpSUnt$x7xv*fc-g#jB((8_H#m%|z57o0g4UmEU? zVcfCnmCH)7u?LJUUA#d+<($zDy`VGwaPzz`LVemUJYJ3Ji~-(jMuYP7NTl|lSsT6W zK{NLDIFI&G8#OWxKh+-TN@+qo1%1FTF1TjdX=Ehkr=5BV?@gqkD?lKpUs$UURfuqW zBsVBa$ct46EqV=|t*t_)IX&sI5G{wAiI%bZ31Dnq5)Mb}l=U)tPIW-pD5 zHNrghU*iq$CJfR0z6wT0h-_WVD+2_rsZq-hI^p$;M=tcyt5lC5r_G2*5zD-*^J744 zrrZQCCD}>f#y&G%7;|ZI3%|nHXzfE6xj3Y0KhrDk=H%_c1m9wd zP&yXnh)NT%ZR#C3Gc#%o^BypYP^)>UJcd9L-CK|61O<(p=Vr=?>%>8mNTk{9jc#M- z>LLd$!YH>gpsDpVn6{|YO1SsWK!({7PbxI=}!LQ|Ve-nYSPakeA$cu+`_a?2SK3{w#Ao;PQz58Vp0lIFne-%xpN+eS0`Czf z(|?T9CY~M`UR+~x2Vt;-?B+ZJwWA$1!#Ip!IO4==oywCc5WF8cSNHQOM%#DMnxwNb zp}()1DA{i6x?Q*p>2vqm7qxV^i0gwo@W{SS!@3VUD^=`3c!TepoyibL_J28_nMyQ8 zMR|LUjbtDZ3s{-hpKmI-YC;K^_-TAV4WNq9lhiE>ZD(`7RNTjlbsVbLVrRFdw2S5SfLOzkwQP# zBO|ZGN%eN-s+&50$_C~gWPtUO9Cgs)5pbR*?#@T)9T*h!!-BM_$XITbj%Tc>2`NMg zOM1w#*nIm+Dmu1&9+sT0&<_f8xdQHPt_W7e;C1|INjF>gV?VX}FwgrFIawgZn5enj zoB(EmT4}EC>Ypv^w8V!M8xs$n)^zdR%5@9d!|bXdEJ^mMu`IOu)Qg4?q*X)g& zs9{{QX*ad)Zq_YxxX)hz+Ee@N$SyXb+@3Vvf8hHQhmP(i4q>wxLeA;YHHsfC_Ewfm z{1T3r{iord-nx{5f~MUkaDAKh*T7t+cI3CO_*D;w(=~oPqAwZCB(k$o?+nd_%jLH# z<>F79kKsWh9Xv`zrag3K=czO_4S_gX%i?H9ThCP{N~Wj~kEw<|-IZ&;oilK2!ZKI> z-~WPNEA>L9RprJX5>HmbGO_z zFRW#Gp+5VC65~d%!s*x2q6T0C?p@sr*7@8my79GXnv$L_gtTB4yj@JB5S+K1EBWW` z2LYO}7b1^KJFU6!DkH0W))}I|Yc>xC#3+LI@k^!=J{AGrKjDwnZLAN9eruB~n_B(4 zU|rY|s$IGng3=bCpG;5JG1P{N8u2GRmFWn&1AoS-NB3iYmPN`3t>kR}L$Wd++bFyr zSUSK|XL5~iO!0lhbM8KyYrG+-undbDu@qi`uYvXu7^BY<6fP_`Y69`;{^4B;O;jCO zvNf5$fP!_Km+vtev;>3Va{KGy#D7(K6r-B<&W@(K#5+=>{`r(|e)isWrPqF|#0Goy zHq#Ai(qIXBqS0i+kSPi8Ee40#fkw-h^6`m9npqd$8MU328Sz-o6`!4#9froMPjOku+sP zvj3x40`+Vu10`S4`=`9vTRrB7C$NlZZtjF@3nV4y=tWVSpTljecQ%mr^Nv=b3*e7#rY@<3*!z|;2yl9IR-LjUo)*isvISV1C5OhX?_;$?WnG;SDI{C)vR2-`*;6f=zXgaQp(Jhw&U=1 zm^JMW_C2auMwW6^w^HDK!CSLy$H%&}U#VHpXL4s*cpK40X+868x>dc4H*H3>(F&We zE=l9^sK02&rJsNF)pLMCNfbYIb?;z4U$o)^QlXf*Z*w8%*-69bL(jYN$ zakOjv}wmHOAjfY6aFYp3h~(as$f%n-wMJkRi-zv7N-> zU+J~LeK;_!wh`<2ZGiJc%BTRj(Z&_fuv;JF#y8Wvo_jBfxge?ctc`p$&|{b>t)6=z zO_o_=rB+7v0+=37q?ppxFGmTGHJv{@Mn{5wc+8Q0a6@K{yzEu?#4WHV%|LWr`O#;e zt5`XXs2(cH7YbrAltW53G%i&)gYhQ_w8aaaME-42l%u~b)#&gQzgr8B zPj-OnBd34Wa0aaaEC#`*&S!c|LLN6$QxT^jlE^lJwZ9BO_=Vf&v)2;Wxe_$N^6ef< zO;M~=Wuw#li|Kz}+jNUOUbbdC<(OwlYLnt&v>a<0XNG;$TDG<4ll_~d9<*xsC)eHr z;{=)WxeP%lYy`PXXt#gNqT0lNIIRMq?)mUPTv1P$lno{jsGKsR@TTn=x6K*Xpp17a zBTQ-bHS4EbUQO7OQ&Urko5l$Y*RPk+hc4O*d&+>0HgQ-_moM)tdD?DRu z7$rwc2dPHN>9vjKKK8_&){39@H#hP3fhIaw&WeAQKUW@RP<`3Oj`xT&c<+-ZhzHif zf~_-BS+iycNqkeRRrap*HC6Bg_plKQe}VjqFP*&1mHO4=9pacBfzz3wX^8`{p>m}b zEyZAeE+9*}s$1z45GrX>;ZI>2Z151sMJi(< z)OMftUHT;*Pf2dKIZ?Y5jbf~y)`QKRK=Ex20UyJ)?n9F=L1r`0rkLRI8=Bk}oZQ5c zrmn(NI4)ztHB~eHp2mzI)R2@r8QI2mrh5VH_vr*JUk}TI1EX|YVbJx(!Azpv%OV}e zH(#PF3|(LB-vzjPAEVDGM>9XbDc^KiphxtKm z0=yoV|9-Psn=enrSHoFRcC2T>P~$-uEg>rkkLrrSy)2JK6olikrY*__2{K!BmX)e#{>aZL5sg#>&n5X%eZ1qCQ#{>DLVW_K1FB1y zWLDHi`U@%MA1TVTOK`xUROl9Bo1WxYX#Y(e>b;@@&!znmlIDRGrB6ykxOLB&MW+=spCK>y#ldyc6QzugY#gC^kg2+L`xU*0&PkU=*QSX z^dLSOSl-t-_ltn(6-7lKU#IE|9we@NjNVTf&*>zsIkyIERUbKEbvQ#et3+%4%vCKl zUI)KRUSO7Z(kogJW!(vFrF7chN3Pue$V{(j?KRa*wbKMc^r8#>G&gUe%czz0+oLaY++P|Y|8aZTdDpsmCHnKa>gSK_UxOu*66@kutullM8xBrk)u zZld?tw1`0tUp(Z14qRF2$TE-uqYc{p7tLHP|G~;I6Oh$wdeRo;iTZEi2ifwJ`gvxV z#570w#%O$L*Sp>+S%X2VEp2!n=VE#gv1HKJbsV|d%Ogu(Q;4l)#4oiGg@pB{psfQ2 zPNtfvr!p@%rmVjdw%qn#QS&mv=f|v@uoK6uGliZ|%^oMR19y+(+T=P!DcV>FJ#$%j zpKg(AKuQx4TAh;@F&Hv8onlJe`C`f(s!y&;ltw@b+P4&5`vXF~;z2|pCPR28?NP)D zev1zfY<#1ZyTdc;iS{)4@}#vg#*HXj0y!%awjcx zz&du${OW4kNBZwVI9Nh6&!?=Q3kiYW=`gQ8-_cfkY7|@+(V02c`T;dho26&bo;^O{ zO+Gj4gwMPwH}u4}IabndAG^@-{M^6iK)rx$54`3?KF3LUkKFmZyos@0bc}KNyIi*#y&d z1-u@qGz{JXRXqVegFZfN&ZGIMz$+$8P*<-VC?srUmZqK66P{%DDGcyd(=__PbFpOp zJX~A~0zyyWF{e3CURi*cs+OB z>9@TYpxFkj9h{QiM5Syle{mG>af&LbWXdEK2i0xuMTZR1(6fSme(Behl57@&c+CAO zTR%8GX_IcZ4tDqp#Hip*j+f|wJE$1S)kVx15)ajBG8AuS2{kiJ5*E4AG z^N<hajxkQu3G5bL+Yz&c|1nsz8zWw(&Ff7Ul8vY(%4G zzl%J>Pfo7;X2eF> z3a7V}`a#8|W4#Ih}1Hk-vBsyw%%E zB7o*IE|8fN#1N^GN@djf5wBlO6dfB7#eKR_{a().getSharedPreferences("source_$id", 0x0000) + } + + // ============================== Popular =============================== + override fun popularAnimeRequest(page: Int): Request { + val body = "slider=3".toFormBody() + return POST("$baseUrl/includes/ajax/home.php", body = body) + } + + override fun popularAnimeParse(response: Response): AnimesPage { + val results = response.parseAs>() + val animes = results.items.values.map(::parseAnimeFromObject) + return AnimesPage(animes, false) + } + + private fun parseAnimeFromObject(anime: AnimeDto): SAnime { + return SAnime.create().apply { + title = anime.title + setUrlWithoutDomain("/assistir/filme/${anime.url}/online/gratis") + thumbnail_url = "$baseUrl/content/movies/posterPt/185/${anime.id}.webp" + } + } + + override fun popularAnimeFromElement(element: Element): SAnime { + throw UnsupportedOperationException("Not used.") + } + + override fun popularAnimeNextPageSelector(): String? { + throw UnsupportedOperationException("Not used.") + } + + override fun popularAnimeSelector(): String { + throw UnsupportedOperationException("Not used.") + } + + // ============================== Episodes ============================== + private fun getSeasonEps(seasonElement: Element): List { + val id = seasonElement.attr("data-load-episodes") + val sname = seasonElement.text() + val body = "getEpisodes=$id".toFormBody() + val response = client.newCall(POST("$EMBED_WAREZ_URL/serieAjax.php", body = body)).execute() + val episodes = response.parseAs>().items.values.map { + SEpisode.create().apply { + name = "Temp $sname: Ep ${it.name}" + episode_number = it.name.toFloatOrNull() ?: 0F + url = it.id + } + } + return episodes + } + + override fun episodeListParse(response: Response): List { + val docUrl = response.asJsoup().selectFirst("div#playButton")!! + .attr("onclick") + .substringAfter("'") + .substringBefore("'") + return if (response.request.url.toString().contains("/serie/")) { + client.newCall(GET(docUrl)).execute() + .asJsoup() + .select("div#seasons div.item[data-load-episodes]") + .flatMap(::getSeasonEps) + .reversed() + } else { + listOf( + SEpisode.create().apply { + name = "Filme" + episode_number = 1F + url = "$EMBED_WAREZ_URL/filme/" + docUrl.substringAfter("=") + }, + ) + } + } + override fun episodeFromElement(element: Element): SEpisode { + throw UnsupportedOperationException("Not used.") + } + + override fun episodeListSelector(): String { + throw UnsupportedOperationException("Not used.") + } + + // =========================== Anime Details ============================ + override fun animeDetailsParse(document: Document): SAnime { + return SAnime.create().apply { + setUrlWithoutDomain(document.location()) + thumbnail_url = document.selectFirst("meta[property=og:image]")!!.attr("content") + val container = document.selectFirst("div.moviePresent")!! + with(container) { + title = selectFirst("h2.tit")!!.text() + genre = select("div.genres > span").eachText().joinToString() + author = getInfo("Diretor") + artist = getInfo("Produtoras") + description = buildString { + selectFirst("p")?.text()?.let { append(it + "\n\n") } + getInfo("Título")?.let { append("Título original: $it\n") } + getInfo("Serie de")?.let { append("ano: $it\n") } + getInfo("Elenco")?.let { append("Elenco: $it\n") } + getInfo("Qualidade")?.let { append("Qualidade: $it\n") } + } + } + } + } + + // ============================ Video Links ============================= + override fun videoListRequest(episode: SEpisode): Request { + val url = episode.url + return if (url.startsWith("https")) { + // Its an real url, maybe from a movie + GET(url, headers) + } else { + POST("$EMBED_WAREZ_URL/serieAjax.php", body = "getAudios=$url".toFormBody()) + } + } + + override fun videoListParse(response: Response): List