From ecd2b33dfc618a4e0938023ad2e749b220ffd6af Mon Sep 17 00:00:00 2001 From: kaso17 Date: Thu, 8 Sep 2016 16:52:08 +0200 Subject: [PATCH] Add PirateTheNet tracker --- README.md | 1 + src/Jackett/Content/logos/piratethenet.png | Bin 0 -> 24168 bytes src/Jackett/Indexers/PirateTheNet.cs | 211 +++++++++++++++++++++ src/Jackett/Jackett.csproj | 4 + 4 files changed, 216 insertions(+) create mode 100644 src/Jackett/Content/logos/piratethenet.png create mode 100644 src/Jackett/Indexers/PirateTheNet.cs diff --git a/README.md b/README.md index d65980cdc..01de7cdb1 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/ * Immortalseed * IPTorrents * PassThePopcorn + * PirateTheNet * MoreThanTV * MyAnonamouse * NCore diff --git a/src/Jackett/Content/logos/piratethenet.png b/src/Jackett/Content/logos/piratethenet.png new file mode 100644 index 0000000000000000000000000000000000000000..c622a89ebf9c5fe25a8355b5fe6f9accda6efb08 GIT binary patch literal 24168 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

IJkbKqX{_b<1i^tzyA5Rmr)`DVBm zpX5RqdFeRnC$G6S>ZvVnfMj>N+4ZX~WpwRDaaDEH;u)1O;>qDBZ~Z7P+!N%XG~jgE zZr-lzCOQ~*%^_AgW!afI{P70L=OBGMvC+ymUdt6V&Ln7+y1oZN*|zOFQbFBJbX*iX z3)iQj4P()6C!BIJuD>x|T@6-Ng^Lt{ANk8)Vjl_9AO7c#*tctUqEcyjMcfMF{_s2B zjcdtdufav%{=1uUWZ(lI|3uvW1N% z>A8vIokM-Zb+6?#YSO?yM%?IKnXX06d!g7?zw~mt)4a!r-+PTcyF233U;3w*N!IU3 z$I!@N9Q}?Hb9~l8ab==^bX4GzU-?pOUb{Z|Gy%|?gW6TYEG0LMj^dLUys9%Jd*bM;&ifchl`}=>A(Ip70oz&(Gf?+r0K+- z7>e;}d3hzuHI`%0b$A8WakXvQ97_&AEY7>^vYfrLjdA+oW->H^L~{rwo6I$nr%lfo z(^XjB=%?GxG3=&>=po^20^z4kn-T{tS)BRAgx1#hDPZBkkP4K$yrvN9CBx-O$|2%w zH+(j3|M%}lQ*|Tm+ZFR8gp;5+ZERY-CQ*Boj7gpJGRNjiGZvyVF2i!6uMes92DnqAIiHinMwyO6%H8OmaA`ZY8nDOcI^vo_QvI`^#U&pC5WC4w^hA<}X-~1UX!j z8`n7+paL6%6`t!fnsMvosZ-MWRHBRri4mJyTVRMc;6*(2$iwjfyM4X#;!ERbl+)O* znXtm3+aVRvS7kAF^%h=TsG|`ojmPY5h8uipoz@FUIlq7CQO6LM4rfN}Y|uk@+!3wB zk4uj^hWKfIbnM-mVM_{#x_5&#o3(W46*ar|?m^(y8Cy4i<}Ma#Bi?p0VH=5q(}|kD z=u}X!k4tx{;1sfLBuczBmW#Mm=H2bPa?H`mh}oRqxpPM}5=OoL@+$zt zP%OLXq6CW>gks#u>BJ;{_Vj8qx9=tKisOp+wRx3o;i5d)X+IfJ%g+m;waZpM`E1_NH#JJ1*1AhNn* z{VJ+YKT(JJ$rUsS*8s~;r#uIs%{3Shnf-SazMJ(q7Fz66MFa=q4a=#l@Glw~9lxtg zS5Q~ih>Ms&qhp*O&)BHHrw8QOktlj6ifLlfk9D1V$|)JwnWPx!*<993tRb@;n(>Go z(E3y)J7G5I-IfFWgOEliK!F3{#;hsR;?_U>Dc<+tzk?34c`SY(u1X}XKnZ_Iw)pys zFT_=+FN*~TacN6y`~#@_F#`JUedV9yBPjL_?|okk3=bxQ3b>)(7SV_8xb)TO0;iK0 zoqPEeaSVyg&drT`;m3Lb(FGcfdF zguRmtdouh!{p@qe&_P68uvzq7x89m#wuU707A=g+-v7Qh|EzOjV(a8+pxqq!hOf?c zX|OX0J1)8Us+6PsR7CQ7H*x-_;LT+hoFA88ctL#by1$FHufLhR6?NZy{)O0!A&eoH zgNgA6P{JvIN@Go3^bp$h^!CSncij~ioOEJbb>8{$gKvB@UVi?$f&tT4M=RE^d8-g= z!AJ8O*VDQd)CmaDT|;$czcWfbl*>VS^%2D>)>>64@7{Dwv{r3mvs0KrbYLx+QgPl` zQq6a4E^iZnImUpkAeb<|XWyPU^^{Yi3H0!s%I>zmO5E;fG)-uhq(s-88z%Yixsdss zBhb)fq^V_6TKs+o9XobxBPrM%y#)PQ(+FtiSepvt`qG1!F3r(^r&m0k?Z}9wM;;Mp zg0yYhx5QFVz?DEUCuxCJKb^03=xXudM-r>mXMEjGP~YF(o09~NU5ex>Xs&UackqJ3 z3VYfWi9hg(>*K7eu8NDU{XksucYhZLoqTdEyY!N{`7ie*BJAzzh$o(YD!M?3xyW3@G;T(!9U^v%45q`U%#x)Wy zYPn(gKgZeceQ#X*xzEOh*IW~qfB5fnf$}RazZjKx&|Mfv&A?#%;fFttPZI)tcllQd z*G`X5|F5sa$4IzL#tgR%FAPJDddEqrOS{{4CEs0}Yx3(2d1{DxyNY_?<~w6yAIX#e zC!Xaq!>Pbk)@>>#TOk%3iHS7eW@lC8i7p;ku_Eq&;DK1QaA7<}wmpQU=%NQvpdl9zr`KFs<>7j?AAPY0; zFxGN`gYlp7ra`>CAG1?5cF^KOP(IM>_!AR>PB`VX^bGUo&d;Z56#RuufF>B?*sk7T z$(H z_U(=iT^McUbJ#hzh_GSA(FFzm(1Y>xLl4IWLV`zs_j~G{oK)>Ysh@iKiP*MrW1_I* zv}a##lq6yyygB{UQ!>8pBFQxw(g1c4s<^66IrI$n=lx=p$fc;Z zIWAVhQmGRZ@|681N>Zys`T0uP?$=S2tLEp)97sQXh_q|*@V2&g2m4PM>`|}QA zRn^;dyr)e;iixf#E%ugUgHdg+6G3l;p%BFGh92Vb&4V)h!viA=4o;5CqAC;(VOZ{KlhxR;ydMxGvlm_FN)L8 zKc8@-HmN{Hu77`&zdgT4MUpTPyU z#^u*u6IIYKj6faEa)HR+RjcCYqmPQEhb+lZ!UwOJbWTU9KYZ?CyPBXrVWRjvVe@SYESF!t@-73){7 ziu*`NZzROg)5zmpC{sQ!A9@`#6+tJW_${>Wswn%JQ@sF$BGu@w{LqKvl*5mR1+!uF?@|Miofrn_##Z8#pMqIg^H?3puT6YgoaZy?sJ zdMgF)aFWXHce!G{h7eBoxiCVPobd^DyNt~?{@Ht!7A~ec<8kcq$H!?XTX%PNDzfpa z%IWZrf>8M`c=r|Y;G>VlJ@-ElU;O&lV^7=890q&(;YZ@O8*j{5^JAa?$5{31Yq${% z1$tD>!EUVDSX0zdG5K_nhHkQgcuy3{j8x-9m@3L8pZ-+*5D#+1va?Yp@R8#h%>c>A zht54O{&34JvHGnw(Nt0%$C2e9y=ZYPBE)##$39BvgU4{Z7(_e!U6(~I2%M|;0feJY zJ|+GWT1DK2DC#6Uz!*x}Pe|2);yrNl&8e(A-rf-NTu_3`_n`|7we@7e#j%69c^`c? zTpA=%8Fn0$Frt0a#<=wI%i@T`4vQBaeU$j#6&QwDBuU7jl78O!$RqK!pZ^SA*5ycp z=S0E(`Pt9n^B=oDSC>s~YEEzIqGV+`f&mzI$v*^`I^gOur=QQh=#p4Y#{Lrg{>2@) z$FV1!5R))!LC0AnA0=)wZeM)}a_gMgG4I%8NLEKu7ah#keu|x}^h+5`5`0x7t7+OYXpu99qBH%YBG*Hh!%A{ek ztNi|UPX%R@UPmBYyyARu3BooEsF^r1?*7Gp$J;2${rBFRBOu<3UQW4QM=4-ejxNYc z_8O8oXRJitG5SR#QH-G%8Sc=|nvENx%@G93))OC3n%EpoxY@%%=5qmvrb#VvDvEOc z#h2ubebToGFXQt^9d44>CZW&WdtZ*ch=~9Bt6#=9i7N--jYjCE7s-6XzI)7m!;fm{ z+e@r@<4=DUTQ+UUaqWpDZY|9%nV>=~c>?-CyDn8UoN_>a=KKY5%o(S}Ax9ma$=kd| zi&AO(`%q*OW&NY0!T@AGqQ`rv95$<;JSk=#vMBlqUDQX7)~&dLxX|%WQxcDPScUXC zL(W_{&L*lzxWu@LsJcB>)ZMN+B;i=v_AQ&DgN{9Q-+i$HrBXM9foAD~he2DJ$mz0%69KmdUY! zSkkvxn3#yPE{<_^Q3)PEB`w1UORK9)t8?+RiPA;qoEu9>gzmrZ-soJnHeUSeqtS`c zH=;cElEF6-o9^AwmT~WfO&ipHyg_#~7&}wO{rQI;ij^(-#;YV^Wf(}UgYqP9ZMgOK;SDyB$ydO4Gj11fpZJcGWA~mtP&k&ud#)ky z;T0=idL>?X;^|x{{w(s^M&h;$`d)taS>z)h(GvhgebM+$j8fM);bJA%b&P_@9LW_< zW0ZH;tk^jn-^}1s-Lza65j5kvg=1GvPntF@17Fcpq)K#wkxqjS5PN8QLULbsSG@h^ zo3RB3EIRbin2yC)Ap~y$E`ynqu@G;jYMDGW$0n^$G!&)W#<3hNqz|&KFORYNfU5zN z$Q3kBuT_^OdX+y?u#>_uu*F_`*l7k1vA~U;ON6EFH|jU+X_@Z-%lSH|_w{Fh(d7{kP}hBM{xvl@dN z?CQp?|04eGybEIE=8aK9IMUSEfB_H_BIA4Syb}c76LU$ZUVZV!cP@yU)_R&d1pXl8H80A9i zSD#)H{X%RmVbY_c*vFPtW1RLx?^p~<9oU=( z?CaPUoml4ztaU2PerCglxa5j=$D)=Aal;LtjVE4uF-{|)8txy=hiNHb#}*a(!0>2n z%glE?=ZlRKyG%9;)k_x4C&)*5jwN1k<(1KA;18mU5F&u{?q9y)AEU3UGxoIai2)xD zOVh{@GJ_d0jO6mh6_91|p+J;zk$RQcF zWS9aFc&DkO4x+b8*a44s5y!4wy(;IT9Sc0`gcIYaV~&a6gZ5qhz2RdM7tULNfmX$4 z5N*rmZNzIsan_m3G9#abmzdDfoWp0mDC%7ptxqx8LD^SddMO_=Yv1?cS*&Zy)afy2 z_ROdQgxYqt=lxOJk%MKL>Gy8jawqgTnqoMB`O2E~m_GBWwwPF*-^39aHV7tpH!baS z5B10GPd=5S3_eZeTmSf_`19|69W9l0NyjLE4*kiihL%Y=W3_GV>KMVpIWFqUGK!8Y ztw>L4*lY%@z`DnrnoGS+gtQVr6`O?n>2L3U@wYCij!Hy7mCHxRU~{>tV0rgmelIAU z*Nc*VKd{+Hf1?(OP_2y~etGQC1%cJdxz53S&Iy;)~+O zU;jF$Be+h&gELP*BQCh`{P@fl{wWS6&U+EXyObnx5lPTK=gHaU%%2;x=gy1Ie&(~W z8YGlXLyS_m>cVjc#ckKM7zZfu8-62=TNx>LdHA=!YJ~jqu{I*0Lqi7!)RmjZy?sc4 z&_(YU?2DW4dmxS{N$%|KjL(1gBk|~;?~KNZ>ZnygQTjfvtzvg+U>OP8*7a*3w2ZdL za`|V`5h$og;kqN^0>>&H4=jv7jz<^0@qIQv;Z5dAsGCIlTjX{8w4U9gK54Ge#;GT7 ziZZs_U$&Mne(&XC1yq<*Dr}xVu*)Qs-|q(QO%Ps{_q= z$W>W`#}2#X!6r~-H3wnoONgv9#`l- zL&(R&IDn?Hs(dD#Zj&h4j3;`V-yTr`TM^)Hes`gO9#atxwC5{ooc6PgCcZcMd{4rG zrkOM2rTg!Ti7FVO!8Y8u1K{h{t_R&qq66>H2cJ(p?C@yD+w>8#9D4XtT=RtZ$xnU~ z8;r5DBZURQ8me)pPgt1H#up?sK?8A5x@JHwpTE^L zHWZyEdmIoDe5}pH((>fP2)RKE;XqGkM{FcSaW=96nOdh)p55q|D?pr_sdko(czYZ} zl!Yp3(J{Dq*WGC~g?o|t!9S6x9mRC&sTX2=S7-K-?ZBs-Lb0Pw!ZKyr>8L0(f%pMfe55QL8l_u- zp2D25e6xQdN+ahd^IcR|@h2g$?R+{@qM)VSM?l(u<)ziWSl{2Uoa4Tf!u6|HTzFAD zM2OKsT-nBN2ehlX-p5$3V8Hi?P%J#tr(B?!8e}*8nT5KZAz_brNevzkijZK4jYTH0{Io)+G_Szx};fAWP3p7EGUD^vWf z;Qh3mXzpjeX#_^e92L=Z0}eDxcp|s;+8Ms5qVk=9`x z^IL=^56!aP%vFXpNv*W{j;AULdn=i!t8k^qn9CatZC@V9(8B9z43#1drc5h!`7}OJ z#%Dw6F6B#slmDMVYTN~nrBLLGtrz%OLFsCga?_?w=}~-a;Z({`pl%;+qoQ?lT;Z#r zK4)H_QK1|r^g+RbgHHkUkw6W6PTgWFEbboi*`pc?u{H|oqj%IDcez2F!NT5%1cJm=%zS6t!+)3M05H5TzD4z>3 zME!hg1iy7xlc=|edVD66?fFVZpJb;23`5`q>ZpfN2IYgG!zlHOto6Dw%7_vZsLQ>9 z>wHwB-U4d>cKF)LZ=aH)vDu@1HY$Ji*Jq^4 zD|s*jI_I)$G<&6)wyJTT?a(ui^G-ZNMz-lo2b`Pfp-%ZAg3C{pOWFCmhB6ZX5LY2- z$f9W{eNlb_(j@3oiMTu_qx8~ZI5&y!KJl-C>wNsBb#|hV_OG5@`8ucW*t4%TRN1O% z(WhLuL+=Q#yAi(n2t^kr7v3r-n4xW6$2Eq3hG*lWKJsUN%sOaZy!GNMsX#ty(5Eh! zw3d`ESLrxbP(T`2(D@i+R|E0^wZcpExd?K}okgw6T$XD)!I4Z{sXAOXq8 zxoa4D6vL5RQb)a$TU+ya0_#?Ju) z$avAo7*iJ|Vs=8P2<+p%MJ&~gHgFlB5p^hFIp%XFRSw^UslZhpEn5`Uy);;i>&$rh z;JbESV5r6-+BH!wi*YU$kaO1Q>{qi);iPWdQYz6~lykVElAygmuP-G&ERF@VtJ`@7 z#&5w*IZay!UEb@hz$%E5L?8L#ivxW1OK~v~cL`3M#A3X>B1WlmtQ6DWcyUR2G~te0 zQaKB*%n1Z11r}3YL(0crLz9Bj`K2){1lsV`k)r!Lc)6Ow^3{8O9IBeeZ(q9G%hh`* zyNhxi@XrvUiayn%WOHd(dB_VBKx0gW?{ijnqA(^SJ{(~(bskbyfx(wjcOkG+c795q zPgt%?8KM_3(*#*pZE}=KrSeeL>Q@3t>2D)*=#73f>BNa6@c^|#4qIMGej&jHs zdl{1zl$44f%-38ua-?BDAu6dMf>jh0U&O-VIPQDryXi2_?xVCv&K-JZih zZW8P`TrPI?0Co6IN|m>s>s==3eWTJOB6+jPF4|C$jSGDzQl5jc3PP9I&Zj6im*d_q zBg0f3pR!y*IlkspqaAUQVjMz6r@?Uy71JJ3@laxKHXJV^!{(gBb(&Q{fMo0NX@GOn zxPAc&;j3B>tQ^zWG*F*nTu0k8_%z0x%RZIsjHi7&TqjhmLP>X1?+!lKLH9Obb|2?W zZse&l(i0s(VUMMUqK%o*x&Y%*iCg(@9Iujzhz|AS%iQ>_LTtrQHTtRa%RS{n9eNbK zo2#>wPY&g=D_4!s@zG9{)uh@{90SZ z_=xs`l7a`sOUqS8gJ~;qP*!BqE!k-^e3_^MZzfjgper^=XaK3UtumAjJI1JW zXvHduF5WA283x3XZkZfEqh8&!Rw=5;G~K`;9W~(+$?Tp2H~zG~Az~PjbG+CQ1I|#t z$gGl1+}{UZgdoEdmTp|sX@BE`t7I>S*KqF3M^7GF)0mDR1KAE50j0 z$9%&wf)(8rrvDtJaPu8VqJsU)l~NotSut@yx?HiMnf9QNXGcBTP!>o5Ji(Lh?tB4O-Cv9Y|1$K z3uk5Wa$}WRI-5S9iVd(m zX&*dh9OCTA9y2~EWt#wDCJ`?7S9!HGa*k|Vq*Y+9oVN4EoVkz|!c|C#%V+UWuHX)o zwJev3x+Vu{MKy(12tg>37700&p)P(GV&}rZx5FjUK9K@4$0=D88WmC_(e?V$fQ?*l zoIREE^SM@cwuNId(KhsT(mT@P z>lnSxgi_;DsWndfQxA^(jX;$TC>+mpXWqgQC5&pnSJT2n-5t~ z2@5y06~IQGskrvrFik^L4qTdsqXDRJ>Om!xdy9t;<}HRF3bT)@D=|nPckUvfuI?_% ztI!%cbdb3%x1g`^6E#&9iOWL#sZ6fgfwqkE(yHl<9Wv%q8I0>Jo6maWw_-FKuI9XG zKt|Y8Y4dG=)M?nn&!o+^CJ-)I*7N<;t%p;0d;qbruL|xv ztm-oS0pv!8V)E4K(Tfu5`g?{oEl{1l2yeTJ1rp#hnkm&|k=lm^?i5*n}(i4YaU zC(%Qu)zVNG6$$xs=)5Q*qqOFnKBJ6^W+x2`Mqp05XUbdW2m&-CR!qL8+hta%tl5gz z>lqZEy_Qlcm+0pds_gZZ-6ksqBQky}EPRzV+i0PX$heoiitDO5X6)v1>G4f=CK`3L zC|kWb(AO#EbC6(`FPf_2yzys&Ug9d;neQAeB8hU~*jLLGP(@aO{$(alxHI-tKaQcH zP(*uLG<6oJO!ZDfPu@_0nQ-O)RbnQj8mglPdJczkGRG> zRS%*R;}Z7`4@P5YWz4Rti}8xG*woP(Te`aA;&aZ5zI|Qs+H0>CXoLq7tE+PTg7$Io zb=St^1@mLeTWjL4cmA2Od-Ki9_QmtkvE;-P;~f{A9~Ja})pO6sqj%pEBh=$d*J|m2 zN#Kd+pC9cTH^=dpUP9lC;#dFngV^0cHp2DWdr?PdZzwB|cbsxs9C_-=v2)k1c;J>> zW6iF%G{)xY>S!*jic>B;FWzzC`Ekn+e-b-ZzZGYH;F_3o*wQHO8_3(yE2=Bwg{Pj0 zEhy=;k3S0HBFjZ3WdMT;2u#zUjFqd#dotX?RNrK)yWWMB88glRjTBNn3hV6!2ZlCu zbGqkzH6co?m6*V&#vOE2EHN1c ztDsd~5N3Qkhq~i?^z%(3GLWs3j^#V*;jbRZ_nazYJArm{}F)h>AN*iYwQ@K?CK%62$x&mEd4o6YmFt&%23?x5q#t?NZ*PhnPDbE5v19t0UAK?ZvRo#$BjU1+Sf0Xoi+@u6L7%0)%np zJ_PEhiZf9veJ;$Qj;R=+{BlOhQ2#ak!z1 zLutM;U6-7R8{b8CV{eC}46__+vo7^OVACV&M+^%bl0zKn6%H&m${3%zRdJQ18h%Qj z%0EVXh91gl$x%ndqT`N>RWH62qYzklaU8lNfeH~`Qlb1WFJx5+$XOeehe8mbrW-F6 zT(=#RfC5X6YqSor(x?*QS|>#GLqIQth|ns0DKU}dQ_&z?N2)@Ih{n5K?W>)A?1_&` z(dB#2*vVw8k2;MV%MqUU-a|%O{3yM4_{#CsUdnYLtljJygY@?B*{K})9EMT(zD@e+ zSfH!LttcNxi-9`Fyt}lFGDJaq9|G!!P`DD@?f4+s{qR5x4}gmULnKBc(KAS_=XFCv z1pYqjl1x{$pli|E;UHD;0;6j`+f>YlRZ9*j-`LJAQ)wG=a5S8>6 z9Ku7P)clr@zG5d6A-?OK^d82nDx#jsnW}#3QrSIc-HtwJ1e}770$-g3u&fy9OJVbs zlU(PpnmUlk$t8}w6g&W^Nf|#!Q67Eh?)>j9T^)@e`f7m)6H(ZDs&eGl7=Czj522G*6&+@ zT}0sm2?yD&+Y6MJ2BJF?rFEZf##1T^RVHmdW@S8SDBL#U6O27!N~C}^AZMg}XQpmb zlyWsyqM$wp-WnQ-Oe$w#HpM;{=*yfp`-P%OwTj25Geu_ZZjLDzV9enpWh4JoOs_(& zl<~W6Uaw`CmF4~LKWOob3M7rANRpM6rntZ{&X%GR>B zR~UBlyoTiTs7W63;=n}jBp?@fVa0PGwbx>>5%K>5>-+FzA$?J%00000NkvXXu0mjf DxOse= literal 0 HcmV?d00001 diff --git a/src/Jackett/Indexers/PirateTheNet.cs b/src/Jackett/Indexers/PirateTheNet.cs new file mode 100644 index 000000000..188ec12ad --- /dev/null +++ b/src/Jackett/Indexers/PirateTheNet.cs @@ -0,0 +1,211 @@ +using CsQuery; +using Jackett.Models; +using Jackett.Services; +using Jackett.Utils; +using Jackett.Utils.Clients; +using Newtonsoft.Json.Linq; +using NLog; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Jackett.Models.IndexerConfig; +using System.Collections.Specialized; +using System.Globalization; + +namespace Jackett.Indexers +{ + public class PirateTheNet : BaseIndexer, IIndexer + { + private string SearchUrl { get { return SiteLink + "torrentsutils.php"; } } + private string LoginUrl { get { return SiteLink + "takelogin.php"; } } + private string CaptchaUrl { get { return SiteLink + "simpleCaptcha.php?numImages=1"; } } + TimeZoneInfo germanyTz = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); + private readonly List categories = new List() { "1080P", "720P", "BDRip", "BluRay", "BRRip", "DVDR", "DVDRip", "FLAC", "MP3", "MP4", "Packs", "R5", "Remux", "TVRip", "WebRip" }; + + new ConfigurationDataBasicLoginWithRSSAndDisplay configData + { + get { return (ConfigurationDataBasicLoginWithRSSAndDisplay)base.configData; } + set { base.configData = value; } + } + + public PirateTheNet(IIndexerManagerService i, Logger l, IWebClient w, IProtectionService ps) + : base(name: "PirateTheNet", + description: "A movie tracker", + link: "http://piratethe.net/", + caps: new TorznabCapabilities(), + manager: i, + client: w, + logger: l, + p: ps, + configData: new ConfigurationDataBasicLoginWithRSSAndDisplay()) + { + this.configData.DisplayText.Value = "Only the results from the first search result page are shown, adjust your profile settings to show the maximum."; + this.configData.DisplayText.Name = "Notice"; + + AddCategoryMapping("1080P", TorznabCatType.MoviesHD); + AddCategoryMapping("720P", TorznabCatType.MoviesHD); + AddCategoryMapping("BDRip", TorznabCatType.MoviesSD); + AddCategoryMapping("BluRay", TorznabCatType.MoviesBluRay); + AddCategoryMapping("BRRip", TorznabCatType.MoviesSD); + AddCategoryMapping("DVDR", TorznabCatType.MoviesDVD); + AddCategoryMapping("DVDRip", TorznabCatType.MoviesSD); + AddCategoryMapping("FLAC", TorznabCatType.AudioLossless); + AddCategoryMapping("MP3", TorznabCatType.AudioMP3); + AddCategoryMapping("MP4", TorznabCatType.AudioOther); + AddCategoryMapping("Packs", TorznabCatType.Movies); + AddCategoryMapping("R5", TorznabCatType.MoviesDVD); + AddCategoryMapping("Remux", TorznabCatType.Movies); + AddCategoryMapping("TVRip", TorznabCatType.MoviesOther); + AddCategoryMapping("WebRip", TorznabCatType.MoviesWEBDL); + } + + public async Task ApplyConfiguration(JToken configJson) + { + configData.LoadValuesFromJson(configJson); + + var result1 = await RequestStringWithCookies(CaptchaUrl); + var json1 = JObject.Parse(result1.Content); + var captchaSelection = json1["images"][0]["hash"]; + + var pairs = new Dictionary { + { "username", configData.Username.Value }, + { "password", configData.Password.Value }, + { "captchaSelection", (string)captchaSelection } + }; + + var result2 = await RequestLoginAndFollowRedirect(LoginUrl, pairs, result1.Cookies, true, null, null, true); + + await ConfigureIfOK(result2.Cookies, result2.Content.Contains("logout.php"), () => + { + var errorMessage = "Login Failed"; + throw new ExceptionWithConfigData(errorMessage, configData); + }); + return IndexerConfigurationStatus.RequiresTesting; + } + + public async Task> PerformQuery(TorznabQuery query) + { + List releases = new List(); + + var searchString = query.GetQueryString(); + var searchUrl = SearchUrl; + var queryCollection = new NameValueCollection(); + queryCollection.Add("action", "torrentstable"); + queryCollection.Add("viewtype", "0"); + queryCollection.Add("visiblecategories", "Action,Adventure,Animation,Biography,Comedy,Crime,Documentary,Drama,Eastern,Family,Fantasy,History,Holiday,Horror,Kids,Musical,Mystery,Romance,Sci-Fi,Short,Sports,Thriller,War,Western"); + queryCollection.Add("page", "1"); + queryCollection.Add("visibility", "showall"); + queryCollection.Add("compression", "showall"); + queryCollection.Add("sort", "added"); + queryCollection.Add("order", "DESC"); + queryCollection.Add("titleonly", "true"); + queryCollection.Add("packs", "showall"); + queryCollection.Add("bookmarks", "showall"); + queryCollection.Add("subscriptions", "showall"); + queryCollection.Add("skw", "showall"); + queryCollection.Add("advancedsearchparameters", ""); + + if (!string.IsNullOrWhiteSpace(searchString)) + { + // search keywords use OR by default and it seems like there's no way to change it, expect unwanted results + queryCollection.Add("searchstring", searchString); + } + + var cats = MapTorznabCapsToTrackers(query); + var hiddenqualities = ""; + if (cats.Count > 0) + { + hiddenqualities = String.Join(",", categories.Where(cat => !cats.Contains(cat))); + } + queryCollection.Add("hiddenqualities", hiddenqualities); + + searchUrl += "?" + queryCollection.GetQueryString(); + + var results = await RequestStringWithCookiesAndRetry(searchUrl); + try + { + CQ dom = results.Content; + /* + // parse logic for viewtype=1, unfortunately it's missing the release time so we can't use it + var movieBlocks = dom["table.main"]; + foreach (var movieBlock in movieBlocks) + { + var qMovieBlock = movieBlock.Cq(); + + var movieLink = qMovieBlock.Find("tr > td[class=colhead] > a").First(); + var movieName = movieLink.Text(); + + var qDetailsBlock = qMovieBlock.Find("tr > td.torrentstd > table > tbody > tr"); + var qDetailsHeader = qDetailsBlock.ElementAt(0); + var qDetailsTags = qDetailsBlock.ElementAt(1); + var qTorrents = qDetailsBlock.Find("td.moviestorrentstd > table > tbody > tr:eq(0)"); + + foreach (var torrent in qTorrents) + { + var qTorrent = torrent.Cq(); + var qCatIcon = qTorrent.Find("td:eq(0) > img"); + var qDetailsLink = qTorrent.Find("td:eq(1) > a:eq(0)"); + var qSeeders = qTorrent.Find("td:eq(1) > b > a[alt=\"Number of Seeders\"]"); + var qLeechers = qTorrent.Find("td:eq(1) > span[alt=\"Number of Leechers\"]"); + var qDownloadLink = qTorrent.Find("td:eq(1) > a:has(img[alt=\"Download Torrent\"])"); + } + } + */ + + var rows = dom["table.main > tbody > tr"]; + foreach (var row in rows.Skip(1)) + { + var release = new ReleaseInfo(); + release.MinimumRatio = 1; + release.MinimumSeedTime = 72 * 60 * 60; + + var qRow = row.Cq(); + + var qCatIcon = qRow.Find("td:eq(0) > img"); + var qDetailsLink = qRow.Find("td:eq(1) > a:eq(0)"); // link to the movie, not the actual torrent + var qSeeders = qRow.Find("td:eq(8)"); + var qLeechers = qRow.Find("td:eq(9)"); + var qDownloadLink = qRow.Find("td > a:has(img[alt=\"Download Torrent\"])"); + var qPudDate = qRow.Find("td:eq(5) > nobr"); + var qSize = qRow.Find("td:eq(6)"); + + var catStr = qCatIcon.Attr("alt"); + release.Category = MapTrackerCatToNewznab(catStr); + + release.Link = new Uri(SiteLink + qDownloadLink.Attr("href").Substring(1)); + release.Title = qDetailsLink.Text(); + release.Comments = new Uri(SiteLink + qDetailsLink.Attr("href")); + release.Guid = release.Link; + + var dateStr = qPudDate.Text().Trim(); + DateTime pubDateUtc; + var Timeparts = dateStr.Split(new char[] { ' ' }, 2)[1]; + if (dateStr.StartsWith("Today ")) + pubDateUtc = DateTime.SpecifyKind(DateTime.UtcNow.Date, DateTimeKind.Unspecified) + DateTime.ParseExact(dateStr.Split(new char[] { ' ' }, 2)[1], "hh:mm tt", System.Globalization.CultureInfo.InvariantCulture).TimeOfDay; + else if (dateStr.StartsWith("Yesterday ")) + pubDateUtc = DateTime.SpecifyKind(DateTime.UtcNow.Date, DateTimeKind.Unspecified) + + DateTime.ParseExact(dateStr.Split(new char[] { ' ' }, 2)[1], "hh:mm tt", System.Globalization.CultureInfo.InvariantCulture).TimeOfDay - TimeSpan.FromDays(1); + else + pubDateUtc = DateTime.SpecifyKind(DateTime.ParseExact(dateStr, "MMM d yyyy hh:mm tt", CultureInfo.InvariantCulture), DateTimeKind.Unspecified); + + release.PublishDate = pubDateUtc.ToLocalTime(); + + var sizeStr = qSize.Text(); + release.Size = ReleaseInfo.GetBytes(sizeStr); + + release.Seeders = ParseUtil.CoerceInt(qSeeders.Text()); + release.Peers = ParseUtil.CoerceInt(qLeechers.Text()) + release.Seeders; + + releases.Add(release); + } + } + catch (Exception ex) + { + OnParseError(results.Content, ex); + } + + return releases; + } + } +} diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 0bb407a9d..dedd70ba4 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -161,6 +161,7 @@ + @@ -430,6 +431,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest