From a12caa15dd8bfda8363ac370563d2e5a3a1ed846 Mon Sep 17 00:00:00 2001 From: hollow <35398794+hollowshiroyuki@users.noreply.github.com> Date: Mon, 1 Apr 2024 18:26:40 +0000 Subject: [PATCH] feat(src/fr): New source: Anisama (#3124) --- src/fr/anisama/AndroidManifest.xml | 22 ++ src/fr/anisama/build.gradle | 16 + .../anisama/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4301 bytes .../anisama/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2512 bytes .../anisama/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6008 bytes .../anisama/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 10777 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 17605 bytes .../animeextension/fr/anisama/AniSama.kt | 346 ++++++++++++++++++ .../fr/anisama/AniSamaFilters.kt | 80 ++++ .../fr/anisama/AniSamaUrlActivity.kt | 41 +++ .../fr/anisama/extractors/VidCdnExtractor.kt | 51 +++ 11 files changed, 556 insertions(+) create mode 100644 src/fr/anisama/AndroidManifest.xml create mode 100644 src/fr/anisama/build.gradle create mode 100644 src/fr/anisama/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/fr/anisama/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/fr/anisama/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/fr/anisama/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/fr/anisama/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/fr/anisama/src/eu/kanade/tachiyomi/animeextension/fr/anisama/AniSama.kt create mode 100644 src/fr/anisama/src/eu/kanade/tachiyomi/animeextension/fr/anisama/AniSamaFilters.kt create mode 100644 src/fr/anisama/src/eu/kanade/tachiyomi/animeextension/fr/anisama/AniSamaUrlActivity.kt create mode 100644 src/fr/anisama/src/eu/kanade/tachiyomi/animeextension/fr/anisama/extractors/VidCdnExtractor.kt diff --git a/src/fr/anisama/AndroidManifest.xml b/src/fr/anisama/AndroidManifest.xml new file mode 100644 index 000000000..2a3e91244 --- /dev/null +++ b/src/fr/anisama/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/src/fr/anisama/build.gradle b/src/fr/anisama/build.gradle new file mode 100644 index 000000000..f323ce774 --- /dev/null +++ b/src/fr/anisama/build.gradle @@ -0,0 +1,16 @@ +ext { + extName = 'AniSama' + extClass = '.AniSama' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(':lib:voe-extractor')) + implementation(project(':lib:sendvid-extractor')) + implementation(project(':lib:sibnet-extractor')) + implementation(project(':lib:filemoon-extractor')) + implementation(project(':lib:dood-extractor')) + implementation(project(':lib:streamhidevid-extractor')) +} \ No newline at end of file diff --git a/src/fr/anisama/res/mipmap-hdpi/ic_launcher.png b/src/fr/anisama/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..54bea320f6519d6c1ba52ce0a02d7e40c472714b GIT binary patch literal 4301 zcmV;;5HjzHP)DHA}A@Ls*_Sc zjRGp=FGXx z%o-%*V@-DVJKybnzURH3GtqG4N<~1sfloRDHvr0D$PIvQ0MwlkX_rCm_U~wS4oB%7 zjm$mB&D%3uU>6$y$$q78@X0&>|9-z;7W^LR4{%fzjHp9M_4^r%g(*P213U}Xq z_s1>E`in}XGQ>&M+F{}I{2tzLR{yN~dDhRG!!%74i^b(~x%}{n6DR(jb5{BBgo|8B z07-jcdist-rs=$}y1F_PESj}=Fn=6_;>YR)ys@`D^T+jRcbx2VaBy(BR4UzbiWmQ^ z#i?5oK*FBVkt0VQTv}TCVjMVmPBMBL?F!L85MnBw1ctk8_jVM_t7#f`?b`JRCr_UI z3Y$0MSd;{i$gH$6T5$i~LT?|GBU$Lk(dpQOdZ49Y8T;Nn$(55Kl;UL50X&KHCZ z;k{7Jo}8VXeUvM$aj7c%=k#bfb$Lic7P-6(z-xR8#%=5&Y&cQgxi~ytJx4XZ8!kO zACT80CJLz$5#Q!|#P$%1>mRg<-A%L&Q`S~uwX>^4p}V57_x z1R3>t>nv=KG4(k;6t@u|f95oM6Ba1$_cZFaqZX}mcb=|n8-wxy(+&XL0TR!efTL;Z z6{-`Fe=ngl z3k4L-0&SURdA#-gpQ?%f356PI;e$h?xKY_a&5ExWYzsh1zy!iI%&%wo!m)a=c@gq9 zl<-k&3_W zND{}~p<2Pezw$ihFV98}!#kMa;o(pu?K0I6^cz=NvN~|+(4nS4F+4C!rJ}0x(?&lY zsEpyZ+90$7`M|t+&8p#3p??rE4A52q+t{EPySdLKh1dvB-ev(;c7OF znvM%b4SzZ?hyCyU0Q&m}2~KOdUI1z^v2mt#yh8DhcQD@06hLIq_g;Dy^Rs7SW1|Lx zjxrZ}uDxV604U9aWihEpfj?*s;x}u%P}FF?O4Z~w@qMV@9oeH zQ$@s=Hij)7JsLst^+l`o;1k6k<7Ic5 zqa`wKSmeAhR34xL+Y}sZ*8q8eqROs92BEd&5oOW@O#GHTilfRfm%RhC9Q>QPh_4%q z`0(Zcep25B*Pu-j>J!AX#sWTwH|vRHRG8@B+X0-!L0vH@8c8RyDcoM94frJt;ZLf& zX*$I2P@%|(1#IDq<^?>jFXLC;F+5ls$B5CZ?2AT!t<&Q?R5*-z>)e?M*zK>Mf=wQ6$c4GS$SCazHE02W&AO{)}2-_ zYK30tG`8~4@t+D;@MUuW3yy`Nq2u`0B<|71P!`ut7CB^{QM-tLA%N$5OxV&)FBF(( z1)>UYq-r1rS%5X5(T-beTi}gFdlMHKWSuuGTy`0PW<=bhWYF8)*dRVMjLpU3Kof8X z2aY+T_}JD6+(MtKe`t(~UpH3pCG!$qR8Lnt75ypn zZE7$r_Ln~-AmluTEAC%BA)EQp9TPgel>jF`Pqg(kZQKv_b$m}_q^?ywR}ca!%&d+W z#0ex=Q4ER#l*T55JHDOi#22cJY1}?oW(kI6(KD^$>EZ&OB}f(Jh8ywB{fv=5C zrw>KuOIziB0+~oCpKQtM@7VG(-9_gM-HWPQ_WA-sD_w>6h`8 zaT(v%7f}nnLlBmsYk*c(Rx-2sV8L;2@-y~0ey%zKyGYw2f|2GgU=B|f7~Amlqn8N# zi!P&VZ3m{EGA64pxmJg%`BNI&;H&=n9~N2M;P6)FPFyBH{J|h4_FzhEJ{Sgi{c&rNOYPnAI8I znCI})U>_#O-+|t8kFqIYnmde2)j-xTpqfD?n-LwNESK@vRB$ zafj);xoHY)*;nz+!V3Pbw2F!Sci`Q(96^a{ryP$8ru|rlOp&B=V`CMoYgY-ZgMP-8 zHr4aY>>HS$KjW!Y@T67Q6f%t9SX@iejIyJnUn^jY*7|OJ828sk*v9yaZ7WQQ|Ezcl z&ta+Mth)qgA8kV6Jj%Ox7-M+<<_OutY+Z!m$-lvqd#ro~7sqeHdv3cIqdWJg z9LduY-$DCniieeFpIqI0V@r(k?0=ue3qSZr=2Y_Xg?D8Ik>h$1pSAYj=Pf!4##vje zoIIn=;4x!neVb#d^PJF$QNPq38X z1&j)xP+SwlGODc(f(O{<`YKNT*T3RFPrp(xVbu2!ifN+2-B;X=$Jh37>LMM3iRW<^ zpEl24Ux4CNte5%K)6BIFS-W7-_NZc?wTV}?IeezP1b280`}R(w)H9%HLvna^M3sR0 zR0=>LZ^n1-M!7ryogG~jKRLLvcpfjl^v_sc@eFMgjJUtwOMw1%X&6>%2sOrF-_hss z5N%=f>Pp29>^pFLbv-@~3KsgXF@`@{CUdwE<(TO`7Ra8@m(S6ARZ!sDTm|1~HwhP0 z0T2fD^$p^_U-)%Z7xI#RucmWm<^*2;@pox&qGj6Fv`19@uid@4uTrFE8^R{-)i?DE z_`DGXh=zSANLD+j2OT&-fWm=dsJ1F>n$k=7^4boJn!9N?#A9fv*cE)sxPUJdmY9|{ z63)0&PHOv^Bkx0@%#c&nbR=4Eac$`$-g@&#*r;x%+Mr2RBOhQ6_{-Is7|%=4>0sHV z2{2CL8@Rg73RPj*5x>(B1 zYZCd<(|IKiVT*cj%=Qv`dv?Os7%WP3%zhGKyG~UV(JZQ*3LsS|&2jRNdM!V9aqNU` zV4Tr)$>q8-r&hzcQU$-^oWiA;7g|NdYD_gQcJg+IFvtrO8%bes1ovn|IKIA<$tFvv zepI_O2846=%XDW<68R2bq1m!4%;p@dgk6gCF;OcnR27got&hDLa@^ah@) zUWx@r8oM*nbp|yX!eiKtk8F%#m@$u33gsZTsu%GIKB2h8&Ha^g0Pm`eqQ;Eew4^9z zP-Q4IQvo@31r8bEr49{tnzi7~F9FKGRGHN4r*bY;hV?-5hWp+y$Y(`uiOk9VDxPpp z;FZdi2sk0{&@Djw_DP`F>cxKFnZnIXMkNT7nz6<*>8mu#|4_Sv!-XMyth$f)m~^Uo zvY&tX+9GW_K~yjWK_XKMPhyw(lg>}@C$oDR+2Bc4BSw<3o&oph!~-&ItdXr}jS60+ zF+Qc)?m{7i9ze1-nHR8B0DYmdz{&z8e7`FjBmiZVJHnf7dIat3 zPcC5U`B*FKvcSkZyk?Wrg57liD05S7s#qNR!q2dh)HBaMve?u$K+DU^nFX^n`;v7p zk4m)wD4stOrDp+=bpN^oly!>H`vK!~sh*01TEA|UwPrhD4Gq#rpYQO&q1d1(gYs@J z9{>$evYF(?ONr~pzoMOqRo4u+E^GV9*2Sw+fy@{DG1a&qz* zzY_j11?&$CnIv#<@*?7H5 z6IoQ`l+qj@u%mx;bo3UY{j(JIX5Tp_jmx$7xc^B&tHaMVRcj~Ve(Ng$svm&~Xnwv{ ztG!73dYa8*dp7tH^=b**(*zY3vGT2$ByT~nzN%DjJIq6e(swdU9w-n4|A!BPKq!F7 zSHXoj6~Dd3PNV@O_XG?9Mc5R)g(>Y_F(@qNZvMe13Xw}pp4d!Y@f~83%F#6l(4^ET zAjv2A9}2`8(L92xXA(YG*Oxu}xyoCeuq0v3QMR*87;^>Bp@N@@9wrY!!Tjy?-9{;| v+f?ap*I)Mko6y^i<_&-{AiV)l20;G2`~1EP)Nkl{nrj?+r5~Za{6_uM*5k-PNAR$pIkhlt{kPt=i5Q)o6 zUZAQ3LWBq2N~8#+3J_92sSwRWlL858)YfUNy2ObS-`3aNoeST8&dl!YcxHE;U{rEoz;1ZyD2QqRw=T7D&Z{;Puij#o!$@Z3im*1grkMQS3 zwtlvocYtmyQwF^!aosxy2umElHGqi%kl)t9gHIj=>=TaT92VL=Pv(PnJvVv}NDBAY zo*m91J2uT_zsr8ZUo*T$bgX4r|6qIZ^5x5Ka9mYL2*yVNWcXs+{{8#^vb?-}hyap_ z=ElO3KvR;y1^q&(u%X$wq<5K228BZ5+~nlsGhAYg%}xMtAPZdBxp(ixZO3tAIh}_4 z&7`Fn?y0p~feyc?1aRxttv*gJv6T}5Otb-$oqP7|x#79oiSh{+X(TG(y$En?gvdG$ zi5JOj1%S+3SXdb1ZQci)~6zpf@~+l`e%fT6jh;*CDm*bTj3GjJ^dkSHaAv9U2FfmXza-*1Jh zt>+06dcTO8Z3#e}?$HGp_Yqy{iLIvOj1ub`KVcam+ z@C|DUb8Q)X_~9ooG5#nlt4*texL`v-$Rmm4vtC!n6S;(FmoeziXMT&@^D_-OlaUJ$D)lbF&TVmP!HwV0d^q(F=uv$)3mE zQ9R>xa^DTv_q+t{-Y#OwJRYT(CW1%08t4< zr6BM3k?50^y~vr{U{G%_T8nsOBMUFvAxSuXXU^h;H*hm??^x9gV;(}yq z07FAVv2HXhmCw4}_CpKyxm}=bTy_-2Z)b z3_CMD$k1Q^)0@Lr^V6vMoc;`@@&kJud6pgJwhnSr(sx=n7jZM%=a@89Q;gnst)}e| zP#)FFI=+*?g1UMUzj`q9rJoAI-A z$&9TmW@o4I!TWEcK)tSRlrei_5*by@NO|eO_O@X)o56P5#2D@7*hU^lyaL^A8{Tl| z@j~_rmZ_fF2N{$=ia;h37#J9cwE^+tr<`GodHv*;hvmv`9NjUEkAL!c?C2_L3nzvk zYml9V0TO&|s>ta-yo9y&)mZ%&sfi2znKzD)*?qX}l<|D_GNue|4|0{N)-WEMpToI? zf+kR*Fo3`Ygs88%o%nKP6pls1t*qdi?QdgdU<406e3-e8=Dxn^XAxd!p&J&ZL(FE6vO?ehD!-Ere>hQA!XfnPzxbUyP;>tVcW2?M8rFz=g zixIB_GaUaV^Ag@y4#1Z{>o}lopja$6!~w}&e&Y7wQ`LSNZWgvv!gIN6c#Qd{X;|cL zpruR~K%YrtRY@DKT&4qsZaGY#TwDX|tBWYDEGV{k;+Z(rWZK;8=5WZ)<3YDTPi5n8 z)-t~5y@z#4sRIBO1KE6&nwaC17wYftZ?J(Q*ol``hTvxT+OhF++cjJ?Y@A#jgu^~@ zDmt4a*Tpre6C)Dl3K;DwrC*Vv>qK=ELWMaV9RrL!CCfNLqn)M4`j&ML|A{z|x*PSV zgBn@vsYC!k)S!nPJy9OVqh>dUXEEtaU#^eADWlw}YdQ>EvgwPft&R1UBns zTEZKF%fWHfe{5bm+LIbUcXxN(ha)wH$qX5jUch_pZg z0A$dH__)AU!t+%i+qG*~NCKO+Gay>xSCDYT1F2VXNeoC!yzEpetu#MYnE=`*34kgz zlcWNzTxu+k6wH>I-#>u~ZBd^n$1*JHck`uuABaC*=ZhR$f!XLE%jNRHv}zM)7kAI` zx-*qDB;TGtfAi+eW9(gIlMF9bg(S3g6pOuw48!^nzmXjX++CcgTLrZA>d|~8zmdI3 z2^=SY*Ew>TO+NIgE9%QctwjpVu2>@RgC83~73T+Z_RV8VvL?B0?22?6&OGzd2 zQ3*Aus!{?<8xdrXqNHilpu|c5<%1GjTP`07AC58p#Q5XRcei(Yw;waJ{r%sY*`3{; z-FdS&cMH-DjBj`5y*Kaue*drce{XkVw0d+DfmlbMzWQ)lC7{DXuu8xx0Ubu5!;fFp zfK>uIj6jDUzp4T6F#?z{m$dr79Ue-@9$)r6nP0o7QioJEzy)4ItKO3z(%8mYTs@=o ze4j!W;o2+hR_;_i2HkeRw>+=COi=bpNOc|_Y;6l)#bi)b#>9;;NTN4zx?tYcw6)k(KZ3DP$<+i7BpZktWri*YJ=JebHA}HTal_TwQ8%`y;LeiBO@bsf`rG=7=z_% zLR%(?%}yL=>f(zpK9J33Ct3le0=A#IQU$-A_Px&wLymlw_*Zn#t;-a#RJLksU|?YX z;lqcoN3lhmC5MF21h6PD0ZE))+qZ8&YgtUDJXGwy3SjlU3J+4P5eo*~h0qVg<{A*D zU+@JBXU?42g0barx?14tkX!ixzQ?vdMMIRC=$$yV+~5ZhrUU|uC*xQnB+}c+`mG44 zVx;sekMz`+pPruHfZKC8^Ntp@MF5+hG|rxhiHQ?Sk^E+Ly&AC8L5HayrmVVPFvc-K z^vul6xI=(zh8(e|)%jK$pwSJm|9d0>TefUDUT-dzN{GMtsfzGYKw3&&b-?R2t@<7W zY{t7RZKDNxQ}}^42#^lADFMwKYS7?iH*15?pgNtr-_Elu1P}<2j(AA~^g;uUwK5m( zJyqxIFa6c4?F_nIbG97MS~db&g^}+?@L4e1ok;o#or}S;5TI&uYC2X8I{aLSQaHOD z61v>l5;*~zH*c;nL9I+qGv}=0#KVFeKohkc%E`4u4`tVV>j`$6DEbzcUL%_Ew2 zv}IWd2hEXSJ9oWr))N*k7ifGB`(W}c)YbW;KDthJUpRrU8bkKAUI z?X}JaMNYt`O`CjuKp1=99Q^R>35{)O0Jxf~3M-q9i1&c7z2y zZ2QYfKp5bgrEjAIKP;Hd%SV$2;r5q>fH1(fiX8lHv}04fAqfhqOzyahH?a{Utu+KV zmdBxc`~_vfsOCAFrljdAj9R1qSJ=zaKeJm86=sipP>vipNMd;}kE>(7$(0(br>>6i=k-(hD!6;nA(s zl^K9ljFF~m9%=WOEXG@)2b~bF`4s~yR&{X=?>y_iQggiX1^Jp!Y{L=fb9=u>M~}Yo z?jxX`Nm_lKTNA@{=VTX|@gcI}i0fm#oN7?K03fVIdZ6b79oRTRmtT4d>6!#p*8n~P zDUlSfU0=nrEF3gnb4*CB>F}75s;*Qnx^40W2H&#E^z;4yLB|ijiwKAUcpl&f;wgG) zVGZ>ZN2ruYQkl)UgcSdk$jBQsgKMAbJ4D+rzn=Q~$4Q6eYal`b;3fE?U~O>guF zjr+;!eM7arOTx4JzDp+#Ndj6q=c)<10Zw?&(iddBPFN)z4P%OWVmf_|Hq-kMGn7*O zkbIVYK*shLe>s1n0pMgVMo(pO^u_L@^wH}+ONmr>MY^S_s0Gj!d|$9Cfvc+>)ij7K zFV}XZ_Bf^p!N5;pf{q^vLqJ4P(8i4$m7<__G~$-{2;F}^1+&vjW}@5Kio*lv=m&pe zHfiM|>BS@!wIY4CFGu}5#%X-w5>Ym$>tvuGg5?O{#&%E$obmXmrft$@Dcfvsg_yg}sPh+mfH84YZ zn*J@ejW*7~$r;^b!>ovi1K`VA&P*w0k!EUe$~qnDE75()Q*_ByH8*qN=;%8~ zXl5=eq816BtQ{N*Hzxk7b*lXiI~Q0n0)os@D^sKc<_8kn>5tDRXrbGnWD$-|OThlK z#Wn$699W_hq+f$svO$7gijje6^MU@O^!%C_EiUG1Iyv5h{+j@Rg=V$w#u z58wf^X65O{t{nYK`80i_xS6_&CKVIC5U$j`cRIM1_2zQ z*hzZTdYf)d9iftE&uVyWkQ24230e^Xf=a-TE8!&3KvSO=*g}&vc;;cEn+Q zL-XLmeO3`Z0G2X3AK;oG70{aj?*jB?{kQ3+StQw#{fK%}!sM`I$6@b@rs&GvQ#9+? zcCPagV}u@@9;TW8KI(zfHH{R=LWqiR(nPeRm)@qy~Xilk{BaY(<(~GXL2cr$5LKlAS>A2gsF@ylWnY%Pb&# z#YC-GqC#qriqM8cahh}sp%Qy+G_6@C#ZitAOGk9Y|MC0)*c(Xr#cW+@p-?XD#x%7O zUR(6TM2Yq#^7Q@kBo)w4@8RbQyj!4FoB$Qgh(Th%X^qkQ7d6=Q5uQOY?vUUDl@a6b z>6xPY%De}-QN=GXbb4}j6UE~_q!$vTm$Pu*U2x7YVdVu#JBOkGlj9{wG0&zg4RZ-b zm1koDKqU7{mhd6EnB&3h3G;_KIy-*|0}BKQDaE@H?k*q?wMbJVXX#^$r|GO`&AFvB zM)$L`5r?6E8lVEY*BpIPAEkTdGZ4Fs054{n!tQI3PNR5|cJ}A!AkxmwOxPvZC;Vt( z1JcxNP%*ghRNS#`3&9Fdy-x(&M8G)%ccRUpx1-ARZr4mg^ftI!I>i2=1L^8X-F|F z&_kJ%wA-3#3clOk2SDDvxgOe{=z}!(!lb}_m_@i{fC)*r*gvrUa8l1=RxCc~!`g<0 z6sR17FSHBh zu_gI{zcEJXljk#3>_QHoL1!DyxqR5?6WUSwL~@pLP=A#qUIH%l0<3=R$_&ztm!@s`fh`;-C-0yIvGO9!Qa1pFhOj0$XlZ4Rme}bI;puTVNB7k_+BX}QYvc5aNn#r0j)IS^5h8p>r5X8+=W51sxtxj;0Wx3 zVV$SHgya3Gxk$qU>*(W`{W;bHiYSZIT}7#kmaT|EB_zpybNm%5%umsob0;X4oui>x zFQpT3v?kIT@HHu|KuLh7fmF`9Y3vK|zwPAWOglpsY)v+0Ai)=-Zt$|Ml%i2RLu0V} z*Oo8~w+!?JeKdIn4y{FMB$3b4ooimDAH&hN8uN+}pkj_PSg(D2aU)F>H8K&U*pOV^ zD&d5=DJSVCbcpWZ+yaiPuJ{;j+Hj$WQbhh<{$I&by3)mqBVuh!grYDLSiI@!Pf~Xt zC_-BIzw%4^+5bMPkcg8l`i&!w_P^SH5&hALEF!C6^cx-nB=7|AG##fKG5;vlEpK{N zA#wsnM@N-RP`z!uIXO)CPov}UQG|XR?ja0>WGC`-G!>ht&vc)nBLH&a*jD=eD|U)| zyvpTjw>PKntLwPPi|AErP^Lm5PcQu92|9N6bVHS9(TnG^eHB6yAmN{qJLuXum@)VV z)+Y85MYO*&^9CJ85YX)C7y;e^u7&-5D&I$m@&Ifqq8}VOq70<;F`zs>l9{AO>`8pW zyodhex=)jl>cjf3%*EFn6*Z{55E>v;`%Z3OL^3k9%o>tCdy<~|*^^|M)g26BCsW*q z3(INRo!^GFXhdBYk6zTt%)d>aT63IUvFBS7(8tkeRNGQoX@K9r5YW+s_6S{@8zd{$ zg~<|PbV$EuvNM~d1L-OHoPHK+T&Bw}xtcajd=PdT8saQ5x=>3u;4&g}Hq4M*Yp=fN zbhYbhEfbCt(aZi9e?)H_l3)Cx0={3l5v)->S@h+| z*)<@@{=ZM_qHoNvp`dh+k`WgJ0xT)HfFUJuAM&dYkKGWISct1b6 zhHNaTl(D;wCqWwGewLmyu_?N_>lDo+5)$&x(V=TeoUy3P1!QHMsQ=;j{~_(T=tFWL zCuV?W%w}PNn1n?*`)7XgEt;B}7FARv-ziAfU^e`ZSdZxEJX0E(SQ~4^@Cl2U=-rgq zN9XFc!+WWS+yu4Kfcio0DXpXRSX?oa>qHuWr~6`Q(ah18lE>+L8h?Vn@lcWa`dVd> zsv%Eg7;CVZ3k&y{KNzVDOqwpW0MfdUn}as+5@+M2$?sYhh`k%3=gygKBn=@*oVnwL zAgscfw27XH@29^)E~?eBtOPUzicQJGG)9-rCdf{%5#kAW#K7ZNT={k4FlLd9#IeI2 zl#yx|!7yO^7be4uA;Bin2%HPjMH+}7FS{UH?MJ?80Fs{O2^_07CVmz|P~Dox zvT2M8i6Y%%AEaZP)@X4=PQco=YXg12HAppoH9IP{h}cNBiBGJsbL9BBbdEmWcaDx* z1scPI=G%o~>Mr+IX7XYu2-_o0kBS3-Ia7+vqZy}HvMw&ZDk99vw z4?5=aT}1#7{Be5=T|9?Hk|fq|VT*-S@hTT==(oF1&{wo98F0G0ixYGKQp%+B8n6Sr z7`TjVBnbQu=ksOqOyqD}P(=X_J277s*LVvHYY->-SzAyCA#IHFI6PnAs0hzB^#P<6 zkV4>Z6cbSs7w2rLB&!U`7mPR=R1HA$%-zD=gvt43@^!k$Iz?Ik^iK^R6%Dun>#KVr z_^N_t8o=g-L-$Xov37f=2LL0Np5$30;(bUao1U}rEbUCaLz6HqpRfk$-uWJws6i1` zi-BV+3J;nAmZ@XTy-4q@L#kOjG*{(i2F#OY7OLZ1lX)hY?L=Enrqh8}m_iw>y5KwJ zM})}LYqrLzZr&n;$O`s<5gW38kT^sS=HC*Lo650lCa7ZnJZ^7B&-MlK_K}_ zPEZ~9etlG-Vk*LbAJmU_q~2R6asq~i*ax(Cs0=o!%u1M|_D1JltK$R&0jeU=&C687 z%rH_Pb)?gZu$3Xe_giY!gk3$NsBmMIb4) zbFfM`+U;{7^i7;qI9Vu>wpyzj-=SK5fB7QtKO^D z4Jy~JMnrd#rSvh1y1K6a3O`|TBiiB(P;LK$1`{BELxw1WPsrT9 zu(0rj%9kH0_B0GwDrHs5D0XdGigEw&dt&$FM|>W`19%J6l72&mH|6jmFSZF#1}W)> zOQq5ctw?AJP!r8p1yqzp5GPN@u-$<& z*q(APe#-FAumd@x3ZC)^>I$~gehYu!Za0+b@lP4XVl zR2F#|WYz*6Gn*p@pa05TQ0*=hhZ|^ZY5wAr)_Y@@(z<$GMuN9}NCJ583Ion36XE`X zUhOxE*R`%f09RpCc6*O4cA+j1pdn;xbFj72@7Cl9~oK>TQ{&X@9_ezKj2{~%y#5xS3&GB>#GE;63}4; mI{f%m4Ok_h!w7Wv@&6CPIpa|vkH)9~0000~dJ+ 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 X7|Rz#ha5J300000NkvXXu0mjf(^hda literal 0 HcmV?d00001 diff --git a/src/fr/anisama/res/mipmap-xxxhdpi/ic_launcher.png b/src/fr/anisama/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8fb7c41a131cc44ac1d62ea649565c24310a8b GIT binary patch literal 17605 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¬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.getSharedPreferences("source_$id", 0x0000) + } + + // ============================== Popular =============================== + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/most-popular/?page=$page") + + override fun popularAnimeSelector() = ".film_list article" + + override fun popularAnimeFromElement(element: Element) = SAnime.create().apply { + title = element.select(".dynamic-name").text() + thumbnail_url = element.select(".film-poster-img").attr("data-src") + setUrlWithoutDomain(element.select(".film-poster-ahref").attr("href")) + } + + override fun popularAnimeNextPageSelector() = ".ap__-btn-next a:not(.disabled)" + + override fun popularAnimeParse(response: Response): AnimesPage { + aniSamaFilters.fetchFilters() + return super.popularAnimeParse(response) + } + + // =============================== Latest =============================== + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/recently-added/?page=$page") + + override fun latestUpdatesSelector() = popularAnimeSelector() + + override fun latestUpdatesFromElement(element: Element) = popularAnimeFromElement(element) + + override fun latestUpdatesNextPageSelector() = popularAnimeNextPageSelector() + + override fun latestUpdatesParse(response: Response): AnimesPage { + aniSamaFilters.fetchFilters() + return super.latestUpdatesParse(response) + } + + // =============================== Search =============================== + override fun getFilterList() = aniSamaFilters.getFilterList() + + override suspend fun getSearchAnime(page: Int, query: String, filters: AnimeFilterList): AnimesPage { + return if (query.startsWith(PREFIX_SEARCH)) { // URL intent handler + val id = query.removePrefix(PREFIX_SEARCH) + client.newCall(GET("$baseUrl/anime/$id")).awaitSuccess().use(::searchAnimeByIdParse) + } else { + super.getSearchAnime(page, query, filters) + } + } + + private fun searchAnimeByIdParse(response: Response): AnimesPage { + val details = animeDetailsParse(response.asJsoup()) + .apply { setUrlWithoutDomain(response.request.url.toString()) } + return AnimesPage(listOf(details), false) + } + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val url = "$baseUrl/filter".toHttpUrl().newBuilder() + url.addQueryParameter("keyword", query) + url.addQueryParameter("page", page.toString()) + filters.filterIsInstance().forEach { + val (name, value) = it.toQueryParameter() + if (value != null) url.addQueryParameter(name, value) + } + return GET(url.build()) + } + + override fun searchAnimeSelector() = popularAnimeSelector() + + override fun searchAnimeFromElement(element: Element) = popularAnimeFromElement(element) + + override fun searchAnimeNextPageSelector() = popularAnimeNextPageSelector() + + // =========================== Anime Details ============================ + private fun Elements.getMeta(name: String) = select(".item:has(.item-title:contains($name)) > .item-content").text() + + private fun Elements.parseStatus() = when (getMeta("Status")) { + "Terminer" -> SAnime.COMPLETED + "En cours" -> SAnime.ONGOING + else -> SAnime.UNKNOWN + } + + override fun animeDetailsParse(document: Document): SAnime { + val details = document.select(".anime-detail") + return SAnime.create().apply { + title = details.select(".dynamic-name").text().substringBeforeLast(" ") + thumbnail_url = details.select(".film-poster-img").attr("src") + url = document.select("link[rel=canonical]").attr("href") + artist = details.getMeta("Studio") + status = details.parseStatus() + description = details.select(".shorting").text() + genre = details.getMeta("Genre") + } + } + + // ============================== Episodes ============================== + override fun episodeListSelector() = ".ep-item" + + private fun SAnime.getId(): String = url.substringAfterLast("-") + + override fun episodeListRequest(anime: SAnime) = GET( + "$baseUrl/ajax/episode/list/${anime.getId()}", + headers.newBuilder().set("Referer", "$baseUrl${anime.url}").build(), + ) + + @Serializable + data class HtmlResponseDTO(val html: String) + + override fun episodeListParse(response: Response): List { + val document = Jsoup.parse(response.parseAs().html) + return document.select(episodeListSelector()).parallelMapBlocking(::episodeFromElement).reversed() + } + + override fun episodeFromElement(element: Element): SEpisode { + return SEpisode.create().apply { + episode_number = element.attr("data-number").toFloat() + name = element.attr("title") + val id = element.attr("href").substringAfterLast("=") + url = "/ajax/episode/servers?episodeId=$id" + } + } + + // ============================ Video Links ============================= + @Serializable + data class PlayerInfoDTO(val link: String) + + override fun videoListSelector() = ".server-item" + + private val filemoonExtractor by lazy { FilemoonExtractor(client) } + private val sibnetExtractor by lazy { SibnetExtractor(client) } + private val sendvidExtractor by lazy { SendvidExtractor(client, headers) } + private val voeExtractor by lazy { VoeExtractor(client) } + private val vidCdnExtractor by lazy { VidCdnExtractor(client) } + private val doodExtractor by lazy { DoodExtractor(client) } + private val streamHideVidExtractor by lazy { StreamHideVidExtractor(client) } + + override fun videoListRequest(episode: SEpisode) = GET( + "$baseUrl${episode.url}", + headers.newBuilder().set("Referer", "$baseUrl/").build(), + ) + + override fun videoListParse(response: Response): List