+
    \i,                       a  R t)0 t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHtHtHtHtHt ^ RIHtHt ^ RIt^ RIHt  ! R	 R
4      t]! 4       t]P9                  R4       Rt]P<                  P?                  ]P<                  PA                  ]P<                  PC                  ]"4      4      ]4      t#RRRRRRR^/s$] ^ k ]! 4       t%R R lt&R R lt']&! 4         ! R R4      t(R# )    N)datetime)	CookieJar)Pool)Lock)AnyDictListTupleUnion)unquote	urlencode)prettyPrinterc                   L   a  ] tR t^t o RtRtV 3R lR ltV 3R lR ltRtV t	R# )	ProxyManager
http_proxyhttps_proxyc                   < V ^8  d   QhRR/#    returnN )format__classdict__s   ",/config/qBittorrent/nova3/engines/jackett.py__annotate__ProxyManager.__annotate__   s     D D$ D    c                    \         P                  P                  V P                  R 4      V n        \         P                  P                  V P
                  R 4      V n        R# ) N)osenvirongetHTTP_PROXY_KEYr   HTTPS_PROXY_KEYr   )selfs   &r   __init__ProxyManager.__init__   s;    **..)<)<bA::>>$*>*>Cr   c                $   < V ^8  d   QhRS[ RR/# )r   enabler   N)bool)r   r   s   "r   r   r      s      4 D r   c                   V'       dP   V P                   \        P                  V P                  &   V P                  \        P                  V P
                  &   MT\        P                  P                  V P                  R 4       \        P                  P                  V P
                  R 4        \        P                  ! V4       R #   \         d     R # i ; iN)
r   r    r!   r#   r   r$   pophelpersenable_socks_proxyAttributeError)r%   r)   s   &&r   enable_proxyProxyManager.enable_proxy   s    .2ooBJJt**+/3/?/?BJJt++,JJNN4..5JJNN4//6	&&v. 		s   -C CC)r   r   N)
__name__
__module____qualname____firstlineno__r#   r$   r&   r1   __static_attributes____classdictcell__r   s   @r   r   r      s%     !N#OD D r   r   Fzjackett.jsonapi_keyYOUR_API_KEY_HEREurlzhttp://127.0.0.1:9117tracker_firstthread_countc                    V ^8  d   QhRR/# r   r   )r   s   "r   r   r   B   s      D r   c                      \        \        R R7      ;_uu_ 4       p \        P                  ! V 4      sRRR4       \        ;QJ d    R R 4       F  '       g   K   RM	  RM! R R 4       4      '       d
   R\        R&   R\        9  d   ^\        R&   \        4        R# R#   + '       g   i     Lu; i  \
         d    R\        R&    L\         d    \        4         Li ; i)	utf-8encodingNT	malformedc              3   2   "   T F  q\         9  x  K  	  R # 5ir,   )CONFIG_DATA).0items   & r   	<genexpr>%load_configuration.<locals>.<genexpr>P   s     
S/Rt{"/Rs   Fr>   )r:   r=   r<   )	openCONFIG_PATHjsonloadrF   
ValueError	Exceptionsave_configurationanyfs    r   load_configurationrU   B   s    	+00A))A,K 1 s
S/R
Ssss
S/R
SSS#'K  [(&(N# ) 10 (#'K  s9   B2 BB2 B/	*B2 /B2 2CCCCc                    V ^8  d   QhRR/# r   r   )r   s   "r   r   r   Y   s     C CD Cr   c            
          \        \        R RR7      ;_uu_ 4       p V P                  \        P                  ! \
        ^RR7      4       RRR4       R#   + '       g   i     R# ; i)wrA   rB   T)indent	sort_keysN)rK   rL   writerM   dumpsrF   rS   s    r   rQ   rQ   Y   s;    	k3	1	1Q	

;qDAB 
2	1	1	1s   -AA#	c                   v  a  ] tR t^bt o Rt]R,          R),          R8w  d
   ]R,          M]R,          RR) t]R,          t]R,          tRRRR	.R
R.RRR.RR.RR.RR.RR./t	V 3R lR lt
R*V 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R  lR! ltV 3R" lR# ltV 3R$ lR% ltV 3R& lR' ltR(tV tR# )+jackettJackettr<   /Nr:   r>   allanime5070books8000games10004000movies2000music3000softwaretv5000c                $   < V ^8  d   QhRS[ RR/# )r   download_urlr   Nstr)r   r   s   "r   r   jackett.__annotate__r   s     
7 
7S 
7T 
7r   c                   VP                  R 4      '       d   \        VR,           V,           4       \        P                  R4       V P	                  V4      p\        P                  R4       Ve3   VP                  R 4      '       d   \        VR,           V,           4       R# \        \
        P                  ! V4      4       R# )zmagnet:? TFN)
