From 5c33987bf4fadbea2a45cdd0ff2a3e2bf401d314 Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Mon, 16 Jan 2023 10:40:12 +0100 Subject: [PATCH] Add extension (#1171) --- src/it/toonitalia/AndroidManifest.xml | 2 + src/it/toonitalia/build.gradle | 16 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1964 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1174 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2573 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4436 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 6213 bytes src/it/toonitalia/res/web_hi_res_512.png | Bin 0 -> 19968 bytes .../it/toonitalia/Toonitalia.kt | 444 ++++++++++++++++++ .../extractors/StreamSBExtractor.kt | 141 ++++++ .../toonitalia/extractors/StreamZExtractor.kt | 31 ++ 11 files changed, 634 insertions(+) create mode 100644 src/it/toonitalia/AndroidManifest.xml create mode 100644 src/it/toonitalia/build.gradle create mode 100644 src/it/toonitalia/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/it/toonitalia/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/it/toonitalia/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/it/toonitalia/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/it/toonitalia/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/it/toonitalia/res/web_hi_res_512.png create mode 100644 src/it/toonitalia/src/eu/kanade/tachiyomi/animeextension/it/toonitalia/Toonitalia.kt create mode 100644 src/it/toonitalia/src/eu/kanade/tachiyomi/animeextension/it/toonitalia/extractors/StreamSBExtractor.kt create mode 100644 src/it/toonitalia/src/eu/kanade/tachiyomi/animeextension/it/toonitalia/extractors/StreamZExtractor.kt diff --git a/src/it/toonitalia/AndroidManifest.xml b/src/it/toonitalia/AndroidManifest.xml new file mode 100644 index 000000000..acb4de356 --- /dev/null +++ b/src/it/toonitalia/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/it/toonitalia/build.gradle b/src/it/toonitalia/build.gradle new file mode 100644 index 000000000..40db3e623 --- /dev/null +++ b/src/it/toonitalia/build.gradle @@ -0,0 +1,16 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' + +ext { + extName = 'Toonitalia' + pkgNameSuffix = 'it.toonitalia' + extClass = '.Toonitalia' + extVersionCode = 1 + libVersion = '13' +} + +dependencies { + implementation(project(':lib-voe-extractor')) +} + +apply from: "$rootDir/common.gradle" diff --git a/src/it/toonitalia/res/mipmap-hdpi/ic_launcher.png b/src/it/toonitalia/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..281969b202c6e3ee94e4eacd51733a43f5a6b7b0 GIT binary patch literal 1964 zcmV;d2UGZoP)7{}k;Ex*~a3)EI>2!+tV!32%vP^~F)o=KDPF z^A7LeL)j0PfG^93Paq3OppYz}EFgD5Be3IdqqaCckIwsth${i%!@G79pyx3>rD z>gsOd2J25xPm6dBR#f{2Di*#)reh!$09NM>G|&0KxhE!NI|vf`Wn}o?EF7*6Z>rFhMo@`}?1b zjEsDaf8PfuutQ=2^5cR<{r&y7ii(Opa^hAQ27>ASkx1mr(b3UQu)WV{ZpH!>06=|x zeYb+aU^gp(If0-fo;c~3c9Y>826Sg^Y>WU(3D!J7#Td{K50DdODY}4C;8z7_0`w`a zyNeHffSkZl9e~&6Jpsf6LtN2omFRTSxQppgkQZ>gR*49vHb5$HPEJnH(UCQ+P*s&G zIB4JJ^C6u4S>_Z`zpeol7Z-D9F}qt`zL<}q$9rgd8ud2oP4KBdfXooyG69l@!<)6N*XYkOjp-46_v11OmXxQ?4)HTIdtAGiNI~{a zuUsxfg#~Ph6YKMG{iyO%Au-)LC=-S4$aD1Q$pMP`&QYG$n4%U2^vB=3= zJOd=F4pzC)`5bif4Y=F;-sW7z@egyVV^>*?u{T56bOAOb_+g+W2r z;sG@!@+MDs2?%W6-Q9&Jiq0N)r~r}yV^&rI5C;xif*3?xOs9HCTb=`w1!H$R1CSA< zE&5COMgWzTy`(gKi`?8(Kq^pJhC+~TvH-G5iF`}UVhliTRi#xys$h6`(F%wT2kIMu zRvxEJ^P-tj7MyE9qC}CUdlAeeAT}ImdvWCfnqNuHgJfNZW}n%%GXW%mL-L>|TOLGP zMz8?MD#Q-RUN5bHWWboG`6e>WL*B%YA`Or(IMAi%fMlWAV+PD(0EoHxj8|B^hh5CW zOxhDbs!(VF)siT(16eEvt^S(`(mK_nRY6XnaHn~bi={A%FICKdbi>gC2=DHY`m>K{ zwy<9}W-%5Z(>jg-a*`;DX1X&2B%?MaAlo7r0L?L`c@Y2^J6y*g6$Qx{M3h7YM0owvhd3HntB(gzt-E5l{ z1*vo>0zJlk;{!B3ne)?ftm|)ZN`Z-Q!AKNid5~!E zqU*GqaVCId3>5>4<=6mdZUq3bp9j$rQIRsW#2^&~$v`n1%?FfRfW!dNSM%ofRQpdG zAg6|v;D`2azg|kY(bm=3Uk{(6nWIK6vh3V;tlV&$H&Lvg*td&O!{pf z!G5PLu&0OAlId-3A{|2$?HEHh9D*mw_a;*hD6ser&PfCNCu;p$&gkb(YR{;`Q! yNdQW;HQ&l~lPnF030000@D)sU1Qr9ilN@Sv$uVxkG)!3!4?PLg;5 zym|GaUP!=}5DX+p>wE1^nVrtg%ywHF5;obeKW1m%=e_rRv)#c(uK4D<;`WnkfObbv z76H8HHuiSeSvCeP!C&0#HX*?H_;_G!Y%B|{C(7k=gntUInJ&rB?X<;C`Sx(B=yto; zwzs#RZEbD+;cXECc$b!zoeT$2Wzu<2~ z;Eg&DwbJ`s-^U9J3%9{8j6y91L;w*0`0dnqr_mER2JDJrO346Fv|T`Ypvrrv2J+AA zq!R$d;JE@TXg&f$fObcN!Zrk;V|=rtVHF))03yTLj*G=2IXykCWtvV3u+Q`DgTWxd zUFHmJ04P^=8elsfjQhywyin9>A&bh)4lssi>Vo^Yin<6r$cvCLo29Az`@9<(Khs z?XY^lXW7elJEXTSA)P3j0)QUE2t2wU61}&W?bk>h!wcl?$8RKb3+E~8v~&c(hBn~y zl91mE=JB~rNW7<$^u;=adH?0>58}NEkrPB?|KN;Vl;kgo4FSmVTXb)DFi3{_{U+_w zll+H0($yW8RvKAR&<4n4GExmxa+rIirUMTT1^^(y0aQIp0dyuuk(l8vS?^Us2B3<_ z2+R)^0706p8WGT)^msiu0+5%=%ZO9}?ivwbY7O!rKqQK9#9Xb?{DEW}KxMQjl}0KW zK!8g@(xcT40O&RYsG`A+p$#xMH>cEql@6)^hKRX(pWoQ6iP-9S8Bo&zWRV$RM9fcC zEI=bdb_AeGCwd=W@*dDC#N~Q^9U>6ZE2E+a*#=M-cbZpMzg7uyyGVWeZI;i{&hDJ0SWA9k6C z?HJz@0F?o%S8oxl?3%U)WD!sqt;%Vg=dB2&(PXh3CfBV`o7 zR(DNJO?~%xJYm%UIv&+&qZ$YAmrA9R<>lpmIK=gV+IpF2fg?0IIr$Rz z4-bFB^)vQ)5ddE6gdJBW@eA$^I|H_$?K$*$Vx$g!&o?c%TCEe~b+57Gs!cmLG#FPV oaj*MufBmlp?F(^b07*qoM6N<$f_}CbVgLXD literal 0 HcmV?d00001 diff --git a/src/it/toonitalia/res/mipmap-xhdpi/ic_launcher.png b/src/it/toonitalia/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4e1007caa98684f35fc1c83133447137e2efe527 GIT binary patch literal 2573 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 literal 0 HcmV?d00001 diff --git a/src/it/toonitalia/res/mipmap-xxhdpi/ic_launcher.png b/src/it/toonitalia/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..655bc215fa945a18b5aa99d87cc4aec4dffbd1e0 GIT binary patch literal 4436 zcmV-a5v%TrP)+6@bs&r=3oV1+@i+8QU2o7TY3-%9|n3^1z!WKKRmDc`;~6gqOAy=q&{e0aIU! zMuV3(G}wq@?S+K28nF_R%2cgWB1vln+A?L@xw_W>|9iUsGv}PW*4lfY+kgJ#WNvG% zy)NIs_CDwA|4ds@y{ZgYWT4GLw^FS#5L5tF5LjiP0>~0096cFWgty}(j3bwDJ4;!OCt_nMfGJjjhwW? z7|!5wS!iVozv^~fj?oImbseJ)3x2PDb^?)$;woUmU)vj*2#?`nOxH;+lf5t)Ixw>h zfD}kNP@){z7E_0&W7DQh%Wk{vw$*)oeP8Y9=(xYFt?ec_J|^-EBb}qaNjS3T4@aIO z%Z-(4n<}Tq*W^Ed?@v!pPycyhV&Z3`qoeP}g4}cnCa&u>c^iOG7rP7|9lLk$ zzGLaqrQe>JnR#GpYHArc9L&zn)(XW9o?Bq9Jl7wNJV%z}x704YfrIw;_Mo$~GwAN_ zo`5&@?=N4z{QUOq+mFHcGjL#6Qk{tnkrW^up3Y~UdFH|1-ril{*lGZ1flY4koWycv zeamxV^(C7WBLEb@3~>&+(Ki92gN;rkhDZXCnzpd>bZy(V?Q_eQFaHTRG#r%>PLd+p zFX$e4vCWaC_|f0rfA+oi-uwE~Pd|;FXsXeT*lQvQK=aeqh7B8*-+S-9 z--oXAHJGju7AN|`itQIM5qfn2S}g3dcgYP zJ$v??fVIy`eI#zuZFIR~`IIlBZS)ytka3tvMxYKKHM$U9A0nUDb2<>pV)w!6tG5Br zyLhdK`|fiw<#7wf^^t4er##0tR~D}m0YEoHelEjt1r7uVuMd&dK@xzv8UQVUx$_;4 z!*M-PVuPzwWOS|o090H5z_A3#J!2ffAixP&nMy;4JBBZL zUv~A53;+#k0I9Pv=N(9$fgwPP8UT&i0K`pBS^#nV@+qH&Z2)Mf0T3>vRR^lCO$;wi z2ddrkf&-^8Yk;_kNedqRooPy*)F)2tzGOokC{=*;DNNLXI7!iqDAD8U6j@&Cd)ghy z3LtKftqc%1R~&g=wlDy30t`C(l;GtX^>e5 z+OcEDme^Cx?Qk-;TFZ+Ckzo6vodb|1vv6=ZzwEVM$QhEptcZYnK2KuJmX)J=|bKmz`%}n;qz~~YQWoH0nf(J*e03uX|Qd}E=DE0|% zY9ie36Fp720*D)5X*v)ma4A5XF=!CE={`v-AKed12jaw-BwMH{j1x2_R00rp3^PFK z!b6$DxG@$UAa1~_s9b=g<0M1Gow}msDN~p7!_^a7m5Pexw{;>K!{&lNx>XQ|+D0CGL1 zb`c=nUB+oUb>ZB!h;Ai-{1p%u(Kjv%){NkV#OUil{>FCKeK?&*LG;`UuLcv7-3zWn zbK|ARXV!t9dg`e$Zb#wBWAL~Jx;+LUN^&^k*>xT_Q&-Igi2FIX5^W0*H9w^TNDn*? zAZl{b1IYf&Yu?uwfVeSJF&NBl~D4Cpujc#r2R_^KX9eeZr;NmzwD5L(W0E(z2 zB`H|!o^Jd^b@Drq##QZkIKl8hUod#%;*dx3v#wL8&j!a&yc4Wg2@knwLtp319^D9I zIlcCWi7T@JW@Fb7EjTf3h3h~Ra5z&C#~v;xKC^mhFmg+uxzP0nlklql@wMZl!7E2b zgSBhd8n>Wwd`+YK;24DhNRq&~3QBA(1W4X_lwU^ypx+SylK9Kj;mQ{RAW2ZB4kWeN z43HF_=GH_3Na`b;iQHgJ&`4XlZuc5M;WZF#MypFT zgXaq%ZvMFPwMbxnl{3lqeZ@ zeslG>@~Zpb*USKV^2sO1q(E@=B*}?`5IayTK+MiVSwu^G zPg|$707(*QI%A6kNC*$A;c0x-S(wECEObf-kR*vo9Zk0v36KRmIBo?HZ9Y*C*_=NM zb3KK*21lRgRfr1!vVz^K0`*_{Un?uRA6Xz+wP5c~@zs+&!6l3cjbDI7qOz^PR+*{%V!;9gkR zIvt*@05ZkNxfD_ufFwb?0;g#Wln4+H9tF@VhuqGay#k;ZJ&%LPDb zK_lrpdf^rVWCsu0mH;HpmqgE`lNmryJn_UBaJlGrIaEdvlG z8FYXWwsU|H<0T?(AZ`be#39i!O0Dc{>LO9&QJc#v;+9>Xa5BY647M zC;a!@;gNZ9+c~)KZ~&6VBhlmNlnx+H@Emy1E`BN_4j>6URDh&0rJ+|EfTYPXL8RM_ z0!Rvu8W-0d8T118cvV})=pd^5#F{Y(gIDn*y zp#Wog2kHR1fCoQ{id$Oa0FuU3XJl1?)cUKMce?@0g`Sgvw?t{gK%Cm18Dp9?PHW8yOyy@ zm=!=Vch40-l!q(ChR8RM#r2w)`m>8ghtrxZc*~Da{s~~C_fLtU?1dw6h&XMDA zA@NZ1g+$k#$7afFnJLT#FbfyajXlwnvoPX@FDXDa@!9CM1VAnm6i!&}UKsor#Kad7 z9<(6=$R<7;-KdyLGljWMOw=_Z+)#EqK3pLQAO<`VfNbNm)h|^Ca-9s*#koX)nBb_f zI336~UR(WAbRZu|pe|A)0TP141;{pTTm85k6=n+al>k%M(f_^xAWL|tQP7CR?4(u zFV$&$7D>Y~)pej`fN0>Tf}9%rFnH@9AJS+ENoA3Tu%m_OKv^bA9~%L>{<`kqx}{yw z1t(se))BjSX(~AX!6X}?EOVken_GagPLPlBUD=vkU*IUarJBOhOumn?eAui2GGrj_ zr281phfUw$6tV+lnP^{Q`?6aB1R2Ofa((*X({@V&l&6IH_QkjT(gU=0>(-XJ7p96? z7HD#DH-5{OEo1n+ojknKC~O*IWRc6XPUDdj+-`^eRdx{^OCEddu{YtFfXlK7S|8JQ zVSU@rGJi8OGt+zb?i~gn#^IQNV+xKLIA$q+aoUFtP%i@X$Rm#&=0SLG9)d1SOdGpp4D^@&2b=Foc z&0?lGmTg{a^v|C^|EvA`_kRa$Tn=?0Zvb^R0P5SgapM=@$)vx4X{^U4h$P*#3z_zK zzVb$~J2f>mIXXJ}jhA13`EUcEtJ)Oi1)z2q00BZ^77q;#t=O<(!`>TixZ!?Ri|MQi znANzHLi>=Jot>S#aN)vhhYlTj^wgDn}Q&pr3tb?2RT z?pwBO*(aodW?j6j$Cu{KMsIw4{QZ+BPk#5{!GlM^4z7Q20gdY)1rW(RXAPtPLWpo3 zgk1>#;Y8nk_ucov$jHbRfav4Y&qd{-XnF8~R3(Q(aMm>k@O*IQ%$Xk?IB?*XU>eW9 zK7s?MF9Zm?59tgH-Qog-^5HIor}TYy-+lKTYu2oJ2q5|rtcki2r1o|c&DX2dpuu?Y zn4X>vV9hgq>C&aYoIZW}$48GIeH|);3ulB!oqe&UFDXFkbY886uoEFfi&w5(dHuk^ zz$#c9J=ovh|9JrDCRiKsKdPB8<_hf%taZkr>%4#E%9Xdyo;~|Vfah<}eg4}32d6EB z2fGi#qfXyR>mLa~N(Wnun#yoJgb?AH2oL-jr#J*h$#FYfp^KIi=M@BMNz^5yGTT zUHG%=a?);>gIW~Q1qB0sRb5DR8vUy-#}3p*Q58gbN78@iVhna*mBM@m5D@)PFsa|M zr!76VE{m(6QJqb{}RQ50fy~*Y{s|e|XNhuJc^yJm-4u`)v0~FfqDz2FZ;C0G!d&)iyn?N&ho?+SAf> z(vuDVG^3ujhIz34x}Dt>c0m|2iz}@FYRIREm1mxsj&W~?RQ^AAXuhL+)-G(&O7xpY6y%U z;Rihya!L8fZBq{<&?M<#5QHDg#t)65y1e%;K`$UMZ>_iuk;V_z7dwsLDYZwV&%B|68*ohzrD

s|A0mNs2B+-+#;+`M#08yVmK?`g#vc#=4zE!YN$2!dO4L`=@T>c&1Y%|H?2Y zG#-c4useTtQEWQO3{YK+@_mPEf;N6d*6ooWN2Ba)0<}cN&$6m2Vd%f?@x=fA))QT$tG9y4A&%eXM{&OsnLK`V|a+|ScfBV!=ylr6Ar1BuhylW&gNxyvOBv0v0K+~$Bk0i9rP&5|L>x|-1Y%Nt% z{c@0Y?Hsiced1Y%B$>v45_oG4#DLWfX}^g-IgUSK@2uaAISCj4LXcXcS9NvWSm?r# z`kP3;gPq;ole@crrlwhI`{ti%4v)~jho*AXIquLw7_V&iYaO)iE+)cokf~Tz_bUPi zBSSS_ll{i@GlO}mp$Z7;TsH==L$hK}3O;*B0{?oU55K7DotJ%q#i4J|?W0 z^w8C12}Mbobs#?3qToM)XzSefGP>V%GhBX zvRrcNv0w@V^o=xkVk*Z@(Xex)}-d8&Q7?r);Fj3%dDdf%@u+A^;Jygm}TDT19 zm=KJXjJgBI%i+pk-2Os9e6O4yubiBEq($vTI2Lp)JXN{_Pp!H7zV8e{#8DsKkq?DK zaPU2eag_=IjyKgOLjHyv(3aG;D1Z}w{C93~q$QfaPvph!{x>08w3RIZgI z_&;(H8xv0_M`EdmDzO3hr!c?Sva3}$7LNs-WvrkY@Fj1E3B?>{ioDM z4GRYz8K{_^uX#RMm03t6H@wasu$Lw74BGCz4_uj4zq6K91k4F`9}l$p>Uk>_0~iPE zP4*Qv0XzPCZ=wHq;W%M;s?*-5u*whJ6R=0dxYFZ&2GUI;0F-tTS!QDW5w_uX4mbREn+ip7!&$mSner`)?~> z9q`FDJ9#>aqv>b%S4({w$~X^ZDKB@q!r{z)o)yzfcCZH=qz1C^hE%>yM#&e)s|vLh zia9>21y4e(=m&JPAYDx?sWlInIDD>3j=wTjv^uO33H^Pu)WzqBdgR&lOiB+RCn-t3 zn+CY{DS{e|kYk4f4wDaVC{!Rd2QETXK2(h_hw+@1@Olz|Yof3|s=AnUB=X2Jawm|L zRAB&T1CQ{FaF8PLH(a(cq~1-m$VK*UVEa{fL4Y*+(wJlqT_&Z81qgtTKD;GG)^1}- zqV88J)wQ3)OmZbkIY>{#CZV$bjM*RoJ3dl_qK}J{8{a|+PH$GHYmo$+LeYVL9QcW` zCTs527h7V$fXE{V7||{RyzhXhU$zC5iSoDiSm6|0`|QRfWc>lqRe0N=Du7w_-_)_o08cDi?XD0{IJ9ddwrVaVZq#nei8; ztzWW;88ma2srmyiDgx|>1_#4B;4RI-0Q>aoYpJUavv-wZz_*s=yhGgtH;o|#J~7|z zWC@NrE^Nq}c-3{04*!jnUJ#gVR(Wd3<5Ky1>>F*)A+@-y)P@>)K7E9m$bMSRfthGt zpEu5i%N0ET}%-eUQ%I_HX4YsuHF4qHD(ZX%VW`to+k@KCJ&m zZV|!)3+(t+6U3yLp}0#wGU=Wox@FnJA`kY}D^cyUGAu7oOv($leLjIQQo_jS9j=n) zKFjTYiEOWFKgr%JO21JbC_3?AXq?qu;K}(HlHBT9J>9*oKD=sqXPB5=|1Lgip*hia zeMCq3i;lc>;nW$>$OO-cyI68#U(pn>lVsU`k<+<)zPSj~?H^Q>M$DSQiKz-VdN_F+ z{`GcxP8;vKu8x%U5$h@XYnz-4T4?8`s;2E}QHU>=v6;Cj-w8snDzO>*)U58a+EXA> z@vhBYffEEg(E~3H#KVQN=QPnbEB>2bq*U4h?+(-)LhO{rgU7PRL?Yk?%esB?86P5) z;UvA|)_|t{au&cvG*{t0Iz0*{PK;l!e!Sg<(J|DQuy*O5v_CsFtMtHY2iQ9QE^Brx z;DpYgWiz*l&s45{(?sB-4uwMjk=Nuj!s1_a130~*H4^%0YR8v;!#@aHN&sPsGn}NM zOhm*8at`UR;@@8K1;k>t5dKW4BUU|I`QvBiHu(r96=_c_#Jntn#@CFZbzlmS&EO9c zf@nwZVOm%_=(dWV!D6AlxQLga)_10C?z>JA_|Dz~sqk)VUlV(VAhA%3VWb535NA~+ z$8S9V<&(x=?r8Ev#0W?JTkaKNosX8ZhWe4e-tKynq{D!xv65Ui?2VSR0PXWK#lW`K zcXYPwMr^nsoCGgopvYL@`?yq5Cckf#KCR%SB1s8n;-p3txP<_dtf6kotqrcRhoMnA z4E*t8?q0^nVervUZW%qB$OB);^=6%s)A6-!EJyd-81Om~79h*kKVggQ_M3mA(ITy7 z8O9?>(zCGYJAJzad+i9kQG^(t-&&3JmQ@P6!>7Wb=sTA%ot+Tq#($9Nxz}H-)hTUI0ty2W)>k+?p{2?>hrD45jRVyBq(LH%Y~ex9}`C!M<+CJ)2VOftlLW;GB}zX}BOY@S}62u=s$ zFh>S)O|w|TLiHy=sl!JC7}?f(j*aU_{WDuV8$}OCr8mE?i7bC zsl=C9Ahf`asp`Ia6dFRXvd-5?O$VDD8hg6{-@to&%)!tSB4aaMH!G z#hrm%QUa7ThAKv1Lxj{sprW56Kj?y|qkm2O#>q;n87ZZw3y=0kbl;LRZ+Qg+f&9Cn z9w?C&r?#EHE+m(5aya(osoqdWVKUmE^IAgg{js%xJMO!h2DB`+#0)&+4%+6x1VUN!Ks2dKFLjT)qVO~wR@Va<0&%|I2o6wKhFIFe#Nnp_|O z*r;M0BzT0h=Zb=9k~K6I)Jj4u%AZ;S9kQ7?o`KhHbTExSV&efM20Hv`FO!1=p$;L- zB90zxpjx}O9(CUsL13`i7IMjYwq4?QLCST=+QAk%({V~`OW2vz-Pqq2Yxr@4_#V81 z3`TjeO{W81)<`!5_7_sXC-yxnzDLQ{v7pjzKeR*~{}`JMedJ}Fz(IsX_6)Jz=A%){ z;#2n5lmOqYM6YW|4nGb2!Qgnht5?+5lWEt*{ub#-lbeF2Fc1ziu|=SkKjBHhSV3E+IM9Tv>6SkFDgut`f(t8p=J!IYo^#o}o=GSxeSU?xvJi7+%f|Ii%hry{NzTy{SCa?AvH8&%&l=&DM{Z+x z21k+19?=--T8?kFAed4tWn8bGdGsfR--U*TX6*2=-s^|5j0UR4C-tE@<0XAip57?W zBhhk!4dm_l58p&=@9w^f|=Ww_`?z(>RR!_I&9scA# z_wZ$I-ZXUV(7A`qY--DhQY;O{jJ-+I$CjwBEX2gwsv>LWXL=}nxjQGY%!=8aFC zv3`1KT6=4@FD?a(f5Cu(>4oiW&o;|b&EUTAzVy+1l;y6J=55L6$q^`%8X*%=|GmxC z<~Y>PVzqRDW=82TIy8n;Z|laTC18PItujxXaIDNp;~}%@?J0Q#iTMk(46)fN*Bi-aPxz*r9`6$?X};1ma|u@bl9a zG+utTagMUyhscq7qF@Rxh^T0L3WQnv4(Vm-&=Z&tOf1gy`9@X-vf}~J_co?ltvugl zqKb{a3|oT$Bd3m0t^L4nPSHQC=?OWkoc@vm;cQAPpFFmqqg5U^ADqMMMrj}Vg90v6 z?@N`F@qq!YLR|Kr3(PW)(BB9tf4MUNej%J}C6FB9$C&6G+@8!A$y&N*mBeGjTjGSV zW4zFkmP8Tl%~Q=$-Cru;x%$}6FPDX`o)7#wQ`xW9ZU0$7dCX|2zf>1!1x*EvJZ^4o z&T*!b6aLo9e!V+H<^J#P&UXIDu$*{5eO|dl(3==ZLw$&Fbg6?fPK7MKRJX1RT+ecb zUlgu5?eLLmI>*h=f709-e&FqO6EFi_+_58c$x9~c8O(RJq{e&tliR?rY>cBu zjE4P{Vh1(f8Ipr`&A|Ftq)}LxDlS!s*&KXkp@n?XE(<@{X_sy~r1+qpq`YzKhCRNl zz`4oC4OuhFyF&drIy%bdMJa~jkr>6VZ8t`}qrb9jTfo5vZH)6$MVGXVqO$USXgQZG zQ%9i|pRPq5+E5ntV`nZ!{kZ9rRgnjoH|;OKrw4Zt#j=ZGrU@174h)rMd!SD@%>lmMnkAW@NBGu_| z{|GH(c{W0WgFRH74*TmxR^17@A+9kMZ(bA3=liS`I}^Mz_+jlKN^OsNzfX17H|G!+ zrZlsL`go+b8d(Gg>ZuOWu{hw{@y5i%cr#?{^GZ>1MD2rrD+VVoI5`jFeIn< zNzLnH_PzVm#}0)HsB7@l0}x_?MoURR;&GNVd%NEQR)_8WTz5nkl9*4|B%S!b)K(WBt zqcbvb(h2j&I7N{wyV5MEhnilw#s9B6MV@*Y z4yv)Qq9!Th_>Z&{8zjy<_wW3>+-I#C`PQ*II3dq8F#nsgQD}MLEdS@_%u4kqLbU)( zNbkmZ-$E2JW4C5)klNK5N9HQ8GM*mRX<&>k#XyL_bxW}K>^fgSr(gnVy>ouC2!xP} zTpwY_hI}p`6ko^uv6?KDxwW8;X<`&-jbe{EJkvO2b56IiN#f^+F7C@+i%kp91p{`B zyZDVBwE7f#@)Odh&TiRBD`M0BYIbC(c}2{Ld`O`m3deuJrt>)e3p$Gm`5h#NulLGa z3h~>EZ@$Kwfl`4bDzx}}Z9LsmOL&)VZx{GRD231MOI6kv?DxKHPq~P5SMssl2bASH z8@&O;IdQ?ya+JDpm~%!t41cxg?0PP11LHUCZ+BBAk}6=QTDW%7|5qPBL2YgR`z05% S^!)UD0O(yc(k5y;M*kmMj8a4Z literal 0 HcmV?d00001 diff --git a/src/it/toonitalia/res/web_hi_res_512.png b/src/it/toonitalia/res/web_hi_res_512.png new file mode 100644 index 0000000000000000000000000000000000000000..bb20f995c01be75a8d542168d66fab3c11720f87 GIT binary patch literal 19968 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.getSharedPreferences("source_$id", 0x0000) + } + + // ============================== Popular =============================== + + override fun popularAnimeRequest(page: Int): Request { + return GET("$baseUrl/page/$page", headers = headers) + } + + override fun popularAnimeSelector(): String = "div#primary > main#main > article" + + override fun popularAnimeFromElement(element: Element): SAnime { + val anime = SAnime.create() + anime.title = element.select("h2 > a").text() + anime.thumbnail_url = element.selectFirst("img").attr("src") + anime.setUrlWithoutDomain(element.selectFirst("a").attr("href").substringAfter(baseUrl)) + return anime + } + + override fun popularAnimeNextPageSelector(): String = "div.nav-links > span.current ~ a" + + // =============================== Latest =============================== + + override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used") + + override fun latestUpdatesSelector(): String = throw Exception("Not used") + + override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used") + + override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used") + + // =============================== Search =============================== + + override fun searchAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + + val animes = if (response.request.url.toString().substringAfter(baseUrl).startsWith("/?s=")) { + document.select(searchAnimeSelector()).map { element -> + searchAnimeFromElement(element) + } + } else { + document.select(searchIndexAnimeSelector()).map { element -> + searchIndexAnimeFromElement(element) + } + } + + val hasNextPage = searchAnimeNextPageSelector()?.let { selector -> + document.select(selector).first() + } != null + + return AnimesPage(animes, hasNextPage) + } + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + return if (query.isNotBlank()) { + GET("$baseUrl/?s=$query", headers = headers) + } else { + val url = "$baseUrl".toHttpUrlOrNull()!!.newBuilder() + filters.forEach { filter -> + when (filter) { + is IndexFilter -> url.addPathSegment(filter.toUriPart()) + else -> {} + } + } + var newUrl = url.toString() + if (page > 1) { + newUrl += "/?lcp_page0=$page#lcp_instance_0" + } + GET(newUrl, headers = headers) + } + } + + override fun searchAnimeSelector(): String = "section#primary > main#main > article" + + private fun searchIndexAnimeSelector(): String = "div.entry-content > ul.lcp_catlist > li" + + override fun searchAnimeFromElement(element: Element): SAnime { + val anime = SAnime.create() + anime.title = element.selectFirst("h2").text() + anime.setUrlWithoutDomain(element.selectFirst("a").attr("href").substringAfter(baseUrl)) + return anime + } + + private fun searchIndexAnimeFromElement(element: Element): SAnime { + val anime = SAnime.create() + anime.title = element.select("a").text() + anime.setUrlWithoutDomain(element.selectFirst("a").attr("href").substringAfter(baseUrl)) + return anime + } + + override fun searchAnimeNextPageSelector(): String = "ul.lcp_paginator > li.lcp_currentpage ~ li" + + // =========================== Anime Details ============================ + + override fun animeDetailsParse(document: Document): SAnime { + val anime = SAnime.create() + anime.thumbnail_url = document.select("div.entry-content > h2 > img").attr("src") + + var descInfo = "" + document.selectFirst("div.entry-content > h2 + p + p").childNodes().filter { + s -> + s.nodeName() != "br" + }.forEach { + if (it.nodeName() == "span") { + if (it.nextSibling() != null) { + descInfo += "\n" + } + descInfo += "${it.childNode(0)} " + } else if (it.nodeName() == "#text") { + val infoStr = it.toString().trim() + if (infoStr.isNotBlank()) descInfo += infoStr + } + } + + var descElement = document.selectFirst("div.entry-content > h3:contains(Trama:) + p") + if (descElement == null) { + descElement = document.selectFirst("div.entry-content > p:has(span:contains(Trama:))") + } + + val description = if (descElement == null) { + "Nessuna descrizione disponibile\n\n$descInfo" + } else { + descElement.childNodes().filter { + s -> + s.nodeName() == "#text" + }.joinToString(separator = "\n\n") { it.toString() }.trim() + "\n\n" + descInfo + } + + anime.description = description + + anime.genre = document.select("footer.entry-footer > span.cat-links > a").joinToString(separator = ", ") { it.text() } + + return anime + } + + // ============================== Episodes ============================== + + override fun episodeListParse(response: Response): List { + val document = response.asJsoup() + val episodeList = mutableListOf() + + // Select single seasons episodes + val singleEpisode = document.select("div.entry-content > h3:contains(Episodi) + p") + if (singleEpisode.isNotEmpty() && singleEpisode.text().isNotEmpty()) { + var episode = SEpisode.create() + + var isValid = false + var counter = 1 + for (child in singleEpisode.first().childNodes()) { + if (child.nodeName() == "br" || (child.nextSibling() == null && child.nodeName() == "a")) { + episode.url = response.request.url.toString() + "#$counter" + + if (isValid) { + episodeList.add(episode) + isValid = false + } + episode = SEpisode.create() + counter++ + } else if (child.nodeName() == "a") { + isValid = true + } else { + val name = child.toString().trim().substringBeforeLast("–") + if (name.isNotEmpty()) { + episode.name = "Episode ${name.trim()}" + episode.episode_number = counter.toFloat() + } + } + } + } + + // Select multiple seasons + val seasons = document.select("div.entry-content > h3:contains(Stagione) + p") + if (seasons.isNotEmpty()) { + var counter = 1 + seasons.forEach { + var episode = SEpisode.create() + + var isValid = false + for (child in it.childNodes()) { + if (child.nodeName() == "br" || (child.nextSibling() == null && child.nodeName() == "a")) { + + episode.url = response.request.url.toString() + "#$counter" + if (isValid) { + episodeList.add(episode) + isValid = false + } + episode = SEpisode.create() + counter++ + } else if (child.nodeName() == "a") { + isValid = true + } else { + val name = child.toString().trim().substringBeforeLast("–") + if (name.isNotEmpty()) { + episode.name = "Episode ${name.trim()}" + episode.episode_number = counter.toFloat() + } + } + } + } + } + + // Select movie + val movie = document.select("div.entry-content > p:contains(Link Streaming)") + if (movie.isNotEmpty()) { + val episode = SEpisode.create() + for (child in movie.first().childNodes()) { + if (child.nodeName() == "br" || (child.nextSibling() == null && child.nodeName() == "a")) { + // episode.url = links.joinToString(separator = "///") + episode.url = response.request.url.toString() + "#1" + } else if (child.nodeName() == "a") { + } else { + val name = child.toString().trim().substringBeforeLast("–") + if (name.isNotEmpty()) { + episode.name = "Movie" + episode.episode_number = 1F + } + } + } + episodeList.add(episode) + } + + return episodeList.reversed() + } + + override fun episodeFromElement(element: Element): SEpisode = throw Exception("Not used") + + override fun episodeListSelector(): String = throw Exception("Not used") + + // ============================ Video Links ============================= + + override fun videoListRequest(episode: SEpisode): Request { + return GET(episode.url, headers = headers) + } + + override fun videoListParse(response: Response): List