From 4a1bdae3fa44617d7f8f050a94d699314986e805 Mon Sep 17 00:00:00 2001 From: heagan01 <54394590+heagan01@users.noreply.github.com> Date: Tue, 13 Aug 2024 09:46:07 +0700 Subject: [PATCH] Added source multimanga (#3631) * Initial Commit * Updated res * Added isNsfw: true * New line at end of file src/ru/multimanga/build.gradle Add new line as requested Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> * extVersionCode change to 1 src/ru/multimanga/build.gradle As requested Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> * Update MultiManga.kt --------- Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> --- src/ru/multimanga/build.gradle | 8 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3622 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2127 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4857 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8300 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 11895 bytes .../extension/ru/multimanga/MultiManga.kt | 334 ++++++++++++++++++ 7 files changed, 342 insertions(+) create mode 100644 src/ru/multimanga/build.gradle create mode 100644 src/ru/multimanga/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/ru/multimanga/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/ru/multimanga/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/ru/multimanga/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/ru/multimanga/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/ru/multimanga/src/eu/kanade/tachiyomi/extension/ru/multimanga/MultiManga.kt diff --git a/src/ru/multimanga/build.gradle b/src/ru/multimanga/build.gradle new file mode 100644 index 000000000..2e9eeaa01 --- /dev/null +++ b/src/ru/multimanga/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'MultiManga' + extClass = '.MultiManga' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/ru/multimanga/res/mipmap-hdpi/ic_launcher.png b/src/ru/multimanga/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..00567ec22bbc2d8c1d6a69a552c341424c9dd5d5 GIT binary patch literal 3622 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 literal 0 HcmV?d00001 diff --git a/src/ru/multimanga/res/mipmap-mdpi/ic_launcher.png b/src/ru/multimanga/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0938cabc1911299577a207d02df2b0b0e0d058f4 GIT binary patch literal 2127 zcmV-V2(b5wP)3$g7(Fx7VHRfEnL<^hv?T)4MTM3k;)eTfO#I=7ApSs5&?q9PB*ut|5;xQY6p&S1 z5)%`R;vb{98wFdf%3^70HLV3&yUo^_=l8w!&UsK$3`>Dyl<#(0FiLU_)AyZ*r)^A_PibL-FnOj8+9)L_J(P(eO6u6+UHichx~5RJxg z&;83$M*zh83`Yd2&m50cOBTYL=Yr?dF&Hsw6dWWgZdL$#h|>k1GXo4j^Z`YX5<;PZ z>;M)o!%r#z5d_mbWpqAfmzSV8ebi*UCO1a48Q~KoZ*YT4o0369A0?5kP6shli^t;1s_nZA_QnkK$Wq!(TccU5Afg z`Gd=FxUC(BB5}0$$B~jq>PEU51c39eF#zZ|QZfUZUVAa4ghT)ugD$%Nu8MKEvh-9# zcDgKqf~hqKRo9~9^H0&acMlw?6uM&x>}YPs2aRorCsTu$P>lc}%?FMO;1T>(|0^60 zhweK;w+m0sD96}<8hHfc8IdaxfYX(SL>EU#CR)*cG?~Pj`UBY6dRPw%`|7{QEeci7 zyxN8V_JMqCe*LA)3@jo5f)DVMM|s_NdS*Go-Vr8AnkAb4onh>1@4_=b>_tM&4aWpP zbY=wrONbL=q)z!Vz>cy?Gq zTh_4;SS1usB(QeMa?@5X@ZSTE<$X{BrvN~>p!sdbQ zKD@Q36?Glm`gnr_FyqP&vl%=*Ae0MvNk$(LG&cu#j zK0f=s5ns3bjfO)#=t&G%io%>3IEMgev>9eFfY8tYuoQ@;_8lLh^ZRe%bi3i7Fae>d zwTR`1aOc9MXw-{2!TVHJa|UqsxmVcc0hZ9#^{Y`b&gug>F`!-)X+4Pck3K-*`4=KE zaWb4EM##0$ZFBEMV^d37A{4{;paG;6bg~bG{u2Nxa`YUxlWgQXVQQV71Yque4Is^vm2!I9hL>$6 z6pzQT>cutqqp?XhP1v|#^`oq$7|WL|g3o7Nk!b+T5)yIdETOY%tqic7!r{ySxRkhi z;lotSHKYO1zA%`oiiy}nrHJi{Ol5!pWNL!~kgk7Ok#Zi`_Qor=45R}vBqA>CE6XQh zGbO^~4xnny8gep}P*pzZ!~xKD*~C1+Q7AirCD>i3tceZj zs2gA!04m1=0h>iVN$8e23-mB*C!?GtR5|U^GzPTUWCpfxd^NL#7A(Oo0$|i@Vlqmh zk{H;sZuRj8P*HPPm56kB|Z!>9~^qmX*m zyt~I?bnE(;kG~I0o;u6M2WZzf0|1s-G#16Y`41`*GL;I-X05`&2?t=TPb36`Be7!X zViXmPmNmjgMIteI(UG76?Ul6~X=lyIq~=^uR?4NseeinJ4K9Jl-oAdUe0DW$4%^P1 zd}YpI^vo&Dfc?tK?aoskt1SVArC^fwax}nZpKQ}MV@;T@#x2YxBRgp7V9}kC!*qbb^y4K-vfo|;8!v3p&2mbyAw1*uPU90C?6g< z(|cm>XK&?0c>^(gjrGoNCi$?a`2T-37(QZ@C!h2T{0oP4aeUDt9%BFi002ovPDHLk FV1jsg@Kpc+ literal 0 HcmV?d00001 diff --git a/src/ru/multimanga/res/mipmap-xhdpi/ic_launcher.png b/src/ru/multimanga/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..463b2393c6f175bd0be1919913264bfab86c2c81 GIT binary patch literal 4857 zcmV~7u(NeF33HUt{pZxBI2-Vc>p>p7l2jvgORN4wLNNkszvo zAtH21;30t8*t4^hjgZ{P^T{q+NrnnRGJuuc;qfw=H6Tx}cm`S) z(U(+d)yPq3H8#)79dP*ci4$|qpFh!rf0C5ynj;^xm=F@2lsB9i|yKsw7`e}vi(W;NuNIFdzFDeFhlj^Jp?{U zS$EBkscsv)kH_@82;P+mS;iEzoqxMg)-gapEUq+D%I@lEkS=zM<&}>9di< zGPNf)HtbWyys0_h1lF0Ny`0KOQyEl*Kyt^g9GxPn!|{Lp)n^6Riu^#ko*CjHz=a)T zO`Um5wU!}M^D;DGy7mP6hd(2u4*`*`E)~%vbOwVFVq+%yp>rm?T#%8GhM^)Uvg~vr zhNb5Z{~quMpuVvQ+S@yXAw~+0J^|EI#lg=C@kb+mywMOq_MZ_zp_OdYa_?-wE~f(u z3kN}Ja*9BNbkmbS0^s81%YYGAm?Kl>rxPeFoHSu9+;;0C$jnIBk{!7KgtX*pO)b3h z-bOf4@eQEaRYuLafd#_^2`Iwu8bSnwV|K+zj5I)#03+~80>3jTAMU;DP8eP`tV;^D zkqGzL($Wh5TE7WC-B}JD?LJha1QjXNj!H-XoQ@<|FmDztf8ZX-&B-w&fHfe~Q+@s- zJpY$hVec0Q04JLf$La+ZF(*JTs0|McXNU-zyJ#>x@z{efe(Xp{M2Y0x8XKG8^|#i+ z#?4!y-Ag7^9!wki5|MyK3ueQk%kIb6JO?>6k~ML3K{S15t1rMG|MW8K*}I>E0J;5- zDFJ-oi*V5e69G>>z6>Ue9SuoI`~)Iv)#3ndK&E%FJ6Le1HJ8%FLFHsHC_kY683=4Pe@11ipX=j>$y?pb2{TXLmzx zcBbHg6VMqaBqre}QTSbLGbTVG4$45HCkfCBNil>Gq%CR!KH3T%uUBS1cnGlLxpPt- zuxRQ8_`%HUAQj`OPQM>)7!^75^1)SD1dag%z?Otl9EDaW3Fz5w*J6xf{@X@@jHM!+6&!Wco~K62rPX%z_qmTSP|8*f(i0TDqm zi&;WWc*UXs9JjhwKA03+$AsH-r|3AYU?fGPP|keo=9c*Q0q!EQ%QD1zKM^C6|U zMDPnN3Oa{T(DQ$O1@>VW8Xy923*fPSw5&m?plR6um}r110jdsIjDl!$qZ77*05xZ+ zBqR-`eL+zkEH251EOfwn;In-;rxP;APlBA8vmq&6NOOU|qa7|)oq>1Ptb2zc6{wdxc!96bV8Dk`AU>k;~*w2%iEpsJfau4&LZuTiVIE)s0Y*^}o!(_jfVn9B-yd24nQGE6N`{&u zfjuP!a%Rkg}bZve_yas{){Co{;J9`ysyrEo?qGxJ* z^3dnjrXnWm5D@8{thW@6rOa{V79+ zfZde>ZKo>1--;RJ$kmvx6Os?Of+TD@bqRJ<*FYOaNoo_t9w9(GDiR4OE*=ak1t&bl z^h}tX@CTca0G%j^P$2?}(_C=hXt!W~P#NT#fyt!CHitv7SwSDB?$z2Wz9UUIUe^R` zkDrB8jUKsU4w>PY5}+H7h6X@Uo!ea$1p$9U0>WXa>NycKoZDjPnG8Q2UK<1e{%K;yn`e(b%ZmfaUnoWI^_gVGEOBlRJ~$MqBqJ3 zPzNUb?VwaA+%vKW#^z>1qSOXOOMuGpi~ur2doR|)8Z<)`q6$%|q9wxxZ2Qb+r z6ZAAWVJitxi6-sH$e7%8`0?-}C`L1+p64{_oOPt1dh($ODn|`id;A>K;i6HeVh!1H z4VXB6k)aO=3nxZF_%A8~-Vl9&r(Kc_RRNy~Lk5PTH@ov;esLb8J22g>VctXyQlAsZ z4$-jvtc@2ZW?Rl&f%hseKr{LPrBL=b0rE?Vl7NOrc$IQNQUY|q7eYx2d(&NTJ5I(X z=4F8^QAZDq2r!U-0=oeh?BDsi8g`to6{4WH5TGqb(GwsFLAcQ3fdeS{`>xdE?;YUN0YA1Hpb5I10Qzf4aWSlX@*yOEl5zYqVIF*W+K|-y z>S~~N*Jsdlr_ba`JS_rKCF6IR2rz3ig1`yVrxQ6S!bOEkz*(_)S zMMbm-pOk^XmkfclvJv1aD1^k6ROm!aICtR^{NeeRU^iAp_(N3@G6So0)++wPastLp zTfk+4#DR+OP>H)3enU=pe0+R>6tqBF8#?3Ns0F)(cs04G7}7_NhZJ`SB&Oj)4pl{< z*<@uYi~uT2(YnWg^{*z3aU(#wDBqh1pvt(`GpC^r9kMfj5Ef>Q14r&au+wUoWD!SB zz?VXCu2x}~AZi+sRgV&&baF)a07ynqDcV;M>&kmFTujDTmKdkM<->Jy-6 zhGR|uj}Pcg1PIbfu{+MJZCDwnRVl4S0FUF9l4&^sW3QWU$_LPFw4|i>_yC@HgAlgT z{Q>7Lz_aLtnFgpGYqTa3KLP~*i~mtB2p432`{Z)dPM9u^igGC(!I%7tgh;r*7FWky zSpCNC5#u3&hX5n+={!A4Kx83KR0McDUf5Os1spq3A%uZiBZ?d8bEi*ys;W@QTk{brlWC1jB`Ce)IC}q$6Na`x>-0M zZ_s$)UdYQC&@BRXlM_}Dzyp44G+?SZ9}tZRYQPn-S6*KO|K9jtp)gCiY30 zEm=4R9$Wr%7-;q$v5*Gr-a}DPSOa*$k1GN4c>wx=ryeow1C#`W<8XB=9+{WHdQl`` z@xs|r5b&Zf6J`XM0l&uy(4GfaM}W4}N7_Rg58WlXWKlF4&`Sy6lZ4QE07XF-Xn@uO zxwOU-#Cz0S=mV@GfG2uVwy``48Z%{{xp@GUry~K+L_xs&9(*X4~+t?7GWpW~%a7Y8l3IB?s zpuAkuVd(FlBOf4-f_Q*uZDK|M-y*rS1n6D3R*r@_;XXsa=qYo#eE@+%8Qv1N8=hJ5 z2uw1$9w3IHXo5C`3bRz|47Gy+6cOQ31)>waW(bf2!lIz=6Y%n?w}pwA2k*m*yyrq= zDjteeg)p?Q6Tp{_ww3@9Uw!adG}Pw^7&Ungw+UiZ5z&|+r3UB{uChieq#_p0?K>vO z3<07Kz_OGQoCmDL}s5g->rYY14sVY7Ibq*}GVMs7lwh2TEQ z1@&1CFs^a6f`HYqeuJ0|l@Xu=ymV65=Li@%$-EDU&IBn55cB+MoAPU>0gEvm{rDrl z=o=F;GX$`Czz|GD{BGr==mW-@stu)iz{{&b1PC{1@BuH?05%c3CJ0cAP$+h{gaBNg zRD0l_-ZG`A0pdig&k?|vjuxvvx=TPkX~1i%aVCsTSdk6YTMcDn>yreGm^j(% zvhs9jU*u)$nL^rU$D8$rmkotkGw`X2Sog1!#OUgrc&6*2s*LSBcHskD&tsvMVF`#T zCov&F3v4Z^!1t>NNijRC!Bj~Zh!-foNCJ=~&rigtT)z?cY&=vOMA4AeGeWh-O~qLx z1fpPcZ?l|$;S+8$SSw#Sq595P1A**cM z%ws4?#*ZOqFmh-vM-$O>7?5YQpBHqi+TnQGE063NhW$nT^mHPC9$%k1eB6zjz-FJM zVvWVGc+oV`)CgFk{Z;{Lx}RX+#5YIF=izZtzdt~Dfe#T-ICSi?wDjy}%m6JNI4?gu zpz^da4Vr}qc-tCZsIENxB6b<|8#LHEWYW-^=9ZR@-;m^R4d)pvFW{^%9#DDO@Qf{% zZSc9Hl~=2e-O<|GN^cx##ZOf4kP)i9Lw+D5EiMMSCi zAu`B0lXkEdd&cMrdv&)YMl@LRidfouN)`~tP`TYch z2_R`F(CH_>_{O?-Niq>6vV@m5Vv7}b7I!VyLScc0r4)CU7AP)7UZ7AG*W%FP?(P(4(c)IzU0d9W z+tNQlA-TRGv^*MejM11PuPnBuY&^enH?E9elk|Dgxf17vn(X?{Crm$A7QGo)7Go{ zQ?v9uHnfd7sY#2IRJ?XeyOHHxE*WnwOdZmvO!OZT>Vcg1?;bHjrn|QO$^KaAbaRrK z3070J5n5N``|s{vYH#@$+V5c=e;UQEgq|P2OB}J0kXVSc3d=euQSvJt6b{O{mRjDZ;alES1aV(S4+qA-bw#zgw+*f20e}3Dbi|*dBkh`#(EV^z{ zS=|~|`=PR@4uL$5KA&L0RkV09Sudu`lHt2=(wmE>gWFOozhQ@veU~GJ;>VM*8(PNN zS=#2D(MtN{x8xMKM6Qv04sG2?9qFH!8=k{>3hcwXng$=H;#aZn=gbj@G-JQZE{MLA z{fD>Wwtj-Xc2p$W`NeIz$kn*#fwEwsPAK}n4)D)D0^)ZNsWeK;*2x7gd!kOmL1f7~ z;DtoK;N|t3n+Jj$?}r?E#NG$Q`x?Eg2Or$&^q>McZbo(Kqq$eZVa=b=wViU}gK4&e z-QpUY9VTTNhhkP~ucAq7ZR16%2GArs>1DbBiAhOvOdAtvnFZUO?RSfO<7NVEXUe6$ zNk0YQ9;6D8m}hamr(e@G%nuj)D>Xb2$Xit_pcqDMQiKq40vlOg9JB8q8;p2mnr%il z%)EXhE$jQJ23@~P`%v|C?w}oRFKdAbb!=4d0wFr?GJMzZ9&hGvdvzY!5cW;*&TUO! z^kkJ{Z<(Fy_Z{%0awgr)zpu~;*=lNP%qN->AD+&dOc+=ci)}3y*lN+#hU`z~UHn%1 zE0&(zZLNL>TL_kX=BaUu{51t;Z?&gUhmOj%nf%c(cKAhKgb01Q-t4Q(qf}&e7%B(# zDu0Wa!OYlw>`=Jla-F=RY8QWP)q*Rud`gF6Gp!2P_T^$5`IZ~BaN{Q9Z$aNxTkAY> zVbC``u$dQEDnv-h}3B4dTP{C8d2r>7~veN>Uc~$40~#)alqZ1j@0bYxKOZ z%GqO+_J=uPvyXN5<|XVg%MbY%Uop>CCvizX(LgKia5jE15xlt`0blx3HT+i#iAezH zU$vHN1(AA2NjJV1ygHgvY`H>-Df*8eW!!B}6QA7frI*UgNHWvT8mdEIC(neA=<0!s z34rf^yaa`QTpO%5h%??|`;}5WuCY^%9!{@k?9NsD+>@Ym0@oeOGKzW5?7NZZz=oD; zaY+4(9!Q!U5or1-AA>8#x|4=aFT87m+p!Zd(ndMV@T8ik$wozxB#y-7>WMTdxwhIo z|5=$O=bx9L#9J%)^I;)kfs}(VX{-TKB(gaWg%c~1PcB7z$maog|3uKig-`S4u5wuR4lvhI_qr~ZAZY7ih-j%02KJ7Sq-KnBcD8B&JB+#N{K(JrGn z{XzP_r2Nr0G;Lt4m| zuK>Y!{*BHDKk+ag)bzE18){h6jCLgian*kB_OSbtUB0Je_%AH5_Y&VazerF0mQw@YA{ z9eVU*-D4+}F~A%+VcQC>U`DCIOG`O_y)5#MgEK+!AdW<$qLkhHs=zm`9x|>Um=fjo z$z}ml3EvM=Y;HG)+?y9x(B^-|mjXO&B3A&6^Mf(-)g6@hzttsk>Gw7-NWRCtCkH|+u#aYk+l4(7^JKfB_6svO z<33y1%^&wXiYqHER2v`OJy**1G4JYBG@*aPrS+79{f53>*%urH{x1Rk^(GJTr|*^&X-(Yl>ne1E4!sx zEkcH2xG8$NfyhF|a{Q|g`WBlUJ(J~ z@eTr()OzOq3mNx8%q0V=jrGP+XTVy+27tT2#+4e#xN{cLLs(quzn+SLHCyEmbH}?q z6{iv96>^FOFuzJK$R|;tOV_$e;)cn4ok3xi^BxT%L_sGFN!9H+RE;ybJ*g2`=nBS! zbRLo^{6Qn+xB|{H%A;ztix?Y)WLR1{*bGx>*3REio)7{gKFqtr^euoHtfJ^X)!W1m z$T$uvOJ(OKzsj*@3^=XVN$SQAD5@k%9qv)1y_5x*oAZ@QnE03e*^-muQ`5%V*mWmd zs0TAr8+OM$Te0$NT@?TaCB+tSW+pqp9RsLa3Ai~KkZ31zgp6Z6B!d6gq1gWop7sO@ zcHN&aVs$^m2!bkthn*cPRcb9a`%r}?t5aRGJRAA>EbIx)8GIo)lj>Q)Sx-rgF!^&R zudWcd<#{4OL;bt?Mak>xmqA2pH9UTR_Rr^!^&xOM=H9P_xod-aHoOGgXkQzu?UYIF z%h>}7wL7Gp{0duQKPW3|h2Us4e5U8rfVfsSL^qISKR@<4`2(o>b=+4S`!!Xv?iZlo z5swwK@ zneoO2i9Kb^{^dA$POJo_1oRk#S(ZqGNr|9k=HfBU9y2;!fyxcl)T6q_?6E|6WdQX| z-wi?bB_yZYnq#r`AG1lSl4&B9L8GVv29Y;-zD+IJ7bja2eh{{A@_SGPk}bD2vDXLa zJ+1=H;#p?Tg@5!XtMrh}-TER7wjXVQK%(&A!E*Ivke*8egOtRC7A8T{Ot*Jb zql{#O=Im|2eW!-d4uP444xaYS?~qdCRt7cAP=FUJ;V6JGKo`6q9@e?bGoxm5XIK?nW|(8`XUm_jW%mhF9=K1K^|zj~|}Sab{2A;I0kGJa!iO zXv?2ON!!fP4EGPeN!+fP;CTuBB%mQ$RcRpL7L! zf_xs$ngfk!PTA*=@7!NW{F=pDI^@hIGK|JM6{z&d7}D}Ss^JNr0f~Rpr%#<6?%Gqz zCix2A+i+Vm_N;p5#T|Vw6w1(%`HS~0a=TkyQQ?&d?U?il%u5|A01G+Lj_+UeZu|v> zrBR#Pxr6Q8Jy1Rc6zYFR5+iY{%Dr|kW7Kp1>!ZK7@T5^;falA<+*dog^JPJc)wWLV z-mr{UMPj(XHwBErg29LiRZwvr8E|o?H<3LGfNe^~q_L&rozaR_StS=y$gd8c4ad0z z-phWdu}2uC-Q=cJ`(qTUEy ztz$zyQ({GCXH8=mMA?;D^6J*v8F%%B*4&EwqMQ^vR-HK+pYV^;sIQvuGfV_lIAN!l z_JnKxEKU7-60tb@UR0iRX5BNZT=&JsB$ec9g&@-W;YW^(XWd7NdjYC9lO`SEH7r-gj6f_|TQG&ftwsqB} zP(862$GH9-#c_+DAZE;%^9Sp{sB;WL>Ns{s1)+0OyXv*0u0>nV>H@OI9L3|siQ+tM zPh6!q+BHRj>=#QA<2CPt~O_UTmcR&G@>_%3#Da2m~5{MsP+{6A{MxzKls?Xmg zCW20U_w7~+@k_>l2PtDxuui`#inh-(lxl@`D5doc{nHP+w>s#d(AV>NXm-x_YN;Fv z9JrXH8SD!)YybKBV7wLx`qQgmFQjF5XxxX1`6^v z%779DDh5CjZ8{u`Wj*{~=28{47(W$rWlOAUJ}~5cqxIyzm3)}Zmz)->KISeR|Jk9w zpBk|_fqxd^ZZYL(^m-*^kNk^RXbR}(8>eBwWcK}^&QqG>Jn5?jAyLU24`?N9K>uTD zf6xLFaWO~&vA3+vfaE@tjN;G~8!xB!8!=x|nvTLg^Qyxm;w zkZu$s=5Zh3)aCb!Ea=@1U(dv+m5;W;T5HIZ3yX>ga4IGs>mNw68RhVAI1AGkGH%1{ z@Uz0_We_9rx*F?sMpEM0k*@j4f%50#QdNsTC?2eMDJmXKmOLiS5>g zYcnX1TO}nzKTsLLZq(zERYv^M8S^<)Zik@>A@9rXzygUif;998ZQR4w{M0F@T5|DuEa^U*0vvS7^0QB@f9jj> zco`jwYpyDeH`yF$6)AJ=64ka#n2ye)P`Ro^mbnSKTqj=PFja3!tbf}1^cVfrBo{4o zRx#*F!Oa<9RYeT{wje~iF_T`u7q&p-{))n06D3z7p~tEov^Tadb{VaTf|lYo97Sz< z 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 1) { + "/page/$page/" + } else { + "" + } + + return GET(url, headers) + } + + override fun popularMangaSelector() = ".index-popular .gallery" + override fun latestUpdatesSelector() = ".index-container:not(.index-popular) .gallery" + override fun searchMangaSelector() = latestUpdatesSelector() + + override fun popularMangaFromElement(element: Element): SManga = searchMangaFromElement(element) + override fun latestUpdatesFromElement(element: Element): SManga = searchMangaFromElement(element) + + override fun popularMangaNextPageSelector() = null + override fun latestUpdatesNextPageSelector() = "a.next" + override fun searchMangaNextPageSelector() = "a#nextlink, a.next" + + override fun searchMangaFromElement(element: Element): SManga { + return SManga.create().apply { + setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) + title = element.select("a.cover div.caption").text() + thumbnail_url = element.select("a.cover img").imgAttr() + } + } + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val genres = filters.filterIsInstance().first() + .state.filter { it.state }.map { it.id } + + val url = if (query.isNotBlank() || genres.isEmpty()) { + "$baseUrl/index.php?do=search&subaction=search&search_start=$page&full_search=0" + .toHttpUrl().newBuilder() + .addQueryParameter("story", query) + .toString() + } else { + "$baseUrl/f/n.m.tags=${genres.joinToString(",")}/sort=date/order=desc" + + if (page > 1) { + "/page/2/" + } else { + "" + } + } + + return GET(url, headers) + } + + override fun mangaDetailsParse(document: Document): SManga { + return SManga.create().apply { + title = document.select("#info h1").text() + author = document.select("a.tag[href*=/autor/]").eachText().joinToString() + genre = document.select("a.tag[href*=/tags/]").eachText().joinToString() + thumbnail_url = document.select("#cover img").imgAttr() + status = SManga.COMPLETED + update_strategy = UpdateStrategy.ONLY_FETCH_ONCE + } + } + + override fun chapterListSelector() = "#content" + + override fun chapterFromElement(element: Element): SChapter { + return SChapter.create().apply { + setUrlWithoutDomain(element.ownerDocument()!!.location()) + name = "Chapter" + date_upload = element.select("div:contains(Загружено) time") + .attr("datetime").let { parseChapterDate(it) } + } + } + + private fun parseChapterDate(date: String): Long { + return try { + dateFormat.parse(date)!!.time + } catch (_: ParseException) { + 0L + } + } + + override fun pageListParse(document: Document): List { + return document.select("a.gallerythumb img").mapIndexed { idx, img -> + Page(idx, imageUrl = img.imgAttr()) + } + } + + override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException() + + override fun imageRequest(page: Page): Request { + val newHeaders = headersBuilder() + .set("Accept", "image/avif,image/webp,image/png,image/jpeg,*/*") + .build() + + return GET(page.imageUrl!!, newHeaders) + } + + private class Genre(name: String, val id: String = name) : Filter.CheckBox(name) + private class GenreListFilter(genres: List) : Filter.Group("Genre", genres) + + override fun getFilterList() = FilterList( + Filter.Header("NOTE: text search will be ignored if genre's picked"), + GenreListFilter(getGenreList()), + ) + + private fun getGenreList() = listOf( + Genre("3D", "3D"), + Genre("action", "action"), + Genre("ahegao", "ahegao"), + Genre("bdsm", "bdsm"), + Genre("corruption", "corruption"), + Genre("foot fetish", "foot+fetish"), + Genre("footfuck", "footfuck"), + Genre("gender bender", "gender+bender"), + Genre("live", "live"), + Genre("lolcon", "lolcon"), + Genre("megane", "megane"), + Genre("mind break", "mind+break"), + Genre("monstergirl", "monstergirl"), + Genre("netorare", "netorare"), + Genre("netori", "netori"), + Genre("nipple penetration", "nipple+penetration"), + Genre("oyakodon", "oyakodon"), + Genre("paizuri (titsfuck)", "paizuri"), + Genre("rpg", "rpg"), + Genre("scat", "scat"), + Genre("shemale", "shemale"), + Genre("shimaidon", "shimaidon"), + Genre("shooter", "shooter"), + Genre("simulation", "simulation"), + Genre("skinsuit", "skinsuit"), + Genre("tomboy", "tomboy"), + Genre("tomgirl", "tomgirl"), + Genre("x-ray", "x-ray"), + Genre("алкоголь", "алкоголь"), + Genre("анал", "анал"), + Genre("андроид", "андроид"), + Genre("анилингус", "анилингус"), + Genre("анимация", "анимация"), + Genre("аркада", "аркада"), + Genre("арт", "арт"), + Genre("бабушка", "бабушка"), + Genre("без текста", "без+текста"), + Genre("без трусиков", "без+трусиков"), + Genre("без цензуры", "без+цензуры"), + Genre("беременность", "беременность"), + Genre("бикини", "бикини"), + Genre("близнецы", "близнецы"), + Genre("боди-арт", "боди-арт"), + Genre("больница", "больница"), + Genre("большая грудь", "большая+грудь"), + Genre("большие попки", "большие+попки"), + Genre("бондаж", "бондаж"), + Genre("буккаке", "буккаке"), + Genre("в ванной", "в+ванной"), + Genre("в общественном месте", "в+общественном+месте"), + Genre("в первый раз", "в+первый+раз"), + Genre("в цвете", "в+цвете"), + Genre("в школе", "в+школе"), + Genre("вампиры", "вампиры"), + Genre("веб", "веб"), + Genre("вебкам", "вебкам"), + Genre("вибратор", "вибратор"), + Genre("визуальная новелла", "визуальная+новелла"), + Genre("внучка", "внучка"), + Genre("волосатые женщины", "волосатые+женщины"), + Genre("гаремник", "гаремник"), + Genre("гг девушка", "гг+девушка"), + Genre("гг парень", "гг+парень"), + Genre("гипноз", "гипноз"), + Genre("глубокий минет", "глубокий+минет"), + Genre("горячий источник", "горячий+источник"), + Genre("грудастая лоли", "грудастая+лоли"), + Genre("групповой секс", "групповой+секс"), + Genre("гяру и гангуро", "гяру+и+гангуро"), + Genre("двойное проникновение", "двойное+проникновение"), + Genre("девочки волшебницы", "девочки+волшебницы"), + Genre("девушка туалет", "девушка+туалет"), + Genre("демоны", "демоны"), + Genre("дилдо", "дилдо"), + Genre("дочь", "дочь"), + Genre("драма", "драма"), + Genre("дыра в стене", "дыра+в+стене"), + Genre("жестокость", "жестокость"), + Genre("за деньги", "за+деньги"), + Genre("зомби", "зомби"), + Genre("зрелые женщины", "зрелые+женщины"), + Genre("измена", "измена"), + Genre("изнасилование", "изнасилование"), + Genre("имеют парня", "имеют+парня"), + Genre("инопланетяне", "инопланетяне"), + Genre("инсеки", "инсеки"), + Genre("инцест", "инцест"), + Genre("исполнение желаний", "исполнение+желаний"), + Genre("камера", "камера"), + Genre("квест", "квест"), + Genre("кимоно", "кимоно"), + Genre("колготки", "колготки"), + Genre("комиксы", "комиксы"), + Genre("косплей", "косплей"), + Genre("кремпай", "кремпай"), + Genre("кудере", "кудере"), + Genre("кузина", "кузина"), + Genre("куннилингус", "куннилингус"), + Genre("купальники", "купальники"), + Genre("латекс и кожа", "латекс+и+кожа"), + Genre("магия", "магия"), + Genre("маленькая грудь", "маленькая+грудь"), + Genre("мастурбация", "мастурбация"), + Genre("мать", "мать"), + Genre("мейдочки", "мейдочки"), + Genre("мерзкий дядька", "мерзкий+дядька"), + Genre("минет", "минет"), + Genre("много девушек", "много+девушек"), + Genre("молоко", "молоко"), + Genre("монашки", "монашки"), + Genre("монстры", "монстры"), + Genre("мочеиспускание", "мочеиспускание"), + Genre("мужская озвучка", "мужская+озвучка"), + Genre("мужчина крепкого телосложения", "мужчина+крепкого+телосложения"), + Genre("мускулистые женщины", "мускулистые+женщины"), + Genre("на природе", "на+природе"), + Genre("наблюдение", "наблюдение"), + Genre("непрямой инцест", "непрямой+инцест"), + Genre("новелла", "новелла"), + Genre("обмен партнерами", "обмен+партнерами"), + Genre("обмен телами", "обмен+телами"), + Genre("обычный секс", "обычный+секс"), + Genre("огромная грудь", "огромная+грудь"), + Genre("огромный член", "огромный+член"), + Genre("оплодотворение", "оплодотворение"), + Genre("остановка времени", "остановка+времени"), + Genre("парень пассив", "парень+пассив"), + Genre("переодевание", "переодевание"), + Genre("песочница", "песочница"), + Genre("племянница", "племянница"), + Genre("пляж", "пляж"), + Genre("подглядывание", "подглядывание"), + Genre("подчинение", "подчинение"), + Genre("похищение", "похищение"), + Genre("презерватив", "презерватив"), + Genre("принуждение", "принуждение"), + Genre("прозрачная одежда", "прозрачная+одежда"), + Genre("проникновение в матку", "проникновение+в+матку"), + Genre("психические отклонения", "психические+отклонения"), + Genre("публично", "публично"), + Genre("рабыни", "рабыни"), + Genre("романтика", "романтика"), + Genre("сверхъестественное", "сверхъестественное"), + Genre("секс игрушки", "секс+игрушки"), + Genre("сестра", "сестра"), + Genre("сетакон", "сетакон"), + Genre("скрытный секс", "скрытный+секс"), + Genre("спортивная форма", "спортивная+форма"), + Genre("спящие", "спящие"), + Genre("страпон", "страпон"), + Genre("суккубы", "суккубы"), + Genre("темнокожие", "темнокожие"), + Genre("тентакли", "тентакли"), + Genre("толстушки", "толстушки"), + Genre("трап", "трап"), + Genre("тётя", "тётя"), + Genre("умеренная жестокость", "умеренная+жестокость"), + Genre("учитель и ученик", "учитель+и+ученик"), + Genre("ушастые", "ушастые"), + Genre("фантазии", "фантазии"), + Genre("фантастика", "фантастика"), + Genre("фемдом", "фемдом"), + Genre("фестиваль", "фестиваль"), + Genre("фетиш", "фетиш"), + Genre("фистинг", "фистинг"), + Genre("фурри", "фурри"), + Genre("футанари", "футанари"), + Genre("футанари имеет парня", "футанари+имеет+парня"), + Genre("фэнтези", "фэнтези"), + Genre("хоррор", "хоррор"), + Genre("цундере", "цундере"), + Genre("чикан", "чикан"), + Genre("чирлидеры", "чирлидеры"), + Genre("чулки", "чулки"), + Genre("школьная форма", "школьная+форма"), + Genre("школьники", "школьники"), + Genre("школьницы", "школьницы"), + Genre("школьный купальник", "школьный+купальник"), + Genre("щекотка", "щекотка"), + Genre("эксгибиционизм", "эксгибиционизм"), + Genre("эльфы", "эльфы"), + Genre("эччи", "эччи"), + Genre("юмор", "юмор"), + Genre("юри", "юри"), + Genre("яндере", "яндере"), + Genre("яой", "яой"), + ) + + private fun Element.imgAttr(): String = when { + hasAttr("data-lazy-src") -> attr("abs:data-lazy-src") + hasAttr("data-src") -> attr("abs:data-src") + else -> attr("abs:src") + } + + private fun Elements.imgAttr(): String = this.first()!!.imgAttr() +}