From 48f590df0c3ed6c38de5081fe296d18b5d37cb64 Mon Sep 17 00:00:00 2001 From: peakedshout <93729380+peakedshout@users.noreply.github.com> Date: Mon, 9 Jun 2025 10:12:11 +0800 Subject: [PATCH] New: Added support for rumanhua source (#9128) * New: Added support for rumanhua source * New: Added support for rumanhua source * New: Added support for rumanhua source * New: Added support for rumanhua source --- src/zh/rumanhua/build.gradle | 8 + .../rumanhua/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 6914 bytes .../rumanhua/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3408 bytes .../rumanhua/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 11352 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 24193 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 41458 bytes .../extension/zh/rumanhua/PageDecrypt.kt | 111 ++++++ .../extension/zh/rumanhua/Rumanhua.kt | 323 ++++++++++++++++++ 8 files changed, 442 insertions(+) create mode 100644 src/zh/rumanhua/build.gradle create mode 100644 src/zh/rumanhua/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/zh/rumanhua/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/zh/rumanhua/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/zh/rumanhua/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/zh/rumanhua/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/zh/rumanhua/src/eu/kanade/tachiyomi/extension/zh/rumanhua/PageDecrypt.kt create mode 100644 src/zh/rumanhua/src/eu/kanade/tachiyomi/extension/zh/rumanhua/Rumanhua.kt diff --git a/src/zh/rumanhua/build.gradle b/src/zh/rumanhua/build.gradle new file mode 100644 index 000000000..06aab7590 --- /dev/null +++ b/src/zh/rumanhua/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'Rumanhua' + extClass = '.Rumanhua' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/zh/rumanhua/res/mipmap-hdpi/ic_launcher.png b/src/zh/rumanhua/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e48d1a42cf13fadb1147e5cf3d09f27d6719cc14 GIT binary patch literal 6914 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 IM6N<$f^w%?5&!@I literal 0 HcmV?d00001 diff --git a/src/zh/rumanhua/res/mipmap-mdpi/ic_launcher.png b/src/zh/rumanhua/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc85beac30349204dde1456355b352bf4ee6828 GIT binary patch literal 3408 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�#o#6afK&+hFA+>$Cio(>_o0^*tiKwlV zES10Y`Cno9u|G#=qe_k{0+H8E$$~Ttm+IJXpoBun$BZR6VcG9}8I!M>C(CjaFjgJ! zPyG5H(02YMbTk&UaH(ZLMoFx`>&|5IPL_pN);83VM#KEO5SlPuhxh8)cODx=w0#Md zTz?B95ycz1e10$@3((wdhqe*nmd$qAMTRm>lCU*W6{7Yoi9{ybW7UC zSa##OSoyedf_;AD#YU`#5oqDG`;~dJcuK9xP;GuqHhx+ulNq&Ln>U2JyVaJLYE?!q zRq(076g`aP6K!idAq$-jtTt$K>!jUGz0JaNJ&k+NI68!rBVZiHlG{+f?%Vk)dcXZg zSk&CFEs!;3YQW9@VMqF^c&;DiG;$tI5|$KHa~q=zyfi$ea-r zt{)HLMWZGLN19P%k3bGwTETE*26nBk(ub4)sZ>TnHCIrpGDf4MRd;EHZgH2*s*+YW zmBIY1c^zYQ%>V|#9$N}qNJlTt13?yvwZoY(d$1-uGU5V72J4c1_3`4yrx1GjiW1v{W(#bI#DUZXHhaSa}Tkk+3lRd~tq7)VY>a`Id(y73-No<19m zE#sZ#&*os~;)sr;mk#g7Wi&KkywME>x-3~DR-C#sr;}~hJdj!!rg|irrOlbq=+Y{w zjNa~OQx3^WC9Vs~Ot#q}l3ga*Sqrbd_L~YC>5X;q0*a*nA&18SlFVwGG1*pl-TSKR zs$5vl4?l-R%>zir!l=`3&4r3;@za35au~1l6wx1U#mpH~(KdTA7TmNJ*UXuZuu8?V z#d1PlzK06aE7ck*g*?ujI*AMCPGjIg78SM2bInKC^HKC0&^lovnkKYieA^U^9p9>J zmOOH&f?cR2BLLw>iW9px5jL{YWT`Ag;g-7w)sNFIX6UJ$gKDDDg%U<3m7#a**5okfD23%~5)9rNSv!sFIb3oUQ;kpVbsCFkHq?#pEqlq?!4>%jy2 z@K68kiPei3Jj4-N(Tv%V9Drp@R7sk8wm?%t^Hai8|mdpyIwro&J7KHt{ z(Cn0HX5br0hgek`QG901o(L#MC?hSRry7M{#Q*yG*RW*i65M?Atvcw_SwweOm1^frMVlsgQi9UzkG^sWoq$&k_QHx`o zzln>$XVY9J$?O%}1eF#Q*mX|9}att$6ou zy$4YRj49Qi4&{O#`{gh7Am4TOT^i8p1&7rt3WbtBH^U#Njoka9H!%DwD{u zD<@Da>^#{YN!Mt_Baw0<5GxdB3}jrLh|L5Lwvv;t&4GnjCVB?z_JL$F)Del$mY3)% ztsRZE@rH?3{eikoqw$K_Y{lY&Kn77dWQh-VSU|xvZq|crIctg&U%UyJv=`$5UY}3l zvQt&9KUd3~|MkZ|LSNr`eCQ(|*85c0MwVu%fBLWMHN$=Pz4z($?8?m@I&=WLckhMo z*RiN`Ar>rJXe&@I^J$j<66+$k&NhY!tj2ZvA2Hn_&V{+OKtN{|NRWW+k`#Vs-#UeCuQasKg>vSot`E_jBxDnmkw&Qm{^m~{vVS+;`m|CS5HgCq>J^S#` zLl0uY#EICuXE$Db`Bk({YD2kJ#lVGry#IqAL_86_Dt1%qGf5b z-80pKS?2}G0ZSF!h~u)=lww#$^facym%YwyX);-?kvS<-ubj^ha+f$MJ(SariHOr0_nFTeB>1}^pEp0)R*A*P5$M$2*; zf)?CX_wvp6q<+!a3Y;whXY^UhSned;cF=(lF?)Ue8#CREv8*EuxPKNp?g+==z;tPi z=uY*z(RlYLw7BDJe42>FIJq#1v3Na~+slVt7)!nEeoPvtt-7EIdO;E%a#f_0cBUjA zwP7qraq3W3WACnA*!bLY=v=r6(>kW>K0d0BT6OFA)6ah%)2B`ibca{BD&>dqy&rrJ z2lpMs^cfwPH-9cxtXzfM-~gU{;z`V(I}a;wxB;GCXh^0~@_6*H?lPniMunxqUBP8s zwo~RpheTMMq;)nicGB}C59|W1Z?{d%dDvXR=K3s=SDngeq>4nfXX@I~$c3p@8C_i_ z7p8!F9Pw1acQB9>qMO09y?Trg7{n~vB`<6&kSk20;Q?)Piq&Ys7+blJYdAlQ$2a^^ zM_vy+uolfNEeMA~+5-LSkA8$le*3r4F@3rLmt^e}V69dvc>+Z151GwFnc{x=D;MF%9(wrQn9w?&T%}}iQLEQ*vZn`|H*ZFBbF*ISt|}kHArDKtmh0}TA+;}|YBXL+)rU=wL=L$nq!iaAzRO82T2z!-Ed*TgjOtA(5V|maY|#PdtfVRo`m==OV9{|Zg~dMdnuzO1+=hANJn9i$ydI4 zclw}hVoYR)L$Z&7m9?Y;a&Q!;xBVV90isnI0Hn>Y?hoXaPq^#aB?6-X;#>`Bn`}G8 zGT`7N%O*Q+&k;sWQIO0Ch~#pTe0~T=4jsnPo};Lgt7sn6gvseCxTfP8G&VJw?>S+v zl+^;LR;nl#i#qggN;PVxn$tA=tYY~%cg5D_vYeb#Tu-it!zflfF5M8|ODQ42S2T_W zNZSN8Q?ZsJv2A^A)JqhAPzg?xb;s$d9*HW9AJRr~K}K0b*_~aJRWQmB>^$s9voi5{qf~qxWfd znlQOciJMZ8DgZJILh`wr=gGeFoEEbnmboA<+2P!i5dsbx_>Los=A9Kd4)_)Q;aV#m zLqa>YoWri^U{fP_%h?`Nu$HfwXwzUy@j!iD(?&0hS0$~WWj(sN0_~YfLuV9}HAoaZ-L?3ag$aQ($-fpR%XWmtD&JCli95_X@oj@?~=C^K3qIV{eTiFqJS zN%BDCx<$%J)~U^AeobE8$>BMXufBGY>VZ@gHd-rFb#n!^ ztS8+a1+}6F5;*YJAII2JcDT+c!Ud-SzcVW3A1K1tl$<)7N zRm@?`i%aKAgy>qZ0QX`;1p8iWW{vr<9W$7=u)-=b&Vu6XMkr>9a#F^48cQL#hEpY? zL@t$KEQ>kU-dnJht2izNAbYFYXHUwGg|uht=+pzLZNH&g+-22tcfAVujqkYp^)p<^oyw9G^-za$a4qmOb1pu#5s4g|M!erIV48 zB3>IC!yS<#@(G~OH(Gn98a-bVPGeIn+tiduRCB3|7mIrv8e%Dih0dIq2WQ|+e%mOo z>#iJ)bFh*Y52+89%L;S~3Zm#C4K9%bR_#T6*fm+s$qKWvOb-4C;30~U*y_;t+{CQ_ zXLjWyz%^f=jERhe>-(e}LtK=#N(TN2a&~3L7PT=dV$bHJIb6>#&+P-n!f<|EDz&f( z456*9&~^4~xqCErEL5_+X7!rzrcDQ9O~@sxs3wnOk3KVL@}xOpF&uzt-rWp^lyC5B zi%F-bge{g}f&jZ@UY=`NLX)v$3W0;zRz4$@7Z&Q z(vv3L*#zX1ZEc12vuDer(kEK49$)Q++czOP*o;JFFp=E!>ZZS1zI^%bkV6R|d$A~j z-AFo|(o6xPj(S+vViBe>!A>MWgJ87YZhd6r%obPMiMJEsin9Q7!9d&{j3!CkQP7oe zq-nu+;7lp+5WV1aS)w>*5M1(5NL6Q@KHG4i5lA4|EeSku(nj25O61k`UIOG#qA;q^T+2)YMeS&dHXs5w&2}`~Q8o0l>d`ti!tS`Wfq^=uth163MTA^{Y32 z`1e2jy?7!XHNM%XD03B@ZI=lWIbh2~HcRTE`5?kf@G1>BdodyC+*Ae~GMO~ojJ!Er zAj&_o=d=tp6~oy&9)S>qm*jT|4xHz9tQ5gBJIKz3^jC!P;Dvv@`3%D(Ruxu0dM7Do zvD0UTm0WQETav)YN(^&>q2YXG{ZH0^?BD;vl&)%m$_qosg`NqdLW{1ZP4`U2U z>w4Bz)?>ZtxOD}`Te3iUWkzO0xV5#rq0ooKP#meRedTL6J@UTyeyx4Vl!;QFz~GrD zJiyV&5W874XTW(|M`mal^U?&lp}78=UAC)zyE7>kb2)p=k1Rg3PSZqi>_P%{%p~Gc zM8-yy1jb2X8Vl#Fm~hSw^oeA&<>tU7H9|sfbeR_g-}>&qeEhHe;)}1U{)iZwPypIW8SJTMbnDP7JKmB2sdrrigg2!TLlzB4B7xzC z)ZhR8*B`$7?z{fHy?t79BpjyUq*%gjr0rNC18Ql~F58I3HO(xBEI^I}rvY{#jssvV z)^rgHUzuG9r#2*~CqyRmG3+)tHnM?}{xMLQXt^O*J=ns?YdM0!xW*RK6M7WEGWWFs znB8N9L8P0L^ZKkz)k?)bb^7$+6OTXfW#GYxC`$_4%}6s~C$A!jDVy0g zz>F=IwGHelN949d?nn`W>Sb%6-T9$sF@oU`s5TEnm?v0-C6?d8R;nUXbpR<9ix?an zES@}d{DsFKfAV|(`K$kVD?;(%#z?U+G=w5Bs{|~q!e6geVT`R1EvEnmL;_H;VED&El077B+_7Icygax%*jU0LFU z$B#7JCKp-bES@oOinMsMG$lo6PKfW!G`qQx&93N z0JC>-ndHLmMH*ef{ z_|@&NUPKwgYDZ7BpqNgk%h@?|%2>Urj?9(2FEVa#@$lhgJa`#&M$*_5$+jStx|C|j zBj3=_&=4<`N-@;{FdD6dfoQmbiU+k&GYUj15wD6WfQV_(r2k_YO`6}Us8%CT+iNMU zQ6K8htL6vwUGuy8zxs);7119+ebIcaimGa+X-?FCQh$@*)#c2G<_1+hpU%~P(_b;y zqvtditspi8K~se7m|@OAX5=9%<&_22ou&D*H+%{SD0oA>8&(eFX;C4)rcW5$if zgAVo1bTcisQNXW6qka^XIuNZ^DwS$OLqpl~yizzEE=3~w(!c=9ot>SPJ?qw0@ue>* zvwg+Z=Qk4|lI?ZtywLjfo#Ax4Kaw5J#u_gnI+Q>RemshzABn+_lw%0R0I!U)(n~Lf z7|JL^{fn~tzxo;A|ES;9FX}TsPk*A%H9yGD>OB2r^Br?NI$8f-*8iA$nrrB@=?8NU z{=5B2uH*cTuVL;V)7LPUG4G=uBu4ium!0QQ=hEK;&!fL<-d*20M(5GH^SSywb#47n z>b~j`$|zIA2Xjw;S2G4?fb{izH5)O+{Bjxf26(j+ylNuhmBZn1d1xq70g`24Y;_&> z)Yco|{Fa30Z3vJ$d@V$K*CRZD_Hc1RF;Y2yJ~GgV2!^2AScVHgC?1b{C>FgUpti~O ziuwm2u6~HCHCBNAvFQ99R|Zy}TSQU)gJMyC(R{9sc-&k^+hTQU9L0E%PN8%4r_N3E z&D8n&Y`(JjjsC{pQGZ3zd|zFc?w~(2_o09F1?i#GJDF3=_0$VL8;iF(=D3qoP zQNZXB1lc_D1^g0vp6Gd^m+%W{^xCN~5OA~tWT?gBen}M)dI@dIbR9Iq_t5NKMt6LM=G#wjKjy9bdb+sTKe-qIya$M6?g8&_ zi1;dcl0(E-x+XDrl+le4tWBT`v;ZGHOMPB@j}i|tqBmS(P?oV9ikig*h?VE-#L+kz zA&Sr3lq2WiJ#tY?3?sQ1Z(HR!N{f6__RO{5%=vRX*)d_4lhA!5Q_fDJ#su4Kg65QN zH<0kCcK}FZ*Uf2ooMp7}?zgQHs|&~=UxE6*cgN$=4a4B}u!jRFoLvBb5k}x=M1X*+ zfD(XlL@CPXiDjzEmqdma#MX2JIxxQ)g#2eEG|SM?qB2sD%uDEGqk!DmBR$e02yae9 zvm?Dx^wF>JmFz{A=+I@+B^z~3N`P@$2bX#GbW2Fi4lO@65sm$I+8+*Z=(^PJcIn}v z*M|A3!clx&0sRJY>?{8omQDeSusRLrcD;>Kwa061RQ;iH>%kSrLHX7i{REgNn|XR( z{EsZ1MBB_$MhMnx&@(m5POhB~&^{G?g-mh zjwk-m=h6+z{Z<{3d`!W-#y>5fivJ(AfGSp@7Er}1)B>tlg<3!rt56H5VijruRjfiS cpo&%a1vCr+*%&vuuK)l507*qoM6N<$f~~C7L;wH) literal 0 HcmV?d00001 diff --git a/src/zh/rumanhua/res/mipmap-xxxhdpi/ic_launcher.png b/src/zh/rumanhua/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..45d518be6a8102be135f4656e3d5c4390f475eff GIT binary patch literal 41458 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�nE(eD0;F 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 literal 0 HcmV?d00001 diff --git a/src/zh/rumanhua/src/eu/kanade/tachiyomi/extension/zh/rumanhua/PageDecrypt.kt b/src/zh/rumanhua/src/eu/kanade/tachiyomi/extension/zh/rumanhua/PageDecrypt.kt new file mode 100644 index 000000000..cabfb829b --- /dev/null +++ b/src/zh/rumanhua/src/eu/kanade/tachiyomi/extension/zh/rumanhua/PageDecrypt.kt @@ -0,0 +1,111 @@ +package eu.kanade.tachiyomi.extension.zh.rumanhua + +import android.util.Base64 +import org.jsoup.nodes.Document + +// all2.js?v=2.3 +class PageDecrypt { + private val SCRIPT_PATTERN = "eval(function(p,a,c,k,e,d)" + private val CONTENT_MARKER = "var __c0rst96=\"" + + fun toDecrypt(document: Document): String { + document.head().select("script").forEach { script -> + val scriptStr = script.data().trim() + if (scriptStr.startsWith(SCRIPT_PATTERN)) { + val obf = obfuscate(extractPackerParams(scriptStr)).substringAfter(CONTENT_MARKER) + .trimEnd('"') + + val selectedIndex = + document.selectFirst("div.readerContainer")?.attr("data-id")?.toIntOrNull() + ?: throw IllegalArgumentException("Invalid container index") + + return decryptToString(obf, selectedIndex) + } + } + throw IllegalArgumentException("No valid script found for decryption") + } + + private fun decryptToString(encodedContent: String, selectedIndex: Int): String { + val boundedIndex = selectedIndex.coerceIn(0, 9) + val xorKeyEncoded = getEncodedKeyForIndex(boundedIndex) + val xorKey = base64Decode(xorKeyEncoded) + val encryptedContent = base64Decode(encodedContent) + val keyLength = xorKey.length + val xoredString = StringBuilder(encryptedContent.length) + + for (i in encryptedContent.indices) { + val k = i % keyLength + val xoredChar = encryptedContent[i].code xor xorKey[k].code + xoredString.append(xoredChar.toChar()) + } + + return base64Decode(xoredString.toString()) + } + + private fun getEncodedKeyForIndex(index: Int): String { + return when (index) { + 0 -> "c21raHkyNTg=" + 1 -> "c21rZDk1ZnY=" + 2 -> "bWQ0OTY5NTI=" + 3 -> "Y2Rjc2R3cQ==" + 4 -> "dmJmc2EyNTY=" + 5 -> "Y2F3ZjE1MWM=" + 6 -> "Y2Q1NmN2ZGE=" + 7 -> "OGtpaG50OQ==" + 8 -> "ZHNvMTV0bG8=" + 9 -> "NWtvNnBsaHk=" + else -> "" + } + } + + private fun base64Decode(input: String): String { + if (input.isEmpty()) return input + return String(Base64.decode(input, Base64.DEFAULT)) + } + + private fun obfuscate(pl: PackerPayload): String { + fun eFunction(c: Int): String { + return if (c < pl.a) { + if (c > 35) { + (c + 29).toChar().toString() + } else { + c.toString(36) + } + } else { + eFunction(c / pl.a) + if (c % pl.a > 35) { + (c % pl.a + 29).toChar().toString() + } else { + (c % pl.a).toString(36) + } + } + } + + val d = mutableMapOf() + var tempC = pl.c + while (tempC-- > 0) { + d[eFunction(tempC)] = pl.k.getOrElse(tempC) { eFunction(tempC) } + } + + var result = pl.p + tempC = pl.c + while (tempC-- > 0) { + val key = eFunction(tempC) + val replacement = d[key] ?: "" + result = result.replace(Regex("\\b${Regex.escape(key)}\\b"), replacement) + } + + return result + } + + private class PackerPayload(val p: String, val a: Int, val c: Int, val k: List) + + private fun extractPackerParams(source: String): PackerPayload { + val args = source.substringAfter("}(").substringBefore(".split('|')").split(",") + return PackerPayload( + args[0].trim('\''), + args[1].toInt(), + args[2].toInt(), + args[3].trim('\'').split("|"), + ) + } +} diff --git a/src/zh/rumanhua/src/eu/kanade/tachiyomi/extension/zh/rumanhua/Rumanhua.kt b/src/zh/rumanhua/src/eu/kanade/tachiyomi/extension/zh/rumanhua/Rumanhua.kt new file mode 100644 index 000000000..e85fc7ad0 --- /dev/null +++ b/src/zh/rumanhua/src/eu/kanade/tachiyomi/extension/zh/rumanhua/Rumanhua.kt @@ -0,0 +1,323 @@ +package eu.kanade.tachiyomi.extension.zh.rumanhua + +import android.content.SharedPreferences +import androidx.preference.EditTextPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.source.ConfigurableSource +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 keiyoushi.utils.getPreferences +import keiyoushi.utils.jsonInstance +import keiyoushi.utils.parseAs +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.decodeFromJsonElement +import okhttp3.FormBody +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import okio.IOException + +class Rumanhua : HttpSource(), ConfigurableSource { + override val lang: String = "zh" + override val name: String = "如漫画" + override val supportsLatest = true + + private val preferences: SharedPreferences = getPreferences() + + override val baseUrl: String = getTargetUrl() + + override val client: OkHttpClient = network.cloudflareClient + + private fun getTargetUrl(): String { + val defaultUrl = "http://www.rumanhua1.com" + val url = preferences.getString(APP_CUSTOMIZATION_URL, defaultUrl)!! + if (url.isNotBlank()) { + return url + } + return defaultUrl + } + + // Chapters + + override fun chapterListParse(response: Response): List { + val document = response.asJsoup() + + val lis = mutableListOf() + document.select("div.forminfo > div.chapterList > div.chapterlistload > ul > a") + .forEach { element -> + lis.add( + SChapter.create().apply { + name = element.text() + setUrlWithoutDomain(element.absUrl("href")) + }, + ) + } + + // get more chapter ... + val bid = response.request.url.pathSegments[0] + val body = FormBody.Builder().add("id", bid).build() + val moreRequest = POST("$baseUrl/morechapter", headers, body) + val moreResponse = client.newCall(moreRequest).execute() + if (!moreResponse.isSuccessful) { + throw IOException("Request failed: ${moreRequest.url}") + } + + val moreChapter = moreResponse.parseAs() + if (moreChapter.code == "200") { + jsonInstance.decodeFromJsonElement>(moreChapter.data).forEach { + lis.add( + SChapter.create().apply { + name = it.chaptername + url = "/$bid/${it.chapterid}.html" + }, + ) + } + } + + return lis + } + + @Serializable + private class MoreChapter( + val code: String, + val msg: String, + val data: JsonElement, + ) + + @Serializable + private class MoreChapterInfo( + val chapterid: String, + val chaptername: String, + ) + + override fun imageUrlParse(response: Response): String = throw UnsupportedOperationException() + + // Latest + + override fun latestUpdatesParse(response: Response): MangasPage = popularMangaParse(response) + + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/rank/5", headers) + + // Details + + override fun mangaDetailsParse(response: Response): SManga { + val document = response.asJsoup() + + val info = document.selectFirst("div.forminfo > div.comicInfo")!! + + return SManga.create().apply { + info.select("div.detinfo > p").forEach { element -> + when (element.attr("class")) { + "gray" -> { + element.select("span").forEach { span -> + val spanText = span.text() + val dgenre = + removePrefixAndCheck(spanText, "标 签:")?.replace(" ", ", ") + if (dgenre != null) { + genre = dgenre + } else { + status = when (removePrefixAndCheck(spanText, "状 态:")) { + "连载中" -> SManga.ONGOING + "已完结" -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + } + } + } + + "content" -> { + description = element.text() + } + + else -> { + element.select("span").forEach { span -> + val dauthor = removePrefixAndCheck(span.text(), "作 者:") + if (dauthor != null) { + author = dauthor + } + } + } + } + } + title = info.selectFirst("div.detinfo > h1")!!.text() + thumbnail_url = document.selectFirst("div.mhcover > div.himg > img")?.absUrl("data-src") + } + } + + private fun removePrefixAndCheck(input: String, prefix: String): String? { + if (input.isEmpty() || prefix.isEmpty()) { + return null + } + if (input.startsWith(prefix)) { + return input.substring(prefix.length).trim() + } + return null + } + + // Pages + + private val pageDecrypt = PageDecrypt() + + override fun pageListParse(response: Response): List { + val document = response.asJsoup() + + val lis = mutableListOf() + pageDecrypt.toDecrypt(document).parseAs>().forEachIndexed { index, img -> + lis.add(Page(index, imageUrl = img)) + } + + return lis + } + + // Popular + + override fun popularMangaParse(response: Response): MangasPage { + val document = response.asJsoup() + + val lis = mutableListOf() + document.select("div.float-r.rs-p > div.wholike > div.likedata").forEach { element -> + lis.add( + SManga.create().apply { + title = element.selectFirst("div.likeinfo > a")!!.text() + setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href")) + thumbnail_url = element.selectFirst("img")?.absUrl("data-src") + }, + ) + } + + return MangasPage(lis, false) + } + + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/rank/1", headers) + + // Search + + override fun searchMangaParse(response: Response): MangasPage { + if (response.request.url.encodedPath != "/s") { + return popularMangaParse(response) + } + + val document = response.asJsoup() + + val lis = mutableListOf() + document.select("div.item-data.s-data > div.col-auto").forEach { element -> + lis.add( + SManga.create().apply { + title = element.selectFirst("a > p.e-title")!!.text() + setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href")) + thumbnail_url = + element.selectFirst("a > div.edit-top > img")?.absUrl("data-src") + }, + ) + } + + return MangasPage(lis, false) + } + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val urlBuilder = baseUrl.toHttpUrl().newBuilder() + + if (query != "" && !query.contains("-")) { + val body = FormBody.Builder().add("k", query).build() + return POST( + urlBuilder.encodedPath("/s").build().toString(), + headers, + body, + ) + } else { + // RankGroup or CategoryGroup take one and reset the other + var url: String? = null + for (filter in filters.filterIsInstance()) { + if (url != null) { + filter.reset() + } else { + val path = filter.toUriPart() + if (path != "") { + url = path + } + } + } + if (url != null) { + return GET(urlBuilder.encodedPath(url).build().toString(), headers) + } + throw IOException("Invalid filter types") + } + } + + // Filter + + override fun getFilterList() = FilterList( + RankGroup(), + CategoryGroup(), + ) + + private class RankGroup : UriPartFilter( + "排行榜", + arrayOf( + Pair("None", ""), + Pair("精品榜", "/rank/1"), + Pair("人气榜", "/rank/2"), + Pair("推荐榜", "/rank/3"), + Pair("黑马榜", "/rank/4"), + Pair("最近更新", "/rank/5"), + Pair("新漫画", "/rank/6"), + ), + ) + + private class CategoryGroup : UriPartFilter( + "按类型", + arrayOf( + Pair("None", ""), + Pair("冒险", "/sort/1"), + Pair("热血", "/sort/2"), + Pair("都市", "/sort/3"), + Pair("玄幻", "/sort/4"), + Pair("悬疑", "/sort/5"), + Pair("耽美", "/sort/6"), + Pair("恋爱", "/sort/7"), + Pair("生活", "/sort/8"), + Pair("搞笑", "/sort/9"), + Pair("穿越", "/sort/10"), + Pair("修真", "/sort/11"), + Pair("后宫", "/sort/12"), + Pair("女主", "/sort/13"), + Pair("古风", "/sort/14"), + Pair("连载", "/sort/15"), + Pair("完结", "/sort/16"), + ), + ) + + private open class UriPartFilter( + displayName: String, + val vals: Array>, + defaultValue: Int = 0, + ) : Filter.Select(displayName, vals.map { it.first }.toTypedArray(), defaultValue) { + open fun toUriPart() = vals[state].second + open fun reset() { + state = 0 + } + } + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + EditTextPreference(screen.context).apply { + key = APP_CUSTOMIZATION_URL + title = "自定义url" + summary = "修改后需要重启应用生效" + setOnPreferenceChangeListener { _, newValue -> + preferences.edit().putString(APP_CUSTOMIZATION_URL, newValue as String).commit() + } + }.let(screen::addPreference) + } +} + +const val APP_CUSTOMIZATION_URL = "APP_CUSTOMIZATION_URL"