From e16d9e0a0453eb5cce53098d3f1b3ccda6c23bf3 Mon Sep 17 00:00:00 2001 From: Jad Date: Wed, 5 Aug 2020 05:37:12 +0000 Subject: [PATCH] feat: add theme --- assets/theme/konachan/0.gif | Bin 0 -> 1065 bytes assets/theme/konachan/1.gif | Bin 0 -> 922 bytes assets/theme/konachan/2.gif | Bin 0 -> 1036 bytes assets/theme/konachan/3.gif | Bin 0 -> 974 bytes assets/theme/konachan/4.gif | Bin 0 -> 1045 bytes assets/theme/konachan/5.gif | Bin 0 -> 1261 bytes assets/theme/konachan/6.gif | Bin 0 -> 1170 bytes assets/theme/konachan/7.gif | Bin 0 -> 1142 bytes assets/theme/konachan/8.gif | Bin 0 -> 1091 bytes assets/theme/konachan/9.gif | Bin 0 -> 1045 bytes assets/theme/rule34/0.gif | Bin 0 -> 10337 bytes assets/theme/rule34/1.gif | Bin 0 -> 6700 bytes assets/theme/rule34/2.gif | Bin 0 -> 7060 bytes assets/theme/rule34/3.gif | Bin 0 -> 10990 bytes assets/theme/rule34/4.gif | Bin 0 -> 9918 bytes assets/theme/rule34/5.gif | Bin 0 -> 9493 bytes assets/theme/rule34/6.gif | Bin 0 -> 8464 bytes assets/theme/rule34/7.gif | Bin 0 -> 8273 bytes assets/theme/rule34/8.gif | Bin 0 -> 1347 bytes assets/theme/rule34/9.gif | Bin 0 -> 5139 bytes count.db | Bin 20480 -> 20480 bytes index.js | 33 +++++++++++++++++++-------------- num-list.js | 12 ------------ package.json | 1 + db.js => utils/db.js | 5 ++++- utils/themify.js | 34 ++++++++++++++++++++++++++++++++++ views/index.pug | 22 ++++++++++++++++++++-- 27 files changed, 78 insertions(+), 29 deletions(-) create mode 100644 assets/theme/konachan/0.gif create mode 100644 assets/theme/konachan/1.gif create mode 100644 assets/theme/konachan/2.gif create mode 100644 assets/theme/konachan/3.gif create mode 100644 assets/theme/konachan/4.gif create mode 100644 assets/theme/konachan/5.gif create mode 100644 assets/theme/konachan/6.gif create mode 100644 assets/theme/konachan/7.gif create mode 100644 assets/theme/konachan/8.gif create mode 100644 assets/theme/konachan/9.gif create mode 100644 assets/theme/rule34/0.gif create mode 100644 assets/theme/rule34/1.gif create mode 100644 assets/theme/rule34/2.gif create mode 100644 assets/theme/rule34/3.gif create mode 100644 assets/theme/rule34/4.gif create mode 100644 assets/theme/rule34/5.gif create mode 100644 assets/theme/rule34/6.gif create mode 100644 assets/theme/rule34/7.gif create mode 100644 assets/theme/rule34/8.gif create mode 100644 assets/theme/rule34/9.gif delete mode 100644 num-list.js rename db.js => utils/db.js (91%) create mode 100644 utils/themify.js diff --git a/assets/theme/konachan/0.gif b/assets/theme/konachan/0.gif new file mode 100644 index 0000000000000000000000000000000000000000..385282db3afe4d43498c6af45d5632ebdb573d23 GIT binary patch literal 1065 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 literal 0 HcmV?d00001 diff --git a/assets/theme/konachan/3.gif b/assets/theme/konachan/3.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea0398f86b3475f990721be2936da5bfd6226b67 GIT binary patch literal 974 zcmV;<12OzZNk%w1VJ!e;0J8u9-p$UTq`Gr_p4Hmu5jA%VN~QYi;_>I?@|%vaV`A;R zy#N3I00030|Nj6000000A^8LW000dDEC2ui04)Gy000F4u*pfQy*TU5yZ>M)F=WYz znW>UX>n>~gm2W!?bv_6J?wTn^&NkHTctaV5!4nL9Mc3`vdo=~8<+ZwiMy1qVc#y3y zx7@EZ5Z;z8=d1TS2(Z!3w;3;`+k0qa8w>$keMNPDZGs$xSBG<5c7Z?gZ91*7sKgrtl5qnR0Su zfhh#$%powfpx?hn^9Tw+K&pU&ix^9_Kmf>JDS!h1OA)AN4x`DF<~oW5>9N4bBj*sD z#HfzP4u9{k3~DE`-o%+RyWM=p1l}2(EyVGVIa5J50yx@XDS8Quy^#x)HYvBRUkh(K zQ%tp&G#n2A0urcAfVN$@uRKVE#X$884tD?mtlg{EozD|g#R9gOl>mTyhz!zhN~(|r`)9N*yi!#3c)j7`jxhFv5%M!;ek(8 z!@dOx&EkIxX|EAMxBf5o_2=LJe?&;NcH3qzJ-_1(L|1i5jx-A&vFP_ydkG=m=th zJpSmOj_&a|WQ!cCcp{2PzDQt`6h3*Ql2QUmWtBT#i6smjD(IyW!~~=OO=Yw;=0yl# zILMg>q?sKSY`Pg{JP4WdMjQz!BC~K0o!a${$!jVb=nuaqEsBh>;qmJomgBYo|-J8jh{^ z$f~HW@1)Qxt|I^&EM2|&s-m&LCA%tnYs?DkPAS?gi&(SMsxr(B(IT5|cvI!lEo;dF z7Kekh)+(*29~FaPx~{In*#=ikld=_|j|avE-K9;lKQ{OK)QNE)i?O5bZ0k wNB({aFdVQ>JF&jkUXseLC{%3k!x!h`mN-U@{48BlpqnzEU^eoe1`z-NJMyi-5C8xG literal 0 HcmV?d00001 diff --git a/assets/theme/konachan/4.gif b/assets/theme/konachan/4.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa0db17930596ecdb3c2f627c85fd57eda308d00 GIT binary patch literal 1045 zcmV+w1nT=oNk%w1VJ!e;0J8u9NF_Cwk(Rl#xYEYd5jA%=Z^K4^zWo3H{LP8}>fGX? zgQ9F<*MD$;P)+~<0RR90A^8LW000jFEC2ui04)Gy000F4@X1N5y*TU5dv#z4dgSFG zXo`wXS)OXVvaCxvjEpM0zALrYLYDK%6e(IOgBzxbMj|veGBFrVMk4CFPE$Y(4y!#J zw%nK(iDJ8nR%a7y895Bl{lmG+-2@1mAJaX__HPAI_ zM=^T<3@AJ!j9)r+@ZOMsv8q_HgbVu#BVZtbpJ@aCu^F_uV1Ysd4Ertoh=m{%Fa{SW z$j2b1u!Yh}x)cL*2RD8iZ=w`9YNrJpjePP5s!IfbT_=@1DbT1w zIfD`R0?<%!BFBOuN8T`o0RU1pF^hIA`3eAjJVvXoQ`&RG(3ok&=In*?KG>vL%-&Ud znP|Mb`I=TY8aQd%rV0Gb4Z@6w;DJmJSWfu)0qfN{2M7S5fb!}g4u?Pfa=?J@1*o$g z@0|VSf)|~G2j85$i5;E`q^FO!{`>pepr>B{d;R%$*h|GM0Kfp(tw!L0tT9oFf&}d6 zAa?&91sa9lUFhC{(J`Rhhrf~NoN!yA<=|@kxYQXO5U!Y+7Aaa$<6JUg29#gX!IVNk7jHz${NioujXYqpuslW(H+rvn4+`B|SwG35=SB6tBB zqaXaaRY-GP@sE&II&kPCF#f}1p`Hfi00HtSvni!;YSe-#fT+3*t4m%b%&V!2%Bc&b z_JeD#tCDJJrjp1y>Y1L71wv6$)kEvTT%smG6G5Hr`a-k>KxL!0ZyGDDwVAF#tG8}$ zOUk(0rE65RO4{IndGH3XlLG>zyB(|anpdv?^9lg30Q@2=7`!glYcHdA!K<)~+3_l( z!UT%}@pSHIj=nM05_xcax#R~$uq?G5+*>oOJ2&=Bi(Hsby7?9xLK~- P=CgB!FpmfxL;wIgsYc;> literal 0 HcmV?d00001 diff --git a/assets/theme/konachan/5.gif b/assets/theme/konachan/5.gif new file mode 100644 index 0000000000000000000000000000000000000000..348f20217424300f0cdd16368f1c352d84a7d208 GIT binary patch literal 1261 zcmV@t%K#ShJo-hK`sbG@8`MLY!$e@1i&Ov=4lie1LIMdV=y@(+bSw;4UkFPH50;V zw_VmZY~7R@yeC@9U02(h1`&yKag9*}HBUl$Kxcm|XD~*0xyjpXG|jmO&s3#2&|yo)z4 zT)ia3JSi%YZU8q02_hzV2TuV2deDO40}*8h90Cmg9!gB$kePyDOzhpm0w)-NkOd%) zlz5Wf!EspD>;Qm(0fCt#N$p7KXr(G7SpWc?dC?#Ugc~JLOFC0#L;y~lN-c`VP_0h{ ztkT4qb&MV$T_t_xBm#ijZz60;#Ze_{JwY;@j9|u>Z;b*c=GJAowt?H7-vqp6%k9Kj zNQCnSINU2&4!61Tay!t#0Nu0~Zq+(C;MKoIUywO2aNvMvL7=A<`MP3cC}rvLw)Wg7 zY6C}a7)U&#j6h1)=X}#`K)^>tflzwDsmv^;p5AVjf7t1R}3W3$_S6zPr$VUcUoM810lUH6^58sWf>Y5MF{_ew%l7-g;?Q;|AbK8i4CMU&2sIz)xbXo5*TAW z2Ighl3VE4VgK1=m)niH!DUjE7cAeEg0t8|u)^iXsN#&D7MwUQ<4O~g3M0qutQfw*; zKxKPV$|Pn2DP2VanzE^B(Uc=CuoRs2M6`@vAB2zq0GnOe<8#L0`R8c1T*Zw6t+n;KNPgq;lGXs@`#$&*z1}p#%H>7rhDW8FwKmq`uep;$Y5!qEv8dj)Ef|IGzsw)Fn zH8JR}X&fkPm;?eV#Xk!~DboVRN}(hF7RtO}Yj7?I3vIM5OnY6m7B*UJwkqiAW3t{d z3of-?Q2C0i^?b|12)nAwu2iMKyKApQxS*{O^MWAlwEUtl*RJ+vD{wu)7X0qP+tR9V zmjX9TWVr8Ayl}+-qWdtN=G|axz!-b1D#-aZ`)|l5>#LP5DNBn~pe?JM1G^HpoW;zx zXj`+#^?*ThsXzm!b4otjLMj4~BH&tM_4E}FLB>f{v>QhwV71jum$=OVR?Bn6Co6kW z>eW~S)-+#9TfNQKQ8Gg+*GhLIWC6?=(6!tVyM6T1bn8~>-R}kJDXEn9<+r7~(H(W5 zl|FjFeR;X+silg~%N%P;M+$kGJwR6~UZ8xjw%g_naMN|9moAP4+^*sG`Q>D{ruf>n zT)o@l_z9^uJh|IKK-r>)-Z$r;#?E`-ScFjO(y~WgI_6}LihL7pSK6BMpTcc70;JL& zv3+_EPrU4yA5Xx+JqIwm_h-BPX)}yQJWLPq%h;DQ{gz`uz0>gULjVTIUpYDhDzn{4 X4FN=71xVnDRs}|Z5fcFiA^-q8^npL; literal 0 HcmV?d00001 diff --git a/assets/theme/konachan/6.gif b/assets/theme/konachan/6.gif new file mode 100644 index 0000000000000000000000000000000000000000..a84ab8c8879e764b0959d002b772408dd1f0eff1 GIT binary patch literal 1170 zcmV;D1a13ANk%w1VJ!e;0J8u9@1CKdq`Gr_p4Hmu5jA%VN~Je%!%3>@{`l1U@Z|o_ zuItIS+J0UC|Nj600RR90A^8LW000jFEC2ui04)Gy000F4@X1N5y*Nw9yZ)f%Ac$gi zC>pMhqcCu+3=K`!Y0j~33=4xmFjx!J8YYrbnbP!P0wKY0s9LLrL3D}m!5q#PR6r;g z3;|)fLKYa>ZN(%rb z19Fs=VlY}tnWhT~oCs__p`tPfoh7CU3AYKI001$surRWjr?R-X3$hHnzM{OD07)bO z#l??*42L|Av&kf*(+doohAa~!vt5Cys^1IZf7mM{!+!wk)2i+6$?zZ!4J3S$-7B_$ z00Dgp_71W>WS0DB4l+@ zBsXG7y(%nSvWzJMV}_baZmw)u%uTyqFlNT%QqRo+qSJQua`2AkFcO@04a7Iq!Loj| zu(rFkt1MYpV7&UgU@oXVv#LO){hE=15*VrS{qTc!gGm=%>>_IgV-Xv^<4l%ACYXUi z!vi1>;P6H9;!&&yXeKaZk><45ESDR#$KenunkTmqO~D0+(heI4nVotq%?+_lYZmgE zH3omVPxDsoTZ9@uo3#wLZP`KTAOQ&AF%W~fV&_rP2%;jXa`6@_un(vQz>UP})}2@} zz`;xay>1A^Advp26*mSds#{=we*NEAm?x3{8@QBro_DM{5TJP-;ljXqy!O4pQFW2bM1b{eIDBy*+7?ezjkHz?yPaUqrpc!Wvg`tKI7T|!4 zGdj^hj8t4<0E;1w$V(X<0BKtX1zaJejtMv>l|gR&801g>1R$l9Ia<_WG8{eTqn0!d zQA3np7U_mG7?u^|8$0}T7!h6?d0zo=#<^sS#QhdU6h#!dlA%X3@XeJ5rLmR+cpN5# zY)7(rpQ2IyDa4b59#%vEW=x4`G4n|mz>`88#)cX+fGNp-RTj4CLaD0i9G(LhsUs&m znaGcLwl3l;W#Ys%X>JYt+9`HF3IH7cvJQa*EwT!Q=d3}`POB}omCU&9x4BuTC4JzQ zn{2n(f~y0x;?8)3w(D}+kGt@8pf0-UPK(05^Lk6Iz2%z zyTdlT&|?oToNclOJA^RB7xS@iY#)O>FJ&EL%t65?hg(St*BqyD#wK^1o>yO3jIzv2 zJyLSaDNGyaPu-+!anBMvK|)&Q@(c9QEhPQzqfFrDG`veAaLCS6pUYO%H zb=TX1?W@sDw>E6pkfzof+VEss+i%0YEu;vs&COQbKhu=A-6FW%HxGY5D!9OZ{XKYV zf-k<1;)V+@Vbi)fzCq&>I`D2k4S*ZxwvT^puJ>;^=9oE4x*`7C8LYGS7Zo>X2KrB} kpOLwt=DF^K+mkzB=oJWueO<0nPTt(+#*21haS;FjJ70GlNdN!< literal 0 HcmV?d00001 diff --git a/assets/theme/konachan/7.gif b/assets/theme/konachan/7.gif new file mode 100644 index 0000000000000000000000000000000000000000..784e7d0c169e17eea297b66e9b88596899e8127a GIT binary patch literal 1142 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 Pn}$g;O9B=cL;wIg=m6o< literal 0 HcmV?d00001 diff --git a/assets/theme/rule34/0.gif b/assets/theme/rule34/0.gif new file mode 100644 index 0000000000000000000000000000000000000000..3512b00c225822eac239c2209d5503b65373e6fa GIT binary patch literal 10337 zcmeI2S6EYN8h}pNsC5SM9LJ$y)bQDJv1P3IvP*&Y%c#twix(JI( z708H@KuBN&A%p~^N+%2oqF4}-fV5ztu5DeP-M!e^^=6!NcW%zP``+`t@BdrdSQ#1} z(*lkI73+c3)l~oh(k_5+{cgAL<B8w?6a=nu%<7CsB7O(b= zi$})EpG3t`muHKUwE8m-ZT9{Y??zZ(b2YWKo_v5ZRKuDu6IH~l<|DB zrSL!yhU?@QmEygj!YY%#^aDBC4bVuKGtt=e7+OP|ENaRoP9y8o;f(!pL6oCcm5Eff zVj=~`hxBb5fBl-$(x&7p?@W1<84WEEH$!L{>G}S~+{imIG}}QQDm}CbkqYRf(DK5b z3^3p~{U13*tLk?x&WCU}#mY&&sI49y*S@@-mn*+CH+u8B{VTkxhW{*;k#(Q*;MDag zL2t{o1}Jl7pj)<{cO}AQb!B<~vynBF7$BQ}+!=G?Vf2P=uN&5zTBexKUzmeP6>MF6R4`<3=C#aIa(d%=2($%1IV#JM4-v~b`2+N<6EnLv^6@-m;PEzkq1{kiROw6~CsXRidP>tq^eiW@46DX_ zT{nMdHkqaaC#!I#F3vG?cGDBRszdY-OUkZZbSkS{%Hr?m&-yT?FBzgK+Es&j#_czE z7S)$=4bm(qR1f#0ka|yPhIiv;j@uj`h013$MH3c*yzS}o1PMqxI<%F*aVK=nAH_{~ zy@2MXGtt>OVRkLW==okjU4W?57MtADJX)u+&`07?76c9|Q~F)RY^#96kehzqXN_{D zE!r>Sm^W@-MkGx1Ga6R9(ytg8ovJ*|k+U8-Q_0ai5__lpm(a+7EOYpK0DJ=i00aOC zfG-4q0e>Q&NU@-B=Y}NOAnL=KEX=dC1{M=L@w%&iS~?rSd#N#5n2bJ1hc_!sqwG1z zY2mpK0N6@fo@>!)Cxy0oD4P)6*70b;ohBp8NlYUFTGVPBn;P!gA{muhsmrMq@l92< z^!ptNraQWrjNW@5~mpV*4_=SH|{{L)iO+V^d`L z$Th#P-m#MkC7%I65(EGU01yCQ5CFpn9IMu#!EvT`IfjDA&Q91C@`u=sL5S)5L&lE^#i6`VcXrcJ9J<9hj9#5;DmOgf*d_JJdY;q zStl?F?A@ce(!n<3jEhhXOA)vpdqS?L|Kaz^Vg0r)rGz`AYCrG7kju$lXU*HAZeXqj zh9G#+g%k6|VOs)sI{zeG@k_UVsTS52E*&{jgj7oTxB-9w02KgKfKLh_{4W(CAlmbz z0^qCWhTMYW@5LzXsaU9CXjiSr6$kUL(i0!chCWDSRX$kM{F#Z}HCz^p@!cEMv}hYp zmMl)GWwoqrbq}sn>DI%aU&^ACCaU`G)8gs!2!syQm5BEn0HwZ!H z+Z6)=4FF64UwHz^WBoG$xZV1c08U8##{{4u*D&*8{(DUBmAp#;IN1*g052WGyo!j1 zvCo8NV-ucc9hPK^*-6urr)n5l9G%u`e8Py{jlh^!kYnbXjSYi7?yN+Et)69#(BNe@7lksjYce^yjBin$_t(A=!e3t3sn{M6 z#NXCZGTJmhM4D+^93LV`7z)EmZtp2wJ4Br}DpJ~wPWDq3UAAWTe-(6}&L#A^ zep&$DbpY=B4&X+UJf+U)d*1=#HF_f6c7TUxUXWhi#q+M^e3$L>5dvTb1ebuXcM162 z5ct>u{|5-fcs5ibA1qz1epBb~U5}XG$Es;Opr&(vB?~~*RD?5rY?RqeN@;$fH&~J= zehSyv;(38IQwNK+#5W@~(dF%fPFv2kO}8$G-qsaF;JLEhjCtN}=K{?x#k(clY^b7$ z(q|-YS}xF5EETaA?EJ%f4?e>#bR0T7CF&yy|B(T{9SgTYyIu+%+UUDSUai>nUo(IW zrS+lAO4nx=0CqqS03ZN9Siqll3jk992!XE`0>Aq-@K2Wl!1)K~ADsVBDe(Wi4e;(T Z@Q-yCAO>0h2mlZOUlIU+pxXe(e+M@9HJ$(f literal 0 HcmV?d00001 diff --git a/assets/theme/rule34/1.gif b/assets/theme/rule34/1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b292eddd9d4d414ca8a53f36da052685eea1d285 GIT binary patch literal 6700 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 literal 0 HcmV?d00001 diff --git a/assets/theme/rule34/2.gif b/assets/theme/rule34/2.gif new file mode 100644 index 0000000000000000000000000000000000000000..6d3a68a8019ad06d7691ea2509b06539609051c7 GIT binary patch literal 7060 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 literal 0 HcmV?d00001 diff --git a/assets/theme/rule34/3.gif b/assets/theme/rule34/3.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b91cb3631515e7c29600f4e6b24cea99c0c1555 GIT binary patch literal 10990 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 literal 0 HcmV?d00001 diff --git a/assets/theme/rule34/4.gif b/assets/theme/rule34/4.gif new file mode 100644 index 0000000000000000000000000000000000000000..7dec2c237a2188ae963bc4e5a19a3ab8189a9694 GIT binary patch literal 9918 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 literal 0 HcmV?d00001 diff --git a/assets/theme/rule34/5.gif b/assets/theme/rule34/5.gif new file mode 100644 index 0000000000000000000000000000000000000000..e89449debeac71e0e6c05a04ff5400c8ffa20340 GIT binary patch literal 9493 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 E0K?E=U;qFB literal 0 HcmV?d00001 diff --git a/assets/theme/rule34/8.gif b/assets/theme/rule34/8.gif new file mode 100644 index 0000000000000000000000000000000000000000..e75867aff411f686cbb692174b431a989f86be82 GIT binary patch literal 1347 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 Ap8x;= literal 0 HcmV?d00001 diff --git a/count.db b/count.db index 2e355cbb1e80f5717aa5be4a029db86f95952f95..4eb4184f03fc795168436116d1b5673181146463 100644 GIT binary patch delta 1577 zcmY+Ee`p*<6vuaGm*(c}&Tf<2*^pdvv7xj{AT>F!t-V$(K`kw%l+d(V5Zr6_F54t~ zO)l3o5qfD+{}3wH^$$&JXtYZ1E-5ByKv1MALL2|GVgqUwwM|4Uh#>VB;>@H8_PE{8 z?wgtS-n^an9l0QnT##R`MwQapnl^TyerDV(!{16C-k}GfwMhi0gPyhV1bhz*Fb`ue z2L(6-eee-D&<<^|*;ofnP>Vmof8w9;bD-lnd;!0TbJ)WN@GiV#`cyKM4^5?1DJ*Au zhY?IYtxA=0;&{wGfhwjBsnSL{k)T}KRw*VZi+V9z}Dw+Hs`0h{h@H_ zpei-WS;zOiOm0)Z>vZ+$$it(Q7kRJ`(T?vqqwGRo%+ zWV(kkv6hxCDwKBeZSBpavQJiqN}E|)xZU+#C{?Rcz6yK2U2eZiN@1RV!s~73uWR&T zz1UvQ@mNc&MIl9-dBxcQ=ScS;OW!E6?XJU#RYT~Vle~_tv4_AYu*%fQX(w~kbNnH< zB2?JK#|8%nF)oO*#I|nRvOZLZsk>P+G4?ao6sane<9G}TO{!FdnIrZuD>Sl|xV5!4 zRAA+z*zM`bgeN+9sT_Y`IM>y4uTs@^QF=oT;LwG(& zlH}?0LD>VZCrFXJNk+*lHK`y#kp7qcoBp%@ zgZ`C%U7w#m^{bXIQxLKj?M1#}v3 z+pQUEM(~n#Nw8=Y1q)U|aKf4p9I-|OJFE`D1G86~cc2X(JJ^~-c4-~vr&^o#Fj2K~ zW6IpB-_}o(k4YM~8D(%LsA-AjVTqW=X87IQV;(eT%=gJ%vjO%)jq#&a1?8kh8!+w| z|ByyA0w2OP^11Q2`2u{QUp1fA$FvdsB{;8_$aZ*;>^H7yM~y>Tqj{SQo1c*qd~M#< z`^>cd2RUn;HNJ$rsgp4%lJ6j-Avj`wV_t{wF=JeN3!c#Snr|B)kUQkCVNIXfg!3UK zj95?Fi=b2@AsY703S}d@PcrNUtWd-S!@j615p+*3>=ZY1aj@gdYyKw`yQAM4GRGT02cyjZe(S63g(lcA5s*R z37kX(02c{iWNm3~3IG5AObxP=2OycTff5a~vMo{q7)%Rv01ZbE#SH`wtq(U0)<4EPO^4v`Mk4-5^S4c`yk57G{y3!}5p SFgOXZkfs5%bUTU^0u+`TTwNXj diff --git a/index.js b/index.js index ee6d2d1..c46d9fd 100644 --- a/index.js +++ b/index.js @@ -4,19 +4,18 @@ const fs = require('fs') const express = require('express') const compression = require('compression') -const db = require('./db') - -const numList = require('./num-list') +const db = require('./utils/db') +const themify = require('./utils/themify') const PLACES = 7 -function getCountImage(count) { +function getCountImage({ count, theme='konachan', PLACES=PLACES }) { // This is not the greatest way for generating an SVG but it'll do for now const countArray = count.toString().padStart(PLACES, '0').split('') const parts = countArray.reduce((acc, next, index) => ` ${acc} - + `, '') return ` @@ -42,13 +41,8 @@ app.get('/', (req, res) => { // get the image app.get('/get/@:name', async (req, res) => { const name = req.params.name - - if (!name) return - - const counter = await db.getNum(name) - const num = counter.num + 1 - - db.setNum(counter.name, num) + const theme = req.query.theme || 'konachan' + let length = PLACES, num = 0 // This helps with GitHub's image cache res.set({ @@ -56,9 +50,20 @@ app.get('/get/@:name', async (req, res) => { 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate' }) + if (name === 'demo') { + num = '0123456789' + length = 10 + + } else { + const counter = await db.getNum(name) + num = counter.num + 1 + + db.setNum(counter.name, num) + console.log(counter, `theme: ${theme}`) + } + // Send the generated SVG as the result - res.send(getCountImage(num)) - console.log(counter) + res.send(getCountImage({ count: num, theme, PLACES: length })) }) app.get('/heart-beat', (req, res) => { diff --git a/num-list.js b/num-list.js deleted file mode 100644 index f24a0db..0000000 --- a/num-list.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - 0: 'R0lGODlhLQBkALMAACocJKGkunN8ntXa6BE1dwxKpTdvw0mq6v7j0vDWzOGFgLZtauGjov7+/gAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq7046827p04ohl8pjU2qCoJoco7aFEZtF2zrvmCcFgWZDJgTBBy8RygVmAmfs+IRWfI1mtAsC8BKUWFWrEwsXm27DZLGen2W340iV6D6Wthx4RseP6PTF3h5KgFvCzKHfX50V3ZKAUU5hUyJlIQLTXIAm5wAjiKRk1cKY5UBC6SanZ4ZIYVGTacMY6SUqTmramsOsKOztpcKkLibuh0OkwIKv1eowcNbrCa8mUDWBagB1wWbZ44eDgCZDOTl5udzXN/H4nGrCfDwq+ktL7xcDQAD1gPx8PtABtBbt+HelgYEEjZAwJAhQoUD7QkQN7HWwoYNVSiIOG1iLAYK/0JibBhyGccqHpvFG8kw3oKT4EIYaTSiZk1cxo6lmFkmi5mJgKrsjOXziRGgBDE4MLCsTc+iR0MmvdNwFtGiMugIYKhgKggE5EhdxcrkijmvShhUdSqjphuzDBmgdaCWK9s6KPTARdAVBjm7V/OmYfOx5dxyiQKLwDvGF4IEaJUYYHSliWAvi5k0QdX3WBjLmfEu0ZxiQeQJgi4PHi3kNOonqlVjFto6NGbWbQu4Tm17taA0uj/wxu0bioPg4LKwll0HuU7jVpjPFl7UbfXdv0UTh336eHay3I8J0A0efLjIvL6XryOtYIv1WB0cQP8evk8A88HNt8m//4j84FxTSP8AAwyQEBAHJEhDggoSYE13IRhQCA02SEhggQUuyKABDgKBXoEVDjggggweUMCFBWqTYHutDMCCNpPtQ+ArIhqhoYICFFhPTiAME8BkLGAzwIxDYlgkhoUQYMN8BSblQJNAjrdAgQtgYiAQUw5QZZET0uCiEU4iEaGUVZZ5YAEElLklDuNp8+UR4pGp5plpqrkAmwYcV8CQ9C3CwgJ0RnInC2LuAEOQcxQRaCRs1jONNYnmsKgcbLp2wjVcDEhohwTAMgwADz4KKYp8doiMkQGA6qE9Iuhj5AAOmPqqQNdYWoGrRsbq4ayqrprEk6/GWgOwuY6QxAmzxprgqUja2iLWqsrOR6qjx6L26hTL5oghtdUq8eqO82mro7NKfStmuMF2a22uJyyb7gnVEtskaia+Kx+5Sog7L73mygegPdd+QqqK/wLM7h2vFlCwwRiuI69A+K7bcCDvHstLxT0ayS3DE1N88K/JlvsxDw/DKnLHIGMMgrm/6rsvwioLR+rLFZSMb8kmezxyFbPmDPPOwvVMUMkbgyP0yUAfc7TOScOw9M9NF2TAq3kqNbWRC+tX4rJWb531MV5/LZnX5CJDditnkxzA1k6uzSCcKdPMdMQnGLoLjxVEAAA7', - 1: 'R0lGODlhLQBkALMAAKGkunN8ntXa6BE1dwxKpTdvw0mq6vHm3+GBdvajm7QYF////wAAAP///wAAAAAAACH5BAEAAA0ALAAAAAAtAGQAAAT/sMlJq704622Z/2DYhWQZEoWhrqzKVAzRzvRaFIRcu1es70Bc7td6dYbApGGIag2Mx5wSmBvkUobCM+MjTllC63XLZXq/2WqVjGEIkSrsNLyGtt9SedwGjq/ZGm5meoR9aQQDiXZceAQCCwsCWY+QBQp8h4iAgW8GlAKWlAsGCo+gkm+bG4JelmCXe1liqpw4La42sFmysxxHKT8KCK98ColWi74xQisKCc8JWbAICQgIxwTJHG43wcaJztDH38i+MDe20gMKCgsJB/AH7O7HtIEoQt3G8/Hw/MfaVnWTomIfggX95B08oClgLThZrC3sZ20BAk322qBgYuMApITw/xAmUNDQnARWV2xAAwmvGklFJht0SbnC2juWz15m7PGBpoqbLZ+1vGZl5yo3LNYBbanAQ6JsMdt4UJEoQAB2CgKQ+RB1VVUAAK6GDcC1q0AmAcCGPUbWLJdHJuKKiBoCkt27ePNadNjjmd6/f6kh4EuBAYKWgBPbtUn4ZL8EiiOza8zgpl/AHxS75MtAwGF4BzF70DySs8V4ofPWTUytaaAFCob+XQ0YweTX4VLPHp2YAQDCDCBNVpy59+9tkX4T54257SoAApT3Zr7bnG/pooP3jlk8O/Gu2r1vp7s8/Gzw5b+TVy1Xb+MO7turRh+5/vvC9e2vzz/epHn+7u0HYP+A3A2ImYDZyQWeXB/U46BRZaAjIQ4PPnjfEQNM2M0sFcIE3hBWaKhFh09cWNgQDAxwjRkYWehWFy9U9oxEJEhkjYkTwHgSNNDYYZiNOMqEYo6PJeCjjYNxpyOR8RgJA5L3ecDEIgw8RiWUypiRTJVNbglkljl40MFS2vxIozJi9pBQmVi6xWQ8bH7ppkxLOdlBm25yCWcbeL64Jp9y5mkloNZAeM+gPTgY5IkYOdTZMQIIsOhJCzT6VqSYTtrZXZJeiqkAziG4gKOfZmrWf6N6+mmQm+JFaqmg4ohqqm3AGqmJrbqq6qoFEtiDrZ36d16ttuI67K/FCntsB8BeOCtHJK/C6uyBbQQAa6jILQuDtaViuwq1xH7qbSCi2BUsF9xGqhWuA5RKWYXsaqkMNojIOuF7KXIoKyjoRMkreJ84W9apA89JQQQAOw==', - 2: 'R0lGODlhLQBkALMAAFBNYKGkulxiiC8yP3N8ntXa6BE1dwxKpTdvw/Xq5++WieVlXvHNzP7+/gEBAf///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq704a+163yDmjd1hmqQTWqlAvAJwIHSNmMYwAN76OK+gkCA4uIbEoiEX7G0cACRMOowtB0PnxRGLCo/ULwBgAICbqm3Xew4Hxzuz9FPhju9tNxGOj+n+aRR2d3pScH+IiIGCXQQBBQWFbwCJiTwiXY8FAQSbkEGQj5OVf5cZdp2coZ8vq6OkpiJjeWdgYIeWAwiLggcFBrRfQbeUuUsNvBIOCA0IXsLD0XvFpQNLAQa7LMw3wwICC9BEMLg71tfZyT/MRi8L7wpfCwr04XfVSwbYNOrLDQVeFtyJR0QgnAUC4uiglA/bDHU/ZhRwESPAmHgCFACwSIhSMYbo//idQlCGwIAFDb4xSMCSQcpvUXCBJJBNG4ccCVGmZMmzwcuY1HQYoPkwBJScL3myfJmRQDlrNEWCsDNAgcsGSpf6jPc0qs2pMTJazcqTHtdyBlCscDAgLICVZJWeDWoN4hY51OAmoNdSwdB7iJbYrSOn0tgEDPwG4AT4zxICg5WZiZLoxZJ3+nw6fToU8lS8iCxfXmDAZ4PNdEVHPur0j2h92AKY3kwq3+AUuHOnCGxgtenfwIMLZ6toqvDjyJEVN568uWniAyJPcOC8OnTpyqo7v250eO7kHXRgpx5cN/I0bMcDH7Hew/Dpa9t3kE9+vY/p2tmXv5/duvv9/NV3HP8J59XBHH0EDihILCJ4px94jPj224PWRfgEfdr5tAgXEj73X37TmXFbeR9WqEwMIyL4HYA/CNChh7rNZ9+JLl6YYYE/TPbijfYdxaAIiTEgJI8e6mgUYjxdhZyQ9CjZAYprIcmSAskp0NJKVCLjQG8+OBCkkAvEmCSWGtLRpVl+5aNmPkJ+SQJ/ynTwmAk21DCPWaQNxSWc0zlwgCPHLUZTEILxWccSM9RZwwFq/mjoD++cgIOc+bwT5qN1WKopepq+g51RAWi6GKeaFvDpVJCkOqoyiy1WADKYCpKqquil+lysss5qKn4T4jqdrrv2d6uvPwAbiICwEuuAsbyaFiy5rkDoeiyL0EoryIy+LjvrhthWu+21vSqrq2fC+vRsrNrS+mu3mKabKrfhevttsxqKay299cr7rqzsGuouJBu+Gm+7muwL7rDoFgxwHdT6q/C5PzTMpwMP87Jsv3BSfO+6Azs8rsUSB/hwACBjfJ/GGysjMMIep1ysyV0+DPHFv0Essq578uvsqSysaRsLKzdwAM+H+pzzdJIW5a/R/SRaA9GCML2FolBPp6YWdVDdLtYi2FD1oyNkEAEAOw==', - 3: 'R0lGODlhLQBkALMAAN7NzqGkunN8ntXa6BE1dwxKpfrr4vHn5PKbjrFjYu28vP///wAAAP///wAAAAAAACH5BAEAAA0ALAAAAAAtAGQAAAT/sMlJq7046827/2AoMWTJiJmpkkvrLmv5lW87DHU+CALumilGzjbU7XhDGYXBEwx9Rdft2Hs1BafltbqARqXUXniQrTC33K80EN6WLeer9zsIsNHNtxkvpdt7aGQbDAFbfUV1f22CHIRXh3NddoVjehqEhU5EXTmTlE2MM58tBaUFOaYFgD2WHSQ7mzcviQEJVK0eQrC2C7xSCXYJeSgjuk4JCAO+NsC2V7iXDLA7AwjWCL7KyNjCedBwBARIO8gKCtfM1ufdAuEE3xMMpuJdPO4E1jfW91cEpvAN5JlycmSBKQTmzCEwtaDfv0bzCApAQKqAgYsYS7VAAMhfKYAC/0sRqGcOo8mT5jqKBOmxwMgj5xCcxKiOxw5/77AMaiey3sSZM7vdfMcE3hmcLcTxkDlTQTcCONphKXoJi72RC5Q2KbeuXwtvOlNMtZc0HA8AAhKoTYC2XbivPEiExUD1DA53AACs3avXnc8TVMUCtpmVAIB7iA37PTL4W12bAxQbzkuZsuQbcQPOhZPZ7oDDhlscGD26xWG0mHUGvnBmcI+2ANQYFtN58x7VZwuqQQvglmZorTUfWLXgAGXSlA3ABmtbi+qGqypLp9yk7djm8eIKwTNd+pW2crGPmBqjvHm54YFPVcO+BQnN4n8Laa8mS3C6cenXHx//t/4v9vXn3/9/RQQI0nw1nIfgC/YBNEIS5yUxwgzsmRCFg2ZUSEOBIiyYg4UAdgjghheKCOEKJYbg4Q8xpAjCigWSyKCJGrLwIY31yfgDjjDoCGKCPP7ono7u8ThkixyqeCKKSb5IYJMUPnmjklICSWWVO16JJQwdKuilEsQEpABNZbQ25kUIYDjImQakmR0WbLoZZjwImfNGHAkoJOecAV2zJ3/bWKPmJX7qcUagfxLDQEyCcoZooh0yCikTiCowKGuStsJApZfCkUoBmoYzD6hzMjFFKHucKuAgLrmDCwOIkRqmPPe8GmunS7Qajq33yKqoru+k0CuuIwAbLF29+qqiscAluyp7a8wK604p2i2LWLPTqjLMDNEim214U+XSLWvJAhaHg7TWKq2oHxWDYbqurttSp/DG6y27yoqbGLb40mvsseSW2+G//LJLb2L5LhFrwhDtK69H/n4KMBywTjuxvtdeksquKFRs78MX5+KWOEaN/CxdU6CbMp9gNvKeBhEAADs=', - 4: 'R0lGODlhLQBkALMAAEglNZeRlrmyuNLG1BE1dzdvw0Z/vvz///zNif7q3OKhg6JsYdd/cIBQTgAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq7046817dWAIeuTlIGiKik5Znmq8sqxLOYyMKry+K7XXQpbzyRQpWiuDG6aKRiI0NjIxGE5GIuq7TlNADA6rPRy23JgXiWi4lyYFFmk+oMzoqPzqbizgYlgqWwkHCnYIBzlnKkgLfX6AYgpOCGw7hAhDjCpYfX8dDgsMSFOkKQt5lqgMbqChZFOUn1qoSLd9khpNpHuURVcJeaMIOa2vHg48azxZpMIojw0KDcWRL5ZelqNaCc9o3K1y18m32tQNAOoN3ZrLj+PIHDDLOZQABAQJCsLePHLwWjXQNWlHMXsADCg8I4xfOnXw3pCAsapYsYQL+wkjYCCBn2kD/7EZtLhggUIDDPst/IiFIBMwBhcoyMcgpbCF0kq6FANzBzd+Gm+iFDhqpwUcjXzyCKpRDrorRj9cqgiwH9Cm6NgxiHpjKpQrMhsu7dfHC9cJylQQOwg2aFY3484+wHEJRBElePcEYXJKjgMzpeoIHgz4iuCodC8eMrODsGM5gxH3AtBQcCLHgiFH3jCGAQBSNTGLdiz5CgB+PEarrlPac8PQmGnE5uyF8j7YpFnM3lV7mWi8u/maVjcaOGnapgn8zQ3CjIjggUwPWE74+QHr1TkHCACggPLqIQ6HP/5ywIDuBaizHu+c/eaCF52DB9+cvIkdngukp4+3/vv726CnXv97/fl32EvFLADAANetRuCArDFRioIE7Ocgdv8dBRqF313o3oHRMaDch7+R6JxwW6Hl4Gr8uNQZHBCumJkWKVpR41wyYgaUX9HBmONjt92ooY8/DuaFPEeFIUGMOYIFAGI3FCglDTbMVaF+WOqHTz5c5iMXZ1mGuWWXAyhX5VFhYknAmF2aeeYNTanJZj5lfilhUK14NyeXdorBlEBrtpnPk2+i9acDA+35WZ9HMeUNoiJ4ARqjH/y5VUhzXfGPkFU6cOgjMP7DY6GeBuUAAfIosymlcGrUgiiAqLoMq0teJcyrqYrKqQul9oNrrquSamqmksg66pmejgVCUVLVQ+vCXKImQBNBne36QrQEQGWjtm8aK621ma5Bq7dubkvKuNula1S1StrggHnwBrCTAwKkux2r9JpXrwDzCgCvAPwiKxi8LtZrL6N2wauwi9nxKqLCBIsB8XTunjoxxSZMjO/FLmqMLMcZe9wpyEeR7K7JN6D8wsUBf6DyRCzr8q7IJ0/ccso08xpzyTmvPPAAN6P1cjKE1ckzxPgSJkC5S17M9AuEeenyxE9PNJjUUyPdbR11Ukv1uFmu2+azc4UwjwgeRAAAOw==', - 5: 'R0lGODlhLQBkALMAAK8KNqGkunN8ntXa6BE1dwxKpTdvw0mq6q3S6v+8oPCegtNhR////wAAAP///wAAACH5BAEAAA4ALAAAAAAtAGQAAAT/0MlJq7046827n00ojmQZfqDIrGzrvkODhoHwMkEuCEPv57nYbBW4vQTAJFDmaRQZA+NRmWMwOSHbKiptDZBJ3DUTwmm3XdY3bN2UGbwnWspdV9uaBhGJc3GNUQM1T0J5QGd/K2cvAYKDRWNkg14tAgtyLmCaAZEYDXwtmJYKmFCbg4VupXAtAAqvhDo6YJwdTi8LZwKvAAuXSUg7QKmSiQy+ur4LBMzCNZ9JnRZOhCvKWgO9BAXcBAA7AjTD0hTURNYAzVEBCwUMBgUG3s8O1I3k5U+Nx9sFC6Q5FLyLNy9cvSTEPCkqkm4ANwUJIiZ4B08BAHrQguADEWUHHAIM/x5KTOCQmYJgTOzdwwInGICQBSCOlHiS3sFxWNbsAICAAYGZI0ntSOlopSokWQAAnXnRIAiEGyVQSzpTZkQATpxKLYrHUK1PBKzSxJp1jB4gXSV95SQCgNtvImxKxVElaj1BMpyMYMaXb40CJ+bWZbm2gdud3wS8ZcvtxFlIhPMGONwrVw63ufJyO9DAAN20F27VOjjg1b9GX5A5LnDggGdBoKcV+bpiZChl6fK29twnagNHbxhIPKKMQErX53zTbUDAR0SBUHrAqcwspZ7ebpZ/2QFxjzDFvvgSpcs5z3Jwo4KhB78gXfW7OFrjE81JQN/7zcJRf/87fnlPRTHniv8CvvTyCoHV7VddfwHIRwZdnGD1VoHKKGOYL8yJt46DCulgGFkVhphXZRkaF0UI/4W23FtYhVjhiP+EUN2JDaQ4zXLtudXAPwcSGGM9BuZl3Ap5mVeDaWSJ1WNKECmQ13V2ndVAAgRiJdZzEDFJ5ZNERpZAgQ1cSaVEeTWZUmwqCkBle1PKJGYCKV1FA5qyqWnRlCMtsBSc9US0jF4fhJAAAJtd2eNzxuH552i2XMWNAa219gqkkbomT1hb1jMDlYTGY8CnBiwADzekdoMpn4GaQAIAoH5aqkkR2VVOGlaoSoKTqdKqKwNYNTHormkcKGuYBAIrxT8LRCnTAsZKoSP/Fsq8YGtwLggLbbQtTHtdtRY2Wmy2KujqY7LeMgsutV1Q+Yqs9XzLwgi7qsuuVKXAu2uvQ7igrRHzgiDttPyiMNeu9mYrcD3AFvzuwdvSqnCXAjdMZLjvUrxwxP+i+zCd5t1ga8AYe6wqyPk2+2/IJuurlS0pS4tUoC2rnAO7Erecxcy2aFuzx/WAQXOpQAOmc0o+20IqApAi4Fpj9fQVD0HGSVW0G0cjYLXVTJe4zQFWy3PFJyt7UurVWAPWNF9JW73N11EyQyrXSncjZAHMGNC13BG7ffTSdOtW6d3vBeopqZT25belu9EddaCVPnrAfXm56qmlis/LHGtKRwp5mj1AVypeoHyxttvmDXDTdaSXLo4F3K7h9/nlZLem+Nq2XL3b4/gJqTc8udtCQNmih94355/GznvgWIRQ6tKyR1065mSPinwTblfamvOfwm03AqTSHrF9eg9PvOyYH0/AwT0HMLv3Z7v9aTOMRjxMD/HL2Jcz/ZZjQL3T8PBDAAbIXzk6Ayqz3UgNAURfBUjgiVYFRoEREwEHIgAAOw==', - 6: 'R0lGODlhLQBkALMAAO+eoaGkunN8ntXa6BE1dwxKpTdvw0mq6v741Pvw5P7PruvJt9p+Xf///wAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq704S8e7/qDlIIhidigaro+jMHCsDA1N12nOsW4MC4NAMFgL1BomklKZ0vRiAiHBcKhaq4ZBdInwwRzOF1RAKBgMAWNNwC4UAiQvDAAOxwICt6DREDBMJgBAbnJzdXYweARAW1wKggMFhXQhTz99ClxKCwAlA3KUlWIwWkqZpgsJnAhsPqGiMgidJaYKCbcJnQAAMa+wMLKZp7K4uAuyDLy+oryZAEkkAMXFj38MhzyPs8kko9MLDJyGLBMjs12BqarfC+J/2Csjw38A6tOq7e7J8CAODSR8kt0rtoAAAX0K+H3wh4BPg2QFC5SZVqYAQoVhGgYEULHAAHsJ/9x89JKQXIslj8ocKNBgmpsG4HyUJDdiSb0qLF2yjCkDY4aaSm6ubFnMTbteMGbG41LPzQGi03b1cvCO5jASnHYNxDfVwbJ+tLC2u7WrLFlXYLz6vGAuqD2zqkCl/ZqRgRIYqfL98IN2g0kXXewiawVjERu+40yWQyaYgUHDAyAP4PBF8eJRrAZoJjBkkea01yyXG7XH4RApmie3EE3BBYfSDhsImZ16Lc0NsU1rFvKZNQZ/uU/zVu1bhBo+m7UMt23ZQekgAQjgMRCDuWLnUdIIoiKpcvEWKrAPqAfAjcTq1p1YMcDBTAC9bgjEIJD+pxU3BiqqW2B+fv3fWJgnkf8buJR3nnesORCgeR3hwsB5vPwnwnoCdlTALfzJF6FvCi4Yn4DqPEgAL9fo0ASAOFUo4IW3GJRMiY/F+JhPHa7EoBlnGIWhhg8W4ICMMzrRQYxUXGEAiyGNyEsZHABpWwcFXCGljgk4JpVBbvwY5E/+BCCllDla1GIyHD3mo5Y0DlFDlF8W6YY0GJYV4xs7/HQYEV4aeV8BcMa5ZIzE/RZFFEUUuZKhRzLwzZUGpbGWA3gcJoRsR7J5n6JR/SnEk4MeVkQAZkyJaTHzSRfAk0IcxoYaNIApyX5VFrbpQqmq6hyeAxipIyc8mciPeLYu4itl4sQ0aW4N/Nopdj8KABz/sg6BAy2yCoXnrEHPTqsttZXMuO23uVmnJX3glptst9iCqwO04s54g7brctuPu/B2oC666U6Lwr3zekutveWe2m++4QJcLnPjkvuvr/oOfA27wza80GMPL5xtsgY7hDDFF/Oxb2wfgzwvZR1jzEHBJ4dbSQvXHKdxxiZ3nJ5XX1iMssxLPVJyzClMG+hP3aRscc8SO0FCWubyC/TRLST97aNM4OY0vEsjcMjOU5/LVtTlZG3aqR6IwHXX24Ltq9FMtzZs2JCm1hva8GRb22/DvS2kCLHNzVbdP9OUt90iuN03D38/KrjAf/09eGuCL76Q4oYLLmHTujm+QeMSOvBuPw2AG+e2j39trvdvOOaYOUu6If7bGayz9xcVN2gG+k+tn5G5oea57oTbkztg6BUIh31drlJO3tzmxot2YnERAAA7', - 7: 'R0lGODlhLQBkALMAAOnCxtJphfHj6E0cd6GkunN8ntXa6BE1dwxKpTdvw0mq6hE1O/Ohm/7+/gAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq7046827/2AojmRpnmiqrmzrvnAsV05t13OtJIji+46YI/Er+hLBl8PIRCRbS2YR4dTcPkNeT0p90qJIzC2ZpW6L2vDEZvRSorvaYGCmGtNk+NS9Pv8Sc3MIA2hUSDpSPHwSDn5MgHMHkgcLlY5GVWJ2UkeAk5KWnD6ZmpeiCnWbd6QXQ6anqHVNi29asJyye1aVPES3TVQDvl1WlLa/wINErK2UC6pHiWixwcQbDsaqvo931HTMzQtaW9vd02Z0tDTOxwkGDQkN7w3w9PYKhOjqb6BpO+/xFNiLJ8+Aj3zB9vETZ4YIQIMDDRZBCC4DNl5m/hghtJGawjcD/7JpO0iI40SPWBD0G2lS2EZIH98oWHkGUIKbAQLc3HkzXYglVDD+ScCgKIMARpMGqGglVrY/geYEEEBVAINATC2iWsAO6iQDDKoKkGTAJ5ZlXHl5PRBP7Nh4Zj1ESVtpAdSb9Nzi/RaTkQ+6lf5MAuB2LIDD1jos4VFXHJqihasWTcxhcVC1fw5HpgqALxZqCDAfIcxZM9UAjShfAz3AMdScpKkWrVGnr6s6Lv8wkJQzZ1gBtM3EbDSuIZoAkoouGFA1uGoxxY3/CVBJOXOqzrPWSoWg3I5KvZfLTi1ccfTuTcDXlZT9uYXbdbyjImBgQf13BoKjvMYdPSYD9BGwgP89+sWiEHmpyIdAffYNSE+B7r1RTXxNMFgfgamNot0DqX2D2xQGhHjfg4ygtyGHEwYzAAHftEZfiA428ERqw004B4yNLUDAizGS0dhHDtBBh30GFFAAV5PouKOA9OTHCJIL1BjkAkYS0ECOSgo4j45BOPCjYk64aI8BdQi4o330cFniiYwMEOQB9hRgEj46jlgfAV3WJheHcDZQQANztgajiGoiCCQ/kwRK5KKV5FmeFaw4gNRRHCVw5H0w5kRGhBJ64YBRAQRCwJFawthalIzUSAo2Sa54ZiUhCphlX2uSYaU9ldiTpq6z/pSJA3/iOqCIVxb0jpK0lhiGA7pead//joMCSN+sNoCpyK24XgktpksSeaGMcvmC7a7O5prjPPIMSGsNVDYbY7Nphjimuj/B+y68V6KbbrIc2ovvv7gmC6y/Mo5hMLMEgjCwuw8ePIauTsqFr4M2wHtDs7b9+QmcFNdgccUNfDKcARuDAnDDHvdJzwFAStIsJScXnHKzBRyoco4AX7xyuZLUbNGWSCaJ78NQlqyOA8eWbDLGHqdJicv0GMmyGCRDzeu7OgsLp5FcFzD1e1X72bWRWIOM69ZjFxDxG2GnTbauWac5oNtqu8Gq2G6X3TSvdBtpN9p0640w333/jXfecJuNa99+v3F42veeTCXjnjJ+ZMzuUv4GI+ORxzw53ZUHjvnEhW8u+uj2us0HsGk77LrBrYth8AmzTxABADs=', - 8: 'R0lGODlhLQBkALMAAMUvWJofRp2dy6GkunN8ntXa6BE1dwxKpTdvw/S7ie2QaNJrav///wAAAP///wAAACH5BAEAAA4ALAAAAAAtAGQAAAT/0MlJq7046827/2AojmRpnmiqrmzrvjDaNCJtNggyz11z2CUcopDbZXADYDBHzOmUEySUJGw6eVHE4ZBMVZ3X3UHLnY4aBiaYnDNsy6cZgTAe5t4It8G97VIJBQyCY1xbTgZzfHA1DYGCj29pYAOUc4sgDY+aj4hrCASUlWYaM5ubBQUDj5MDqQM/H5mmDAVzBAxrj6GtlLAbpZq1tpSCqKgDYKC8Sb4YsrTDu8SnygOAlK6jEpnC0tKOwbcM1uPL2tsN3t6z4uO3rqkE59vqobMMALqA5fHz267rTBHIJ2jgO15z/DloBDAUuGIDCQJQsA+hHw4NADWkpWngggUA/yYqoDgunjWF6eYcU8VREIAEMEEqSEBS2JyLR3apBBdooII9BmAmWADI1rB56VIdm/Mo3oI9AhYIDWk0FJacqWhhazoQKoOZMAEgsnqVVKCzWyGKNSBI6E8B8sr+asURHtenBxgIpWlAgMIK6YpppQtRwQEBeoWyDfCXQqOWDrkqWHBgbwK28mqcFWTPUa2RYN1SbExPcDlV4AiEtjw6RGBN9loWWDDzo1CimTGx1DWN8JwAwHdkzB1rd7FpH40tCB4loeuHWh/R3juS8TbnxU1lFSTVMk0bw0k/PsXStvcE4LF7GB+sfHfv6Yn3gB6dwcfQoeM3Tqpd+n2Yk8GUnv94hAXzCAD3gdbdgLrRBw6ClE0WIHrXEejggQAcQJl5FC5E2kL7tLRJSAZs+B54BIZIHwNAbWHAS99t45o1nmm3lljmKfBhFDQ2dYpYOJq3I4+g1BgMkCEJGYQ1hBlHC5JJCrhkkZz9+GKSC07p20OzhRTSSFJSwSRdoATz0ZdgJgDAkCAyGQg5TZ3pVljNYAKKMvHw9B9NAGbIZkrY9FgMh2Ap4KeYeFYSJ4wJIDbIHn/ehJBnIAmFmAACAGXAkBllZFExIVnKAKZ7HLApFQuFctOTE8U02UemQrpkJWUWENIbqyUQK5v0WLMqAZpO16epnO5Aa5FxCfeqocJ9+Mzwnb7CqclkIW3ibEd3MsDUPaZc29E07XD7iLecbSfuLOSOo+656Lqmy7rNAsOtXL+8O2685/qwX5WqCGftM92euh6/DPiribwB10mKuizhKwjC1vKBEsMH7/BwvqUKvLAqxsULMLqlElsvxw973CzIGRdMCskl3+twxCGzpU1gu0Fcss0Fa/qGX86wXPDHNwOds86m8mwBzfeia3HARPdlBtItd7s0zHu0UfQUULv8crextqGH0Y75HPTJ98xQR8ZOH00xu/N6rQdUWK/rJNvj/hBri09XeRrdFXvYrDO88RZbvu7CNvfc3bpm8uKMcxABADs=', - 9: 'R0lGODlhLQBkALMAACgmOCc1i0dZm6irtBE1d2uHvAxKpTdvw+Pq7/nu3/bBo8NuUfCQcv7+/gAAAP///yH5BAEAAA8ALAAAAAAtAGQAAAT/8MlJq7046827/2AojmRpnmiqrmzrvnAsz3Rt33iu7/zk/I6co0AEBmtDotIocwSUUIHASK1amRiHAEqUbrngsDIQOF6c0a94zSWXM86nlA2eg93mbEBNr6vde3lnT1CEfQVST4BvG0lQAHx0i2RTjQNgAIZ0AwKLlZYIUQEMkWADl52AnxoOA6EIoaMKW7CvrgWwSqlkBYJZt7mytAiXiESGiby+WVyZDAmlWwILiF6Uy8yPownQaYgLXruMHVrGBc7cfHsCDOCd4thn0kQAAAsL3UqQAQuUk/EWyhGqp6BgPnYCuPWbtIpcgYELCEg8yEAiAVIMAQZMdG5BAwIG/wh041cxpLhAIQR2/BhypAKWBk429KDlib0GBg6IhFYQ54GYnjTKGxIAgM+dARQk8AlUldAzD5wAUGCRm1WqEmU+1QMggUGrVwumyjRuhFQFDJ6B5YYWY1EyW/VsW0t3bNG4g4AoZftVwYJMAAwExhvQzI+0VttJzGTAwAADhDk4kHiv3+IAORFAbjGZgJsBIAGAPKCZQGRWmWENOKCTAOvSpldMPuAKAWuLrHGCPp3F9anVOkPmpn2A9xmQBE79bH2gAWvHsVNMDpl8ucTmP5Nvlo78enbXziVCN05husXG4rFb3M2duvjrzt07Lo6ic+v32N2Dp2/Cgc7n1jn33f9oBDRAXlQIjCaga7a11thtAxzoAGwghbSgRRhGeMKE98F3G4YYkvdDgxiSONqA0ZlVT4PUGUBiPTDGeNoPMDYYnIutxagjYTTGaGNjmhnAQEEF6QgAEOQ4oJSONpLW2F586diAgZJBmUCM2D1ngJVsxTgllazQhaWAt9GVAAMwfgkmHHQpACNprJUJVlv1qLlmFmsVWc9wt0HZVmN23nlGWAwI9lFzgaoJaKIaKUlkoV+Cd4UDDUDKKCttpcUApXZOmqiaP8CRaVqcTmlEp0B8amA8SmpKKqip3rbqD6o6gU2rrpY6K6WynlpgoLZmMeqmsNL6k1GnDsBoqGe4WqjCrqcWSylowAYbkJG6mjoppY5VW5YPMe5WrafJ/frlD99GVWFI4qp6bqogUftuug7o1667u7KUIKz0dnjvp9Hqa+6q/WZoGr6+iueiuej64p/B2e6a6pQYksawteX5ezCqVOAE4mvzCuJfh45F/Cl66dEWcgX+6UcAAiYn2tiDcRplalQBoVgyvl/mFGfN52YhGoZHxpzozxAGfYaRERodqM/PAaDszWcMAOMpQWxrhY5NI3lGLTDP+JuGSTJLAhYYRAAAOw==' -} \ No newline at end of file diff --git a/package.json b/package.json index 37c005c..576ca91 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "dependencies": { "compression": "^1.7.4", "express": "^4.17.1", + "mime-types": "^2.1.27", "pug": "^3.0.0", "sqlite3": "^5.0.0" } diff --git a/db.js b/utils/db.js similarity index 91% rename from db.js rename to utils/db.js index 6e3f3b6..0912101 100644 --- a/db.js +++ b/utils/db.js @@ -1,6 +1,9 @@ +'use strict' + +const path = require('path') const sqlite3 = require('sqlite3') -const db = new sqlite3.Database('count.db') +const db = new sqlite3.Database(path.resolve(__dirname, '../count.db')) db.run(`CREATE TABLE IF NOT EXISTS tb_count ( id INTEGER PRIMARY KEY AUTOINCREMENT diff --git a/utils/themify.js b/utils/themify.js new file mode 100644 index 0000000..c440cd8 --- /dev/null +++ b/utils/themify.js @@ -0,0 +1,34 @@ +'use strict' + +const fs = require('fs') +const path = require('path') +const mimeType = require('mime-types') + +const themePath = path.resolve(__dirname, '../assets/theme') + +const themeList = {} + +fs.readdirSync(themePath).forEach(theme => { + if(!(theme in themeList)) themeList[theme] = {} + const imgList = fs.readdirSync(path.resolve(themePath, theme)) + imgList.forEach(img => { + const name = path.parse(img).name + themeList[theme][name] = convertToDatauri(path.resolve(themePath, theme, img)) + }) +}) + +function convertToDatauri(path){ + const mime = mimeType.lookup(path) + const base64 = fs.readFileSync(path).toString('base64') + + return `data:${mime};base64,${base64}` +} + +function wrap(num, theme='konachan'){ + if(!(theme in themeList)) theme = 'konachan' + return themeList[theme][num] +} + +module.exports = { + wrap +} \ No newline at end of file diff --git a/views/index.pug b/views/index.pug index c3a6718..e6c62cf 100644 --- a/views/index.pug +++ b/views/index.pug @@ -24,6 +24,15 @@ html | DO NOT | enter personal information + details + summary(style='display: inline-block;') + h3(style='display: inline-block; cursor: pointer;') More theme + p(style='margin: 0;') Just use the query parameters theme, like this: https://count.getloli.com/get/@:name?theme=konachan + h5 konachan + img(src='https://count.getloli.com/get/@demo?theme=konachan', alt='Konachan') + h5 rule34 + img(src='https://count.getloli.com/get/@demo?theme=rule34', alt='Rule34') + h3 Credits ul li @@ -31,6 +40,9 @@ html li a(href='javascript:alert("!!! NSFW LINK !!!\\nPlease enter the url manually")') konachan.com | NSFW + li + a(href='javascript:alert("!!! NSFW LINK !!!\\nPlease enter the url manually")') rule34.xxx + | NSFW li a(href='https://icons8.com/icons/set/star', target='_blank', rel='nofollow') Icons8 @@ -38,6 +50,10 @@ html .tool code https://count.getloli.com/get/@ input#name(type='text', placeholder=':name', style='display: inline-block; width: 80px; height: 1.4em; line-height: 1.4em; margin: 0 4px; vertical-align: middle;') + code ?theme= + select#theme(style='display: inline-block; height: 1.6em; line-height: 1.6em; font-size: 14px; margin: 0 4px; padding: 0 4px; vertical-align: middle;') + option(value='konachan') konachan + option(value='rule34') rule34 button#get(style='margin: 10px 0') Get img#result(style='display: block; width: 315px; height: 100px') @@ -46,14 +62,16 @@ html img = document.getElementById('result') btn.addEventListener('click', function() { - var name = document.getElementById('name') + var name = document.getElementById('name'), + themeEl = document.getElementById('theme') var text = name.value ? name.value.trim() : '' + var theme = themeEl.value || 'konachan' if(!text) { alert('Please input counter name.') return } - img.src = 'https://count.getloli.com/get/@' + text + img.src = 'https://count.getloli.com/get/@' + text + '?theme=' + theme }) p.copy