startswithprintproxy_managerr1   get_responser.   download_file)r%   rq   responses   && r   download_torrentjackett.download_torrentr   s    "":..,$|34""4($$\2""5)H$7$7
$C$C(S.</0'''56r   c                *   < V ^8  d   QhRS[ RS[ RR/# )r   whatcatr   Nrr   )r   r   s   "r   r   rt   ~   s"     ? ?3 ?S ?T ?r   c                `   \        V4      pV P                  VP                  4       ,          pR \        9   d   V P	                  RV4       R# V P
                  R8X  d   V P	                  RV4       R# V P                  ^8  d   . pV P                  V4      pV F  pVP                  WV34       K  	  \        \        \        V4      V P                  4      4      ;_uu_ 4       pVP                  V P                  V4       RRR4       R# V P                  WR4       R#   + '       g   i     R# ; i)rD   zmalformed configuration fileNr;   zapi key errorra   )r   supported_categorieslowerrF   handle_errorr:   r>   get_jackett_indexersappendr   minlenstarmapsearch_jackett_indexer)r%   r   r   categoryargsindexersindexerpools   &&&     r   searchjackett.search~   s    t},,SYY[9 +%<dC <<..ot4 q BDD006H#TW56 $c#h-):):;<<T88$? =< ''> =<<s   !DD-	c                6   < V ^8  d   QhRS[ RS[S[ ,          /# )r   r   r   )rs   r	   )r   r   s   "r   r   rt      s       c r   c                x   \        R V P                  3RR.4      pV P                   RV 2pV P                  V4      pVf   V P	                  RV4       . # \
        P                  P                  P                  V4      p. pVP                  R4       F%  pVP                  VP                  R,          4       K'  	  V# )apikeyz+/api/v2.0/indexers/all/results/torznab/api?z%connection error getting indexer listr   id)tr   )
configuredtrue)r   r:   r<   rz   r   xmletreeElementTree
fromstringfindallr   attrib)r%   r   params
jacket_urlr|   response_xmlr   r   s   &&      r   r   jackett.get_jackett_indexers   s    t||$"
 
 z!LVHU
$$Z0EtLIyy,,77A #++I6GOOGNN401 7r   c                T   < V ^8  d   QhRS[ RS[S[S[ ,          R3,          RS[ RR/# )r   r   r   N
indexer_idr   )rs   r   r	   )r   r   s   "r   r   rt      s>     N1 N13 N1%S	4:P N1^a N1fj N1r   c                  a R  R loR V3R llpRV P                   3RV3.pVe#   VP                  RRP                  V4      34       \        V4      pV P                   R	V R
V 2pV P                  V4      pVf   V P                  RV,           V4       R# \        P                  P                  P                  V4      p	V	P                  R4      p
V
f   R# V
P                  R4       EF  p/ pVP                  R4      pVe   VP                  pMK*  V! VP                  R4      4      p\        R,          '       d   RV RV 2VR&   MV RV R2VR&   VP                  V P                  R4      4      VR&   VR,          e   VR,          P                   R,          VR&   M8VP                  R4      VR&   VR,          e   VR,          P                  VR&   MK  VP                  R4      VR&   VR,          f   R'MS! VR,          P                  4      R,           VR&   VP                  V P                  R4      4      VR&   VR,          f   R'M"\#        VR,          P                   R,          4      VR&   VP                  V P                  R4      4      VR&   VR,          f   R'M"\#        VR,          P                   R,          4      VR&   VR,          R'8w  d+   VR,          R'8w  d   VR;;,          VR,          ,          uu&   VP                  R4      VR &   VR ,          e   VR ,          P                  VR &   M7VP                  R!4      VR &   VR ,          f   R"MVR ,          P                  VR &   V P                  VR#&    \$        P&                  ! V! VP                  R$4      4      R%4      p\#        VP)                  4       4      VR&&   V P-                  V4       EK  	  R#   \*         d	    R'TR&&    L*i ; i)(c                J    V ^8  d   QhR\         \        R3,          R\        /# )r   sNr   )r   rs   )r   s   "r   r   4jackett.search_jackett_indexer.<locals>.__annotate__   s#     	. 	.U39% 	.# 	.r   c                     V e   V # R# Nr   r   )r   s   &r   toStr-jackett.search_jackett_indexer.<locals>.toStr   s    1-2-r   c                    V ^8  d   QhR\         \        P                  P                  P                  R3,          R\
        /# )r   eNr   )r   r   r   r   Elementrs   )r   s   "r   r   r      s4     	: 	:5!6!6!>!>!DE 	:# 	:r   c                 <   < S! V e   V P                   4      # R4      # r   )text)r   r   s   &r   getTextProp3jackett.search_jackett_indexer.<locals>.getTextProp   s    1=99b99r   r   qNr   ,z/api/v2.0/indexers/z/results/torznab/api?zconnection error for indexer: channelrH   titlejackettindexerr=   [z] namez []	magneturllinkvaluesizez Bseedersseedspeersleechcomments	desc_linkguidr   
engine_urlpubDatez%a, %d %b %Y %H:%M:%S %zpub_date)r:   r   joinr   r<   rz   r   r   r   r   r   findr   r   rF   generate_xpathr   intr   strptime	timestamprP   pretty_printer_thread_safe)r%   r   r   r   r   
params_tmpr   r   r|   r   r   resultres	title_tmpr   trackerdater   s   &&&&             @r   r   jackett.search_jackett_indexer   s   	.	: 	:
 t||$$K

 uchhx&89::&z!4ZL@UV\U]^
$$Z0>KTRyy,,77A##I.?oof-F"$CG,I$!!&++.>"?@G?++ !'"UG4F!&r'!4F ++d&9&9+&FGCK6{&!&k009F$kk&1Fv;*"%f+"2"2CK ++f-CK #F 3"%F@P@P:QTX:XCK!;;t':':9'EFCL!$W!523s7|?R?RSZ?[;\CL!;;t':':7'CDCL!$W!523s7|?R?RSZ?[;\CL7|r!c'lb&8GG,%{{:6C;+#&{#3#8#8K #);;v#6K ),[)9)A2s;GWG\G\K  !%C%((V[[5K)LNhi"%dnn&6"7J ++C0k .d  %"$J%s   =AOO0/O0c                &   < V ^8  d   QhRS[ RS[ /# )r   tagr   rr   )r   r   s   "r   r   rt      s     P P# P# Pr   c                    R V,          # )z8./{http://torznab.com/schemas/2015/feed}attr[@name="%s"]r   )r%   r   s   &&r   r   jackett.generate_xpath   s    ICOOr   c                :   < V ^8  d   QhRS[ RS[S[ R3,          /# )r   queryr   N)rs   r   )r   r   s   "r   r   rt      s$      # %T	*: r   c                   R p \         P                  P                  \         P                  P                  \	        4       4      4      pVP                  V4      P                  4       P                  R4      pV#   \         P                  P                   d)   pTP                  R8X  d   TP                  p R p?T# R p?i\         d     T# i ; i)NrA   i.  )urllibrequestbuild_openerHTTPCookieProcessorr   rK   readdecode	HTTPErrorcoder<   rP   )r%   r   r|   openerr   s   &&   r   rz   jackett.get_response   s    
	 ^^001S1ST]T_1`aF{{5)..077@H  ~~'' 	!vv}55   		s$   A2A8 8CB::CCCc                *   < V ^8  d   QhRS[ RS[ RR/# )r   	error_msgr   r   Nrr   )r   r   s   "r   r   rt     s"      c   r   c                    V P                  R V P                  RRV R\         RV R2RRRRRRR	V P                  R
RRR/4       R# )r   r   z	Jackett: z]! Right-click this row and select 'Open description page' to open help. Configuration file: 'z' Search: ''r   r   r   r   r   zRhttps://github.com/qbittorrent/search-plugins/wiki/How-to-configure-Jackett-pluginr   Nr   )r   r<   rL   )r%   r   r   s   &&&r   r   jackett.handle_error  s     	''DHHi	{  +H  IT  HU  U`  ae  `f  fg  hBRR$((m	)
 		r   c                :   < V ^8  d   QhRS[ S[S[3,          RR/# )r   
dictionaryr   Nr   rs   r   )r   r   s   "r   r   rt     s#     ( (T#s(^ ( (r   c                    V P                  V4      p\        ;_uu_ 4        \        V4       R R R 4       R #   + '       g   i     R # ; ir,   )escape_pipePRINTER_THREAD_LOCKr   )r%   r   escaped_dicts   && r   r   "jackett.pretty_printer_thread_safe  s/    ''
3  ,' !   s	   6A	c                R   < V ^8  d   QhRS[ S[S[3,          RS[ S[S[3,          /# )r   r   r   r   )r   r   s   "r   r   rt     s+      d38n c3h r   c                    VP                  4        F;  p\        W,          \        4      '       g   K!  W,          P                  R R4      W&   K=  	  V# )|z%7C)keys
isinstancers   replace)r%   r   keys   && r   r   jackett.escape_pipe  s@    ??$C*/3//",/"9"9#u"E
 % r   r   r   )ra   )r3   r4   r5   r6   r   rF   r<   r:   r>   r   r}   r   r   r   r   rz   r   r   r   r7   r8   r9   s   @r   r^   r^   b   s     D +E 22 6# =+e
;uCUVYWYCZC)$G~.Lt&&&&!6(&VHvh	
7 
7? ?2 $N1 N1`P P  ( (
 r   r^   c                b    V ^8  d   Qh/ ^ \         9   d   \        \        \        3,          ;R&   # )r   rF   )__conditional_annotations__r   rs   r   )r   s   "r   r   r      s&    d T#s(^ e r   )*r  rM   r    urllib.requestr   xml.etree.ElementTreer   r   http.cookiejarr   multiprocessing.dummyr   	threadingr   typingr   r   r	   r
   r   urllib.parser   r   r.   novaprinterr   r   ry   r1   CONFIG_FILEpathr   dirnamerealpath__file__rL   rF   r   rU   rQ   r^   r   )r  s   @r   <module>r     s     	    $ &  0 0 +  % 4    5 !
 ggll277??277+;+;H+EFT"	"UB	  f .C
  A Ar   