From cfaca77d600fccb5061f8adeeaf615240d31d90e Mon Sep 17 00:00:00 2001 From: vaginadesolator <76472350+vaginadesolator@users.noreply.github.com> Date: Mon, 28 Dec 2020 11:43:34 +0800 Subject: [PATCH] Initial commit of new Doujins extension (#5261) --- src/en/doujins/AndroidManifest.xml | 2 + src/en/doujins/build.gradle | 13 + .../doujins/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3216 bytes .../doujins/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1797 bytes .../doujins/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4054 bytes .../doujins/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7102 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9176 bytes src/en/doujins/res/web_hi_res_512.png | Bin 0 -> 29482 bytes .../tachiyomi/extension/en/doujins/Doujins.kt | 253 ++++++++++++++++++ 9 files changed, 268 insertions(+) create mode 100644 src/en/doujins/AndroidManifest.xml create mode 100644 src/en/doujins/build.gradle create mode 100644 src/en/doujins/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/doujins/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/doujins/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/doujins/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/doujins/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/doujins/res/web_hi_res_512.png create mode 100644 src/en/doujins/src/eu/kanade/tachiyomi/extension/en/doujins/Doujins.kt diff --git a/src/en/doujins/AndroidManifest.xml b/src/en/doujins/AndroidManifest.xml new file mode 100644 index 000000000..30deb7f79 --- /dev/null +++ b/src/en/doujins/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/src/en/doujins/build.gradle b/src/en/doujins/build.gradle new file mode 100644 index 000000000..0647229d2 --- /dev/null +++ b/src/en/doujins/build.gradle @@ -0,0 +1,13 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' + +ext { + extName = 'Doujins' + pkgNameSuffix = 'en.doujins' + extClass = '.Doujins' + extVersionCode = 1 + libVersion = '1.2' + containsNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/en/doujins/res/mipmap-hdpi/ic_launcher.png b/src/en/doujins/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..21396b51ed47ce00b658c26f7744e60ad149fa84 GIT binary patch literal 3216 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 literal 0 HcmV?d00001 diff --git a/src/en/doujins/res/mipmap-xhdpi/ic_launcher.png b/src/en/doujins/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7efb531c3834bb12becccfdc3b8e96298dea4094 GIT binary patch literal 4054 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 literal 0 HcmV?d00001 diff --git a/src/en/doujins/res/mipmap-xxhdpi/ic_launcher.png b/src/en/doujins/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f440235e5af3a5497f96242e6250a3fe09b2f846 GIT binary patch literal 7102 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 WMA#x|*%tUN2h!JuYn8#Q!~YNQOJC~% literal 0 HcmV?d00001 diff --git a/src/en/doujins/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/doujins/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e33bbc81af2fa78a18c8afd63e61b2e45ede9299 GIT binary patch literal 9176 zcmb7K`9G9h+`eb*y9n8rEEOXAK0;YTvMWnu-%8odj4hSKW0#naB!tIan6V`xWJ|s1;>`lhUl$J2t zsG!M$JZ+TG+*Vo1SqH=H`yOl4e(Q+u9;f;bkN2kLwxJr=jyM`7ZW;Uk*Tth`e*1rS zezme4b|I5L2h}}2dKHlyrZ*6^)` z-kgiK4)^t|-B0m13Y0kytb<)9h_}(9fXv*>a-Fx>GDi3C(HhcWd&CI%Q7V5-k zNZz}B8!ja!wFMp*P9_~t_QCzW-}ep_f)RqBI7JsFUe03~W>V`nTW-D+1f3vF(+Nkj zhvM^~ZG8x7Zf?HN60$_Tt&)$T+pzU1N-EFI(xoRmeeCVsmb=-^ewV;Y+BQUQZQZ>% zRH&V-udja|3TA4aF3!!u(IN8(8-LEUgj|osFvufl&Ik+lDtdh(d7)4gX^0R*$P$rU zpv~Pl;DO_0xwyF2ifshY-$V6PrVU+mblI0-KxC>TJEp4NIQOOTg}kT$TRqXm+Z zlH?%VEuo2arcp(`bjBKJCiT@c48PIW*N0Vr-FAY?FSFTzZf{XopfD;NTgL~MbOY!s zMUHx3U|kRjW{XFFaQ*NXIx&1OyijgnJa=5ePskB{rBHa)nHIq*5@!KXqoZK>UUsUV zP$U#xv6S>a6%6xH4YUvXBd^Vx=An^U2s?adh}ML;UgAV|2%jfv!^L%(nG+7+Gm8gB zVv^`FOGVgibF{FLEQDg*xd<7#5=_|+w0K+@Ad+|>bsFFDfjD|B%}^J;Ip_zbJ3^;J zxF1fl<7mt1Itv`0d-7XDKQ3%gb-(1cZdHCilc? z6tHHQNPsT~&&7_VDZ&;-i5)n^D9<%2gn~lc*|TTWw6vaj*71TLsVFPEJ$Rs;ot?cv zK0dl6EzNYp%Bnef|3{cQjASgLjGs?HePI$&t{Gt$IkRl6EX>P$xoq^YNFHU%uW>g# z{EXq%tI>t<+KakxsK~iIy1r^961p$tvNu+$Y^4jeA~@>m>MkiOXZ24pie&T+&j-Kk z|J^x1?*_nq2QCj2!^E~*T5SPzU9X<}Ip39ZNlL1hi4=^(Jb(T~TU%RANvT_#h8V#9 zgSF?j0&LNqc6Hl_U~_>>NaH^J=-02&IJO+jmISS=th^cby&D{y#(<-Kgd8uEMg|1PdU|@&`iFJiI^N#i9`RN>Bg?iev_ZEH~5l^-zq1h$O@*B10IpnfrZjzWhd+ysGLX6UqC(32|_6$j#4BPGS?j zS~Btoj0?>1Bzb@f=E(&1&lAF^baPf#mJZ&K0|}40e*KiKwe?Fg$*zwduUeN|-`rhl zLXh{Ud#u2Al}U6IdOsKVZf>GN>i4Kqg%QtW zWo6&kR@9c2(JAw>(CL&PDv@>;cy1jZz`Kj7&CqB1bP1XT=9TZ>?dAQ>lO>gxm!C`r z9h*@1lP8SA%MFfIY((04SjyG2&&?!-i3j<3Zx}Jz&C25y-V1I3A;13p=C4v&S@}Yl zR1f+1_?)zskdQc+(N|MfH%b@X=Df)h&4>JYI6RKwM$5%opBJa%6rojMCtb{8GBq{z z`mr}m@Vawn9+0r5WQJQl&aOnSNH@zQ5x_c5TZb3_cUn+~q>?{q2<7zmG+e%)9zyS-#hD^bahBJU zhuvl-KY8+`=D&46I5-I3S-$Qc6l4h6Kjcga_vsI9t-qt`j2z5xYW$g0y^dpZnT{0> zi0P6>%VC4- zGN9C`2~?D^^sMj)gJ+k=R-13VozDcjPmJX8cJ%i>H$T6%%6X~ngWcU-0n!d+S2jA& zlV8XzM6O|Ary+W=<43RMj|A3+3w|$?01<0<=etm=W92nC6p`TO@8h$TH!kXHi*fvy>&X_ zWmD3COB^*dw;biyEo3@`AFd*@(jK{2w{L`acC6f2fC0s^(hj(zsONTvcGTX$+rRz4 z?~QpYy_sCA#bW3D#K_O zImiZ&kBz-FFYB6}b*_GE5p<(w%HO-e5zry~pr<0a+7Nk4GX|CEh$&Ancwu7H-CmMq z29;kxU^h26HVU~&KmffN@s7rq?JuQ?!@s?Mzr;QbGtUT-bQxF6(3@d^QzzG<~9{+!P-O7 zsBuia&d%k~OZ?xhZrrG?sbT-{;RDDcA%u*m@a0>1tV!`1XnF!!v#)k!->~J-LPGpD z%2tJsnN|+=N$H#uJ=0mDVuOxnox@m40Eriqoy{GHGrfRd!H%x{N;lG_Chp|OJ$gv_ znPP#@E29VvY3)X*9n1_Ic(At|IB4w?<+j#JE4*$UV;$b}HAtC<-%_ksze>`y~YBSI8T+2cOpjU?@AE z<_!PIjg^(lAl8K}Mi8q}NqIi8xA64%VcLEFAE&lpgx1p{_RI0S#3xncohp{zRN*Ds zww;`F^+m}#_dsGF4s0qJ^yrl4S4}S5;*C7M#u`m_aQk=Y+>5E{>EyPyHh}Q!72{y| zzYQ!eWQAYQHod=#F)=a-*t+~K*x)S%qY8hNsAIV+)z!KwYD{G!gM0X1}@Mecq9c^46BgH%{kQd4_mTQTleL1P@boA=8MWlj;S7+-A& z^Ko^BSZJvL{}h{7^bDy6a??<(^~6})w&*sNQavaLDQbGv9nva7N9UsbG1cI~(TCUa zfJikpG~kUoB)L>M^pC(^(W;BD5-*0_dp?vYO}TKo=#^d3$`y6wS3jrKQuv~x#kXtuOtP&CB| zSOSjc{pn;>6u)-J74et*@+{2E_#?`W;Rpd$yXZFN+Yo0l9J~&tM8SybYzLi!taNY3 zeXIARz8w+S1k`Z5Wb*5cgm$IK#mDr7zGS)N**V3n&LGRO(YtV<2HcTIByQ$Im|PA> z@Ai(4pJTZP2K^1F|88eUOsXBN_r~V1L5gPx`8NCpL4h~8g$R5kpw@rByY<1~j+qr=n7saR zr!yZc>Epj=i{~l63DfXdTtvz8OTd=r-va}|2 zCB}jQtU*WfOlt+{Q zCQysG=ek9-5y%)`>S52NdrYn)%aosv5ShoTZVJHqMm-d@zwx_WiM)1oWmRq`o3kBy zHmlQ0Tree$WDLzGY+7CVRN(k z@FYqInw2&mViHV7O5hUW>%s!8EIsGkUY;`po z(BAUu>JIf#LqmhJwyJDR8btn%ITg|7O)TT!7};92eRsUIzi1+fXAn=MdDHXtdCSA4&&Nlz__+z~IFnMVnqxP3!YL$q zfu}728#Jdg0?*9Mq}C?xf}%>|IZ10L13eollerW6%knj%|MO=OtJX1t?hu8Ig{5fF zwc9EoUw{3Z1sqR5)@!JOFH+xA8>_ud3MFmJV zL!g{XxvJ<+u}Fm_&~}g;PY-{P>9h4r-zkh1O9adW>XZ@qtJklKua<0m*v+N2@ZQa_ zrpRH!ZSViaIJUyqoti++l>B{TsF_FCd-gpj&R-p%Kz=v}VQGpb*nK6uVatPecC;_+ z9T8Sk`n;7EX4|5!Fx5ou2Ud4U=^f<|jghEVhZX`l92_K<%4quO)wMQmZ1EJiI|U*i zqCWh179Stq>@`%F=867wuVs$=+%Q@AeL5q9uBom8yGEK`A*})W=~LzrxPVr;JbvcG zFs)kTqSu=yHf;2t^CMM5V+&kr%@62&8yqnUptxByT z)}4x6ex9u_Nyk>@VjFU?ONA(R0Seht4DDFO>T_6ERW)dM8+8;*+$M*95Jb%Wt1V8f zmUVc1Yg{><1(^pGCh}i8LU|L6J-xi#-Q7!uU}uVQ%;_?AL^*XxB-=-Uv7h_5PkmW5{#DXwpP)snyTP3YAA2M`hgAI18cg z2?esU&f|#h@pH{wXzZ$^y}g<=p{t;%{?hFZDKP$(CJNjAfc~_>hr-yyNFxGJoW&aI zSsz;BT#i=?FhCK|vo8~p`#d`9>+5qN#CL*}gapGocls0;Vx11poG~j4xkozq&jAYe z<%>CX9N`Eeaie!ACZ!6JxEwfAAw~NB!&nrs&tfE>*|r>!+3}P`GF@%StFg6ZN$jCv z-SJ~-Si&LY@G#Q2C{>9_{%=T~oqAXx70^PtngXl>QkvTOXq4|3qcvq4V_9x}I6yM8 zIsWO4)=y&Xksuix8-E)f#*b1sVasdZ8A$Hy1;p_ol|*LB)Zox<%}s3vt3C2vQS@+W z)2q}5dzsvv996jv3=MA`6@$<$X-)y7b~L5qTVhB z7+L2JDfZ=u;$iFG6G36Aqxx;6>EqOT=!-WMy+IRNTGB*066w6Zw>P_g42dN=4?4wx zc81RK;}@xjxA9V=7*Mf02UYx<6OMe1M>kIi!HCt8@AMD;IqST6WwA-e%8n8ttNRjG z)8UGH`t+$fTf03mY-8qeL_~!1<^{=3SdC+qx9}NUe-MSCT8`(^kQ{WPry4z$TrDh8 z-%J1k@q~R!`o%OnI?8E>=lriRNbfT&Uw4kEZU(Fq4??ho4}Md&|0;hg%#8anmaMVd zM%JrJwH`+V(xmlygm9ClaM+L~^UCV#eGZ_4=DUmTwKm>6uADz%l?Pag)Su;L!phM> zosLzL&RuC7@V-Euj&F}SY7M;l1?YHCE4l^-23jkC#CsvHpdbZ^fD?ZN4C0OTg%*B^ zKZCNw6=^5JAytJZ3uQOK;LndO?#BB1V8ZC;dHS(^MVOd48e7%MmqH5?P)%E#pp%o+ zi4~Op{5hffF(<$j8W;=qE-tBH5$x^kcqTIYf4f=anJs4RVE#ch6&1nw`T0TpR&u@c z<5nBZ=yaYJ1EqmZ$Y8r-n((VH!#RF7&zb$4GHDwm%rLt{frZ7kzJ%6|jGJm#X73rz z#z;Rnj2cmnkgCRtqf%R?>_Ih9QYk=bU7SyQC$}}ZcgAHJn6D`(MJa7t?YI3QCRjqC zBmLq8O%eaMPYq%_6*{|-Z63zSXZ$(be0=&S6Fv>gG8a26kh==bF7Gw`2`;8a2J87K zT*kF)&V=5-FT>0k6>e5H0`f9O0+FLBO=Un!sIP28ZXi-PRpov|I+ zVDdXtalM`L@o?nP<`!Sfb(=SMrVa`&{##~NNr{v&tV0T^?C&JV-weK3a zfjiwCL2hA1-K57`z{w2>dO0_)NGJX}OSQ{16+xVmuAaxJl5P?k^yjHvAo4ap2KTYj z|HRpe#mt&2@yw_4!@L<14A|4fp08{=503^21}^KvP}v03G44V=mZVv!6Pf83@hO>@ z5SmUKhhbo+g3~`{f66{$M8>}uu!`CFNMU9nIdq~{{&9Kfzo}DMUGZ~*^ONSMr&rH5 zwZ)>+{oi#6=fDTV^_6ZI!QZj`>$vr~B-N0MBqtP2ALWAL^y}|$c{{YZztW~1B1i^# z`tvVSoXeY#m7Ul!#V&e^UH@e9T2Bta+kqGOoJF9t_K#TZxHvVdKJN+d4*pAn zpKA}DFUb59YtgY8xg}94E7PgbGUGSL9&sRq{e3D9BQ!L?MF57fIC`kyh>D818;?jn zLvoRIiPx8FPk4~$09;GUBFpgI!&j>r=go_<4ZVYgZk`-l)I#KUg2L76LZO6eIfut~ zw#Up>a>v}M0$PvmwFm%nxv{?kHYXOh2!uVZ1trsgB*KY5E)m&hqDA?Z;XU&&%UWHi zyUiVm#)bwOYJ_F==H};}7FGnOt{(9Kp0?-ps`Q!?aWbc}yV|z0XJ|tE$!pnZg7;<7 z6WilN*j7|9jr%^Z#Ak#WzF8g0$p*Yg)yIP_JZ{;Un7-VB3g|OwtywYtGxuK5!o%Zs z0BD(=n)Dq68f>PxWu^yN!}0V#6ImlS<`wYAkp z(Ohd=?7PdMpf81>QfOw}RnpS~0G$YU;oHbaEMsD4#n%j93(p6i@Yyrer|6@}%tO)C z07mifZ`UNp{>b4b7UIuI%k{eVK07&~0Rp`E=EYu+Z~X%UKR$cL`mS@-rqDVPu6=8L zr6WM(fBRzuk*mg!kB?{kpLV$7%_A8KPD$2q;*CqoiloL1Q8c$(>)82iY9l) z-c2RH<%SFS3w_1~Vfsj`^}b40-kFb@L|}rmqft&Y5sd5%%TCfnuXtk)ym3@lQlWJe zxzZd&qd`id4f+sKx)>@Ey4{1M-M+gPjriUxO*DfZztu4&KUVsCT7+YG zDZY<0R$N_9hPst~hdEkOcK~g{Bq9!r5qtXL)S~bUsilVpIK^eK?in4VzsJV9$?WG= zR5dv8UU7x7pvwZ$?GUN%Q-{EC8QWi`0!7bZF#8;bt`hVTygO!Sbtte}F{X{QaL^9#Rlf2ZvT6@R?7X zuC@KY51FV6?}&e$4<;o_;lfH!CR3CHK~xzh?*jO!PIkENy0u1B{aEl!wdq!v93jqTUt?gFIZ3a*d>24uzU~x(daQ5wcJo!@@@x zR3iiG+lHnlyT2|%{VfF=1smAV_3yi^kWA7F+2t=x9=Bu0&P$i3vK$zk|Nbv?nnL)?P_yui?4BTggTfP+K;_DzC*Aq$e9dXdc73)@v$~|@ zCneuZvJX`*>;O}n>7%q}ck(&HL+w2G9 zY#a8~IEGrA+a4OFTF}G=tj9nE2&$xR8d-z6QbAg9h#%&fAtmh2YuD1ZeH=us%EXTw z{Kywv_wVVMKQk;F5fmr4_q(DuFzI$Ej-99MdE62lGc*u_W?$%8DU?RPae0srvS)(U zaK{~!R5*Q^pJILcZLBlQm9VfL3+k}m8tR#W8Jf{73{F_FiVa~TZ6GePKD>@sAxh!N zmdPF3#V(8+Y##(5+i-<{?#%pR916oS&&bTM1*#w!H{Md*gX`+(XJkeQy#{M%PaD9$ zvi@M+phVvJBDq-_LJIpW>PiMlO4VsiO=n};XUy}!HRcznt59UL1=ggJ(A;< z;2~=>oitO&v1lNyX|O5wh-wzL!FJ?sG25r`EQvmX6q%n2KD6{a2^l~;W1C^orLKMHi~pxL eUJ{AKpkS=%*=LhD8}P;sWPHWk;GLdp-2VWH&f9wc literal 0 HcmV?d00001 diff --git a/src/en/doujins/res/web_hi_res_512.png b/src/en/doujins/res/web_hi_res_512.png new file mode 100644 index 0000000000000000000000000000000000000000..221eaf8783f9b08ccf9a3dc09d12735d411f10ed GIT binary patch literal 29482 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 literal 0 HcmV?d00001 diff --git a/src/en/doujins/src/eu/kanade/tachiyomi/extension/en/doujins/Doujins.kt b/src/en/doujins/src/eu/kanade/tachiyomi/extension/en/doujins/Doujins.kt new file mode 100644 index 000000000..b3e1a444e --- /dev/null +++ b/src/en/doujins/src/eu/kanade/tachiyomi/extension/en/doujins/Doujins.kt @@ -0,0 +1,253 @@ +package eu.kanade.tachiyomi.extension.en.doujins + +import android.app.Application +import android.content.SharedPreferences +import com.github.salomonbrys.kotson.fromJson +import com.github.salomonbrys.kotson.get +import com.google.gson.Gson +import com.google.gson.JsonObject +import eu.kanade.tachiyomi.annotations.Nsfw +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.MangasPage +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.source.online.HttpSource +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import java.text.ParseException +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.Date +import java.util.Locale + +@Nsfw +class Doujins : HttpSource() { + + override val baseUrl: String = "https://doujins.com" + + override val lang: String = "en" + + override val name: String = "Doujins" + + override val supportsLatest: Boolean = true + + private val gson = Gson() + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + override fun chapterListParse(response: Response): List { + return listOf( + SChapter.create().apply { + name = "Chapter" + setUrlWithoutDomain(response.request().url().toString()) + + val date = response.asJsoup().select(".folder-message").last().text().substringBefore(" • ") + for (dateFormat in MANGA_DETAILS_DATE_FORMAT) { + if (date_upload == 0L) + date_upload = dateFormat.parseOrNull(date)?.time ?: 0L + else + break + } + } + ) + } + + override fun imageUrlParse(response: Response): String = throw UnsupportedOperationException("Not used") + + override fun latestUpdatesParse(response: Response): MangasPage { + return MangasPage( + gson.fromJson(response.body()!!.string())["folders"].asJsonArray.map { + SManga.create().apply { + setUrlWithoutDomain(it["link"].asString) + title = it["name"].asString + artist = it["artistList"].asString + author = artist + genre = it["tags"].asJsonArray.joinToString(", ") { it["tag"].asString } + thumbnail_url = it["thumbnail2"].asString + } + }, + true + ) + } + + private fun getLatestPageUrl(page: Int): String { + val endDate = Calendar.getInstance().apply { + add(Calendar.DATE, 1) + set(Calendar.HOUR_OF_DAY, 0) + set(Calendar.MINUTE, 0) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + add(Calendar.DATE, -1 * PAGE_DAYS * (page - 1)) + } + + val endDateSec = endDate.timeInMillis / 1000 + val startDateSec = endDate.apply { + add(Calendar.DATE, -1 * PAGE_DAYS) + }.timeInMillis / 1000 + + return "$baseUrl/folders?start=$startDateSec&end=$endDateSec" + } + + override fun latestUpdatesRequest(page: Int) = GET(getLatestPageUrl(page)) + + override fun mangaDetailsParse(response: Response): SManga { + val document = response.asJsoup() + return SManga.create().apply { + title = document.select(".folder-title a").last().text() + artist = document.select(".gallery-artist a").joinToString(", ") { it.text() } + author = artist + } + } + + override fun pageListParse(response: Response): List { + val document = response.asJsoup() + val pageUrl = response.request().url().toString() + return document.select(".doujin").mapIndexed { i, page -> + Page(i, "$pageUrl${page.attr("data-link")}", page.attr("data-file").replace("amp;", "")) + } + } + + override fun popularMangaParse(response: Response) = parseGalleryPage(response.asJsoup()) + + override fun popularMangaRequest(page: Int) = GET("$baseUrl/top/month") + + override fun searchMangaParse(response: Response) = parseGalleryPage(response.asJsoup()) + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val filterList = if (filters.isEmpty()) getFilterList() else filters + val seriesFilter = filterList.findInstance()!! + val sortFilter = filterList.findInstance()!! + val popularityPeriodFilter = filterList.findInstance()!! + + return when { + query != "" -> { + GET("$baseUrl/searches?words=$query&page=$page&sort=${sortFilter.toUriPart()}") + } + seriesFilter.toUriPart() != "" -> { + GET("$baseUrl${seriesFilter.toUriPart()}?sort=${sortFilter.toUriPart()}") + } + else -> { + GET("$baseUrl${popularityPeriodFilter.toUriPart()}") + } + } + } + + private fun parseGalleryPage(document: Document): MangasPage { + + val pagination = document.select(".pagination").first() + return MangasPage( + document.select("a.gallery-visited-from-favorites").map { + SManga.create().apply { + setUrlWithoutDomain(it.attr("href")) + title = it.select("div.title .text").text() + artist = it.parent().nextElementSibling().select(".single-line strong")?.last()?.text()?.substringAfter("Artist: ") + author = artist + thumbnail_url = it.select("img").attr("srcset") + } + }, + if (pagination != null) { + !pagination.select("li.page-item:last-child").hasClass("disabled") + } else { + false + } + ) + } + + override fun getFilterList(): FilterList = FilterList( + Filter.Header("Text search ignores series and period filters"), + Filter.Separator(), + + Filter.Header("Series filter overrides period filter"), + SeriesFilter(), + Filter.Separator(), + + Filter.Header("Period filter only applies at initial page"), + PopularityPeriodFilter(), + Filter.Separator(), + + Filter.Header("Sort only works with text search and series filter"), + SortFilter() + ) + + private class SeriesFilter : UriPartFilter( + "Series", + arrayOf( + Pair("None", ""), + Pair("Doujins - Original Series", "/doujins-original-series-19934"), + Pair("Hentai Magazine Chapters", "/hentai-magazine-chapters-2766"), + Pair("Hentai Manga", "/hentai-manga-19"), + Pair("Fate Grand Order", "/fate-grand-order-doujins-28615"), + Pair("CG Sets - Original Series", "/cg-sets-original-series-14865"), + Pair("Touhou", "/touhou-doujins-7748"), + Pair("Naruto", "/naruto-doujins-5761"), + Pair("Kantai Collection", "/kantai-collection-doujins-22720"), + Pair("Hentai Game CG-Sets", "/hentai-game-cg-sets-2422"), + Pair("One Piece", "/one-piece-doujins-6080"), + Pair("Granblue Fantasy", "/granblue-fantasy-doujins-28177"), + Pair("Azur Lane", "/azur-lane-doujins-34298"), + Pair("Sword Art Online", "/sword-art-online-doujins-7246"), + Pair("Idolmaster", "/idolmaster-4281"), + Pair("My Hero Academia", "/my-hero-academia-doujins-28744"), + Pair("Love Live", "/love-live-doujins-21865"), + Pair("Pokemon", "/pokemon-doujins-6393"), + Pair("Dragon Ball", "/dragon-ball-doujins-1238"), + Pair("CGs - Mixed Series", "/cgs-mixed-series-35311"), + Pair("Doujins - Mixed Series", "/doujins-mixed-series-20091"), + Pair("Hentai Magazine Chapters", "/hentai-magazine-chapters-2766"), + Pair("Hentai Magazine Chapters - Super-Shorts", "/hentai-magazine-chapters-super-shorts-19933"), + Pair("Hentai Manga", "/hentai-manga-19") + ) + ) + + private class SortFilter : UriPartFilter( + "Sort", + arrayOf( + Pair("Newest First", ""), + Pair("Oldest First", "created_at"), + Pair("Alphabetical", "name"), + Pair("Rating", "-cached_score"), + Pair("Popularity", "-cached_views") + ) + ) + + private class PopularityPeriodFilter : UriPartFilter( + "Period", + arrayOf( + Pair("This Month", "/top"), + Pair("This Year", "/top/year"), + Pair("All Time", "/top/all"), + ) + ) + + private open class UriPartFilter(displayName: String, val vals: Array>) : + Filter.Select(displayName, vals.map { it.first }.toTypedArray()) { + fun toUriPart() = vals[state].second + } + + private fun SimpleDateFormat.parseOrNull(string: String): Date? { + return try { + parse(string) + } catch (e: ParseException) { + null + } + } + + private inline fun Iterable<*>.findInstance() = find { it is T } as? T + + companion object { + private const val PAGE_DAYS = 3 + private val ORDINAL_SUFFIXES = listOf("th", "st", "nd", "rd") + private val MANGA_DETAILS_DATE_FORMAT = ORDINAL_SUFFIXES.map { + SimpleDateFormat("MMMM dd'$it', yyyy", Locale.US) + } + } +}