From 1b828a2e67dcebd8b98b1a59da2416b653516364 Mon Sep 17 00:00:00 2001 From: h-hyuuga <83582211+h-hyuuga@users.noreply.github.com> Date: Tue, 11 May 2021 18:26:59 -0400 Subject: [PATCH] Add Home Hero Scans (#6984) --- src/en/homeheroscans/AndroidManifest.xml | 2 + src/en/homeheroscans/build.gradle | 12 ++ .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2010 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1356 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2886 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4383 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 6207 bytes src/en/homeheroscans/res/web_hi_res_512.png | Bin 0 -> 20427 bytes .../en/homeheroscans/HomeHeroScans.kt | 119 ++++++++++++++++++ 9 files changed, 133 insertions(+) create mode 100644 src/en/homeheroscans/AndroidManifest.xml create mode 100644 src/en/homeheroscans/build.gradle create mode 100644 src/en/homeheroscans/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/homeheroscans/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/homeheroscans/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/homeheroscans/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/homeheroscans/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/homeheroscans/res/web_hi_res_512.png create mode 100644 src/en/homeheroscans/src/eu/kanade/tachiyomi/extension/en/homeheroscans/HomeHeroScans.kt diff --git a/src/en/homeheroscans/AndroidManifest.xml b/src/en/homeheroscans/AndroidManifest.xml new file mode 100644 index 000000000..0d7e33d58 --- /dev/null +++ b/src/en/homeheroscans/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/src/en/homeheroscans/build.gradle b/src/en/homeheroscans/build.gradle new file mode 100644 index 000000000..edf9798a1 --- /dev/null +++ b/src/en/homeheroscans/build.gradle @@ -0,0 +1,12 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' + +ext { + extName = 'Home Hero Scans' + pkgNameSuffix = "en.homeheroscans" + extClass = '.HomeHeroScans' + extVersionCode = 1 + libVersion = '1.2' +} + +apply from: "$rootDir/common.gradle" diff --git a/src/en/homeheroscans/res/mipmap-hdpi/ic_launcher.png b/src/en/homeheroscans/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..6f3463346c4e42da2587a641d2af24ddc42b0cd8 GIT binary patch literal 2010 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 literal 0 HcmV?d00001 diff --git a/src/en/homeheroscans/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/homeheroscans/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ac9dae5a11ddbe8057d9f3ebd21e967c9c0992 GIT binary patch literal 6207 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 W{?uQ6cH)l#Ku1$wqg>54?Ee8;BDP=v literal 0 HcmV?d00001 diff --git a/src/en/homeheroscans/res/web_hi_res_512.png b/src/en/homeheroscans/res/web_hi_res_512.png new file mode 100644 index 0000000000000000000000000000000000000000..23a483f2af06a30262053a8cf1378209c1f745ee GIT binary patch literal 20427 zcmeFZc{J2-_&@w6BC@ndWi6E=RI*M6sZ=6mU#FDpV{bATA{1Fl6tX3|A?q-MAxR}W zBg+^|*2z+gWf=3^Q=jkoo#(ITJkKA`U*B`)OwQ>&_xpa|_kCU0>v~;25oK$nl_ zFb@PleAljCx(z|>;7@jldnfp3%{t&K*13my+tnBkea!;b zEYp1*$j7IR*Jg{+&iw=mgNdP&7eyiH>T9O(b`S&w|C9oEj=RVKzHdJTUs^nS!1vW7 zta+Wf1imE0xWV^(K{jyl{-fZ}|GoJCztxbuJh zr?nU{KUmC=V7{SIc3hQbhvL}h7wh`@@~ryX=nF8M(=T(Jf7elz>yR?aZrT8cn!Szl z+j^veGm%x9shQpi64_pZUPeIBu>p;>>UNWY>TCKbcx=2hL3X->KsnqmZ|eigxrs7L zR`RwfH1%~04N9RcL&tWqL09vth|D_btvY-vxHdCJ@5^tJVw21S7kLP((9neeQeN4uL6=;-}Z_E(Wj-#T>wGwRyIgX#3xY#Ch!_t z9~92)mf#8=zX(B*Z{$Cb3(Zi=mbixw0^++7<=*gi35~e}Rql&s+!cCDJZxbF1_BpG z@tS|0QW^b3ddN4s&cX-!5}oQ>vo|rj9M^r>h*!WsujCu*(jR@4qYm`gs0XSCV3kG8 zI?_>vT>L(a?Nt@xpk#n`vq7vHU6WCf(p6id5Hd_~O@ftqX2HswjI?1D$kZVvRI$|n zt|VoBECMcg^3xN9M4UDlI!?ZJ?icQE?@0tUeew4)jf!l2e+{{`+#&6pbf@3BZ@63D zW;pC#O90#bQhuS}f}V*Y_xj(JN5=Yhaf7uuhacs4>ui{Rs{tE{>TOFwcDy`}3DerU zx~DTW=xePXeE68XwYu-O4sIXxQe#m+uOJkB^j#G5$r=R}(O)8vPQ546Qib%52Q$yp z2_ETpGs^jSfA)T6bW}?$A)Aap{>PI~2AshCyEK;5Y4f;+m65tJ?|@%AoKKerD^AJ6 z32mjq>KcnT$D1`3dwDE<*~a>#eSp8ZoH4OOpxRyoT^%KTGrVJ-Q&B!$ZNijBHG9?Z zwnIW~T*B#?@0RG3lx|Mmy(T4(zk%Oy8i>$c#Z}sE3NKkv0{DcEIm_6zc6}_#5_CE= z`P9sI7xDQeewyb&8l7sf$krVNrgg@I{#xF825C(=08bbGWw<9bvE51F@e=jad2~_P zd%f37dRKpT<`_o7e7>Ls;=oDE(292M{ZcY7|GB_Nu@`t!qSilHbrDe7#ez$0cmDibx-0E9<6d`< zzEZRX&0dBeo=ej*Cd2fxCI;TEXQ!r$J3W%|H9cVbbKPvXxLldM1S zc>_)x>lc&egvdg-(w9A9K=eT{V05K%3oR1tQ9i3RP*qQAg;(CwXcwC_fnyf zj3PJ04bHV+Mq)W59W%&sgf?m@`2b}5Y_%t?0QTWQbjo^{u04u`Q%fUs&2Dd!t5Fo+ z%|r#2Md1v5sGCtP{&9!K>wY&EZ>1d{0te5l{FGpNkR|*+eF}C+`<*Hz``;}-8+&SQ zWxuxm`c`dw+*PgEwtDpXR6DJ8OMR=LoA_>!>|Y`>koRIp+*-9LG%9jO?hCTt@I;LM>z9W-0+xlNUs4dHO}{R&6U4L3X-xZG+9pA)>U@n zNsj^!SWNw=DQ$7_^+s5%lv%|M!;Y+uUqcR-wRxT(3aXU&Qp@O^P2*bZQ1^2P`uS$z zjY(%!wUIOmy*RSur<$vS`Yx?^efZeHr!}VWh;s5&!0Cj`|13lF)>!i3FQll(;94C{6u4~Ez&VxKiCCN5 z>&A4mSLj1G9x(%P{$m$W`f|_tT4+(ijJaJxx2Mp$+W$RDFc0YpaU1WBb0LHHwGMOW zc$k%PexoF9dm|?*7jfi_TQbF_(<@I{``S`+OC953cA|3l9w_bsa9J<$rr0?g$t0WT zG+lcqk0+?-M=5e9N+DT8SV2HZ<*+rep7Pn;hH;~%EyZ4zqkjFUL+k}^=&B++WO%Ew z`KFt<$t+^vgd9q-SN)MarM^Blh*bLNhSiq*JgH4s!xHIGl*!mPRpmU%yLYhy*O)5! z@4oC6S+cqE6qcw4PqzO=g;s^L;VB%uXA>2cc3_A@;!uExo;)I~%jk zX$bsxTZ4IUOI)#)hDXLmv0oC_J2&um81;7cbyDg6!$QaAJg>s5RO`J~i>zQijsrZ8 zc}N%kyQyeEHdAwZtgySp%8bY*{cA^|8KKm@E@62NrH4OQm|9|b>J3r%wZbNEwJEow z{l#_jg(v^^8I?c5SlhhL?A};rq}EJ!PN@>6+Ll{+mTS}uif8tG&7jlBF-eMTuP@Dc zhVq<|ExQ=}-w!jF)0w|cD7nq?W33!UcCLL(Qbe|XdRDw>bTg@{v5l+mn(INOZ|)l| z>LJ8uJZJkdu0}_GZ24{V?_mXxS3{_L%f2?Zf$r47I#_@~+dQ|tUBM~yuJT;XF$Xcd z7q>k#29FjhzN7K5VP6?q-Dk8DERJaXJ6n_t-&OVB#WOuEwb&9mmt!>Zdr5s{c6qwe ze57ing(5|^0dMv(yC*krb5y*qkWy;K{?FGTbvi!y_Z7`5-+VI)EM5@)ddg=eBrp3( z{g1`^&9a!|r;J5a%RKL)&>iB-_8|qCKMq^}=u4M$PLljLz(t?NgNC@`p*qJGguAt` z^o2j}JAND^LdoMbxjhq8%cN{irS})sl}s9DPSp#^4v!L<3>AvizZ1O`DQ{?bJEwAu zWYkCB*fhibA#*HF`T5#$lvG+(Iv4u@W9WHwLQ9Fu`NsJt6AV1rJ9NPsbWI87|l6(DkSpdIJ@JzHWd zTH;K-gSNVAT{6Pydx{RJE)m7K{+*onY4~4mspr26$0Wt1s03~fK9dMsN$GgMd^uK> zPAZ#?oN69%kzDkjf@SAJU2h#^%fdjQ)wIf4iaN6yWHQ zps5Bnm7=>%Kh!t#%F=9i+-b;crLtS20Aj(DkUa`OzVTo`bV^E1a2lICiim= zSEKvH%qzbwp1AsVd*dtzJEwn;uv0x91y?kyk*Np^!Iox(@6IgBqb9^p-$tShtd|>6|*rD4_zlPj5Jm(AbaCA=~vP9cEj0yfk@B+0DAYz@!|LrqpM*Qe@HNmU>}; zYj0~NvF`ANdA?T|<^aid$b&#q9_Ytyr;t;rr1;8V3_7yQaZLQ?c zg=*I%ikN!0MdzXo05SuK&65FGv^Wt2Jj(7p7t)`h^db%vVfLL7nTo7fs_LN?yi+}MX&S1p=l9|U-SXkU8q>g5RM9aUVY=Q~VJ z9@Gh*wZtY1xXdjgW|}TQOWe>-Fs%zgx)ybK&1;+2y_+)ai2GnDI)>fzMkZAapXTyf z-h8xpG9#=sXKYR0X6{NYy}%`CvCe|nVfjG#bCwk@S+h9*yCjrx5Nxv}UUD^v?u2t$ zuwJ&u)c#)T51d;L zX^Z4%ha&f|LC^ZeVuMyt#UNg<37>7vgiXFw^B#Ws8WEFCK)eQku0nyhg8FtqXa#M6 zv1{SiJYJH&v9yTGiGC7Zzy2=h*xfocqst&$Ykmp^U+NaC&WRClAAS>mv?MRHg-4_% z#y2$0Up~?45Ae6uoXl+;tj6W_>^3KTAa`xS7dU0*x*v=K#A`i@9o4=~5t|7-VduG_ zlUF#PV+ObgiB)~K7FTVJ=}CtzOGO>d7-~2_ z4R$a*w&kt*K{)M|)nH{ItUM@az0*#F1KKae4(-)x##p+SOx|-?o##zwdclzM=RmA> z>8Ji~DUWGRwk^#0q!M#zLS9r;9In3XxzT%yXd1NMs?gF+GPl`!fO8zf303j?p#WO> zJG~J3idxq(MUDQA zMlRO;3YMe;w@MMoC~~#Y2zfWfEQsc;LM!hW_tO-A)PVBsl@ai@dG7MxaL#z>xxj*! z@2&R9Zrl)G7%wea0$?YK_L+dwB)m!C)LKPV+CaL zejRD`=%-&G;+|i5yZZJoR7C2;_PrI50+F4NJJ^snO4%ss%W1^tbgp`xu_4m-N#hM z6U^)^j&x?BeVMA`Uvl(w0{37v{u_zUgec&*?T46kuhV;*=2F{MSqV+yPsqLqum2+qvV$ukr^43mbHxU`}9DA@WD1L{!@K zWX)4guAR31^|^K<=ijpTZel)iNxY)1s37mUs`cWSh8|tXTeG>PMS`6aPpaPJMky2>P;yzQ6#5&4X!c z)XIX=&Jp|8VTEuMg-6ZuS_bmjj?gvb0MSF1I*4-)F$DC&+u5D4BquL~!=9$quLbj+ z-srX`Z%7u^W#d|IKi-S)O>mO@ZwJB)awF=OLJ+s@Z5V0!h7x~bgWkxIBgfYixEJu) z#Y?nu1wdu>Pr7i`EqOliWws)=IQ2wiEF@mjRiC37zWryz?L(5hcm>fUgRw!MnJLUb9qu-u}M>|}WFC}&#a z%4JEY0pPjPp5|*q_<}y{WN*2A)!dN}ZiDBEBzS-*$)|Cam3N|-rxqM02nIGD28(1W zAh8gc`3_>#VN>jIe)sKVCoi{2*mQ)%*4{6*TxFC5w-fK9pRCL@osZ+xv?>?pxiGow z{=1|@?2uP96m0Ixv#@ml^~=$gQ5;`l*;~-98L)dJ!%majoDcG5XPYK7y8F;nPQWV2 z%3r-cym#_mSg?F;a(<_npQzp$`)jY|F*Wa;xcNROjCxmpa2xUpgXALGuKgbj@l@9% zH+QFIJ)IFbuUwBGol9CRawoRIV=i=Z>gyf${ZlE9H0TQXkkGx%SB#*bu2f)5 zi!(1a!*9Y5>Dh!kUi%rArQ4>HEUpH?_gt|=Aix0!xS=mF{bgtU)$P%X_8N6t>2~Fx zqswEYBz%rg5xFr6%H`tQ9Gc*8-ro<8`PO~A3NTvh;!M)SOrl)9KjN~u&CifX#XkR! z_-*a+y23NU|TAq zgvsH1q_&!m1&G#kXI~d0_ALr&$f}52>Xg8@g|Nvbr)im;oGKD*CKS#<>5nZ-E`JY^ zr2E!t6`x45`&3ru?3~T=bc(HDmZM4N!>saRw@$Qw3uj^2D1*%{Qw;w|gAS`}{Erj>=P|!6A;R}ZS0ul?n zyBDW6oQw051GPO~d~floSrB)?Fnn!A=4ML6tFFOI@9D04c)@*s_oZHNf4^@-`p2R>%^~x%?~!0MVHK2)X>S(6UDz9=K7Go zV2i`6A$RpVrgiI9lNWRE)c6?al&hswThM^aqaeaNdp^PIrwCpqUWAcca6C;kuil9V;LxZ%qT@k+u47d77^%JO7kj^6jn? zRnK=qsks&G(`~L6SGs{DeRn^7k9=A;`gujF8=#+J-BP#a9nFa1O3v%L3c@jByb=!$ zB1Z0!!>AU1qRo%#&u7bXU@Ib@%PrB^7M%OqSQ%$;#t|uQiu` zXB8E;7dqUNT+9V?(y?y$Tk2`1r+dgk*(MSI5Ih{p)mID*GJc*r!btfXy=*lf9@{jG zJ!;nWeSN%vUE(iQWq1m|uUqk!NeK16t9r=3dY<{-5}Tg3v3qBQ-!A#y?YU;$F(DTr ze#-T*;%AkJuezb>)<%tQ;lgt*h6AvE7#}V0WD=}D+Hbkd{6Xl7MX$r{bbUZ={6~Zt z-j#WJdopl#Yh#McFcz$oRsBju{&3ImN|`8qKlyN<=2qvtMcJp?K^skk(U9fkJ=5oi z-?~c+;W|A(F@-iwnK^ocR(4(Teh^Hev|{N zND9wNQ6UUaf)-u&d~C7PPuCB;!r*`HH^Xi*0>I-zHfS=(j%Wc&BsZ%_eT(R#3_iz| zVT~BV-T5XsGdF!p(UuB>nfP~rsuX2aIVRs#Hc5!RCq+di$h5d4%QWNUrH#WchD2kJ z2VS9B^f{2WUYM%^W4_A)y^4xtRQ&$_)rRoBkWv}F__94UFafu44DgEBwS70&6LvcM z`B0!e#Cdb$S2!8x)gt^q)*^E$O%>Y=@=?ji82mUe(&)eO>TV??K1Idn0Js zMEUTIDe9HO;K<|{C@t>uoc(zX=egpDxOxcA@7?HN+V-Nt^0NLrp1XpO;1#GrY}R50 z6c)bfWfK=hR^_aw7Q_1-r2)*}?{kItI~?)xLEU1V_^BDcQZ&7#>&r=b`UR)t02^^r zZflL8k%aF_6M&&NI9-0#CbVOzceK2yqk?w2I~AmKU}-Mhz8i0l1}G@S5{%izqkGvYRVs7jtrX(-UW$!n8#7 zWM~#72TScwc%_HE|5k+3%gXkpi;Iy{DCb5_&*dk(>|w*rojr)?hdE3tV&ThFTaL67 zrEmVnSzLt`u1vY=?1hn&$8176e!PnjW86F5nxmamPnRj{omK}3VjPL{1*U2-w_y)Y>njFyxUg$;=?WGwJKGlXNr9U;5QUhkNa@OB1}WTt%fA96aX;1eLh^nGoR&M%R+@$U&vCnwqt=f@KzEk_cZ z94U}eWY;dW82B1UGW(qYOMuFVAYqrwcY8j0doi~~GTH66qD1SVgF-&G{POj!{wquA z%S)c-Jr34kSim{_xqB@ApB-(tHaMjFx`YxuL1q)Nu(l=iAzU7Wn@G~xQKA#oN<+4zg>ngYt-!`}{oo(%=*aW??vsVb`gPi#RT(6|@;!Z3fgP${ z4O$Nkx>Do&=l*gP_V8SR%Em!iT$jhpXp%a#NJgbw3X=-RqiiuDM_NN$d_> z?wuU8;5_b*nrs%aF4C&<St67xMc`Q2u+KEo1Q%T~%2#5EU4T&N`Hll$TPmy9+?D|N!F zS)el|(U(oT!BAJvWVWR%LYwmVMfBl~i&m{?3Nm$N(Yv!Xc=NO$3qrTs7b)9g5%!$s ziP9OPmkMEmWY7GRJ0pdZP)e>Y-vq_K1C+O<1ANrP&=Mv?AKsajlwD^om5vrWhBdq_ zwjs~f`MYVRG#a+lgEBOolC)^KpHW|5=|boZ<0UK2AGxDO-Sgy>#=}myI2t>4Pa6;J zd82Pp5wPB_yAmhKOKoL=LrRQ;Eu6P{2=qFc1{V0SNi_HXYB;A7m8P#{&CcCWsS`Ph40p>33m>x=nogifgPOHg03D)z2WOMbjJCWpSJ{2acF_OJ)W|5iWxje zb=IW!F*Z}+x}?qtJ`;K@vilfSHBLl^)WgH36kYcAM88;>DfjM2Q-}KH!$WEwYCp36 zQEW4iB{0!}ZD&jQ97Btp{KJ^p@mmUd|J41`UTeWMd8-E)yROt%fEEbUURV92ZPda_ z-V?SHrHp1v@~v#nd~A6<++FTv^P$)=d3c@QuVcKKRRj23cKdS0MXgFT(vTt5I%Atx zUFFkR>f?2=_!p&1wP|x3Ft66>D7+#8Ga0Fw`Kj!)dUaG+`P!b6`ng;X5#_ZC+&W*$ z_2g}2IZVoKuF~WZusRK0SgSyHc7&2dlh_{?`js^;a-jMcbk=B3KdojL_!A4o`7~bB zlUA7baIk@L$Yrhzz|WMd^oLCYzOOzi!}RujG2R{}zLN*9oo? zN(0h|VwXzi(kBqsZs0ufEk&(Monyv2(>uIf>`Cx_Dd<=qmUp}iN&cRDjZyY4OPAbT zY%?)??m(@no9%morv~POC|V)bb$I48k%>7i%>INUXa~7;?nOLp+S*qRU?iV9asSha z#5&V1$Ibhi@eZQwE4Co0d2=6;tl@@sWw-fO-Ap~aZJV-NA9vGz~d?F7p z4)4=Tu3XWveRPC+P*9;#UpZT z_t8J#*q^Zs8X+QW5UTg#A@O6GqifHdhgGSnf9xGYcOpC9T^^Ha-ROLI#qH&OJ+~bT zk!Y);xuO1tDvee;8oRF4)16&2&E^9D(dY=@myzlHto_tV)m3qJt&kbN6;@3U^^??- ziI+_Lo;F(=uR&KDXX%CU&_nE67xU;goB0S;%1C?x3= zdVtZcD!&ahGPGvQhWU=-IWITyPcQS1df&8AczV{oem2H+aQ}Asl+S&%_GxNYmTUOQ zfYYB>#CjFcjBPz2U=UEql`8Lcz)(pTi5E+y8Nj?E-!4EEZUuC-m8L+i*xIiHa$Dz! zste&t6B*M>8{F!wGD6#v@gGE}CR5k0V9%}1JFQ~`?KBN438ZTDosF8nW-!mSB-Nk-WLoRzF*0f__MW)YAcifAz+Eq+~~PU9^(`FsQY?3 zGaNCLbL01XRg##jEl2Rt_k7pS*VVW;^DL9Q&Nt_`V*uKgPvIf9{eHt^AYbrk1XPAf zG(L!GBI@RHZ*RhB#;3zI;BONz4;krcz=a6oxU->Ff-LQ#b~50t2`H<->JzAIBhgm-!r7ioOO_> z=qsM=tjLM1sd#lmcK64YknySX1R%{(5U&Ifcd_lo=;k4_+^d0RO0ep)>kF1BsLw^C z;%+E{Z%->9yG$5lc&V4)2U%!}*?5sSX2C!2fqRE?C+e7s8jbO&TekZGiPf?%8I3G3 zoE)nCZ205p)>6l}LgU}DWfi}pCp-Bu&cbzhIuYipk)5cjpj35C&#}PQauK%FXD|06 zB!0rUMy4JazTt*0Uo?8tibt)9#GBuoPlW~iD3O_=txuHRn4dM!moxLdTg9(FSoUZb zw)m<~`O_Kus0)N#SMQ>;K#7rJZo!Z3&_vC|S@o45P7^NA5egTVKs7s{5ZRhZk5t@T ztvQ|wBiJgrJP_mM*~gZ_?Px^?@~ZW0_e4&Q!}y7`4O+i_>y}-$h3N#&7UIF!Tad-4>eoWQHaG5uL zBk8tu3?B$=ICKNFj6_@J6fTxVIyHflmZU4e5-u>1PI(F;^)1c`qAmIy3*u}UT9w2_ zI5W&70qaX67+@^B6+ty{;?&Pw27C9xLEZ$&db0yo{EV#xKsfL{dGjX%z9YGeWROVG zyHR=Zj=Nx4?s=C3df00Z!h-9mQ;($|DbNB<2}rCZj|4Bz4z>&^zbi)OX=PeJz8f(# zJ@-3AT=COcq2l}>vrPJHSOuoesWd&uPC*oCzqVH5De9^LqE}TAcQz+t>nlqpv!sQ- z=P%qRp(xGEfxH-psTc2PqyftsZ;!Ua#Fx5bQURx*O0Z=#%#2q6rmNPNj!*}}kD0z! z8rBAu=({LW3-k@gkLQ$_pkS=>xSNis(7;Ll)R3rG@}?k_S7BaA8!2xQo^JkKtxxd{ zoTicc)f&7`F0q*W2-&crrBX>?i|p@?qv*HOT6MF7JaV(H2hsM#-c!GQIlL9`yL?$E zvBadD2hV#eqC$0{+Rz$+?R^p&vbeW_%Zj&KVm7j?G=Qi{o!=!%gTsfvv!=ldU^XYL z;7oUO$#rfC-f;D>KI=M#`W&QOX$fGHvyRe8T_=Tw(|6Ej*Vv*akiRyokFe&ACG zB&dk(qa|#Ea%BADS;K5*q)>hJnV2a!h8YsH)#L^=T{yCmNF%kk;F6&TmxZ8!^g0sfHA^b8c83$>=14!h_&h!3(-O z`CmxuPG)L?w)*1f}MFR#|c>MA3BjNpu3VMKWBjty<->0=qjbfvSsEi_Gt69aIbPizi- zf$m5Gxy=4_gEYl@`nS{(f=a+6H8H$P*PjA4%`L5LO)mrCQ`nxE{Y>H+?d?INHlE&Bm3TP+^>#OsY*!;$ z&}7?@ti-@?MoAky0r3pf^w7`W!K8Ec-@QyzN1GPsqkG01?yzJ{atlAYXqfS5=BpE( zyPvd+6^!6q55I4D3|RZ!dZL@h-;1$HB0>mbEOaTSj!iGMCylhbkku1ujJd7s{7V|J z%8?)&SSlm8TQmHW(fb=qhm6FcBUg)tyj^m%D^H_+gmpjk)#zB=cX`l8f18bm=B@Lx zJI5x1#n`pPXQJNQWBd=uolCvlV|aFK+oW&{KtK7XgHadC-*=T&HB!{xs*cGrD$67T zM1zmdAIX^X$MncFC0$5W*m6z`=d+2>WSpX^e&?KyV+m#%vZm`%6_cGVCLg-bHL8jS zzTd;v(5+!_6hR9yg2HvYQe_eXn)Z z;D8y6tj|GJGgScG8}`*cs0r{Kb&F{p{2+{2p|}u@2bKs}&pU00B_25r+s8t8E}$ie(Rf<9q{CFrU+?HzJ{S|JG?Tyj$eIo06Q)-6=o8QzTcCxRV3)x z^)VeW{^o?)j4hc+L^R&lpk|tI52}^A^c9qHq@9-p>MNOtN^;ox{=|+3rIqE%=U1pB z6F=PaN=$k(=A;)0*@yW1lts%!HCLo z7)N~o%oVYspDvoac3aQC(nmd}A>M~0ShPDVKZuM+0{Pig$5$ZyS)Ir5xrqv2B4+(C zy15}^Pu-V>sZZ17_n*x!nt*to4RX1IB-@7Y=REm?)jxyG$CTEeu@R)$kUAhT)9`&4_U>Vol z2JZ(6Zzr`+9u+Ni5YW-aGrhA*+ z=Q}g)W8p;z>PQ`C)ks4Zq>q1&K*k|AH#8adw|86XglSrO7e)R6(#gQm=lW&QX?tE$smo*f&8iXSRNxms3# z+%Q`1A#Qb-7?g<@z|4UV$F)Rh7dIr7K`K8!*bf&F4ssJv9}5+*lMT4lIdH+#&h~*? z@0YxrSWD}z7pgpLXdjkpdij)B->%uD0Ag<1H}#kR!|eJ8OGP*)X?>FJi^HsY^sA`4 zgKQpk1v<%vrJ0mQ!+(&d2&L=7rBsm1f%z=x$eQ)}`|IvsW~i zJp57t4{~%$s9H~qxgt$mFp<;55^F6j zb75hRJK!Qi&4_Y-7HNx^@SpEKuA;a3xM!aCRGiZuI4w%yyF~u%f;oAYv@lCyi8|ByO(M$GtQG?IUVwmyq@dw2`Nn3ayPK=q7PYf@l-Wb=Uih%*{ElLU zj<*No0`aOzizj~FjC2YfJB5+Y7Y>Wj_XQn9GFVfDKVKoORg@pd32t=!EL6gAX>xN z+^#MqJsfYva41@mWDuT=~1tlw6NZ z`TcfLi3S#IO|~~iJRwIN2xEoB5)+$)DqPbdnYb zPv8n#5(<#{>3f znF##Imz>qA_?4my)qB3StQpC^9k1Ti6`5rlt1&gjHGP!2+Q@SOtvS8Des3U)G$eZS z@E(XAeF7VOT3!_PAQ`W;0t4EDz<`A9#)u%6E~T6Dr*e*W+C^jplX6^5OU)^)VWuCk zW;LJO-pM%)5ie%kl%S-808To;nc*DRb_s~GHCeca#|YnOMZ%^~KfAtvO^40^RdWEZ zrOTV0hmC{!9SY4~*D8jv^7m!V-yWt&NZV4NM2*eQ}aI;c$j8mxHEulO3UKu*+ zS1?3g2;*fa9&ODONF|D3rc)o~42JA`25=NRg(WQwQk{!PrqIFTzxePdoQzk zLt$^L=fpQ59AJo5@@(tOA4tH6^+EI7mhw`PqrTW(2oWh)eW1akJ;xp#*<}nljPxK}kP6mIZNB4{ z5e3;{&b6fuzwLTjM3U^@ZMY4-(mygXWeyp~%!T)!T3KJ6pPH68X}ihzRsLfRMei$~ z$4U05;wLArBMK`XLX}vegCKtme%r1$Ux<<|_v9dRMjNd}G9LNu591h5J z^n;XzB@kP4vFBnvH9f)QTIr-}5a_iSt|_Nqz)I$L+A&&w)GZz>7^5BdY6knkuKtDKZp7YftD#Icc2+{`I(KDrP9-(>1Uli0l zy+@Lw>=lE2?jHXAO%{I2O2DLl(FWhEzx^}by#5$o_TU!acF0R(_HKcE5s6(zpo@Ud zZ!8QToH)$_1xrPbjPw&YQT!58RPi&PTc>1I)#RYU<;{a{5FFHA-UP!ubSxdfu`Hb9T=q-l)q+LQKC~BQcw~BcLgxHN$5`Rv9|GFEJ z3Gtsfg1fsivqVwKmFk(c{i+JwiO{D0)>2a$xpFsAu-@=N3qMfA$|9mg;r!6=+0~^c zB#XhE0qWOSb%7$wNi*(Gw${nACKN?&!m;iiiIX=9?(|Dt#R`5Hxua{N@9SyY z=qZZ&BGYTtT~iJNfp4~GdRD_fKtt=c1n04H(9F@wG6Zpna?U|#*O2?WJ!aWN<*q!7 z9y7Y^6LbE)eR);dZRdKmfaD+IiI|IJRsTx-|H!88jz~0WsmV_g52Rbfj_&+Y<`jqK z$onj_wHYt@f=#RE?%?8}UEaYHCZ?{N$L*;_#+Ul=_ih-Li*K41Eu}I}f6ghrw{K|T7#KKA1cc0{ zpqA?bfek(?7q;ux$}kS_lVSV?2#OnML$DzRsIlB7eS@ySnCtzj&JTqtl(**73M7?w z44w0Qhd_$8=)Z8h_MT_I9FS&hoyo6bAub6^oP23m$Ftqgb(c-E zB5tOb?D-XKyw}28#NNIACsa~dipn9Q4(HbEOhjyxh|1>!522so;+(&%>Mv~3ltrAM z3AglpZFiV7}KAro2|) z^8Zfujt!D4Col( zNgw#3%JX!Hf=W*rF0#l*8T2Y$ioG~7vydzRX4kED^)W$MzNqt6jr?{?mD@7k!|^=V zKH(hDR#`)n(oNo9Io$Slz+y1qxQ_39l($%&{0LgqI#W>48s@`y&1*6K(@rRG)VL8- z^HxquX})B&vFY&nFZ8613|J5-`laih{F&(g4~| ztlkkE&XW)Fg|+K7ZD*%K59d0;)(K+HUi%#!zrMc21uc@weU3NeMHP_N3Ijdfk{66M z3Q6%{XIK-FeFDWDau5*pP$X`gpdMVlY_##0FyY=Jbt+x7YAK96v$Yt1a)V7PL@;hP zBX`aaD?|qEVw6w1^F9&8tum&^r-ao(PNJEdQe_)bzQ4ru0cc1ZH@gZ9X)Zb1W~A^n zrQ~=((ME=M0IT`&Q;vS%^1D#b08*!ySk0GpWuuOd)v@*?ggA6f7plG-6d**)w@Nrn zong+!P}WLg?$$)kr~<)lVrrPz?|#-Elw`066Z*_1e_1f|Dvhk0eQ`)`hVSV1CUenJ z&{||1zw5bP0lQY_t(J?F`ad7TLh$QA2n;6W$kq@$YMl$ZTR!CVgVreD?_VU?wQls9 zU&Shxxa^2xC;WF|9GjMu>a^26rOHza`rJ?X*d$NjmvJMVx#x6X;(NhRQ#*pY+Vg4- z4t_SHnR}kM+QBAypa%%RT~pfGYnMBAa|Q#oKt`Sr8Uk7{Mc)g260l!;AUh972K|px z_Q@7QIc|=7oO8o;X9cu z>iPuqg-0Ta*&C7@Lm6t?(+8t6TQcua(6ZF^yHQY_1B+@BCjLY_9)FxH#!@*kpJtZ* zJtEee!TF79_V=@{{B0$)^eFyHGyGr<3YetdO$XQ{JAiaGZh1d;>aa`1ZqFTaBwF)% z(1Fa$l%5pd&&J-YU{(m72>kO*6PKs4KnH3$WKfN$b5s30)MC*@gdDq8+NsGY0E6nL z#$&{6K-cjKpL}nx-M8HIaAvue0BBj-@;U_hAiFw#ZT1==f!1)lCb0N(v?O$Tc3ADd z>Bnnst4g;rk=tA4uzI(Y6c#Jik`=o>J-rDv?1q9V102w-MOL`xnkc1S!z(s{Al6@E z?P(OcY`Xq$0qVqqYF$wuuN(I|<6W8G5|CaVxs=Jwh;8ch^l7M*oBJf%lugTLp{wRf zTYyZZZ_O&Vs$VzFZ~WPRPm$lhLVC7Ob}Q@_ZyQVZ|3-!Koqmyr4blp?hXiTe5}T_- z$o^Wt?P22=ncibnr;NU>-mhtMVR2l$!+~HGW@0&)`@2=q_)(Vrd7ryTrU=XwwA|e{ z=YqOUs7u-UH7^#UHohkW9j>H6lQ;pwptEoOR&6bfj~nlyVjL-%gQZI2IvS~ zNLE(gjLt-61Lx<>J5=?rKU?jK0N`pt4|qDO%NYrJ)V4$X$7XI3FBwLM$OH9)tSinS zX*?%zV=~BuuG{t67(x0L(?so8l;hf86Tk({ZcS?vy7ZIR2O!@Q8lXs`iThd;%Ei#{ zNZhqAU{AR-_eZAq2B5MbmQH43#IL2zz2`G_jzYoC^>^etlE2E{!fi%RGjJ0Q(98~K z6t&^c;Q?cHAU1#Vwyav2R!#yXVOE!UDW}I{N$A*(c4z1$J4dALTQ(>R)U?lVKoIDB zymSOQwi|3Du((^GimL-&r~qU!``NWV3WEIs(xI^bz4ZUK0yo;(8^ZZGg1sEqA~dVz z1vGx5NqJ*vjn#v@S9be=);MDS*qQ`R_unGU=&6I6WD|t~ti2(%lDKBuKmApjybhYu zmn|#3Soy3=1ivpeoG+BE4kwFVd&uhH-v?iBpyiviGWk9R32#YAK#6j^L3OR54dLr0 z=;}dsEsRgl&pj%?n*_+=FQmwzXos4Z>szw=a^|omf-uFB3Gij<5{N*8y$4wV!}k-75tIjdpvR!LnV4W$Pf zK;H>MdrvsTLNgq1E;r7t$B2#LB5z4fthc9bmrHB|5;ykWamMTnhVIx6YBI0Ug4kkN zg~%idCWSS|gMSx%hkk%^;i{_tXfVs&S_I+F-`n}0eS82$`AZx60(7MRtmKy<#N#gr zmF@W-TY+%|e-!5kcKsjYYT#$f_`t;`30l7Ynb`l+5G!mS;-jFY)@TvrP=yl`bg`}{ zv`w@S(n}BmM4QROVC)sPzjr^gnuP7tm(#m^~quw1gE*!ycrT%RIH}vrDNBO_qWe2{S_2K)stl`j|h`%2o zK0C<~{NxC0g;*aTa%1h^|NfjC`roAkuIYb|&HtJVwD*7A1@M;t-(2MhGqzFCc8CN? zNim~tZ9MT%TMEG_J9`XQV9k2{3eqS3goP$-ekYf3!F8_SP%bj)V=KozOy+a>(K&Bb zdUVS)0feKM&p_m*zckoh=~-IC4Nt7F$i<;5B#`QiCid;%!h1&uL{JL6qD9O~@R!A4 z4;a5HQh-ckyDtBG^`r48R)C=WRMy^5E_(#USz}{Y92{&K#@(aq<7nk9x-HH-`aO5(o-9 zw0mdPM;-mJLFVsRi)oSlD&Phcb<^T1Kf{DSQV=^s8}pVr)7aHd~7;o!3k48Dy{&ruiY4kXe1E@01hbYVu+M|_Q zxN4)^x4(9^-#PPtZIV53iQW^?`knQvj~>m>0amw{#diSbszF=kf8A^V^}v9O-0lF! z{Qi8lWq7%)_~62?ukZFr8vi+a2-r0%nG2j2(fg+fbcUeqX=%^^?3?KPouCE5)@*)1 z-xxDwiq2s!(USnK(U%TcKkxO2<@Tv_%_qbFdjzAWt_}8M chapter |---> numPages } + private val chapterNumberCache: MutableMap> = mutableMapOf() + + override fun popularMangaRequest(page: Int) = GET("$baseUrl/series.json", headers) + override fun popularMangaParse(response: Response): MangasPage { + val res = JsonParser.parseString(response.body?.string()).asJsonObject + val manga = mutableListOf() + res.forEach { s, jsonElement -> + val data = jsonElement.asJsonObject + fun get(k: String) = data[k]?.asString + + manga.add( + SManga.create().apply { + artist = get("artist") + author = get("author") + description = get("description") + genre = get("genre") + title = get("title")!! + thumbnail_url = "$baseUrl${get("cover")}" + url = "/series?series=$s" + status = SManga.ONGOING // isn't reported + } + ) + } + return MangasPage(manga, false) + } + + // latest + override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException("Not used") + override fun latestUpdatesParse(response: Response) = throw UnsupportedOperationException("Not used") + + // search - site doesn't have a search, so just return the popular page + override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = popularMangaRequest(page) + override fun searchMangaParse(response: Response) = popularMangaParse(response) + + // chapter list (is paginated), + override fun chapterListParse(response: Response): List { + Log.e("Genkan", "hello") + return JsonParser.parseString(response.body?.string()!!).asJsonObject["data"].asJsonArray.map { + val chapterData = it.asJsonObject["data"].asJsonObject + fun get(k: String) = chapterData[k].asString + if (chapterNumberCache[get("series")] == null) + chapterNumberCache[get("series")] = mutableMapOf() + chapterNumberCache[get("series")]!![get("chapter")] = get("numPages").toInt() + SChapter.create().apply { + url = "/chapter?series=${get("series")}&ch=${get("chapter")}" + + name = "Ch. ${get("chapter")} ${get("title")}" + + date_upload = SimpleDateFormat("MM/dd/yyyy").parse(get("date")).time + + chapter_number = get("chapter").toFloat() + } + }.sortedByDescending { it.chapter_number } + } + + override fun chapterListRequest(manga: SManga): Request { + val series = "$baseUrl${manga.url}".toHttpUrlOrNull()!!.queryParameter("series") + return POST( + "$baseUrl/api/chapters", headers, """{"series":"$series"}""".toRequestBody("text/plain;charset=utf-8".toMediaTypeOrNull()) + ) + } + override fun fetchMangaDetails(manga: SManga): Observable = Observable.just(manga.apply { initialized = true }) // details already filled out by whatever originally fetched manga + override fun mangaDetailsParse(response: Response) = throw UnsupportedOperationException("Not used") + override fun mangaDetailsRequest(manga: SManga) = throw UnsupportedOperationException("Not used") + // Pages + override fun fetchPageList(chapter: SChapter): Observable> { + val url = "$baseUrl${chapter.url}".toHttpUrlOrNull()!! + val series = url.queryParameter("series")!! + val chapternum = url.queryParameter("ch")!! + fun chapterPages() = chapterNumberCache[series]?.get(chapternum) + return if (chapterPages() != null) { + Observable.just(chapterPages()!!) + } else { + // has side effect of setting numPages in cache + fetchChapterList( + // super hacky, url is wrong but has query parameter we need + SManga.create().apply { this.url = chapter.url } + ).map { + chapterPages() + } + }.map { numpages -> + (0 until numpages).toList().map { + Page(it, "", "https://raw.githubusercontent.com/kbhuynh/mhh-chapters/master/$series/$chapternum/$it.png") + } + } + } + + override fun pageListParse(response: Response) = throw UnsupportedOperationException("Not used") + override fun pageListRequest(chapter: SChapter) = throw UnsupportedOperationException("Not Used") + override fun imageUrlParse(response: Response): String = throw UnsupportedOperationException("Not used") +}