From 7f24d9dbdf4fd204a87cf2c800e3e1b80bc1c9f3 Mon Sep 17 00:00:00 2001 From: WebDitto Date: Tue, 16 Jul 2024 02:06:10 -0300 Subject: [PATCH 1/5] feat(src/pt): New Source: AnimesOnlineCC (#47) --- src/pt/animesonlinecc/build.gradle | 14 ++ .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3704 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2058 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5366 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 9386 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 13349 bytes .../pt/animesgratis/AnimesOnlineCC.kt | 137 ++++++++++++++++++ 7 files changed, 151 insertions(+) create mode 100644 src/pt/animesonlinecc/build.gradle create mode 100644 src/pt/animesonlinecc/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/pt/animesonlinecc/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/pt/animesonlinecc/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/pt/animesonlinecc/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/pt/animesonlinecc/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/pt/animesonlinecc/src/eu/kanade/tachiyomi/animeextension/pt/animesgratis/AnimesOnlineCC.kt diff --git a/src/pt/animesonlinecc/build.gradle b/src/pt/animesonlinecc/build.gradle new file mode 100644 index 00000000..3320ba0c --- /dev/null +++ b/src/pt/animesonlinecc/build.gradle @@ -0,0 +1,14 @@ +ext { + extName = 'AnimesOnlineCC' + extClass = '.AnimesOnlineCC' + themePkg = 'dooplay' + baseUrl = 'https://animesonlinecc.to' + overrideVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(":lib:blogger-extractor")) +} diff --git a/src/pt/animesonlinecc/res/mipmap-hdpi/ic_launcher.png b/src/pt/animesonlinecc/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..619e8cfb534e40a503aba334964b0130586622c8 GIT binary patch literal 3704 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 literal 0 HcmV?d00001 diff --git a/src/pt/animesonlinecc/res/mipmap-xhdpi/ic_launcher.png b/src/pt/animesonlinecc/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1ce84eda79a90ecb1c49275347214591cab7a666 GIT binary patch literal 5366 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 UU_fJjHUIzs07*qoM6N<$f&l*oOaK4? literal 0 HcmV?d00001 diff --git a/src/pt/animesonlinecc/res/mipmap-xxhdpi/ic_launcher.png b/src/pt/animesonlinecc/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9554722c5333feb3be863bfcc1f19cee5563c987 GIT binary patch literal 9386 zcma)?=Qmv6+s4lnb#$W#qXbEm89gE~N<%l)jVBLuA&{#J`f>4$v&xbrYr)rY** zs`n{H3F95X8D+i)b;V|>AfRdLD>ULO#6+@AQH^rXw`z{f9% z#D8Uj!(~%%d`@@N9DjMc4Gab!U921oNz}O&|1lQRFCcTfK3b_;Y2INBl%e&@$Zi5@ zZtdIa)MyrRt$H+Bp5e%&Y)epS7y2D*DPUZ7R+e%Lc*rjD8O(yylCkmgCd;FSyfx1Q z>%SwF>+*;Iw9|g&Jhx`S$KEBE7xM|bu2#3s>L&cEsvcF40ZFjDDBL>(fOGl;W0}t6?#{P|oX1&NS-s$vd%Wb+N7xIg5Oj|H?@a-~6o7mfK3i?`;%u(g;h^-h zn?Rwves)c_MV@u_Gtar2ZxU<$NiROJLzqEDMe5XLj|>3N8)ar8%%*9x@78>ZkWTX= zS&}+N^r75fs`R#krc~CkW#DC!%+z&E+TP)~!pZO7{*`8Rq&~AcXEC$J$IA`y5NTWB z{nyaI{pOu2l-x?d+NH0*f6n)nkq1rf2jOljJ>leK{~&(L6`;?{%NM)L&%RuY9c_$# zA=nmtok?&)#E?4s2z=!xm6=k0+tZhopWRf$4otb{B*pZrXP=u?Sq63wXGpPeI0XGc z!<`0W0m^D>!0++ZVLtZ9bNIZCJ8U(8yH5sp&7ZUdmEpHyWUfQL-aUqh?cGkfJi6<^ zR4?h5CF>bvyE|8VX&=8O-lb9tboqi1>@KtW`}^Njqv^5!K3!036Z`|J zDlHnTwsv9=sp#3AW4{m_b+ehDzIH>$Z}UpoPWHN9_PWpP z0?ORR^X$NY9|gJvoVT)K4LB-cQ*%iyr^8x!c6u4Bf#+{00xI6!d>(8Kd~RzP6MUOd zBPz8mRUHB>EV=YqCJn<1OaaYHAa8m5_|NRh9k^oN%U`^(4`B~^lBWh6R6o_ty47DK zpgtaFpyb5YLyGx&)STT zMzTET-#f*fU7UQ;dG@SvzS*yQzQHr=?tYTeznTq7+p?RuyiN*w9*-y*4toU!1&oVJ z35SAj>Ac^p)yUzu?vWb1?%~HRdownt)_FG%KfNo7AQa6#zfc848Vuxlkov%Iu}+r9 z*7mmKmlv09VoH~P>&QM!eEe(Q2`z;RjrwH30T3sMye6I<)wSDxzTdE0H+Ii?{nN{a zc%Hip@f=cpVbmQ4=4VsV!13?j|9v+M$%%gDG83E=b6`2E1_DBrMIriE`|iLHxT9`* zB?9k@zY|~zpi>uz@qh-{O3c0iA#ezwQ@n;2vEYz&cX;Lbf#;C*^F60d2>w(FUD#m= zuVtDwTueLO1zc#Pt|xga;06<`_(_^4>y`=@9ieuz9&@%ZTadic#V;eJDF6ET!@JPqz-A}$kf4>fL4XH|E{Sj$P|a~k{MKdKJWjGxI9`N`kph6 zF7F6L9{;nK&4!?N@2n^I_q+>fr}|?983IJdhOn1;w1a;tT~N2bh1VP6e++U2;={}q zUtC^z-d;~u9sU;0`B?Ot+ zISrBrp@sw_GvApeReuNIl4Y^_jqG4#o>vdjeWqgTk{d~7dQCMn-%_rP5j_Adu=MJ{ zH44!R)+U&RzZBBRbQIEkGk3|{S$T+_!BJyp`TL32arQjZ39}lF037rA0dI)o$mgp* zI`YUS#7QT^@@aO-=;+R`P}}07K-D8aWO#0UAf?hQOVTM;#v zG*j3mltkTzVBn_Mzo$P;T-Pc=f=!o!)@AGxMcH+xAGd&5yOcSH>#tDvKdjV@4yN7O z)9Z+EPs~b`BkOnt>QGd^2CH}VMB2a;%4{KS>PjVMt z;MqM1%>M1&@M2|#ZpDL-m+fZl!A)nsru5F2eJlfJ!#On)m|@MtH8N@-Om@L%?CywN zG`Dl&Z4&!c8#S&wXg~km|B_*y>3eOs#IMt0RPq>X=%>)6Vy1N6TQq`1T^T;wsnhQp za=zDiVZ?|N-N~%wUeW0Lxy;2(#%1@uFM-R2PW~(4J_<0Cy{tqCTAORMe6J52%BW!g zA``=kXrmt@b@1Qm@11tE{`<2-%6_&|>#Xf#o{8`*l3#fVywVJ}gX4ONMhK|xH@=ga zq)!4##8plsigEJ6JMOp1Z-P1f-mJ=~C0$Pijh8(v7lql4GE8Td-vsCIBW`%>VwT~- zJw^H903#5VX3OvUa@edebXpo<`O)>0G-?ai(PW@h6NOwGX3b&UEgaBIOpviifGXoR z(!RfZdtoDW5rDCdX?c>aVi|b5&yqWDzdIcxjpu}n9V3Rdn^JaqJv zC#g#91gK+=jS?B23Q4nrd5toE$B@-nNT3+~_^l({=^=JAbPAgYt|oQgmMNavy==wy z?^ohLN8?am>gy)g@JyChJ2q0vh-DKo*RNBJcgj)p!Y6h}e^qc00$wQ?lUNT$2vh;^ z7vMvzZ5-&K`7%64h_witRG6qR_$FXAh82U~E^@aK5}Nh~V!0W8p^>KaLOYRc)-_=n z9ekwtm-`Os{3Nw(bo8~L&3suxw5g68oJ{JSfJf;&=AU?SFuGYtG-9AYmvVc)&c(u~ z&#}Tg&etPH@$mS;B82j5^2hKq^9GNMz_kRqiYI-TajboAYt$h~^z80#fw8eYa;ikH zu`p{?^S@M9Z7YT&q~I|WlMmbkKOx{13Sy8p!nwikZ~r@8tK=vg#rhqGUf(+}29=hw zrF&pH!boR_-Si{R587N{p(@`G;Gf~xBNI2YLi9_WH<6=!`;zW6qKl|M8u~CaCJnKl z8?=3+&T)W=i{lZrb@Q58PSaZEV1#2%yvXsy176R0N}Y(;qz0XI$k+21Q-HCt+D<;p zQQ*n)vpu{z(%ppnD2-GWofyC?FoAOAktQ$RiD1^P5x53i=duJ;&_*AHa{{_Vty|~R zdz}7@L&i%O?twF;8Aevu7L075vXK0WM>GCFfgQu!9$yhc#cS)JfiV1lLBSY7f|qhI zSg%mZs>4-1&yf8a(vVXFbjMG9u5cn<+{&#!nd$iKp1NW`pi45LIw#ahjVVsOFE(_W zDppV#G1G>K#My%qnHE4}Q+i6Cp%MMpr_w$H_o{F9tWO-e@+flsqGzs}C=D8EW+ zVflj>R#Xi7ls!mE#oo+~2YTW948;Tx`+yT~20d@#dZ2~o%%qk9fz*05D)rjZJBFo* zK#q=lr;)Rk2_|w>Xj%YVXE{&0WB7k1EhLj2Ks~X-}*qC!js{aU6yjK2>#Sh<-5yr&~M#r&=Nsiq+_xQLW zA{5Iw76{=J1E`I<2mwxPHo>)G0myVtWeucjHxG{)ga!YMkoRSDN%%x(bkmjOm5OL*-VL2`CKbH;TC%X8p+WYUi2y3Mavlh>Zwl~&{!US3RkO_4ZtT* z)n9`+`Bjl#eLArF)&BSAkpEBk5lfkiO41PLJd`HmJz^VE%=;M0LjWSuLC_kiX1qa_ zJnV)0J6eF>2rwF+hUEy3MMTd~0+9q6_UM7nSGBPW*0^N@3LY-O0$ng|6X~&kOoBaY z1>~` zdYhl!zzCV?N~VFkOPZ1e_ziN-sv1{p_WfC@?qZ<;i|-OqC8t;`x46n0s;9c z(vv^tponc+ysgO`#cLiZAw4P2|3v9`^E)Pv?CtAA;)&duly&7UdRepDJ2TXPxoPcbHj4&$Hn?~vl)bi<4uf=SfH<0eQb#g&+UIwYc&y+xDg;waF5TdCi> zEDVShifOXu=zJsBKg$N}p3vD%H~DNVggGzX*yuucSu0L(=S(_MtZboTe?DNGp0j`i;-%ZGT^8^6?@Y`{u47T(7AC5O3a*E zmK+tDz)7Gu$)1DzIk>4{>v55%j4N6E?E%izH^B&d6@oJV1pWzi#k!QL8HTaTbdbI) zOD)SPYoLqrLrx{#`%_Am-$J8s zh6xN8grY6=n9G69O!q3(tj&wI5w_SfA`5Q6<)B>&ByuB9HKTu{zC&`s4u13e(7;JST78+IPvm1j+%IW+wp-bj^_Uuau0w?RXe{JV-| zW|zBD)iT;wX@Bp3jf0IGLWP!oyt0YmsthD`$h`PVhXZKuAE^-}Nik~Q_e~`6LEc&Q z5X#-cQ@BUe?T9w^3S16{5=cQ*XmoW`lbb0Rk94k#PfbvifluE-{ z3@XP0u`CndaR|Ml?Sm4gMio=xb@s+i#zDtx1s0#u3Y`@uG%xStUp(p>}!deL_(slr!4^klT_kKx}7m-K-x zc>;NLOo1f_d(U!+>bvqyw%${%$u4+8a1{KPp`|BL66IzA8E3(Lpn2lBIlL1|kB_ed|u-)xUF{-?Kj+a|apz$jw z?{OC{m%N#%@P+a?P|{7`G|X2|OQZb>-h`541ec7zlfw-PY~hl%r7$Qlvjf)XnhiUk7Q=73eu2= zLx@Q#z2Tt_<1=f(uz(AgG$y~%jLN;TV68R!Wj(6-${FtbD+O#HBS$084CRq}z=Qpk zRwR_@9yM*(?8S4wIkzsgea&jNGRq_fSvQ8u@6e$1z;K+<{tyYl^y2K^%iYf4Y}wPk z8XW9If)FZyBmO*n%J`X3U(uQ&T0FpMwSZJc@hx~6NrHr-DY3CWD?~pcaLFgY+DVIPhksI6t6w*3v@#^y^IW(wTNNX9S0$D*r2?)(<|H?4 zxcotQOoJPrdbA`s*D}UsKWH8n`f9}}vnjt2e`;up5aOXaY1tW!3$j~EB6k{%&G1=O z@`szz1Y43l&0r2V}qSrIOhJOev|C|=St3=J;@Y^yFTwdDTPJ4U*+Ng zOLWWnJzUjpdWKEMIBvU$;%#|4x)s?{irK6K^2w45`n9eV3IIv|v*YIC8EMJ7#xCAE z_7X_$!kmf+ZRzO#!`8uOwUeuVN|EP+E>HXOl6opzvJQAhN<&47C&pCcK4T?@!<8+_ zCRyx8!PGGSrI9atEe*~Vp)m6{LTg7d~0TSjJgi~P!j(->c%sWE7>V} zC$3-gu2|egM=;=tDTCBF;`N%ArZ6w`&k&0MJ4wi(ig7Y6z~?ambLAtO56(o>cKg|Z zElr7(JXE4zM>Qb2y}`CT-hTKIgm;sdH&~`8_=!z~6rwAQ^pC)V%H2sYc*M@uMuDR$ zU=rxkz9kv??eT%iFAfI2oW-E$Y>j+B`KKfw2B3ZUR}BvouP@~`D%qz~kh@YA)Ov$w zIk{K&8_FKC0p#Sij~Lh~r`}Ob7p+ipG{pzJXF_o;<-T$6q73p&8G_2w|5PwL13`q_ zJ|-)Ca&&KwI%jI=2)-#NQnbI166-|QrU{W3RvNfkDhgnP#MJSbiz zJSb_d{{<97fVB;5mZ+ z=}uV(o@@jLs9O>ubWo4%=b){P7iM{&mA@hqDr{NzRHf*@)`RL**{Cag)m$RYoIHMsGX!a zwCJi>4oNHfw(qnVWGi|5jhC?xzfOt9OKE zbe_qiW8@UHTZSYJM9J+HATtRG7sR`e31sZW*Hti2D>K>2I1OK*3SW-)E=u$FAlJnG z4n`wh5anS_D*i)?^#uA8+UscGC^#g3TAKW3VdzpcSX%2DfWb)QCBXk4q2dnC3ozf^ zPm|C8B>o7Iz~%W!o0V0%0Y(D%JRy0ada*c8am6EJBx8ZOb{u27_nw1}-pjR+cthzF zWQ5=Jy)wvG1K*5K3JVlRWX#|EdW)-^Ln|wRqG*jEk$@W?nxLnY$ko-B>ehJFExzo} zbQKX*eBHQlXoYG6-^4!gk#)LVK?6vCMs@I3SH19bQmK#|OaSE-;Zp1noN5DAWUA!L zX7GOT1=W7AJYZO?Nhss9imX_D%sVcWXxneDPD~dkNNbqgb^&XB&fRjedt<~k z3r?ya&R@qeU?3eT<`c;qvgZnSX5i_d2aK{2W>4m0P8jTF)mPPWsaOq{dSB*`Wj(W; zVlOqYCh*Wny?vGp=3EM*Ho7MG)qRMi?NOlyMK7Uz+#v)3JLCC!W_uU$j z(ko5&Cn{J7!`4iZ6!!}rLHvmu>|CRVqnG%dZbmW|G>Np6$ENqETwn-HQ8*VfG6Wq`6|0eh!<7FY!~V z>(Px4&>Dk>8XH!I;s)d2Tt91bGtT#p@+NXJgLOXDg$s3)AA=VFdE zkgr1|TIn%YLbLEbQN0m%kCSI4oGnV6zXM+r^^z!UPPMHSbDZ!`J*%9sWB2~oDjSA% z!ck2sK732%GVhr!kF>!==q4oL{6d#3k4Q25FPtEahA=bQs@Xb>9*z@wO8{A59rE(v zoFDW3Y1-Z_4m_@ZSb?-)8bs1_Qp#E18R!G@H*3Xc^B5$CpbC z_*7PyQPb)InURRAN+Rrb6y5iExLIFZm>EDTu3#R0gL;mlwgNLqOyGF#Cefq$e&nhc&o9^b zJb?6Xz5X5GQbv#9`x0kh%kP;Fb9L;}Na=N-(xMk~Rh`X_3^HwByOI+PdG1xjl<0pY zZ^v=kK_$Bg7`A&IrQ?uyRY$Q6af%v-YVN7$oGdBi0-&oRD5jO5MRXblJXv7Yh`X?q z^^wb@X6z}`dxe5eJ>7T@(0YV7bxqmdgZ-#TV2^Du5*Tym#Q8_Ck=#XaUxh{>tPu?+ z*+1oiG`+~duI7%P^sqNUm?^=5W2`;Pe{RdKWfyzOCvP>P%m$4}EL0v6;o6DvLNnc8 zT(jR}OWXZp&i*R_>ko(TnD)kR`nHMbD{DwIFnVG*oON$WBA@@|wFTWwT)Xzm(3@nV zc@9vFiwwY6pVrgv%f-=vXq;o^6LD{??3W)3+;bM2WW7I%y$wVLSl4z%ou?H50Mzt< zSpWsEs+;8k#CXnR4FQng-Uuab+(5H4`;EI%Y@|Pqg&jx&hX%Q{bU@Ysq?nxeWbK{p zH|db%^RM{|Ld052#P{qqw`*fA%OcMUJ?t8k#*_y7 zSRLy>Nq_gKJl6tL`uTZj@6Id@u;&)fF)=lD6!_plzc^7ZXCp1Ghezs9T!0-G!_2?! zSDox&agA$b+jFtO^E{bPl}@tnFl_EiAXPoe`Ht20-HfL8V-UsHJf&bZF8T|6h&oAVz+jObX717<(0Q|stX}2Ez^IITd zUlY9{5B-L`LZ7V!ZcJdOiZ99`c}nE3LdlO&3;^eU2W=;#8FF4LR^3swT!zJkg9PD| zcBeLE6^nz(kfP76H!V&>={aOD*5QxeqPTLT`#fa(d`~iJRzi_>ic&)HU|iHlhLlSe z_p_xRHWa+Uhc^-^)6-t{Us1o0SMzNG+mhE7gyBy#)32Bb zv?T*M=Tg5)x5Aw}50?Hr-*Xwwk~>g3S@inY7PfE7J*2}%;w!hRgbL6w`kaH$;sitsa^?zfPz+u zyN?Y3Dz!~M6r+dQH!u79HSn)DX!2P1QvAzUudsauxP?IwDjHyMQ}Yl?#xMkEhzdRd zSgEh5^C?x02u=eb2A=WXt}rPt#{mH%NE)(y8rM^*JP`#UYQ_6H1lYY$4MsQ6gRk#^ zX+_iPASi@N?eBDIWQVHGGZ7pV{m4|?7H0alg1xi}@rsIBUobT#>^7&O6NdtFSgTQY{PKVa6Z8(*G?{LQ=U5N;kW_>!UolN&?(?xQX14k0GO z|Eyqe$%kfprhfjBHHKpPpi<+bhr*A5GUWd&xO2(-P>=&Bz4XK4DtrWJ-q%&DQn3yD EKWsci>Hq)$ literal 0 HcmV?d00001 diff --git a/src/pt/animesonlinecc/res/mipmap-xxxhdpi/ic_launcher.png b/src/pt/animesonlinecc/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..23a1c86f6a8b755ccbb5e1a802e6412f2c785447 GIT binary patch literal 13349 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

8LD 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 literal 0 HcmV?d00001 diff --git a/src/pt/animesonlinecc/src/eu/kanade/tachiyomi/animeextension/pt/animesgratis/AnimesOnlineCC.kt b/src/pt/animesonlinecc/src/eu/kanade/tachiyomi/animeextension/pt/animesgratis/AnimesOnlineCC.kt new file mode 100644 index 00000000..fb30c871 --- /dev/null +++ b/src/pt/animesonlinecc/src/eu/kanade/tachiyomi/animeextension/pt/animesgratis/AnimesOnlineCC.kt @@ -0,0 +1,137 @@ +package eu.kanade.tachiyomi.animeextension.pt.animesonlinecc + +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animesource.model.SAnime +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.lib.bloggerextractor.BloggerExtractor +import eu.kanade.tachiyomi.multisrc.dooplay.DooPlay +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element + +class AnimesOnlineCC : DooPlay( + "pt-BR", + "Animes Online CC", + "https://animesonlinecc.to", +) { + + // ============================== Popular =============================== + override fun popularAnimeSelector() = "article.w_item_b > a" + + override fun popularAnimeRequest(page: Int) = GET(baseUrl, headers) + + // =============================== Latest =============================== + override fun latestUpdatesNextPageSelector() = + "div.pagination > a.arrow_pag > i.icon-caret-right" + + // =============================== Search =============================== + override fun searchAnimeSelector() = "div#animation-2 > article > div.poster > a" + override fun searchAnimeFromElement(element: Element) = popularAnimeFromElement(element) + + // =========================== Anime Details ============================ + override val additionalInfoSelector = "div.wp-content" + + override fun animeDetailsParse(document: Document): SAnime { + val doc = getRealAnimeDoc(document) + val sheader = doc.selectFirst("div.sheader")!! + return SAnime.create().apply { + setUrlWithoutDomain(doc.location()) + sheader.selectFirst("div.poster > img")!!.let { + thumbnail_url = it.getImageUrl() + title = it.attr("alt").ifEmpty { + sheader.selectFirst("div.data > h1")!!.text() + } + } + + genre = sheader.select("div.data div.sgeneros > a") + .eachText() + .joinToString() + + description = doc.getDescription() + } + } + + // ============================ Video Links ============================= + override fun videoListParse(response: Response): List

3=wqj-*uX1s8rxqAa>OkA?T;^AUEX+4w7`7pj-~n?NXmgZ|aZuTn5vIig zU|sUmH0KQtX`mS!Qi}S{uX<4xnmo)BfJtvu1p!l{QUjpRf-Kh*FT-!Amr z^TQ@xQ9@CP0Gmdn@8=4;xKGTWK^$XU&kyi`qL*jySIh&xaJRfsfSj>;MUxO8YVaX& z&AA(2RbHHx9pP~b*OFxdO7%>fvA0?;l4fwbv@W%#!+qX!P=qg(+7$2?u!vwWw0U6` zEJjB>!tPqq6gY;a?ixkQJJi~YrqJ#2edb_=QJFSop4n?8znZkVo@WVKtLwKTOa6;!Rp}*2$-YHAtGx_a#++u zpEZi&{7mAypSSH{vonCB&Nr8~xsatLNy*f@X=vRuo_?2aT5?W$J3r&kSNUb5~D zn;*gEsw1lp+&gQzKCnWVYADv9tl$N(mDOvqaX0BsV|1j#yBU27AJ{I{g}st+pMKH& zOP-C!{u|N_V-&1A@bNyk$Z%Tq_8U7v`TBF=z-WOztW3sgdD%{#47W@Bs8E1K*JXAQ zeHVG?;-Rz?)SkuDtOcvvM*eB9`fXvpWAM9McI6l{=z9|L_r1P9cJ`D&vMGF}G~m>` zK}{1?qkkx_V2>{C^@9nru-Yw8)T4M;EKB!g@^R{2i)sqo#kcEC^PR}7WZ`9!Uj71- zc-1Frdb;>vYknsHtniK^{rZ&7p77;c3|{QmxF-rk)IQg5uKd($pLW8ICzZ8blDFWO&6T!P+p!RBu?4ty8HqN=&8!P5eVdamD?~KBN8lF4rcGbLCuBDy#y!)2& z`QmEZ;{bNLB5vZzcWKpjkvFMvUPJSJ_N;%kM^gR~8IcV60Oe_JlSpwsrNcyUbgiY= zVE!ncWsy>0nQ=OH$on<1wdcZ$bF|!KZGRoKvVKmdxq$59w+#zTrsMfDZ$BjGUD3Fx zL;9#F6o2{I$NcTd0d$}>WF2Kn%d3ggTv?@=Bt28~Wk>^E*I*~AZNcvX^O`eZlk%zF z(u}q%IeMC$#YJ?5J3({tekpXad3G0aMA@-zD5|AVJqkPHhMK1z8?KRSwRzEk4%Nu@ z{Y#hScFsHO8rM^ZuZhfR)Ld#}_q|;dcnQFWMal4}AN+v8jp!3U%IQpN9C5e)iNouJ z1eLd8c^uIhzpjSjD2fXsIWTWb8vxIY~;>yk@s6NGbZ0<<8Qi+Vh+riaD# z+1HXxKTU6sz>u~_>6&R@Kk= z3*L;W%K`pg^2ik=14(Lrcx$zRx2y5z@L7xNoyL;Jugh;l=Zq9RHDTKG0X z8t;6f&wM$O!s5mXBiPzqrXdT(x_*r!X{YaOjD0C8r4iTnV0r}@FYisXI_dp zb>2>{?oWw^jx{ZM`3tQ-@;a8S414>dE?Tvt=@QhL$Lj*;yV_Zar3Q8*(FP}8>tmhyw?h?u^;ku6a#&oVf0vD5NpW_)8&XHuJfIXnVn@UyJ@T`pASF0mE^+BirR6PMW^ zgpMo9E`zaVG(p3U{(r}Upef+Zf1eNoZa_5IH6-G{VMg4C@{o67B+ZX>I2ILHkr=OQ# UgMQiw0v_+)D8DXyW%Tv`0kxwCHUIzs diff --git a/src/all/googledrive/src/eu/kanade/tachiyomi/animeextension/all/googledrive/GoogleDrive.kt b/src/all/googledrive/src/eu/kanade/tachiyomi/animeextension/all/googledrive/GoogleDrive.kt deleted file mode 100644 index 22ad7799..00000000 --- a/src/all/googledrive/src/eu/kanade/tachiyomi/animeextension/all/googledrive/GoogleDrive.kt +++ /dev/null @@ -1,720 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.all.googledrive - -import android.app.Application -import android.content.SharedPreferences -import android.text.Editable -import android.text.TextWatcher -import android.widget.Button -import android.widget.EditText -import android.widget.Toast -import androidx.preference.EditTextPreference -import androidx.preference.PreferenceScreen -import androidx.preference.SwitchPreferenceCompat -import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource -import eu.kanade.tachiyomi.animesource.model.AnimeFilter -import eu.kanade.tachiyomi.animesource.model.AnimeFilterList -import eu.kanade.tachiyomi.animesource.model.AnimesPage -import eu.kanade.tachiyomi.animesource.model.SAnime -import eu.kanade.tachiyomi.animesource.model.SEpisode -import eu.kanade.tachiyomi.animesource.model.Video -import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource -import eu.kanade.tachiyomi.lib.googledriveextractor.GoogleDriveExtractor -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.util.asJsoup -import eu.kanade.tachiyomi.util.parseAs -import kotlinx.serialization.encodeToString -import kotlinx.serialization.json.Json -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.MediaType.Companion.toMediaType -import okhttp3.ProtocolException -import okhttp3.Request -import okhttp3.RequestBody.Companion.toRequestBody -import okhttp3.Response -import okhttp3.internal.commonEmptyRequestBody -import org.jsoup.nodes.Document -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy -import java.net.URLEncoder -import java.security.MessageDigest - -class GoogleDrive : ConfigurableAnimeSource, AnimeHttpSource() { - - override val name = "Google Drive" - - override val id = 4222017068256633289 - - override var baseUrl = "https://drive.google.com" - - // Hack to manipulate what gets opened in webview - private val baseUrlInternal by lazy { - preferences.domainList.split(";").firstOrNull() - } - - override val lang = "all" - - override val supportsLatest = false - - private val json: Json by injectLazy() - - private val preferences: SharedPreferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - // Overriding headersBuilder() seems to cause issues with webview - private val getHeaders = headers.newBuilder().apply { - add("Accept", "*/*") - add("Connection", "keep-alive") - add("Cookie", getCookie("https://drive.google.com")) - add("Host", "drive.google.com") - }.build() - - private var nextPageToken: String? = "" - - // ============================== Popular =============================== - - override suspend fun getPopularAnime(page: Int): AnimesPage = - parsePage(popularAnimeRequest(page), page) - - override fun popularAnimeRequest(page: Int): Request { - require(!baseUrlInternal.isNullOrEmpty()) { "Enter drive path(s) in extension settings." } - - val match = DRIVE_FOLDER_REGEX.matchEntire(baseUrlInternal!!)!! - val folderId = match.groups["id"]!!.value - val recurDepth = match.groups["depth"]?.value ?: "" - baseUrl = "https://drive.google.com/drive/folders/$folderId" - - return GET( - "https://drive.google.com/drive/folders/$folderId$recurDepth", - headers = getHeaders, - ) - } - - override fun popularAnimeParse(response: Response): AnimesPage = throw UnsupportedOperationException() - - // =============================== Latest =============================== - - override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException() - - override fun latestUpdatesParse(response: Response): AnimesPage = throw UnsupportedOperationException() - - // =============================== Search =============================== - - override fun searchAnimeParse(response: Response): AnimesPage = throw UnsupportedOperationException() - - override suspend fun getSearchAnime( - page: Int, - query: String, - filters: AnimeFilterList, - ): AnimesPage { - val filterList = if (filters.isEmpty()) getFilterList() else filters - val urlFilter = filterList.find { it is URLFilter } as URLFilter - - return if (urlFilter.state.isEmpty()) { - val req = searchAnimeRequest(page, query, filters) - - if (query.isEmpty()) { - parsePage(req, page) - } else { - val parentId = req.url.pathSegments.last() - val cleanQuery = URLEncoder.encode(query, "UTF-8") - val genMultiFormReq = searchReq(parentId, cleanQuery) - - parsePage(req, page, genMultiFormReq) - } - } else { - addSinglePage(urlFilter.state) - } - } - - override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { - require(!baseUrlInternal.isNullOrEmpty()) { "Enter drive path(s) in extension settings." } - - val filterList = if (filters.isEmpty()) getFilterList() else filters - val serverFilter = filterList.find { it is ServerFilter } as ServerFilter - val serverUrl = serverFilter.toUriPart() - - val match = DRIVE_FOLDER_REGEX.matchEntire(serverUrl)!! - val folderId = match.groups["id"]!!.value - val recurDepth = match.groups["depth"]?.value ?: "" - baseUrl = "https://drive.google.com/drive/folders/$folderId" - - return GET( - "https://drive.google.com/drive/folders/$folderId$recurDepth", - headers = getHeaders, - ) - } - - // ============================== FILTERS =============================== - - override fun getFilterList(): AnimeFilterList = AnimeFilterList( - ServerFilter(getDomains()), - AnimeFilter.Separator(), - AnimeFilter.Header("Add single folder"), - URLFilter(), - ) - - private class ServerFilter(domains: Array>) : UriPartFilter( - "Select drive path", - domains, - ) - - private fun getDomains(): Array> { - if (preferences.domainList.isBlank()) return emptyArray() - return preferences.domainList.split(";").map { - val name = DRIVE_FOLDER_REGEX.matchEntire(it)!!.groups["name"]?.let { - it.value.substringAfter("[").substringBeforeLast("]") - } - Pair(name ?: it.toHttpUrl().encodedPath, it) - }.toTypedArray() - } - - private open class UriPartFilter(displayName: String, val vals: Array>) : - AnimeFilter.Select(displayName, vals.map { it.first }.toTypedArray()) { - fun toUriPart() = vals[state].second - } - - private class URLFilter : AnimeFilter.Text("Url") - - // =========================== Anime Details ============================ - - override fun animeDetailsRequest(anime: SAnime): Request { - val parsed = json.decodeFromString(anime.url) - return GET(parsed.url, headers = getHeaders) - } - - override suspend fun getAnimeDetails(anime: SAnime): SAnime { - val parsed = json.decodeFromString(anime.url) - - if (parsed.type == "single") return anime - - val folderId = DRIVE_FOLDER_REGEX.matchEntire(parsed.url)!!.groups["id"]!!.value - - val driveDocument = try { - client.newCall(GET(parsed.url, headers = getHeaders)).execute().asJsoup() - } catch (a: ProtocolException) { - null - } ?: return anime - - // Get cover - - val coverResponse = client.newCall( - createPost(driveDocument, folderId, nextPageToken, searchReqWithType(folderId, "cover", IMAGE_MIMETYPE)), - ).execute().parseAs { JSON_REGEX.find(it)!!.groupValues[1] } - - coverResponse.items?.firstOrNull()?.let { - anime.thumbnail_url = "https://drive.google.com/uc?id=${it.id}" - } - - // Get details - - val detailsResponse = client.newCall( - createPost(driveDocument, folderId, nextPageToken, searchReqWithType(folderId, "details.json", "")), - ).execute().parseAs { JSON_REGEX.find(it)!!.groupValues[1] } - - detailsResponse.items?.firstOrNull()?.let { - val newPostHeaders = getHeaders.newBuilder().apply { - add("Content-Type", "application/x-www-form-urlencoded;charset=utf-8") - set("Host", "drive.usercontent.google.com") - add("Origin", "https://drive.google.com") - add("Referer", "https://drive.google.com/") - add("X-Drive-First-Party", "DriveWebUi") - add("X-Json-Requested", "true") - }.build() - - val newPostUrl = "https://drive.usercontent.google.com/uc?id=${it.id}&authuser=0&export=download" - - val newResponse = client.newCall( - POST(newPostUrl, headers = newPostHeaders, body = commonEmptyRequestBody), - ).execute().parseAs { JSON_REGEX.find(it)!!.groupValues[1] } - - val downloadHeaders = headers.newBuilder().apply { - add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8") - add("Connection", "keep-alive") - add("Cookie", getCookie("https://drive.usercontent.google.com")) - add("Host", "drive.usercontent.google.com") - }.build() - - client.newCall( - GET(newResponse.downloadUrl, headers = downloadHeaders), - ).execute().parseAs().let { t -> - t.title?.let { anime.title = it } - t.author?.let { anime.author = it } - t.artist?.let { anime.artist = it } - t.description?.let { anime.description = it } - t.genre?.let { anime.genre = it.joinToString(", ") } - t.status?.let { anime.status = it.toIntOrNull() ?: SAnime.UNKNOWN } - } - } - - return anime - } - - override fun animeDetailsParse(response: Response): SAnime = throw UnsupportedOperationException() - - // ============================== Episodes ============================== - - override suspend fun getEpisodeList(anime: SAnime): List { - val episodeList = mutableListOf() - val parsed = json.decodeFromString(anime.url) - - if (parsed.type == "single") { - return listOf( - SEpisode.create().apply { - name = "Video" - scanlator = parsed.info!!.size - url = parsed.url - episode_number = 1F - date_upload = -1L - }, - ) - } - - val match = DRIVE_FOLDER_REGEX.matchEntire(parsed.url)!! // .groups["id"]!!.value - val maxRecursionDepth = match.groups["depth"]?.let { - it.value.substringAfter("#").substringBefore(",").toInt() - } ?: 2 - val (start, stop) = match.groups["range"]?.let { - it.value.substringAfter(",").split(",").map { it.toInt() } - } ?: listOf(null, null) - - fun traverseFolder(folderUrl: String, path: String, recursionDepth: Int = 0) { - if (recursionDepth == maxRecursionDepth) return - - val folderId = DRIVE_FOLDER_REGEX.matchEntire(folderUrl)!!.groups["id"]!!.value - - val driveDocument = try { - client.newCall(GET(folderUrl, headers = getHeaders)).execute().asJsoup() - } catch (a: ProtocolException) { - throw Exception("Unable to get items, check webview") - } - - if (driveDocument.selectFirst("title:contains(Error 404 \\(Not found\\))") != null) return - - var pageToken: String? = "" - var counter = 1 - - while (pageToken != null) { - val response = client.newCall( - createPost(driveDocument, folderId, pageToken), - ).execute() - - val parsed = response.parseAs { - JSON_REGEX.find(it)!!.groupValues[1] - } - - if (parsed.items == null) throw Exception("Failed to load items, please log in through webview") - parsed.items.forEachIndexed { index, it -> - if (it.mimeType.startsWith("video")) { - val size = it.fileSize?.toLongOrNull()?.let { formatBytes(it) } ?: "" - val pathName = if (preferences.trimEpisodeInfo) path.trimInfo() else path - - if (start != null && maxRecursionDepth == 1 && counter < start) { - counter++ - return@forEachIndexed - } - if (stop != null && maxRecursionDepth == 1 && counter > stop) return - - episodeList.add( - SEpisode.create().apply { - name = - if (preferences.trimEpisodeName) it.title.trimInfo() else it.title - url = "https://drive.google.com/uc?id=${it.id}" - episode_number = - ITEM_NUMBER_REGEX.find(it.title.trimInfo())?.groupValues?.get(1) - ?.toFloatOrNull() ?: (index + 1).toFloat() - date_upload = -1L - scanlator = if (preferences.scanlatorOrder) { - "/$pathName • $size" - } else { - "$size • /$pathName" - } - }, - ) - counter++ - } - if (it.mimeType.endsWith(".folder")) { - traverseFolder( - "https://drive.google.com/drive/folders/${it.id}", - if (path.isEmpty()) it.title else "$path/${it.title}", - recursionDepth + 1, - ) - } - } - - pageToken = parsed.nextPageToken - } - } - - traverseFolder(parsed.url, "") - - return episodeList.reversed() - } - - override fun episodeListParse(response: Response): List = throw UnsupportedOperationException() - - // ============================ Video Links ============================= - - override suspend fun getVideoList(episode: SEpisode): List