From 742027746eb7c9cf65225d1fd11562c081f377ce Mon Sep 17 00:00:00 2001 From: Claudemirovsky <63046606+Claudemirovsky@users.noreply.github.com> Date: Sat, 3 Feb 2024 14:57:22 -0300 Subject: [PATCH] New source: es/HentaiMode (#949) * feat: Create HentaiMode base * feat: Implement popular manga page * feat: Implement search manga page * feat: Implement manga details page * feat: Implement single-chapter "list" * feat: Parse page list * chore: Add source icons * fix: Fix URL intent handler * refactor: apply suggestion - >imagine using string interpolation Thx beerpsi, i'll pay you a beer (without piss) soon Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com> * refactor: Follow chapter name convention --------- Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com> --- src/es/hentaimode/AndroidManifest.xml | 22 +++ src/es/hentaimode/build.gradle | 8 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5450 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3079 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6616 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12045 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 16117 bytes .../extension/es/hentaimode/HentaiMode.kt | 168 ++++++++++++++++++ .../es/hentaimode/HentaiModeUrlActivity.kt | 41 +++++ 9 files changed, 239 insertions(+) create mode 100644 src/es/hentaimode/AndroidManifest.xml create mode 100644 src/es/hentaimode/build.gradle create mode 100644 src/es/hentaimode/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/es/hentaimode/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/es/hentaimode/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/es/hentaimode/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/es/hentaimode/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/es/hentaimode/src/eu/kanade/tachiyomi/extension/es/hentaimode/HentaiMode.kt create mode 100644 src/es/hentaimode/src/eu/kanade/tachiyomi/extension/es/hentaimode/HentaiModeUrlActivity.kt diff --git a/src/es/hentaimode/AndroidManifest.xml b/src/es/hentaimode/AndroidManifest.xml new file mode 100644 index 000000000..58d50e015 --- /dev/null +++ b/src/es/hentaimode/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/src/es/hentaimode/build.gradle b/src/es/hentaimode/build.gradle new file mode 100644 index 000000000..485ba1fa5 --- /dev/null +++ b/src/es/hentaimode/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'HentaiMode' + extClass = '.HentaiMode' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/es/hentaimode/res/mipmap-hdpi/ic_launcher.png b/src/es/hentaimode/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9b84415f2deffc29a079632e9c8cc082c8b13d38 GIT binary patch literal 5450 zcmV-Q6}9S#P)Veec{expU{vWRe-z?+?zyeI~b^@}Bos&$-y-R`H2| z?G`@15x50V5e&Hn&@F%hQzEw*6l4Yw(BOeO1-0=omx5rl;($F5zwF5^;Rr!8tNiVgO*ZQE8XUApw!SFc`ef{w-F2sPGY?5sb3TfG~M z_c%(M4xDFwgw2Tq0OH(Tj){rcg9-1qd-v`$IKSy_;(P&Qt5vI3+4%VQwV9cjkLj#& z)nlGTpMzxIOjGOa`FsqLo$|(#qQLZa-)drFV`H};J9g~Z^z?MEO!5U#SerI&x}d?u zIBsLZ#&LRfL>rdJz=|4ZQ3E#5tkv@Y)NwUDJiPCoJ$tsGom?vxc>~DSTqMHYvgKI2 z-9FKmSovaBQQ!pfu2#1$ImH3U)Tf&`pZ48%-_1c^vb7mD6>ESB(6mjWnm2Er6c!dX z+8>=$s#Gb7jfxU`Zm#5HXUm1_*Coe7nff!B;sI*|Yr$>ZXsLJot>eax8}kkxJUA6& z%(7D0-WbHWDb=i5vm{V3Q32%EC^`gz(r(>#*IhEKdv~e6cdvvUKQ7r9F36Tkmn7}x zP02CMh^m8tHo5m+iMnz{vd*28LwM)(wQE|9{thk>2C8=f(0l+i4d8->y?ghTgsd!y`1oV7(bR)E{{lEu^YY|^0U+Z$L;ClZcIVGaY;}u@!^LhcE${CY~&DUCkX)UvT)vD z86|b;QmL?Tp@jeVqYI!zU{AkX8WXcW?5>xJ3zn4*Rdoc+AfuADYKYg$l`AKy(`QKJ z$l=aFP4}4=0HBZXcR@ZN)3u%I*x(mlkj?-n^sBF2!QB}E)Hx?d@@?*_(FzbkNU>B; z7Kc4XRS|T6tSnh{bhNCVH&0?GOptIWYb7$9ATA4_tgV1;)uM$=f~ZA&@`>{{2Ahea z8{CA8X1(R*+#e?SVh`^H4Ip14Mv+T(A&ROD0zmt{2A!(vLWj4cqNT-df{+Vf9g8z;}zJ}S`kp)+wHp zz3n!6qfZ~HvL;pRmoK?kmkg0yrTaqu=osfS)`7BKsZxpBskzR80kX1U#@SJSw}Y7< z1y(pVZj=y%vo{_9?c%)ipTQ?8Q>Ki}A2LMZp||V^HPk46p(WEr&VPVBMbD~_zbimB zYt)c80g_|Q8nGF4$^-zklcwGjxJE`s%4CRT%gvi5e^KtZ@(=eaQ0N0L=nTxA*PcE%wqZ2Sc!)PtBU8Ff^}6_ua=P0g%R6!xD0)DSHT}J zd;w#AAL&-P4Z06wa%Fx30|;i`tb>e=Dyu>;2vExN&rA4QZ%GKEa($X)TYL>UTdk_p zz_lvqU~FclrgLl;FG@au499_tjxtYj436c)r%t&TK~ZGgciwrYP;XI8kR}x*xr7OM zU!p}ocwZgt6MZ(MT3t*EDnP!Ru-k9HU6w+`?tovT0i^4kYz&Tmjvac%M$uE@fjOC` zpPzyiYmEp$4?xub!xCS5Nvc<`u8Bt&#DkM^5&#Z_c%BCH%mCe8wW_pk-CAnbsUxwa zOH;?lp~Ht|)v8r;4f!S(UXMg_Pnr3{8HcCIr4mH*4I4J}U=SNnsREj9@!HR|kxC@}e0H`GC4i`X%H8^i9q6jR2FI15XLh{Sd zbGN~9)xs@SH-U8;06mHUWdh{cvt~)hP8~fm#g{K%mO(GRDBpbZjT=Bckkyo0EFv`NOi z{IaIASg3=j+gPZBz^sxp2o1Ys6pfuFjqBcXkBq>~Rr%~QiP*W*6?nQ0ii(nwg}b?7 zp^^hddlS~gfeuGPS-ac<9iS%w(0M5HBxD?)>(7aW7%zFTc zKp6|cn=o;rtY5!gzgz$Y#Yz-(kP)CR5U~vw3y9v5_I4>N(GBlz$W;xmDc2ScJRtp> zHIullTeT=&t!%n=5FlQFydOnJ&tTU6h2ISLK=#OJdFa6w(gD^eX5T*7D;WT-z0RO_ z-g!rwHErqv5Ee3J#E22Ha~FJc)E62WD$}M;l`dT{Osy0KL)Rhh?H_+!e*XDqS3MLl zGKdo#GzOV<&m-`f2efM^x5KQ5!J25vdUHYN_u+UG12_xol!Fdk&xVhrPs`)z_(+IL z3|2!_p$=+y_N*WkDxX2&Q@5E*7Q~Mt^BGvnf_($B0{y5~t(wQPM~)nkC!rf}8uC(9 z(qvG80F{lt@4h$>E5=I6oFQnm!h!|jfQVQDqs=40=>s$S1I5ci-*o@uAEh6{jBu=M zXa&!l!a&-dIV0g<**_pcWQVzs6%!{-l#f6DlXk0P$Br@u;>dv;3)_5e{rfU`;$+ul zUL%771E>pDH8uzUy3Ye3Cc4Hw^_0YI-X!72jj1i?0F4SV7w4^2*x?DI^ucmb?-M5^ z6r!TaNieMyK&t|O=FiABnoT^P!=?k7_Ud#=Tc0KjS*A~)E*&vp$}v;a@?li}R4(7|I2rPy=>1E&kH27xhsA1Y^x;>C-X(R`lJ zX=NeP=r4VRytk3T8bGBWVu*SJ(m@1BQ_|2Gj&O%0jvOhiq3ohR_`n04>tL20Ic5jN zMF-(3zhr1+cs^qMFf@%h-xo5h)0heb>pv5#PXO?EQy&%SEA!6 zVj4g;X%8=XV7+=$ZrL)oV3c6&0uWIM3F=~|!oU97)tS8*$Os%(`iE9z5~F!zx&w8s zgh)<@(jNvtXDAMqC0HVQ@`)!jWvoOcd1bOJUbaM1Qj(=X{RTqsditxcYRpom9!ttH z04bGIhIERXhy`lJ6oWY1FAo|dZD2LRe}Kw0M5$Z}eGSK0B<*X1@?pHMmruZ+R}I#~ zdD*$yfX>=H_%gL&%I%nGRc6Aft$@cnYvxSp)TxsO?$~kTq!-e&_rT{;A5P$Q9LvDe2V1t( z^hiHE*B?jgR;^qB{q666mr#gROFWZ>HV0t>AAogz5x?ny%jDF(3t>^74T&6`VkP?*cg@1g@t zu5($C`eE4p_e;#I*)AtA8_$deK>N7t*Wc5PYv?z^u06u}p;ti;TtIl2!j zgM3Bv92gz6nQ$JfjU6kYIm`n&6X<`zVCUfAdb?Fwg`FKWpl2Kh4!CYFg)*HDBR~^R zrAzCSib2oB1T=2kSW>tkU|5;pi}Z&UzVU`|6W1#MQk4vV-xXq+4z?Rp!@TbfP#)49 zCEOoG5wilQP*e&Km$i`5k3K4uFbGwsqn1KksHcoYy%!M?C7V~SkkVjDD3mZ+M;N=n z#D9xGlmqRI$eaUP2q2e2zuXTU_dcu=9YR%@_F$yW)a&cBXG`bKon7~^wO5{c`e}IA zp0Q$38RUSY$T;1~*`q$7$J-ZXHU{#q%aW#>C|-NL=pV*&%fPru=oY)a0zy&j42LcQ zA;m%j!L6XcnNOYyZ+bo4i#o_L)AvzMAp7$Hl=91n>Z1U7%IXwp+^CT&)A2pRmoDfV zc5iqPIA{RXt5?r5C#_m!e3S^&{sa_Z*r7wNj&Pq(Uknc1&@potvjnhX5cFB}n{T?@ zf*p8%IK(R-5jiu1HIP?k3^r=?XxRqvnP=VvKvbfOR%$4+jh`cfNikmye~QnjvK33< zL!i8^CiXW1s4!Wo8f8$p5S^%oM7g$ntTQbYqP5t|Rywkd;XqS(zLEd@r}hpRx)N4r z77}HZ0NiHWW9ovb)q&7O*yt_vn>HgXp@Yfxv9C}D!0exb)x$(;Zb2nHqx=^7KeG{| zS(Tsz6F!e$2c?p=4>Sd=Yds`pAPZG>{Wq97of6Tyu zJ0KqW75ah>Upwp@VqpwL6Hd0213(+o)=6B|yCw5#ri?^z{KXevXwMPUBshg?(7ZMp zF&K50RnY)Kx`WgWDBWQNkdaMf&;WSXq1YvMwLt?p4!SRf+kepqKs47Akn5?82wjzJ z0JT5fEd%lS6!~q%gfjrGJ3@>f;dk*~+WYSdKCY4DSi4UE$meJQQHDSdz68MRHdr_v z^=U|=rC{fXSAa}O`+ykaO~fb$oQ)fp`K)ZLTKfF*%4rGd@Fmu*D-~C)(E3iz^*n$$ z0ENsjfnh@g*72ES|1-d1HjrY(YklDO)r19P-e;%5!DN7%h(K8-)M&ZJ!Rw|-nhX0( z51kG!i<3dwNIV@chKT7YSELsVR?KZh%W`JCT{Hsx4E9tH#b9G#k?8+?gux7fQ^z$c z`Z$cg=nQ5-X)@bh<{3s9>qN{b69CBF5Wiz5j>{G#;TV^xrDkKlST_@D z;c!AZp8<)OJ3!XMw}QlKqAUJ6A*M`38@$8M+U$*YA zT2)ndg9lLIM|)n`Q`CUCKQJmfN@@a_bI>cl!rJBHATXS5F6S7RXNsz?I5Z}67~3(J zHHIs}1IR~jiW-Qw`^M}1o8TybimJ0X;P6@M9_lD_ELSoeqqLrVNTI-S*cLC4||ab=z**N7w(y>@!)|sfH*8}lZb_4tB&QC#RyDmfk|{8 z?EVf)eZgD^uKPe#J^tArf4OCT&K(+x6~TaL9XWaOF1SAIF z+<|Yr9>Q-tK;pg;4`9uk%l-Ke0!lh$pYQp$w!o(ViyYZUvFmI%6g0l()4<`TN=rA_ z7lYUjDrW}{?lvMY+(WA}RyN)+f0O!~4BA*}V2zT()H7rYMT!T(Dbar{pt{95;T8*Z z@VqEse{-Cq3YthSb~Da>TyUUq@Y6;f0sYq$#va)4ACWkZ{|^AUVKW71Jc=l304G7; z>}H{mt=|6qnNZZAe&_qQ04ibvZUJ-)pulAGzq$5k47%X%r2qf`07*qoM6N<$f=d`3 AmjD0& literal 0 HcmV?d00001 diff --git a/src/es/hentaimode/res/mipmap-mdpi/ic_launcher.png b/src/es/hentaimode/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9ea50a909843324c05bb3081d90c04e92402aa GIT binary patch literal 3079 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 V1)8JIlDPl?002ovPDHLkV1l(o@IL?m literal 0 HcmV?d00001 diff --git a/src/es/hentaimode/res/mipmap-xhdpi/ic_launcher.png b/src/es/hentaimode/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8474c881d8b08e5d0abca4379dfc9772f63a97bd GIT binary patch literal 6616 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 literal 0 HcmV?d00001 diff --git a/src/es/hentaimode/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/hentaimode/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..aac9ed6c24fc55a556fa84818a949013393395c4 GIT binary patch literal 16117 zcmXYYRa6{Z6K&5R!GmjXcL?t8L6hJF4{pJIun!3C1cF0=;O+wicXt`w-JQ#S?|ta* zw>qoNSzT3opS{D?ROHZ6h*1ClKv$5L)_D7N{O>_Re0ysw+r9$;3P3?x;)}<(M^D+Oo^B?HzuZA&(&+OMkgq>U**6=ZH zqE`=Sse-_PG)JyQHUz9W+Ux!>r~)oq1&-Pa@cmF>Q~&B&Xri}rbm^Pm4&#uxl2DX$!lH;ad1nVFeWt6qm?)1<2nm{PvC zx7TBQP~o++GRMs3l54yE@ScInr;8zH!4FP{WeqQlXkb8%0qG|gD8+DH$Y{6vUuYd9 z=u3wCs)7MExzk-(N!W^5ZB%~1U2p7e)9DhX$=`e!)a?>Nt(29b^ZggJx3`xa<~nC^ zd(cAm4(T`i<^Ar50wh2!bo&-0KBcK=cb$WbLnnM$;r~3e!~>HK#Vo9dZXNRt>i_JY z=@4q&?qfO#238H6dhlTBAI%5pU#|+q+O{FUM#GN)2PW(+0uTh$U6CvsaecpVSkVp* zs?egu`PwZ674#XqjO@~KU)|LSw=({n3gt9E<~kZzWG-`A$yZ3gm}^+U!ran`+d+V| zJn~6ArQ22y$k7gn1^%Hw6wf;i{gi)73cHNOp&R4(Io66uI*Tevd%l=481RWE;Tx4t z*5B+QFqAg8mWX}C?MH>|oxoZzM}^2APg+jN^adzuz!YY=zNdGYy9>|0(tF;Sg$_`M zOX0CgyUhFF{7xIj3G}K^C>kKX_E+BbYoF*C98hx4c>a9!^1yRiJEhY8i_^5XFu`jx zy>*;=QBIh0ObS+vI}EMb@%?7i?z1^M#SUu_Wm10h3#UzP+zfa}Hm~Yx#O$b(^K&7) z61T1G^dZM>YVQ=v5D>1t255OSV5<9nM&P z@JMXvA;FwspB|tUHcH&=Ib}+6dmgUly4<6Cj8PLMg|QO|CV-P$l+Ir+|8; zJG&x`suqtg-j`?P;K27Wjc|Cs;P&e9WS{e6KhZMB@`j%L{|{&lGAg=Rx;b31$a)t4 zg%F57$og(e1cZ3@Y7Vp>q<2%fzr5{js;bWh&i579Ii8a8>Yr9*B8%L^sm2d5pQ)=) zS@t{q*w5wqoMfKs2$!`T9CA?>$A%xO?hpDemv8NOI`?f_bf4NCa9n`OA4EW<_-_D` zZQ^QK066l9Tl(MCfgw?Rt9MyYgugEI(JFp6HYE$b4J*SpOAdyM&%2`M!B$Tzr=Nz} zU+sut-eZvmN8HaBf;{H`UTa!a*{5MJ<8Wl_hz9y{z3^eh|b zBJAk{6QqYA0Q5k+epXi(ZVeO1LdX6E> zH3@rTN9{8;;J%&VE>|TBCu0J;Xnhr4bT^Adoq2gDb|=9l*W&XS#g|5RUCd~l^4c(8 zdFcWci8~V>S~f#~RGbKp`NAH)H%bE9L>;=pTzweq(>N4|GzD$#Z$EK*#c^HAzUP?) z*TY7HvXVeGi&HLXUo@@V8QTK3;3R*(}Q8I&e zDXE~>BmN9nY=eGsDv)(J0JbGZKXd!C>V0bGw&bcc#j2S{1Pn{GC-iHfc~rJ*XQwb@ z2Iu)ot~}HnR`8+Ra%bGG+ANks7i))QM3qka+NW={Fh{9-_;#$p9dmB0yH>tq8n=~j z5C_Mk6S|h4ckOJL!#IaiU{sp=E;)~z`?5t}_E83;z9^|q;+4*M6_`syEG!-RnI>b~kE zH?Y$A+qa(Ra{4peK2=EHYdYZgR|V1l-h$LZ?V9)h?3{IBaE&M)8ke`t)=p(f$PAvm zc+~fUDTeL{c+aOYEBv9mGF4(c$PktU0^eJIho%BEQ07e+dD=Fes-J(RNU(_B*cbtD za%&YW9MRr;P?F9y%HPHE$A>r1?;Lf?XG;0JJ}mfU8VppI8fu>P&KPjfi_eBfc)zCb z!EEvMY&kDS4cvd>`F+}n{Ndzj^Q`6an(-O2!Xz7O4!R|@WRWIpfZ)W{)ud?b^e=@hM*((-(BKk562=Ax`ZQ1&Dg z-4n2FT>lSm0VL_E>8>%SZ5kC%i*M}G`|_9`?$Dkgyo*KUEz#{>8pcjl?e*2qN$%3` z@x&$(WpX%?16s?iLHPsew6z>oY?8qQg2X`LwUOKdnHB<=bqY&M?Q~%__y8p;afZCl zS-bZ^F(SqA!^`amd=qhBaw@6YU%(LptVz=4zjrz`TxfYeS@ zc|dCp2$i@uip8&Cwj$#7RG+?LN8o#JaiAl#DFNog%r z#ezL{9HpPu?(%ek@98M4zIQGhM})av$In?eOJJiqq-6^=8q|8dZF4UU|nru~YRi?Vk{px96bF55q` zHzA$}#+TeWb~##5@obC?z_P2cp^q>4Z&OcoZ!WSm=IaW6bNbIS_IOMm8x?n?hw55= z%1T8Xe1Wg!3q#C`c4`X1BF{lr-NQA)JXmsP;#Q?DYYwzlB;lKo;a+|Bl92V3FR-(h z7lmDzW(9kx*WqR5=(SUWzbAi&{@%bRJr)y{aoP=GgX4q=9dp+#T9^Fthq-6z=zyIV z0LS6Sc$M5(LUWkU+e`=lm}sFa_3*mvJk}&}F2zpsBM6VirImIq-7_S@E6&;C*EZRErrCP)N`Ooc!c*0B-MopV{OV-bKFDKLnpwU4}}*O5P9 zVBfSo9DdPxKOQP-_OKPtv6E&KKSwDUsQ@7DD_v!@wcqgMmE?SSZ8=TjeQuKnzD#Dx zfU>!PyI#zP)*Tf9*5TWNGT^8hPq6dKAljfM!FilwNH*+0hDT8!T`8XP91fNHnOqTm z_PCuom!HU*hh+`t=D$j*uC<7~cKCU9x6AytFpKA{+2-CO!F>I;;^flC?CO&ClbE|L z&BJWmc$gTa<;m^irIwS3>`PRs@KJ$}og<5;?`vGb(w&OrO&?l-RGk zy&v>=T=@>-KqX1X^?HV!m*!Ua5yI@4j0f{^OUf8~C@QWUopr6*}jgMF8%0#gy|}rIwNsxPtGj zF4aM6sU2uoR+|9O4>U)1T=|@O|JnRyF&T;r+C{{p8ASP|1rzejdYohRSMx27+1@7S zeJcefQgm!r8E@d}uz-8Nh(gZbM>x@AtE4hrX|;ZNt1o?TEL+`GGtj$X<^$~(ny>CV)^$iaD8%U9<_sxdQw(#`LLM+6^xcbAR;kXAlv3YTqz@;-Laq z90^1N%3ja({xnpOf&nj%GW4Se+h(QM=pmMuU{(m~#^j4}zS+=YrKUjY3M38;W(cD~ z$dGH$o9T*`CyYhO7BwtB06wTV?vX9@;z7VXm4t`H`Pm^oQ|%>Pv7^-Db=#)*xBXEP zkx`%He34LEFi=^pUf;j+Wh43=>pi3~ybgfu9)13=kyG*WMhi0wG5`&6B?vKHdC{Iu z*v6Fe`ABf>WFf%-u*C~qo2%0O`nPQT-+yZ)ALXF#9xC$864I5jIRME7AfNUH70A5Z zTdllVvR8^3{PBHB1T={sg<~Fqr^!M7au%wzrmN7&-e_2RAm7kJSS_zG@2m;|>_!YG zO-Mf|pOEArkxPUe9Z{a*PDEE=+zOB&4WKV4P#iyEz17)ZU7)g~ZE$kg?Xc_*CFIQG zmAxA7!?5|{_U%Fx#YXtgi;WArtH(ozLpWr|l(`!a;YJ&|z-u8AiM zsm1FKd$G(;akXe!HvODT`bFJJDrdl(QeX= z{8u60y~;qIHErbHAVn0OrK;t>i9UscllhCA;3yR-?rc0V%fqbPc4Im)?5;ebWjv8p z%BgmTG(!!#k$&4cHU*fR>dGc7GV`DVFnD_9NK}aE_MXGc*8+6Ps!pnSd#q=ca&2tN z5v)^DS*Bsm#q)Q^(s-Dz2a2)>kCnhU-hPb``PIAJ*M2!sld!J*AZ!KfgN- zkU0g?9On_HmU0@f0$!x3Aow^l|KU8)xeznf}+lA3Vo3}GPvu>3nW)=aMZ z6vhufcmho%fi+CS7^Ly$$uH|fk?jH0mb*7&Xm=ZNX6*G1-@X<`E@@%T0h19FzG0Hd9wfJdRq z$g8FP7_;e3*Wj;*a+S&2e^$Nh==uIHmsz21pB#(W)v$t3XRFS8Nm8a`McN;dtfpoP zq7>-GF*$|SPbE%m27W+qb*gk<%ODn4k(EY=n(B z;NJ+)k81vGxr^kD#1ruB4y>}F4~RS68SJx4>vc^!;^JF&l(ObqcrLE^{x*SI!l-1! zyL?}%ZOX0K;?9fpjN|xodAdD4{=?pXL=SOgtX)mK<<)wtW_-*&8T4Vt8d0ctC92|| z4q0r+bp#P!NW(uP>ENvDC@S zER7kvgM&Xg5+)Tq4s_rc=904E13B<%NoTvCZ7gp;!&W4Gt}d~g^DbpJ*sH&NX}(+< z6}jlA-jU9TePs$_vEy=jXNH_m%f95$?%VV1A^xHx$Ly<&O%hxR1^_R8B3|I`$U;o7 zQOE@;O!PinHPyM1h1v^jMmY{f_8O=1dZ>!$@m0VysAU z^I!0>+D1bmR#S=}1G}Ebt0KyQwl;+}#|s&&rnm|i(()qp0?&XAPzF2DJIf)5EibeH zK!Ex;IDBeUZ4^Iu_hY}9riP(Jq585D@=g2?SzhCEss3@+w`vCa)*#G}4XsiwFpbff zprjjG)TPZEi-YOnf~nnAczPLBzzo>>$q$)-CBXuabUwJpj|=Ow-I~TvyY0ghMxe#w z0SGv?H6ss}HCInIf)C`AY^1Dr_y+WcZUrqBWv3NCC*dF;bkLX?2`uTsDu`1d$_{($)aJoIah@^8mVV*DbL@IDPt6$6B z4N}~a7~B$Tg}I8qW)-$x3^MOH_OQH;Y&vgcV(dM==U;K|U!D)Pfe1xP(cwOa&5wh9g`9Q`eLe)lKe7+Gs>; zVn7B{B;nmq5DYbNp}Co^P8DaljBpv_9zefgiqWYr4L01)fZcE)1DFW6nAET>Mqmwz z7E_8)h51C#_)5@#@tgdMo|UK6Li0k=Ru@@dX9Y=qa(0$s_W2Sfv++)$}@95gp)wuD9udg%FFLN?NhKpyAt5z z@O-Ttp&h95>qw|hC?@IMj%Af8ExtmadkXk+cW|Ct#g7k;ZRAGnpfetH;$j9U0eU}s zq)-#I&{2SBOjO*J@C0pal?9t5OTv^;;cfcAo08Z5nNNX}^W>R2Kz<$HmMSC{1W-~y zs&I~*b~C>x-u2rbGaY{%<_>>8PeutRcWTf}`=xT;nP-;s9O_ocSUo6OPI|>C<1m7i z<8Cuo=wHcL#E6`^aF1%pAQNphqns{D9Te^VuG&ufX0L7utUUTQAbQEL8cRS#6= zqlx8|j<13zg0>^wPVR0K5O)}=*mA@b(-Qc4BFNdlo^Qs8iOQoB)B0^t$zRlko6ua~ zE|cA8&O&!hd-1f`=>e#?m1&t3AWaY$&VMEZW2A-J#SJ>AwF;+bjAr0h7ttmuA{n|~ zAGEY9Ks|IbBVw2Z4|$GL8x^MtbtYM49+SKCbO9G+fb@;jEtzko&(DpV^=@T*T{{VA z-ERMBDYXAa{gH1aY}RA(VSG4iyp9Lbg||5aq9UZu5S14>mLDdL?ti~nV*pm*iHQrc zWqDaPG=1m%Z5@q=vu^Pe6yz)f4>{O3%6jwaNNGx1<;DhpkQLw#M?hgUoISZUqbX!8 zgsGN8o4a+lSsSUdqn|P!5)pyY1K7O3|0SuN@RNvYCjtqaInw#%Xc!2hD%Ab&G)IZf z4U4%`21f*&VX5bayT{7w2c~G?;nG6}<+qpOj-;FG=W(g`JVFXeU%?QzVN}*7tKS|$ z%^?&CB}qF7s&lQ|A{i$9sH;rr;QNI5uy})4+a_fkNJ8lGzx^nR-&x7d`42l$yXE){ zR;^tZ@Mq|&q%1z7WU)dgji%wpzltet&)rw8((<~qLeF+9{E8Ro>(oLE5E@d12tFbr z?Rc^B+r#A*^~J3^td^M-Tpx8XZ5IF8IAm?q)r@K;ZvgL%#*=Noz4lw8tJN;ZAO zm@8i~*QZ3Io8&y2EYiw4^eEQZDNtta1!Cqb8O}e`mo7OZC07~JqtJ^_o%&}%Z$?vR z6BOsr!?&cGlGDkDVnl7895nJ$n4Qj&G|2mU5H8Wddtnu_!+D{}FKS$^H>Iss2wipOWW5Ly2yTKA0liNb(kbrWFjhBB} zyx*>zp=&=+4ug4o2O|mdFRqblCA$0b|pAh z_wP2Vkl7GfT9pZ@#)+?jrtMV^d5^HmQQZyoA_d($@)5sdnLY}CpDF>^@Ut+ekRm-j zYT$Vfr1Z}#+>HA+dmr>sx!K(Ak4MJ|Bs#tD+CI?mC%~L-r4!=+Ljo#Y!w9VM<7p~8 zYD`HR5zaeEO8IF;QjqCEg0tNfo9ApdI|6ifphM74x& z3eD>>3Rkd+vPmB$f%8`b=gJVI;W843VN?WQhp||nore>UFd)`&RPLzzH-gsbo^Ic4 z#b`0EVIr4T@Y#8=xc==5IVCcI@}hI)hZZH$YO}cXVW}}tTkpHWW#c`Q%`Y6cZ*)DQ z#bilUC8hmWp;eR{e;2V86N5^VgQT?y(&<}86#M$=0-X-`5KUN4z!$EJ@ zuIol*d=9XJ?omw;Q#+M(Du94S0T@C`zFWTHQsMBv zwFtk-z(;HV>9Z0Vr*Z#7jN2eDt5G`DAFupv!t`W6c8$I|4Xqb`ig5cdAIN$bDG9*c z|KG&MD&{89V)4UGbNj1rhn@|yvJgN)t*77FP7WoVMOdKDf8$=TV69h^N~quHCy!88 zERmVk>hM&C9=CF~erZTqWUG z?fpL_39UjRLVIG@Pj0L)<%`cL<7|R@-5f8S@7}R%NQ%hW-1^T?{pT=YYYGQ+@Dxud zUBt`F9iNs>Z3cvqV=fRv*)0>4Y5oM7rRz32-(qnMgf3(5pK z{oW+`cOhVM=x9O5#5yek_Ae6Zp8c;{^rkKC9pFQghJN+pT!&hx@O4)4#kT>z8vS#v z^Jxj`0oR3&m|~y>qvEHd4u1O1(wJ8jIB|ycrSdMtO4Ae-fYon9q?6P1Ik)$zcJpJ0 z3Yt1jY<%MTJ+dmDeBy40ck4pIe1-cJOn*loc8%PdK8ed95Nmyl*ALWUfGW=;QK%Vq zj#;Xf!AVHLg&vF*sb2yV(4-YaBBMWH=D9q$2-s~I33SchaMGlPCt3DRpBynFQc-zwbSB?q+5*E@BAuDU8Laq`uQZ9 z6f^y(u~;<6v>$GMeuWul1566R&r-(^DFfn7P19KbZ9b-F{TTEy z`QrTowqVv zE}^x}blC_mnBLEMkt7IDY1bDP>z4hu#Lf`Rb#g@!j<>L!Io*cbk1mJAPZ<(BRB>7p z6R?sdrvEzXaQHSRb-WnS7JN!+ANUBG3+z?CyQX?684P5$ecwW(L$xyyVuFk%W$CHo z`r&VL|JP*mxcF#SkHd-x`qKowMy*lZL?vokIByO7X($F>S?CW9>t1NB1t`>{Q^*1P!DH9k$T=858iGW51{> z!>xTD@2sL%mcQEl0jRm?T zhbYJ@`xNKh3EOr%t~d&$7!Qh0CnlbFA*;y%*(mi$SlaeFPt_hO8|n6--=MCQ%Z6fQ3G85+KZUJglCvTRb`dlC6x* z`{26agnfo=w4X4yMHoQ&1;_RGbUoisM}5cjG>Eqcwq6iQqLFhsiDXDPD+PBD9EQt# zMRAMUn1~0e#JIJ4Z2`T~Mn{FZ4_oJ~+$KhVwMOII( z|A+n<^gZ0n%rajx(2Pv$r((4N{R-U9q2UM|kip9rmAwM7)N^?>R+1$158ISwou0`j zk!~RWJl?{Llktlcef$oMI2#iP#ui%%OfpK5ru#+NR~0@P9Gtjs;vbC(`0Wy(0wI#f zw>a6G(+QQdVj6#tT&@T+&hR9g&Nx>{^`+ODsDH!Gc&OwNC5XiTLt6Mv3==r(n74_Q zeBdnwCBM39A77;`jq{5e?L)oBKSY!0Ecxej{ zLVY-2a%d@Yu^rW1yMt%dxBR6e3i8WZ|9(^3oT6th;0$$nEl5zdC)F?6pq* zK6ApPex{=qQz~`QC)dz+(uD{ z{>eM{)bLmRn7z~^kuKeOB)ov5>jJJduLKEa_lUAdeGqq%$jhz*Qt4Rxs})WNIU!Iv zM0#K?8c$LdA#H0BLc$HbpDiFVrFaovvTzKGpjLBveUw+Sm`dg7W!+}(em0^cFw2hL zHk0i7VnxIW7zM_{$$Ks3Z?=DqHhr(;{UgY&TZfZHHF1q!X1v))vZ~wQC)9doVhMZT zWaj|-jwKBL1{+HZe_K&;IXu9NU~WrCaf3(V-+p$yW72agQ-hKQrh|)Eo-~1G)%L>dCPf zzRAmo{WSk+b|rJqb~k@zFUj_z&EhNjfpSUqih*U%{4YJ3LXU=3O~Zd};Zz+!^LN`9 z%;^~d=X1q&^YpR#Dcmn=JYqBT!{w7IF}W*r1s}pOsXcUmhrEhVTp|BeaE%urUJ<*! zYu*(8bc;exQ>KDcX*3`oye*r4FOK6YnhRj^3FJKS{}nqa*ZnCRU(MF==RAY6<#cvq z#sa=Px&S<>$j$DjY=PQvkeod4M957DEk5vJQz|kL-mq z2=V$ykzA1;-)2`~*vey;iW&w9il!U4I8@TGpSV*YI8wuk$O$;Z(wdaspy@52qsu)^ zW~uTRMwn7ap7*z`y4m`k0{M!vPYz<2L_65XOBlqYU{y6c zI=qVq{X$2n28TxFF5a*4qaSW|>3`-y8%rM>j{n^n=Do7_@Oz`U#yao$1n@Cpu4=s- zvmpj3yKz4%6g*vH`!$6W=(Q-fyFq*O$CTcmuh5SFK53E`QZj7nfb)M6zy>clDSrM@ z5&Kb@WlAtksYJby3Mjl^sr+mT=ZIQ`#M>n+|3G>v*cW8}i(*w~FKDll&i!!Dey;qmjizE5DKnqIvWkutk{|DvfPw`# z|H(>BaI1X^KXt}FKJwE$xsMVQ(}q+xbR!iO1jYV&$c6G&Dn{O6Es`$KfqOV0SHZR^ z72cmlzs46Kw~rJ~g4or%pnwj@Ui#E(rOuQ=0S$WXyBHXqria~d>fViC)X!(Fz(c|c z{d($wU@12RG}*SniK)M8^1~aeRKN+_?0(E>Qo-5sa=5q;9A%zUfn0Zw9jE@n7XF6~ zqc_b6Q2ez#iSwiGxNOc}3`WAyO2SvgYHix|FuObq2xOrb{ON_1&MWh3bkjti5%DW^ zl*Mb2pA_yqC>qrzvu8uk&Dw4C{KvIDO;QUxMrw4DYF6Dg=-^`L#+vHi`vjz4`j1QD zE8*2dcTyloY;DNN^4i%AI`VkM8+i<2gqw#Y#0N-gQ-++$MOtowM?PC`{Fj=m3So#d z0m<^rvA(PR-bC6Ee79oxwOQJOAmWZ58Q$a94r9G)BP%)cjA1%A=Yz3SpVGpkpH&pJ1(>_HezmUsVUnz z1qzzO)VQ>E#l9KUm`#BbP@h8mc8gMqB(%&c!;C|IFor{|Lm}CT zGbiSqfkPR-LHVghg;p5uT_SwtGh{jz3r73VJi!ZIg1=b5kU?+*SdO&0LXR35qYc7L z!PE_768iFAxn-srv`-Z^W;#Et){?|58j|#v8^fp@M3K0bhocNn_~c&^+<`9;%u}!; zwv9=Cykel~fAhT(D7?lI%@{@_EPF72vYxUhmVByhFZ|F)7EJ?hO3*G#@MDuU{fi2Y z;R_d5Gi$v+Jh6_kFg#GiIx+vd!m_#XDT8L4YLZQXFs9zAfn}YBev_ zPvst;9K2O7@`J*r>ws9fJ)?3n_oY=W;^k2MhCY9c{3|f1U?P{S#nORx4#P1=V!~4; zVP{O4;7fY9cZ#KqK}=D-Q=sFF%uBgv=Erq9#M$`YGDYAw_5W&P!DG>4>eJVqem2yT zw%NY9hF|Z4Z1QEOqD;w1fUh&~fQyf&3_6N2rejsLTMOBK`BG!h5O!SXUKr5zO3wb- z@NGyt5C?k8(n%~eP1?biaf0;32(^B-Ih4{V?F6Y^HY@Z4Kt4xBBN)?lhKk}U&p8E=x*L#H#G`6g zk*|8utadaD=1DW8J0`>KlJ=eG?C)v3Fp+!xnB*sx63(`0g4zgng zp`}g@#a+LfLlB2bnT ziA&Xd%6_0BD)-(MXXuoJmB5K}Vaxrt34a!7`rThF_oG9*00EiN0fnXy1>num{PwTG zF898ZJ`1y7lhsdZt<7w1(8#U2x>*LbRqUfU@lfaUw<6YrR@PtS)l&s{Ziig8p0U|1 zR&4Y4PNhme6{2Tf{{WCBcr0Vjp)hzz41>UGcs1Jx_$08!69MkcPdz~tcy++ z6S)@3{(E};I0X_5x<|dj$4{hGgR*Q_7!2f7-c!_k+__c(YmO&M%3 zS74X>v52$x6Ao)3*_28L{_mntPu|t^AhLEE7%A{A^M7q)Y3cmV$p}}~Y_i;inXE~t z^sE5QE~5SbIId=VKXrBec*vcb5i2ZS8^Xu9=FJ?7{^@|+6aYlsqm3!y zzDVvV-~^fDZq5l83+p9iGhVBJz}SH>lKD#hm(q@SYhS zcL~in$rHuYIDzCwvJ$CYO$fl(P=R<}7!Z{(RQ|E-H;Cl;GzgrxF6e`V-(3)9I6>%gT|dq(o$OpyAld}GgN$h%9nT=^&TcZs#WLqRBdJlva!`xRktr?(ml9N> zftmXhv6bU8MudkVI@`c0Ul)6XY zsXpeJ((whmijEKYs{DG^F2yEyqn58o)Zy#+i+fVl;=xP8!w@Nk`(ggT#@9ht<=W@l zev!VU;fF9p@wh-|+63|k^ulr1>X)1T+$9G0Kweec>7KuLCIRr0kOc z$NckHMzn_Jc8(JtamT6RG|WY+KF@}}Q&s&~m-86o>>V9VgdbKLsRM9m*^;uY%MkuE z^7rBFf76Si6PUzcBR$s>Xt*dGPEZ7rluREfY`2^E@+Rb1{uf4LKitAlgP?BIkH>}@ zJQ%;E*R3R#W;3=AnR=0;7vx@4t=qhCPvtQ zLjPT5LHs}K{GF1R+1!b;PW~XH?ry0ftrt{_782%?stlS`OJ-`*izih5gAW z4HK3sdZdllFH{vN`OkrS3VC4`R_e#p{=tog(;zjFdZ-U}b*yDBzP>Ca>^FV}V*RjM zwo2i2nokL-JiR=Zw4{ks(^DaC&(_NBd%sA) zxRT*IO%b>E4|U($YbRsTzE#NCX-!~@FL5s5@tWM9g9xEQrgt!~ROhF}{Hac@Vc5U1 zYv*o^?W(Ki)|zzmb83qG=HC&$!c%XR;Cz=2s6!3rg_;+^l4O4|->?}(rVIQv zNd9LLmnx|zlvFYJTNxCs4hMpxQ5;7AWPj~VX#d$q@;M5*h|UT3t9!xqmj?r$9nYfK zVjSn_r@Y1*t8zbht=P*{7p3kGomKZdSaF>_hHqja5Oh2qNmi+M#)9oV(XiN*k2xiD5>Wo@)Swvnaj2-{4Kj?{&f=~ zgCtX*P*^Su)BM=p^-KaFL@BgngNc=F(rra|&|0&Nmp{K{08^xgTx&rEdQ%w$ta>z$NTE8er@(EMb}4b_QJ1+^aIuG?zgCz4A{v_6T%u5 zU?kCjy!Ka0iDG<4?F^pIVgn1Xtg7S~CdW7om zuW_0RDY3KVb8i0eKK40`t>N4T9>O=&?GW`16T1CecHKaQT6wHSMmay*iTsudz5{|u z2~o9w^sEBMH%9UL*bE~skdY_IsMXI7)pR|AZaVi+kIf@pIfwVLwhsU3313-8N^og-AnC{plimzK}Kes z-PmOa0V@M}KxIqYGmepV<(7%>PekBaN3$Q?*{m>c00Vc3fZqJdI>D#Wv$QV^008bj zdC3*_?+L6}3eR1@Km{}7%xA1(`+j&dl~6-hi`Ks&UZhqPe3QF-qs)sPzb<5m@xct0 zfySd)8wTeE>f2Mca{~0<9A)tJs*Hq@4zYV-Otnx*rN|5-gqcte?7l#a8Yy@_ClLz| zR@%E!O)+3{nf=>z*c@0kbl8XG$MdMZ7d*qv?1QLpr}l*{Oq99xJVe4n9bNTzuZ8hd z-q}EjR;o9mKHeX1Vl}5LSQAM^iIF;H=F(2CWjhm&fC+QRrwE-MevU7`x)J+cGc7s} z*`jbWzus)uf4M5IbwdZxra>H^@c*uk91OoXw`YFMd6jjUA--(_9qQN9@2=n9%-;vY zHf^)UAK!f6XbB;I-D?EjOx)tGJ9Xa p")!!.text() + thumbnail_url = element.selectFirst("img")?.absUrl("src") + } + + override fun popularMangaNextPageSelector() = null + + // =============================== Latest =============================== + override fun latestUpdatesRequest(page: Int): Request { + throw UnsupportedOperationException() + } + + override fun latestUpdatesSelector(): String { + throw UnsupportedOperationException() + } + + override fun latestUpdatesFromElement(element: Element): SManga { + throw UnsupportedOperationException() + } + + override fun latestUpdatesNextPageSelector(): String? { + throw UnsupportedOperationException() + } + + // =============================== Search =============================== + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { + return if (query.startsWith(PREFIX_SEARCH)) { // URL intent handler + val id = query.removePrefix(PREFIX_SEARCH) + client.newCall(GET("$baseUrl/g/$id")) + .asObservableSuccess() + .map(::searchMangaByIdParse) + } else { + super.fetchSearchManga(page, query, filters) + } + } + + private fun searchMangaByIdParse(response: Response): MangasPage { + val doc = response.asJsoup() + val details = mangaDetailsParse(doc) + .apply { setUrlWithoutDomain(doc.location()) } + return MangasPage(listOf(details), false) + } + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + require(query.length >= 3) { "Please use at least 3 characters!" } + return GET("$baseUrl/buscar?s=$query") + } + + override fun searchMangaSelector() = popularMangaSelector() + + override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) + + override fun searchMangaNextPageSelector() = null + + // =========================== Manga Details ============================ + private val additionalInfos = listOf("Serie", "Tipo", "Personajes", "Idioma") + + override fun mangaDetailsParse(document: Document) = SManga.create().apply { + thumbnail_url = document.selectFirst("div#cover img")?.absUrl("src") + status = SManga.COMPLETED + update_strategy = UpdateStrategy.ONLY_FETCH_ONCE + with(document.selectFirst("div#info-block > div#info")!!) { + title = selectFirst("h1")!!.text() + genre = getInfo("Categorías") + author = getInfo("Grupo") + artist = getInfo("Artista") + + description = buildString { + additionalInfos.forEach { info -> + getInfo(info)?.also { + append(info) + append(": ") + append(it) + } + } + } + } + } + + private fun Element.getInfo(text: String): String? { + return select("div.tag-container:containsOwn($text) a.tag") + .joinToString { it.text() } + .takeUnless(String::isBlank) + } + + // ============================== Chapters ============================== + override fun fetchChapterList(manga: SManga): Observable> { + val chapter = SChapter.create().apply { + url = manga.url.replace("/g/", "/leer/") + chapter_number = 1F + name = "Chapter" + } + + return Observable.just(listOf(chapter)) + } + + override fun chapterListSelector(): String { + throw UnsupportedOperationException() + } + + override fun chapterFromElement(element: Element): SChapter { + throw UnsupportedOperationException() + } + + // =============================== Pages ================================ + override fun pageListParse(document: Document): List { + val script = document.selectFirst("script:containsData(page_image)")!!.data() + val pagePaths = script.substringAfter("pages = [") + .substringBefore(",]") + .substringBefore("]") // Just to make sure + .split(',') + .map { + it.substringAfter(":").substringAfter('"').substringBefore('"') + } + + return pagePaths.mapIndexed { index, path -> + Page(index, imageUrl = baseUrl + path) + } + } + + override fun imageUrlParse(document: Document): String { + throw UnsupportedOperationException() + } + + companion object { + const val PREFIX_SEARCH = "id:" + } +} diff --git a/src/es/hentaimode/src/eu/kanade/tachiyomi/extension/es/hentaimode/HentaiModeUrlActivity.kt b/src/es/hentaimode/src/eu/kanade/tachiyomi/extension/es/hentaimode/HentaiModeUrlActivity.kt new file mode 100644 index 000000000..f6587b6e3 --- /dev/null +++ b/src/es/hentaimode/src/eu/kanade/tachiyomi/extension/es/hentaimode/HentaiModeUrlActivity.kt @@ -0,0 +1,41 @@ +package eu.kanade.tachiyomi.extension.es.hentaimode + +import android.app.Activity +import android.content.ActivityNotFoundException +import android.content.Intent +import android.os.Bundle +import android.util.Log +import kotlin.system.exitProcess + +/** + * Springboard that accepts https://hentaimode.com/g/ intents + * and redirects them to the main Tachiyomi process. + */ +class HentaiModeUrlActivity : Activity() { + + private val tag = javaClass.simpleName + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val pathSegments = intent?.data?.pathSegments + if (pathSegments != null && pathSegments.size > 1) { + val item = pathSegments[1] + val mainIntent = Intent().apply { + action = "eu.kanade.tachiyomi.SEARCH" + putExtra("query", "${HentaiMode.PREFIX_SEARCH}$item") + putExtra("filter", packageName) + } + + try { + startActivity(mainIntent) + } catch (e: ActivityNotFoundException) { + Log.e(tag, e.toString()) + } + } else { + Log.e(tag, "could not parse uri from intent $intent") + } + + finish() + exitProcess(0) + } +}