From b3828cc2d48d59efcc0d143a44548bbfb1e10ecb Mon Sep 17 00:00:00 2001 From: Julien Papasian Date: Fri, 26 Mar 2021 11:51:28 +0100 Subject: [PATCH] ScanManga: New source (#6290) * Prepare files * ScanManga source added --- src/fr/scanmanga/.gitignore | 1 + src/fr/scanmanga/AndroidManifest.xml | 2 + src/fr/scanmanga/build.gradle | 13 ++ .../scanmanga/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 14589 bytes .../scanmanga/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 12277 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 15491 bytes .../extension/fr/scanmanga/ScanManga.kt | 191 ++++++++++++++++++ 7 files changed, 207 insertions(+) create mode 100644 src/fr/scanmanga/.gitignore create mode 100644 src/fr/scanmanga/AndroidManifest.xml create mode 100644 src/fr/scanmanga/build.gradle create mode 100644 src/fr/scanmanga/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/fr/scanmanga/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/fr/scanmanga/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/fr/scanmanga/src/eu/kanade/tachiyomi/extension/fr/scanmanga/ScanManga.kt diff --git a/src/fr/scanmanga/.gitignore b/src/fr/scanmanga/.gitignore new file mode 100644 index 000000000..2c34b6bff --- /dev/null +++ b/src/fr/scanmanga/.gitignore @@ -0,0 +1 @@ +local.properties diff --git a/src/fr/scanmanga/AndroidManifest.xml b/src/fr/scanmanga/AndroidManifest.xml new file mode 100644 index 000000000..30deb7f79 --- /dev/null +++ b/src/fr/scanmanga/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/src/fr/scanmanga/build.gradle b/src/fr/scanmanga/build.gradle new file mode 100644 index 000000000..c180e08fb --- /dev/null +++ b/src/fr/scanmanga/build.gradle @@ -0,0 +1,13 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' + +ext { + extName = 'Scan-Manga' + pkgNameSuffix = 'fr.scanmanga' + extClass = '.ScanManga' + extVersionCode = 1 + libVersion = '1.2' + containsNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/fr/scanmanga/res/mipmap-hdpi/ic_launcher.png b/src/fr/scanmanga/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6a951ca3727391d9062dbd8d70a326a2de1926 GIT binary patch literal 14589 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 literal 0 HcmV?d00001 diff --git a/src/fr/scanmanga/res/mipmap-mdpi/ic_launcher.png b/src/fr/scanmanga/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4daa8fb1d4610a4c90d1795b4038bea9e58cf5ac GIT binary patch literal 12277 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 XgDi_tb_VJi1E8s@t5Tz68~%R)V%+Jt literal 0 HcmV?d00001 diff --git a/src/fr/scanmanga/res/mipmap-xhdpi/ic_launcher.png b/src/fr/scanmanga/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9eea6e9db00ec8e53bffd2c4e764b9c780ab95 GIT binary patch literal 15491 zcmeHtWmsHWwrv&e9tfJk-Mw&kcY+n}5GdR=xVwblAwVF(T|#ho3lJbk@ZkPP>&c z@AkX*_4mE^uZyp!z1JFZ%(=#zbFJEYSEQ=43_1!C3IG5=my?xLfBH1}^+rN?`oEsx z!3O{kYvcYis)qGH77jwE7)DerWP21Of z20b7Xm$v=DeL+XWkK8}x*xSg>seayd)!UKR{#);qOK}aFWh#nv#{=%_Dn@OC`pRN? z>orPCP7)R;9{>Fo1B~e`bkQ=UHGBNU!`7A9lrs!0Xi_e=*c6;F~-RAr-g)XLDS=%mnWb?44No+RN zhTjz`@!rGHT4s5r=~=yWPn2h@Xq+4@uV`MRnWH0DX<(Non38z^qSsh zv^|uRC)jFucQTPdUnnKbCP+a~Xr*eimJ zZKEwWP))MM&Le3&?7x`ZaBdoHCx)UO(VX5maE--Hh|7-nzLHX&b2MviOJY55^g2qH zix)%lL|a!w5K3;|HgC_EK8V3oe&h1w$;h%)zz|*a$1d(t0U&4U}pTv z{k}nSzZnL}0nZMPRr#|p5ykC7*Ac6u2mZ|ttao_wePA|*rw3C-duK(+FaXJ zzZo)8&N9X+?5oW0SVNnJAf=_4vV&^d=B)CGisd~N4F`{l=^b8oUWlh1Us(gr?DyWC zD`MP%yU1+sQM0M=x743mr0qt}Fo=7+phb3ENcl&F;{+zr0Pcr&=~_&vgxzG&$=)Tw zNP5-7O!VOoW+gDQp3Li4xjcCGcK)$%D2v&uVoz_Pprl-14k@crmZ&;AwMWY7F^|cV z?FTlo2!dKHhv1LWvJil^ba=uES0Oy1s`S|)C4FL{C46t81sj`{h4_IZKSIaN-L;_$ zxnR78RGa0dQ51AblS!doRON5TV#P`jA5x4$bsCZF3UjK8v@PN*Rif{Q;pNviW$fCL z1S%V+`z;;ADozh0##?y?U?jL<2u}`sS%lEw@TT^1{%5hyFJ77M<4u+8yeunq6AO`; z0A0MHIt3IJC`&n*Jnxi>3tK<_(R(42;8SM3Bk!TY7aHG>uiz+<;N}-}BK_Ygn!Rvf zrch?Wr<^!q`N_zE9 zh?OY|g88`60Afbdaw7}UGzC@OXZ%agCH z_oZi?8CCqe$$wmY?C+iG@(;L#E;CbCqS5hd@AexBr{oqniF%Uz=@SjQfGS zEhmzjWRa0ozO&N)tR6<)DN)UvT(J36feMUvCagrMuuj#Sq@evdI#-YcVUH*d>qnSX z8~>TWxdh81#JUBXek+**^hNnGLQ2t~yL~(_$H84mSK5Ud{h6~`vO)T-uNno`T_>u7 z!c7>4qA$h}25%iwoFR79^?0{!V_5nAM%xtb8a1Im-&Ik&59M$qkS zhu`_DV8X5>K%EKo(d%p-NaY5RqcXrs!W$_hVfu|~oROl_7YOa$x!6`s`9CZfEG!zQ zTWwnipd`rOSWDCia;o2x=1X{NihC1j<7gGd?^1>>Zbbn$u^llmw4LQ(vaHQ&XFnTg zmvJHxaraNQv3?}Q*6GG5waYX<|C%080hU!ijA#&STsEXkwq9miululEfn981!2>hp z5WZRf788;ke_bBB7W8hSAsUe}u@_lIpNcK;2)}3|#zibfZlu5RPO9+u?As@6>Vcqf zxBt z9yivf=aLq~@4XVjlqgz<$v!bIXsGgw3nAk=IndH#Gm6Z(Uh5EFhSZ5q(Zvo6(XZglZK8(oV;PIIpA+QjOu#{GvFcfonSr!t! zfy3YSPP7*B6+Csu2Rny~k~2;W3zcsEo<6;ZqE>eUM!ruhy-HqnGiuDpN~+~5$hLc+ z!SZ#ufwxBauR}W+YzQ>H7nG!5R$J2sSQBJevwKfl%Aq_DJN-%!6@lHf8%i#2TC(SU z4k;0*WBFk<9gHr-Be+@F{PSfTta+CTLTsG`0S>nMh4_8{ZDJy!$3r(7Ya_0kAa1TP zDu;Ph;h-%cf&H_7LYpK+)ojQsI5_uRHr^(tmGk@d^bq4%8S&wFuc%3U6EEys>sRl=eTMX% z%16oxrK0j?D-hu@Dc5RU6dX&T8`GCAQM0!&{%Ysa`@VC_7Ezek9}YBt9K5fk*`4q% zjQUR5QJs}JuuRcdAxyJ_^b`IE{0M@wL9-8WmcW&{=vGmYanx}vN$YVC3{Fm(Y-iwQ zua2y>gcB$wqG3Y%d5qBvjL9S{e7`*r`AZ?nb=;^Bv0O^6`dx@|~Da)%Rbkrqk8 zP-3bvs$=#E`vKIR)m~~1V0fvrBpadqmypoAdt8%+b|wm> z7w@Hzum~lzLA!f$H{P^unH}c$eS48(nLvY}Tbcm=JlQ4(a++&#wer(jI6i|Zybqz= zoR_KTxIeYjrA)WZDhco2ZF|KG1A9Z}<)$ySHmdc--jIhKBnMq>7U3bdU@@NQb+m=F ze=bLa%omU6M`CPr`IDIXGy*hX=0cE^X5PPkF)^_CN%?6 z{e1nM*ccp)wJ+2)1=?;CTDXGXsPvBKD^nFXAA(C`Qg7Pu3n8WbWc)5^h9%Z`(r46) zbI+J*CDGl!JJB>orQ)0msVhDE>8b4iCaiT}0ufSrndld(-pDb59!nx0kN{dwqm@Q96?c@SH}bRXwSR0$}~Voo7Y z73vdC{7SBwwAV7_R%P5qN@Mx!^;RrX`d6yK#*b^jFk&2|KsK9fV^BDMLOwU3l9K9- z_A~BgYn7MO&2)3PzH)H@{4i{iYL{tnN-{|Kj0Ta3D8)7Y7{gn&P`MKR2p?xQQC?V$ ze(miGWQsv8(Sn&^bSW9sQ%w@d%(KIhabdrO#hjW-81Xkg7Xp<_Aloz27|L|-3zi(? za#8hhVklbW44CdGa?2pBVrkqPO4kS}qL)y6azuo)u4Oq|;8p#qSKY$EE~t z7Z}9~J)#bB)Yc!v+qwtSS+wTDV+|5Am6CC}Ro4hSUtP$^vX*lL z@_gRdMW{}G!|)1z)p=o~`>irP+y6(HDzctDL1}cKBPL>rQY<5qoQxs-_Nr))CYt>H%MIm;B5D&<0@`nCaSR4gjt#5=B z9dSZfyXUO^(GM+;10P+ZDxSg-&H4Kep1R zrpcbqxwMpRai~$|%yX`z-Rw3U@9@=U%rI98vgYn{;+6H997(5os|CIlI_?wWloO(+ zwqj<>Z=@vEH9w9uD%M@z+$=AeiV=G}j}U(&AUO^D5Em(BP7u1Th~TwYMs8Sfl23?+ zep>n(XXE{MPZ>@XATp#*pD%d_=76Rv+u9X&50%zThmNB2U#S>(D5QoK3s;!Q^eDd- zW33I1@2Xg#1AAbfkK*@5Y?4cp5Vnj{VL8Y3uzxCit(x%~ATlV|YqAkGcl zTJmP%!nzp62}09-amHeS8~X{Hu;JzVl(fK9%4g{wAnd&DtVvY92dXH%5P!j42E~GoLZrUWoV1$Qk@`GGfWZ}1F zx)?m)rpfw9YE5X4D}D4i`ChX@NX(H06G*{q&5yxe`biLwqhj%jJuAUQjDO3miw!V} z1}*tXQQW_CuJ5>cQyKwy^aSr1S~@xW#M2j^dzYOPZItS%eP#`A!_NvSrWFlQTwXp+ zB|{whsKifXKgS=Rv#w#Oe~duntIjCDv78o{QFkUDBB|Ftm#LF$_~J**@p({TxqB=r zvntvxOakIh9+Y|->-1&mDccZuiEMMm=LoYBl9O5|+ToK4+hB=Ti-oJlRR*;-K)cVj zRCJ0ViuR~mn8tROB{&0px12M_qIAU5&>W}EW z6u+WNzHBOg*MiY!QYOJ@Wqgb-DI6R=S_{noDrZ|ar8rr%2LjaTgT!VQr-tqlT@#Zg z)VW=NYT9mWDAlK(K~1nPSWUzn2&GJxiWi0>-m;p6v`7Y^Ch6Q7icV`Q;s;_ni(3yO zSTyJB90F72w$El*jBZJg6d7paHWx$dyW@R7nj)}q5Mtx8i7`;&@)zh?A1<4qi?&BGM6Clm3ux<%Jlxu~ zFim@=W&2oFvBsSb_kfi?#qyOzuZMZQ;j5{m>fzRII^{i^AR!0V5**7qhKQ{PY|i4h zuIrZ0jP6GmcOHA?aMKd+ybxHFhRJGtxESRiEA3rfx%EePo4R<WRlBd@MCa)TBYy;QJp; zCk|EU8s~*K`y8)DPlaTR!>#+>RKX;w)5vTCQk9otdN~;ZQrSMD!{I~ZsCyG}xj$*A zEI-VrxJszQuJq3n8nw|aff08aDg|8#6VL=|;ttiW&!j4eopSf=s0yhm4#>5(BZe6| zsp*PxUEq?H_PW#GARrGUi+}!pX(Ym=oF^HR8efV5;|4uqu%Juo;3Ym(dhPJB>^TV> zeXN|%)q%Z+FZ#<9QN`YN@$Oh?6+sFPq-!nhkAvD}?d%|AGkcN0x5QKMR3lE!J^LIMG z`~Zt~Nj7pz{(9-bwSPAw0He$r#%U}2X#er$W%la*W81w*(~9rKeTPTe_5N+Zk@xAs z<>SivR?X34+ulf?`eR=6%3aDuz=pRO58tcu z>T18Vu*52spf1R0is&dhd^Oqxi_=jrs->1617%MTLsVleTzOBbm0`lW2f@tRxRn^& zS2r~+?wdQswtttu-TpXQdMEw!l6sDW)PxgvZMBzsb*Yh#Qxn0;bBHx=(C%*+MH1}R zv*^y}C7kDFmMzJZm&|7aI0L)G%(i+2_Cl*L{*=6EYFIg(KD-^fND^*=@mEQIln9_JJGheCA+m7qDEgb-6cY* zc>LvlZBq6nu&2AUTYRy0nr+Y6h96Pv@hWWnoabWZOmlD67{1@`HzV}0R)i{aHxJi$ zPZOLzrF|w|1&K(&G(N(HP~E4vmmH6B;J#&h`7nzy?AbZ$`{pxkM*^-SLcF?U%QI4* zVf~7GlfD*0Y4;pgxJwe@F~H4`6-KSim*Ya>yyI3v$O8v>l`nbtVKQ#aU+@AoSfVW+ z?E78*bRoUtrJBENc)T*#i#9sG$1aRp4e{p|Jq={{v-k+rXc@DLnQDVbTg(9^d?&QL z7<&m4bak&B(h+dx#&QuuoJ&JB;j`SDt9Lq%GN7}8>}<<@`rNjpQ_`hVAZ+C5{*&sy z5-C|(M-N%vT$L()*Dt;Yi%Zrho-1&(A3ep`mIW%RRSmzBkIwDMZpAy>J>YuYKRSWd zh03pubDk8S*IZT<$|@(B-0{3)l3WkIg>*SX-|s4=D#B`3E*O@zXcUMm{Q_Fq;bU z9rm^O#J6|^j#qHZ>=Pntj&Mv4gl3FXMg{3yVM{&#j5Ihry-h_AKX&4V`NH^UU2y1j zIgc`jH3RK9vZqFomuVe+eOF0gyH$k*V!^NCt1M_a4j=iV=|kgPZ_{RVCnu#ejgSfn zIlh8n1(cnUnBfHP6;qXM3ah!{sO!plh4x;BpUOkGs@O}tE$|3A)yD{GS*-lGaVYPr zu}ZZlzer|X;F3Lv^|2-@kn6z5kf6R33){cydR+5puzcmxt%O1yxI(b>@Ei!!B3cev zTJ5X<3I^Vdb*9dq%w=^B)9%K`;S0drGz3NO#g*&>(*;D&67RUeOtC#h3Y`Xl zunnTlBL|gj@l%K(3BzK?zz_+OTFHeyvZKSj!-G}Mg9m>AuaZmrfYgttr!bh&Hc!uA zbd?mrW=;+)5OXI}3l>iY=cgV3Kv2Zf8DeH<0R@>_SlKuVQ5>~&P=IXAg(!5mmDrS= zB`mCMWW8N1G`y8H&Ajc*_{}Lqgi!=N!A}GZ7ElPt)4|@+73?WQ@tYU?bo{HCl>+n| z0<{yO&{a|eNjSM!fVfz=SlF1QJZ;=LD1=c!f-dHkV0B69KPjHhgea_`P-ieJtA~dN ziw7r*lZzEAJ3l`^D;ozZ2M6;Lg4xx}5eo5Sc66ouMezrRq=l=Qi;XkX#>o-%ixXn% zd?*H)jFD+a(pB{s;s#~}^xw)8GNV!`$ zLMi|1)Y;z6^{+nNTrGYz{f^t-+>-SvsNbIdY9k}3r22Q8Uou+RI5_{d_=Wx}(%kIt zIA=E(``;LIGgb?G3x}sbT%VZP{|OJZvHZsb{nL1U_57DWp4|PN|DVu*)9ZIEzjXym zI+?lsaw;b&MDZ(Lu(^|&jXC)Dp(!^XCm)30l-ZIKV#dtH^K`^-#%;>X&c_DfvM{sY z~HjfLZn9&+e%R*8dLtUzjwkoje@>?|A+J{X2`83)I8O#ZJXV#njfq4Eo>m{44O^ znbe=wI#;NRm)!p_sQ(Qo_(!_RKG{0Cc>Tq{hQ+Ht&i+`C>}`Ha1p@tE1i%opKje3X zxLcV2o`NSG|L8KahB#VTJgv5WmfGLiZT>|X^YfaSvvKk9FhltGxSuM4$CMeu&Iw`W z=i_GM<6!6DV`DS>XLeU7OQ;9L#X`*LDF>eB`Kh#i&ohYbclOc$Gup%2;weWM+1SBs zY!rV?FG!H}*Mj=D;R*g)a+H+7e-%LR*OCO5`;~bbZqCm3HWn`bEX>~$<^O>Di~XNT z`9GQe750accjhTg`tJ8lM`d=Y`$nuwc=PBkt+Mf2a zr|psT@B8DQY4NLa{y)C{Ot=4!9-gTGq8={}%W^ z+4cWSE|h;j^UaIWPf#WXz^4-CCh@MfAG{TkjkTUj6^+#^eJ z5m9>)Ney#4B1eI2xfr5oZJh_iOwm}0C_{+c0NjyVYd#-d`9wt`PN!3rGn&GMLwtgF z`YGs!1JQ_77uEpE=<)%WkXWxi}#ZA0Irq7~BHL28or zAP~k|Q;iE1?R2dVB#)mt|(q@Bne1@whEtRxo8Cjqv5iS*Q6|Az?Vpad_wW06$=;>xEF= z46iBnNcRB35|qT@WCj4!sgbUIN${;(PCP;YK$IiF^A6s0(kziJ&=(c@8D_=VV;KYP zU0B=h^xjdC25XB&3K7Z}+(eU6KzectUIJO{re6Dab=Dz-8!RctwVQcaH!1d+l}5{l zNHi~}Y(N&?q&Jz!B!tyK*Zmj>yml5Mv0)Jjtj8Hd~1GV<%Y>8_ zLUMaMVQ5hlEvdL#F}9|U*2iBRmZqb<2`l&moN87jD5IF``LGODNs2NTozmx&lHEIu z>s*NuR#LWzh|$BrwoGrPMfH~&&*JO-nPWXQT8rr!lr-FBMX|3fHkz6BCb>>25@%5} z)kv6ZU}ZnEUHX1Z^m7qCduowUN3EuHe#E~j&emRAr*RT; zXy=>N5*U*KrfF3)(P@}fn$L2dK7z`#aIk0SY*CwR{&9O(Lff2gTdw@M8L=YNoQ8lf^ zQFQ5S;%d87uw)>w|} z=j4|a9;xA^)Yk3@slY=}ehB`%sDdK5>=DF^eE-!qR7+Hnjn4falM!;fyw0*yo&1NB z%*g7;oNa*3c`r=(*Rxsz$XIqgh-LAtVA?|fW#6Ak18c!dK`k2cMFOIHQl@V%K( zC}0u+$nZt)zDP;LwFHe_Exd8kesC4i?InrXi_3Nv*mRt@o$>!{(-WHA7wUuAm@9ks zqksa)q&LDEr3)u36Muw7Sga(fppolF4omwtxIHZjYnm4NGUoF zmiGy~`9A<>xF4<#j-3b80;r{gc&^b59jI`W)G}%lu&K}p2nC2Js=p(GG!s-EUZdeK zq&Pp=goVU;d2Uudawmv~9cI7k5P>QYZ4G$b`vt0N{v-+IAQBgwC8n>SBhRFuOo#zU zA*?k74_KeVrco-h<@sWgM@)}eDgSEeOq(q{k0`C8PF0s!jo6=JT-tMXForPvdt!o9SFbrksFPOty0)0}SovNV;I zg>QN-PuNaPO)>H@^|?;*$uJ{zbT*?^%+f{#>wUMfhZ#??5Rg)k#yqJ?sswYU*}>57 zYufpkypVqC&i7Hefn;ysxMA=Wrihn)rpvp|7ecN<2wS@VM^RI6wg_LzwY|CFM&|~h zhgZR?2(^m3T9$#ug_$OVHC-M&wB#46Y_4Uun;}`S*^HJoADj^B24MLg+~RM5igt0e z%EUr;W$x8oB89$*2~3B89S=Y-%^VNTi6+HIA+M>Z0_*oET54|@P`I>$N|3ChV6?Ec z?R+YcD0md%9bCJkqC<-ipmm!G7gYfsD(`An@BP|&Z;U{K6cAdCtZNFkL*VdY-pb{- z$5xL={-19%au*cDnZDz}97+_(^GDdjZ)`<E$q1w+D} z%*HHU`5Z_SyLjNokuzcbb(RwP4piN5$Tc8h`ryhOLE-vSsy_yo zC;Y_e(@2P>cVDEj5>f@F17a|c(lFNO0r4Ml{2^R>oekH3r0@@VZ(j=)yqM5JUjyW^ z1MGeL!yS7rRA3=2i&a=>BbPwFyr4ei?54(sM^U>IEShVQPOIWqtF8;0gAA52P8fW9 z5Ynl!7oQZxxS; z5*xwA4Vu)9mwkE;66+ShHJe|TkCE65o;Ab1L<_J=b*wnjeO-5{INw*Hh)^wPy_Nl3 zgqQnzp0Ea=fO=%KBCIXKh9^)Cm~4mBsZP_};&Rh?Z&T{e$&HN+6N-84Fz~UiTw62? zJUF3^YlO1Cz`k?ooxd+6GZ4&# z>p%kauPMMghnRnOjQ`ni6p5PI$20_7PC~$E6g%4++}&^|U8Lfplp@N?!OXa0;?Fl# zVnrznJcuMsGD!nT)y;wVY3He1X>*fH=UMs0l%U1r)moze~@7>I@#oQrIkLDX&_zZubi2{CJ zTUJncOye~xi7;d?S>t`i(vSN{99(kE@=kdL7?pgs&@@DB6p2t22N-=)I6ft{_dh?o zfAa2yYx3@G)KY|U2cqkF9#;Y!Q{I2H{R*4zE088eeT5DBG!h4sZ!K3tS&N0ooC7c( z3LzSeez_)NK!o)=0Nq-ijiEIDCE|D;U`1j}3wKB?qqf=pE~(DLkOGsp8qfI{WHNIk zIxnS-k8F!n6b_nJRmYX2L!+(&9RgP60$0UjOoYU^Ma<}FIgUTMJ-nTSS^iVFELNY_76Iaa=WLgqTHbSEe(DxX(KujyhU))32Wy z`vFXd0$&te$&-k}KWE(%Yj5@Kg=-`JHu%;sP8pg2Gb5RB`y_iCMF7^f#LC@ho| z9!RS2Ay-JGkh+YxFD8Xngy*qX)$YM%i0K}s6Kk&jLIR+|3DL7yxN1ZEs*H*~*pC8F z9vJz6#zr0~fD6KX4_fffBQeZCGm5Prd7abt^&V`tz;=LwPs@cr5QqH?ft~mY~=L&ad+9ybQ8pa^!0ciMyE4HF+1|D;WRGg(sl&^B7OpCQs}5*QT-Oy#WQvCpdDYInq!}h&dKVqQVpl542Td}7N zgwR{hjn=VSyZpN{B%@ht&bKe-PrR5kVCdGY4C4UJoXB(S)y>s!k2-ziA~>h~$SfDs zAGNgX5};}{!fQw=Pv0Fb?#feLOHwfD_x+}!>eJbi9wbaJZS8D*VNx(=B@cQcllIP^ zE?@wQN=}Xfy@2op4=9S#cZWxl2XHcuL`Tjb# zrQwSp!aJHzHOhRn{y27m)mD2^)OH3oM41$Z$&{ez5FWF~xc8XlD*=Tou=X9yLoRUU z3R#z0PWlGIURte=RW0^?c4FR1p(H@P>f4bz?w7NpJ}&;QBRZ8VHOaPC0BM8{@?>0{ z#^*NkkLSJctRwdwUhzjBe1^Qo?YGjKNINiBv8($x<_98Vd5;5oD*LYU-cLVlZ>@Jq z=7-_H(ukM2@NahYrKw#d{ED#Dq?YG{+F-6{6&DDFA(e=)pPh4DJ?_8tc=wJmia!kX?1COk>&^-BzgeR=6yZ}~at*69lGfY+2m$lD)p z#Z6=MePRyog*?*2!j-3jnS;d0=os<)j%Cf3LfgyP?~fI$k6*$Y?Wp$L>+2UHy#kM# z!b%4x4F=UwEb$`?%c@fb5b7T=6%%9(=H)E~@i|94nP!*A@f`TZbvx{CSH5Oz`x)xA z)qJdL*Os;`*XyMu^$#4GKud3mgdYzyXNgGA{Q_ZSs1LX-0*I31L=W%JtQ=~s$e6l} zIu{p)b&#amO8Rm1p29)&X;S1rFdJeuXj_{I-bg0(EN$tBgM*OLy)EkO_CY zD(;6wqRgDX8Ei~zbiR&XkbAnE!}a!dTrO>9Sz8`a#8WeXscAaQa1X!st(spB4_(06|t)}(Uc4#rZ zQo^kVgjt1Pe8IK)B60K2@ z&&*~U5vSay{Se?ybR}!!$=Z_>>foek4OF(U<(uiG)WY2{&$PfqlDL_WT;+D)~mTv$PbEWuyr2^D&t=X*xExC_#DmR2l4uji~oyIy;bm4HIUZe?U&T db@LI36Gzj7E-a_?bYBc0C#5X;LEI$xe*ruRK`sCQ literal 0 HcmV?d00001 diff --git a/src/fr/scanmanga/src/eu/kanade/tachiyomi/extension/fr/scanmanga/ScanManga.kt b/src/fr/scanmanga/src/eu/kanade/tachiyomi/extension/fr/scanmanga/ScanManga.kt new file mode 100644 index 000000000..a89a1de3f --- /dev/null +++ b/src/fr/scanmanga/src/eu/kanade/tachiyomi/extension/fr/scanmanga/ScanManga.kt @@ -0,0 +1,191 @@ +package eu.kanade.tachiyomi.extension.fr.scanmanga + +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.network.GET +import eu.kanade.tachiyomi.network.asObservableSuccess +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.ParsedHttpSource +import okhttp3.Headers +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import org.jsoup.parser.Parser +import rx.Observable +import kotlin.random.Random + +class ScanManga : ParsedHttpSource() { + + override val name = "Scan-Manga" + + override val baseUrl = "https://www.scan-manga.com" + + override val lang = "fr" + + override val supportsLatest = true + + override val client: OkHttpClient = network.client.newBuilder() + .addNetworkInterceptor { chain -> + val originalCookies = chain.request().header("Cookie") ?: "" + val newReq = chain + .request() + .newBuilder() + .header("Cookie", "$originalCookies; _ga=GA1.2.${shuffle("123456789")}.${System.currentTimeMillis() / 1000}") + .build() + chain.proceed(newReq) + }.build()!! + + private val gson = Gson() + + override fun headersBuilder(): Headers.Builder = super.headersBuilder() + .add("Accept-Language", "fr-FR") + + // Popular + override fun popularMangaRequest(page: Int): Request { + return GET("$baseUrl/Tout-le-TOP.html", headers) + } + + override fun popularMangaSelector() = "div.image_manga a[href]" + + override fun popularMangaFromElement(element: Element): SManga { + return SManga.create().apply { + title = element.select("img").attr("title") + setUrlWithoutDomain(element.attr("href")) + thumbnail_url = element.select("img").attr("data-original") + } + } + + override fun popularMangaNextPageSelector(): String? = null + + // Latest + override fun latestUpdatesRequest(page: Int): Request { + return GET(baseUrl, headers) + } + + override fun latestUpdatesSelector() = "#content_news .listing" + + override fun latestUpdatesFromElement(element: Element): SManga { + return SManga.create().apply { + title = element.select("a.nom_manga").text() + setUrlWithoutDomain(element.select("a.nom_manga").attr("href")) + /*thumbnail_url = element.select(".logo_manga img").let { + if (it.hasAttr("data-original")) + it.attr("data-original") else it.attr("src") + }*/ // Better not use it, width is too large, which results in terrible image + } + } + + override fun latestUpdatesNextPageSelector(): String? = null + + // Search + override fun searchMangaFromElement(element: Element) = throw UnsupportedOperationException("Not used") + + override fun searchMangaNextPageSelector() = throw UnsupportedOperationException("Not used") + + override fun searchMangaParse(response: Response): MangasPage = parseMangaFromJson(response) + + fun shuffle(s: String?): String? { + val result = StringBuffer(s!!) + var n = result.length + while (n > 1) { + val randomPoint: Int = Random.nextInt(n) + val randomChar = result[randomPoint] + result.setCharAt(n - 1, randomChar) + n-- + } + return result.toString() + } + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val searchHeaders = headersBuilder().apply { + add("Referer", "$baseUrl/scanlation/liste_series.html?q=$query") + add("x-requested-with", "XMLHttpRequest") + }.build() + return GET("$baseUrl/scanlation/scan.data.json", searchHeaders) + } + + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { + return client.newCall(searchMangaRequest(page, query, filters)) + .asObservableSuccess() + .map { response -> + searchMangaParse(response, query) + } + } + + private fun searchMangaParse(response: Response, query: String): MangasPage { + return MangasPage(parseMangaFromJson(response).mangas.filter { it.title.contains(query, ignoreCase = true) }, false) + } + + private fun parseMangaFromJson(response: Response): MangasPage { + val jsonString = response.body()!!.string() + if (jsonString.equals("")) { + return MangasPage(listOf(), false) + } + + val jsonObject = gson.fromJson(jsonString) + + val mangas = jsonObject.keySet() + .map { key -> + // "95","%24100-is-Too-Cheap","0","3","One Shot","","2 avril 2010","","335","178","4010","" + SManga.create().apply { + url = "/" + Integer.parseInt(jsonObject.get(key)?.get(0).toString().replace("\"", "")) + "/" + jsonObject.get(key)?.get(1).toString().replace("\"", "") + ".html" + title = Parser.unescapeEntities(key, false) + } + } + + return MangasPage(mangas, false) + } + + override fun searchMangaSelector() = throw UnsupportedOperationException("Not used") + + // Details + override fun mangaDetailsParse(document: Document): SManga { + return SManga.create().apply { + title = document.select("h2[itemprop=\"name\"]").text() + author = document.select("li[itemprop=\"author\"]").text() + description = document.select("p[itemprop=\"description\"]").text() + thumbnail_url = document.select(".contenu_fiche_technique .image_manga img").attr("src") + } + } + + // Chapters + override fun chapterListSelector() = "div.texte_volume_manga ul li.chapitre div.chapitre_nom a" + + override fun chapterFromElement(element: Element): SChapter { + return SChapter.create().apply { + name = element.text() + setUrlWithoutDomain(element.attr("href")) + } + } + + // Pages + override fun pageListParse(document: Document): List { + val docString = document.toString() + + var lelUrl = Regex("""['"](http.*?scanmanga.eu.*)['"]""").find(docString)?.groupValues?.get(1) + if (lelUrl == null) { + lelUrl = Regex("""['"](http.*?le[il].scan-manga.com.*)['"]""").find(docString)?.groupValues?.get(1) + } + + return Regex("""["'](.*?zoneID.*?pageID.*?siteID.*?)["']""").findAll(docString).toList().mapIndexed { i, pageParam -> + Page(i, document.location(), lelUrl + pageParam.groupValues[1]) + } + } + + override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not Used") + + override fun imageRequest(page: Page): Request { + val imgHeaders = headersBuilder().apply { + add("Referer", page.url) + }.build() + return GET(page.imageUrl!!, imgHeaders) + } +}