
oTc        4   @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z y d  d l	 m
 Z
 Wn! e k
 r d  d l
 m
 Z
 n Xd  d l Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z m Z m Z m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& m  Z  m' Z' m( Z( d  d l) j* Z* d  d l+ m, Z, d  d l- m. Z. m/ Z/ m0 Z0 m1 Z1 d  d l2 m3 Z3 d d	 d
 g Z4 e j5 d e j6  Z7 e j5 d e j6  Z8 e j5 d  Z9 e j5 e e j6  Z: e j5 d e j6  Z; e j5 d e j6  Z< e j5 d  Z= d d f d d f d d f d d f d d f f Z> d e, f d     YZ? d d f d d f d d f d d f d d  f d! d" f d# d$ f d% d& f d' d( f d) d* f d+ d, f d- d. f d/ d f d0 d1 f d2 d3 f d4 d4 f d5 d5 f d6 d6 f d7 d7 f d8 d8 f d9 d9 f d7 d7 f d: d: f f Z@ d	 e, f d;     YZA d< e jB jC jD f d=     YZE d> d f d? d@ f dA dB f dC dD f dE d f dF dG f dH dI f dJ dK f dL dM f dN dO f dP dQ f dR dS f dT dU f dV dW f dX dY f dZ d[ f d\ d] f d^ d( f d_ d_ f d` da f db dc f dd de f df dg f dh di f dj dk f dl dm f dn do f dp dp f dq dq f dr dr f d6 d6 f ds ds f dt dt f du du f dv dv f dw dw f dx dy f dz d{ f d| d} f d~ d f d d f d d f d d f d d f d d f d d f d d f d d f d d f d d f d d f f3 ZF d
 e, f d     YZG d   ZH d   ZI d   ZJ d   ZK e j5 d e j6  ZL eM d  ZN d   ZO d d  ZP d   ZQ d   ZR d   ZS d   ZT d   ZU d   ZV d S(   iN(   t   StringIO(   t   sample_matcht   GIGIt   ATTRIB_FILEt	   JOB_ADMINt   DEFAULT_PRIORITYt   LOW_PRIORITYt   NORMAL_PRIORITYt   HIGH_PRIORITYt   PAUSED_PRIORITYt   TOP_PRIORITYt   DUP_PRIORITYt   REPAIR_PRIORITYt   RENAMES_FILEt   Status(   t   to_unitst   cat_to_optst   cat_convertt   sanitize_foldernamet   get_unique_patht   get_admin_patht
   remove_allt   format_source_urlt   sanitize_filenamet   globberR   t   int_convt   set_permissions(   t   TryList(   t   unicodert   platform_encodet   latin1t
   name_fixer(   t   Ratingt   Articlet   NzbFilet	   NzbObjects   msgid_(\w+) (.+)(\.nzb)$s   (.+)(\.nzb)s	   "([^"]*)"s   (.*)\.vol(\d*)\+(\d*)\.par2s   \.par2\.\d+s
   \.\w{2,5}$t   articlet   art_idt   bytest   partnumt   nzfc           B   s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   sY   t  j |   d  |  _ t |  _ | |  _ d  |  _ | |  _ | |  _	 d |  _
 | |  _ d  S(   Ni    (   R   t   __init__t   Nonet   fetchert   Falset   allow_fill_serverR$   R%   R&   R'   t   triesR(   (   t   selfR$   R&   R'   R(   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR)   L   s    							c         C   s|   | j  r# |  j r# t j   r# d  S|  j rx |  j |  rx | |  _ |  j d 7_ t j rt t	 j
 d |  j  n  |  Sd  S(   Ni   s   Article-try = %s(   t
   fillserverR-   t   sabnzbdt   active_primariesR*   R+   t   server_in_try_listR.   t   LOG_ALLt   loggingt   debug(   R/   t   server(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   get_articleY   s    		 c         C   s1   |  j  s* t j d |  j j j  |  _  n  |  j  S(   NR$   (   R%   R1   t
   get_new_idR(   t   nzot   workpath(   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt
   get_art_ide   s    	!c         C   s4   i  } x' t  D] } |  j | d | | d <q W| S(   Ni   i    (   t   ArticleMappert   __dict__(   R/   t   dict_t   tup(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   __getstate__k   s    c         C   s   xP t  D]H } y | | d |  j | d <Wq t k
 rN d  |  j | d <q Xq Wt j |   d  |  _ t |  _ d |  _	 d  S(   Ni    i   (
   R=   R>   t   KeyErrorR*   R   R)   R+   R,   R-   R.   (   R/   R?   R@   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   __setstate__r   s    		c         C   s    d |  j  |  j |  j |  j f S(   Ns6   <Article: article=%s, bytes=%s, partnum=%s, art_id=%s>(   R$   R&   R'   R%   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   __repr__   s    (   t   __name__t
   __module__R)   R8   R<   RA   RC   RD   (    (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR!   I   s   					t   _NzbFile__datet   datet   _NzbFile__subjectt   subjectt   _NzbFile__filenamet   filenamet   _NzbFile__typet   typet   _NzbFile__ispar2filet   is_par2t   _NzbFile__volt   volt   _NzbFile__blockst   blockst   _NzbFile__setnamet   setnamet   _NzbFile__extraparst	   extraparst   _NzbFile__initial_articlet   initial_articlet   _NzbFile__articlest   articlest   _NzbFile__decodetablet   decodetablet   _NzbFile__bytest   _NzbFile__bytes_leftt
   bytes_leftt   _NzbFile__article_countt   article_countR:   t   nzf_idt   deletedt   validt   import_finishedt   md5sumt	   completedc           B   s   e  Z d    Z d   Z d   Z d   Z d   Z d   Z e d    Z	 e d    Z
 d   Z d	   Z d
   Z d   Z RS(   c         C   s2  t  j |   | |  _ | |  _ d  |  _ d  |  _ t |  |  _ t |  _	 d  |  _
 d  |  _ d  |  _ d  |  _ d  |  _ g  |  _ i  |  _ | |  _ | |  _ d |  _ | |  _ t j d | j  |  _ t |  _ t |  _ t |  _ t |  _ d  |  _ t |  |  _ |  j r.|  j r.t j | |  j | j  n  d  S(   Ni    R(   (    R   R)   RH   RJ   R*   RL   RN   t   name_extractorR,   RP   RR   RT   RV   RX   RZ   R\   R^   R&   Ra   Rc   R:   R1   R9   R;   Rd   Re   Ri   Rf   Rg   Rh   t   boolt	   save_data(   R/   RH   RJ   t
   article_dbR&   R:   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR)      s6    																					c         C   s   t  j d |  j  t j |  j |  j j d t } | r x\ | D]T } | | d } | | d } t	 | | | |   } |  j
 j |  | |  j | <qA W|  j |  j |  _ t |  _ n  d  S(   Ns   Finishing import on %st   removei    i   (   R5   R6   RJ   R1   t	   load_dataRd   R:   R;   R,   R!   R\   t   appendR^   t   lowest_partnumRZ   t   TrueRg   (   R/   Rm   R'   R%   R&   R$   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   finish_import   s    !c         C   s   | |  j  k r= |  j  j |  | r= |  j | j 8_ q= n  t } | j |  j k rz |  j  rz d  |  _ |  j	   t
 } n  t
 } |  j  r t } n  | | f S(   N(   R\   Rn   Ra   R&   R,   R'   Rq   R*   RZ   t   reset_try_listRr   (   R/   R$   t   foundt   resett   done(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   remove_article   s    	
			c         C   s.   t  |  _ | |  _ | |  _ t |  |  _ d  S(   N(   Rr   RP   RV   RR   t   intRT   (   R/   RV   RR   RT   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   set_par2   s    			c         C   sf   |  j  r( |  j  j |  } | rU | Sn- x* |  j D] } | j |  } | r2 | Sq2 W|  j |  d  S(   N(   RZ   R8   R\   t   add_to_try_list(   R/   R7   R$   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR8      s    	c         C   s,   x |  j  D] } | j   q
 W|  j   d  S(   N(   R\   Rt   (   R/   t   art(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   reset_all_try_lists  s    c         C   s   |  j  o t |  j  S(   N(   Rg   Rk   R\   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRi     s    c         C   s   t  |  j  S(   N(   t   minR^   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRq     s    c         C   s7   y) t  j t  j j |  j j |  j   Wn n Xd  S(   N(   t   osRn   t   patht   joinR:   R;   Rd   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   remove_admin  s    )c         C   s4   i  } x' t  D] } |  j | d | | d <q W| S(   Ni   i    (   t   NzbFileMapperR>   (   R/   R?   R@   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRA   #  s    c         C   sd   xP t  D]H } y | | d |  j | d <Wq t k
 rN d  |  j | d <q Xq Wt j |   d  S(   Ni    i   (   R   R>   RB   R*   R   R)   (   R/   R?   R@   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRC   *  s    c         C   s   d |  j  |  j f S(   Ns   <NzbFile: filename=%s, type=%s>(   RL   RN   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRD   4  s    (   RE   RF   R)   Rs   Rx   Rz   R8   R}   t   propertyRi   Rq   R   RA   RC   RD   (    (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR"      s   	)								
t	   NzbParserc           B   sA   e  Z e d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   s   | |  _  t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _	 d |  _
 i  |  _ g  |  _ d |  _ d |  _ d |  _ d |  _ g  |  _ g  |  _ | |  _ t j   |  _ d  S(   Nt    i    (   R:   R,   t   in_nzbt   in_filet	   in_groupst   in_groupt   in_segmentst
   in_segmentt   in_headt   in_metat	   meta_typet
   meta_typest   meta_contentRL   t   avg_aget   validst   skipped_filest   nzf_listt   groupst   filtert   timet   now(   R/   R:   t   remove_samples(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR)   =  s(    																			c         C   s   d  S(   N(    (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   startDocumentT  s    c         C   s  | d k r |  j  r |  j r |  j r y4 t | j d   |  _ t | j d   |  _ Wn t k
 ro d  SXg  |  _ |  j	 |  j 7_	 t
 |  _ n| d k r |  j  r |  j r t
 |  _ n| d k r|  j  r| j d d  j   } | |  _ |  j r"t j |  r"t j d |  qt
 |  _ t | t  rO| j d	 d
  } n  | |  _ y t | j d   |  _ Wn |  j |  _ n Xi  |  _ d |  _	 n | d k r|  j  r|  j r|  j rt
 |  _ g  |  _ n | d k r|  j  r|  j rt
 |  _ n | d k r&|  j  r&t
 |  _ nr | d k r|  j  r|  j rt
 |  _ | j d  } | rt| j   |  _  n  g  |  _! n | d k rt
 |  _  n  d  S(   Nt   segmentR&   t   numbert   segmentst   fileRJ   R   s   Skipping sample file %ss   latin-1t   replaceRH   i    t   groupR   t   headt   metaRN   t   nzb("   R   R   R   Ry   t   gett	   seg_bytest
   article_nrt
   ValueErrort
   article_idt
   file_bytesRr   R   t   stripRL   R   t	   RE_SAMPLEt   searchR5   t   infot
   isinstancet   unicodet   encodet   fileSubjectt	   file_dateR   Rm   R   R   t
   group_nameR   R   t   lowerR   R   (   R/   t   namet   attrsRJ   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   startElementW  sR    '					'		c         C   sX   |  j  r |  j j |  n8 |  j r8 |  j j |  n |  j rT |  j j |  n  d  S(   N(   R   R   Rp   R   R   R   R   (   R/   t   content(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt
   characters  s    			c         C   s  | d k r[ |  j  r[ t d j |  j   } | |  j k rO |  j j |  n  t |  _  n:| d k r-|  j r-|  j } t d j |  j	   } | |  j
 k r| |  j
 | d k r d | |  j
 | d | f } t j |  |  j j d |  q!t j d |  n | |  j f |  j
 | <t |  _ nh| d k rN|  j rNt |  _ nG| d	 k ro|  j rot |  _ n&| d
 k r|  j rt |  _ |  j
 st j t d  |  j  d  Sy t j j |  j  } Wn( t j j |  j  } |  j |  _ n Xt | |  j |  j
 |  j |  j  } | j r| j rt j d |  j  |  j j j |  | |  j j | j <|  j j  | j  7_  |  j! |  j 7_! |  j" d 7_" |  j# j |  qt j d |  j  | j rt$ j% | j |  j j&  n  |  j' d 7_' n | d k rt |  _( n | d k r}t |  _) |  j* r|  j* |  j+ k rTg  |  j+ |  j* <n  |  j+ |  j* j d j |  j,   qn | d k rt |  _- n  d  S(   NR   R   R   i    s0   Duplicate part %s, but different ID-s (%s // %s)t   dup_art_logs   Skipping duplicate article (%s)R   R   R   s   File %s is empty, skippings   File %s added to queuei   s   Error importing %s, skippingR   R   R   (.   R   t   strR   R   R   Rp   R,   R   R   R   Rm   R5   R   R:   t   inc_logR   R   R   R   t   warningt   TaRL   t   datetimet   fromtimestampR   R   R"   R   Rf   Rd   t   filest   files_tableR&   R   R   R   R1   t   remove_dataR;   R   R   R   R   R   R   R   (   R/   R   R   R'   t   segmt   msgt   tmR(   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt
   endElement  sj    			$			)c         C   s   |  j  |  j _  |  j |  j _ t j d |  j j  t d |  j  } |  j | |  j _	 t
 j
 j |  j |  |  j _ |  j r t j t d  |  j |  j j  n  d  S(   Ns   META-DATA = %si   s!   Failed to import %s files from %s(   R   R:   R   R   R5   R6   t   maxR   R   t	   avg_stampR   R   t   avg_dateR   R   R   RL   (   R/   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   endDocument  s    	(	   RE   RF   R,   R)   R   R   R   R   R   (    (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR   ;  s   		5		Bt   _NzbObject__filenamet   _NzbObject__dirnamet	   work_namet   _NzbObject__original_dirnamet
   final_namet   _NzbObject__createdt   createdt   _NzbObject__bytest   _NzbObject__bytes_downloadedt   bytes_downloadedt   _NzbObject__repairt   repairt   _NzbObject__unpackt   unpackt   _NzbObject__deletet   deletet   _NzbObject__scriptt   scriptt   _NzbObject__msgidt   msgidt   _NzbObject__catt   catt   _NzbObject__urlt   urlt   _NzbObject__groupR   t   _NzbObject__avg_dateR   t   _NzbObject__dirprefixt	   dirprefixt   _NzbObject__partablet   partablet   _NzbObject__extraparst   md5packst   _NzbObject__filesR   t   _NzbObject__files_tableR   t   _NzbObject__finished_filest   finished_filest   _NzbObject__statust   statust   _NzbObject__avg_bps_freqt   avg_bps_freqt   _NzbObject__avg_bps_totalt   avg_bps_totalt   _NzbObject__priorityt   priorityt   _NzbObject__dupe_tablet
   dupe_tablet   saved_articlest   nzo_idt
   futuretypet   parsedt   action_linet   unpack_infot   fail_msgt   nzo_infot   extra1t   custom_namet   extra2t   passwordt   extra3t	   next_savet   extra4t   save_timeoutt   extra5t   new_cachingt   extra6t	   encryptedt	   duplicatet	   oversizedt   create_group_foldert   precheckt
   incompletet   reuseR   t   unwanted_extt   rating_filteredc           B   s  e  Z e e e e e e d  e e e d 
 Z d   Z d   Z d   Z	 d   Z
 d   Z d   Z d   Z d	   Z e d
    Z d   Z e d    Z e d    Z e d  Z d   Z d   Z d   Z d   Z e j d e j  Z d d  Z d   Z d   Z d   Z  d   Z! d   Z" e d  Z# e d  Z$ d   Z% e d    Z& e d    Z' e d     Z( e e d!  Z) d"   Z* d#   Z+ e d$  Z, d%   Z- d& e d'  Z. e e d(  Z/ e d)    Z0 d*   Z1 d+   Z2 d,   Z3 d-   Z4 d.   Z5 d/   Z6 d0   Z7 RS(1   t   Queuedc   +      C   s  t  j |   t |  } t |
  }
 | d  k rB d  } } } n t j |  \ } } } | |  _ |
 rx | rx |
 } n | } | r | r | j   j d  r t	 j
 j |  \ } } | j   d k r | } q n  t |  \ } } | s | } n  | r| r| rt |  } n  | |  _ | |  _ i  |  _ t |  _ d |  _ d |  _ | |  _ | |  _ | |  _ | |  _ d |  _ | |  _ | rt |  |  _ n	 | |  _ g  |  _ t j j d  |  _  d |  _! g  |  _" i  |  _# i  |  _$ i  |  _% g  |  _& i  |  _' g  |  _( | |  _) d |  _* d |  _+ y t, |	  }	 Wn t- }	 n X|	 |  _. i  |  _/ g  |  _0 d  |  _1 | |  _2 t |  _3 t |  _4 t |  _5 t |  _6 t |  _7 t |  _8 d |  _9 d |  _: | |  _; |  j) t< j= k r| rt> j?   |  _7 |  j7 rt< j@ |  _) qn  d |  _A i  |  _B d |  _C | r4| |  _D n	 i  |  _D |
 |  _E | |  _F d  |  _G d  |  _H tI |  _J d |  _K d  |  _L t |  _M t> jN   |  _O tP |  j  \ |  _ |  _ | r| |  _ n  | d  k rd  St> jQ   rd |  j k rtR jS d |  j  |  j jT d d  |  _ n  t> jU   rTtR jS d	 |  j  |  j jT d d
  |  _ n  t	 j
 jV t> jW jX   |  j  } t	 j
 jV | tY  } | o| o| ot jZ |  o|	 t[ k } | rt\ | d  t\ | d  n1 t] | d tI } t^ |  t	 j
 jV | tY  } t	 j
 j_ |  s.t	 j` |  n  t	 j
 ja |  \ } |  _ tI |  _ | r/d | k r/d | k r| jT d d  } n  tb |  t> jc   d k o|  } td je jf   } | jg td je jh ji d  | jj |  | jk td je jh jl    td je jm jn   } | jo tp |   y | jq |  Wn td je jr k
 r} tI |  _8 d | k rqtR js tt d  |  qtR js tt d  | | ju   | jv    n8 tw k
 r} tI |  _8 tR js tt d  | | d  n X|  j8 r	t> jx   r|  jy   q	|  jz   t{  n  t j| | |  t j} | | |  n  |  j& r| r|  jz d t  t> j~   rhtR js } n	 tR jS } |  j r| tt d  d | |  j  n | tt d  |  t{  n  | d  k rx< |  j j d d'  D]" } t |  } | r| } PqqWn  | d  k r:x* |  j D] }  t |   } | rPqqWn  t> jN   r\|  j" j |  j  n  | rt |  j d  \ } } } }	 }! |  _ |  j |!  n  t | | | |	  \ |  _ }" |  _ |  _. t j |"  \ |  _ |  _ |  _ | s
t j |  j | | | |	 |  j |  j  \ }# }! } } } }	 }$ t |#  }# y t, |  } Wn d  } n Xy t, |	  }	 Wn d  }	 n X|# d k  r	|  jz   t  n  |! r	|  j |!  n  |$ r	t |$  g |  _ n  t | | | |	  \ |  _ } |  _ |  _. t j |  \ |  _ |  _ |  _ n d }# t> j j   }% | r
t |%  d k r
|  j |% k r
tR jS d |  j  |  jy   tI |  _6 t |  _. n  | r
t> j   d k r
t> j   r
tR js tt d  |  n  |  jz d t  t  n  | s
|  j. t k r1t> j   rtR js tt d  |  n  tI |  _5 |  jy   t |  _. n  |  j. t k rV|  jy   t |  _. n  | rl|  j |  n  t> j   r|  j& j d t  n |  j& j d t  t> j   rt> j   rtR j d   d }& }' }( xQ |  j& D]F }) |& d 7}& d! t |)  k r|' d k r|& }' n  |& }( |) }* qqW|' |( k rtR j d" |' |(  tR j d# t |*   y' |  j& j |*  |  j& j |' |*  WqtR j d$  qXqn  t d% t |  j  t d&  |  _H d  S((   Ns   .nzbi    t   0g        R   t    s    Replacing dots with spaces in %st   .s'   Replacing spaces with underscores in %st   _s   SABnzbd_nz?_*s   SABnzbd_article_*t
   create_dirs   <nzbs   A&A)s   A&amp;A)i   s   </nzb>s   Incomplete NZB file %ss2   Invalid NZB file %s, skipping (reason=%s, line=%s)t
   keep_basics   Empty NZB file %ss    [%s]t   categoryi   i   g      ?s/   Job too large, forcing low prio and paused (%s)s   Ignoring duplicate NZB "%s"s   Pausing duplicate NZB "%s"t   cmps4   Unwanted Extension: putting last rar after first rars   .rars3   Unwanted Extension: First rar at %s, Last rar at %ss"   Unwanted Extension: Last rar is %ss    The lastrar swap did not go wellg      @g     r@(    (   R   R)   R   R*   R1   t
   pp_to_optsRL   R   t   endswithR   R   t   splitextt   scan_passwordR   R   R   R   R,   R   R&   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   RX   R   R   R   R   R   R   R   Ry   R   R   R   R   R   R   Re   R   R  R  R  R  R  R  R  R   t   QUEUEDt   cfgt	   pre_checkt   CHECKINGR   R   R  R  R  R  R  R
  Rr   R  R  t   waitt	   pp_activet   create_group_foldersR  t   split_filenamet   replace_dotsR5   R   R   t   replace_spacesR   t   download_dirt   get_pathR   t   backup_existsR   R   R   R   t   existst   mkdirt   splitR   t   ignore_samplest   xmlt   saxt   make_parsert
   setFeaturet   handlert   feature_external_gest   setContentHandlert   setErrorHandlert   ErrorHandlert	   xmlreadert   InputSourcet   setByteStreamR    t   parset   SAXParseExceptionR   R   t
   getMessaget   getLineNumbert	   Exceptiont   allow_incomplete_nzbt   pauset
   purge_dataR   t
   backup_nzbt   save_compressedt   warn_empty_nzbR   R   Rp   R   t   get_attrib_fileR;   t   set_final_name_pwR   t   proxy_pre_queuet   final_name_pw_cleanR   t	   TypeErrort
   size_limitt   get_intt   absR   t   no_dupest   warn_dupl_jobsR   R   R	   t   check_existing_filest	   auto_sortt   sortt   nzf_cmp_datet   nzf_cmp_namet   unwanted_extensionsR6   Rn   t   insertR~   t   floatR   (+   R/   RL   R   t   ppR   R   R   R   R   R   t   nzbnameR   R  R  t	   dup_checkt   rt   ut   dR   t   dnamet   extR  t   wdirt   adirR  t   dummyR9  t   parsert   inpsrct   errt   mylogt   metacatt   grpR   t   pp_tmpt   acceptR   t   limitt   nzfposcountert   firstrarpost
   lastrarposR(   t
   lastrarnzf(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR)     s   		!																										
																											!"
	"		 	
			 	'*!*


	*$(
	 	 	


	c         C   sc   | j  } t } | |  j k rI |  j | } | j | j k rI t } qI n  | s_ | |  j | <n  | S(   N(   RL   R,   R   Rc   Rr   (   R/   R(   RL   t   dupet   old_nzf(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   check_for_dupea  s    	c         C   s/   | r+ |  j  | d 7_  |  j d 7_ n  d  S(   Ni   i   (   R   R   (   R/   t   bps(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   update_avg_kbsp  s    c         C   sR   | |  j  k rD |  j  j |  |  j j |  t | _ t | _ n  t |  j   S(   N(   R   Rn   R   Rp   Rr   Rg   Re   Rk   (   R/   R(   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt
   remove_nzfu  s    	c         C   s,   x |  j  D] } | j   q
 W|  j   d  S(   N(   R   R}   Rt   (   R/   R(   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR}   }  s    c   	      C   s   | |  j  | <g  |  j | <|  j | | _ | j   } x |  j D] } | j p\ t | j  } | rA | | k	 rA t |  \ } } } | r t | | j    r | j	 | | |  |  j | j
 |  |  j s |  j j |  q q qA qA Wd  S(   N(   R   RX   R   R   RL   R   RJ   t   analyse_par2t   matcherRz   Rp   R  Rn   (	   R/   R(   t   parsett   lparsett   xnzfR   R   RR   t   block(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   postpone_pars  s    	c         C   s  | j  } | r| j   } | j   } | j st |  \ } } } | r|  j s` t j   r| r | j r |  j	 j
 |  r d  S| j | | |  | |  j k r|  j	 | | _	 | j |  j | j k  r:|  j | |  j k r:|  j | j   |  j j |  j |  |  j	 | j |  j |  | |  j | <q| r| |  j k rb|  j j |  n  | |  j	 | k r|  j	 | j |  qq| j   q|  j | |  qqn | j | _  d  S(   N(   RL   R   R   RP   R|  R   R%  t   allow_streamingRa   RX   R   Rz   R   RT   R   Rt   Rn   Rp   R  RJ   (   R/   R(   t	   file_donet   fnt   lfnR   RR   R  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   handle_par2  s6    		"  c         C   s&  | j  } | j | |  \ } } | r |  j |  |  j r t j   r |  j d  d r t j |  _	 |  j
   t d  |  _ |  j d |  j d t t j d |  j  t t t f Sn  | r |  j   n  | r |  j | |  n  t } |  j st } t j |  _	 |  j
   n  | | | f S(   Nic   i    s   Aborted, cannot be completedt   Downloadt   uniques3   Abort job "%s", due to impossibility to complete it(   R(   Rx   R{  R  R%  t   fail_hopelesst   check_qualityR   R$  R   t   set_download_reportt   TR  t   set_unpack_infoR,   R5   R6   RO  Rr   Rt   R  R   (   R/   R$   Ru   R(   R  Rv   t	   post_done(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRx     s*    	*
	c         C   s  g  t  |  D]* } t j j |  r t j j |  ^ q } t j t |  j d t	 } | r x> | D]3 } | | k re | j
 |  | j | |  qe qe Wn  | j d    |  j } | j d    x | D] } x | D] } t t | j   }	 | j | k s |	 | k s | |	 k r | | _ t	 | _ d | _ |  j | d t	 |  j |  | j
 |  | j
 |  Pq q Wq Wy x | D] } t j t j j | |   }
 t j j |
 j  } t | d | g  |
 j |   } |  j j |  | |  j | j <|  j | j 7_ | | _ t	 | _ d | _ |  j | d t	 |  j |  t  j! d |  qWWn' t  j" d  t  j! d	 d
 t	 n Xd  S(   NRn   c         S   s   t  |  t  |   S(   N(   t   len(   t   xt   y(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   <lambda>  s    c         S   s   t  |  j  t  | j  S(   N(   R  RJ   (   R  R  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s    i    R  s   "%s"s   File %s added to jobs   Bad NZB handlings   Traceback: t   exc_info(#   R   R   R   t   isfilet   basenameR1   Ro   R   R;   Rr   Rn   Rp   RX  R   R   R   RJ   RL   Ri   Ra   R  R{  t   statR   R   R   t   st_mtimeR"   t   st_sizeR   Rd   R&   R5   R   R6   (   R/   Rf  t   fR   t   renamesR   t   nzfsRL   R(   RJ   R@   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRV    sN    =
'						c         C   s3   |  j  d  k r d  St j |  j  |  j |  j  Sd  S(   N(   R   R*   R1   t
   opts_to_ppR   R   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR^    s    c         C   s/   t  j |  \ |  _ |  _ |  _ |  j   d  S(   N(   R1   R   R   R   R   t   save_to_disk(   R/   t   value(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   set_pp"  s    !c         C   s  d } |  j  r" t d  d } n  |  j rQ |  j d k rQ | t d  d 7} n  |  j r |  j d k r | t d  d 7} n  |  j r |  j d k r | t d  d 7} n  |  j r |  j d k r | t d  d 7} n  |  j r|  j d k r| t d	  d 7} n  t |  j	 t
  rft |  j	 t j   d
  } | d k rf| t d  | d 7} qfn  |  j rd t |  |  j |  j f Sd t |  |  j f Sd  S(   NR   t	   DUPLICATEs    / t   Pausedt	   ENCRYPTEDs	   TOO LARGEt
   INCOMPLETEt   UNWANTEDt   FILTEREDg      ?i    s   WAIT %s secs   %s%s/%ss   %s%s(   R  R   R  R   R  R  R  R  R   R(  R]  Ry   R   R  R   R   (   R/   t   prefixt   dif(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   final_name_pw&  s(    		c         C   s(   |  j  r d |  j |  j  f S|  j Sd  S(   Ns   %s/%s(   R  R   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRO  >  s    	c         C   st   t  | t  rp | d  k	 r9 t |  } t |  |  _ n t t |   \ } |  _ t |  |  _ |  j   n  d  S(   N(	   R   R   R*   R   R  R#  R   R   R  (   R/   R   R  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRM  E  s    c         C   s2   d |  _  |  j r. t j |  |  j |  j  n  d  S(   NR  (   R   R   R1   Rl   R;   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRG  O  s    		c         C   sj   t  j |  _ |  j r! d |  _ n  |  j r6 d |  _ n  t |  _ t |  _ t |  _ |  j	 rf d |  _	 n  d  S(   Ni   (
   R   R$  R   R  R  R,   R  R  R  R  (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   resumeU  s    						c         C   sQ   | |  j  k r" |  j  j |  n  | j rM | | j k rM | j j |  n  d  S(   N(   R   Rp   RX   Rn   (   R/   t   parfile(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   add_parfilee  s    c         C   s   |  j  j |  d  S(   N(   R   t   pop(   R/   RV   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   remove_parsetk  s    s	   \.par2\W*i    c         C   s  d } d } d } t  } xo |  j D]d } |  j | } | j rN | | j 7} n  |  j j | j  ry | | j 7} t } q" | | j 7} q" W| | | } t	 |  t	 t
 d |   }	 | r |	 d | p t	 t j    k }
 n | | k }
 t j d |
 | | |	  |
 |	 f S(   Nl    i   g      Y@s7   Download Quality: enough=%s, have=%s, need=%s, ratio=%s(   R,   R   Re   Ra   t   _NzbObject__re_quick_par2_checkR   RJ   R&   Rr   R]  R   R%  t   req_completion_rateR5   R6   (   R/   t	   req_ratiot   needt   parst   shortt   anyparsRd   R(   t   havet   ratiot   enough(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR  o  s&    		%c         C   s  |  j  r|  j r|  j r|  j  |  j } t j d |  j | d  } | j } | j d | } | |  j d <t | | j  } t	 d  | t
 | d d d f } |  j j d g   } |  j j d	 g   } |  j j d
 g   }	 |  j j d g   }
 d } } } } | r0d t	 d  t |  } n  | rSd t	 d  t |  } n  |
 rvd t	 d  t |
  } n  |	 rd t	 d  t |	  } n  d j | | | | | f  } |  j d | d t |  j r|  j d t |  j  d t qn  d  S(   Nt   secondsi   iQ t   download_times'   Downloaded in %s at an average of %sB/st	   dec_limiti   t   bad_art_logt   missing_art_logt   killed_art_logR   R   s   <br/>s   %s articles were malformeds   %s articles were missings'   %s articles had non-matching duplicatess   %s articles were removedR  R  t   Source(   R   R   R   R   t	   timedeltaR  t   daysR  t   format_time_stringR  R   R   R  R   R  Rr   R   R   (   R/   t   avg_bpst   timecompletedR  t	   totaltimet   complete_timet   msg1t   badt   misst   killedt   dupst   msg2t   msg3t   msg4t   msg5R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s2    	&	c         C   s6   y |  j  | j |  Wn | g |  j  | <n Xd  S(   N(   R  Rp   (   R/   t   logt   txt(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR     s    c         C   sG  d  } g  } x |  j D] } | j rD t j d | j p= | j  q | j |  s | j s | j	 t
 j   Ar | j   | j s t j t d  |  | j |  q q q q n  | j |  } | r Pq q q Wx0 | D]( } t | _ t | _ |  j j |  q W| r-|  j r-t
 j j j |   n  | sC|  j |  n  | S(   Ns   Skipping existing file %ss   Error importing %s(   R*   R   Re   R5   R6   RL   RJ   R3   Rg   R0   R1   R2   Rs   t   errorR   Rp   R8   Rr   Ri   Rn   t   NzbQueuet   dot   end_jobR{   (   R/   R7   R$   t   nzf_remove_listR(   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR8     s4    		
				c         C   s{   |  j  |  | rw t t |   } xO |  j | d t |  j |  } | j   } | j   | | k r( Pq( q( Wn  d  S(   Nt   cleanup(   t   cleanup_nzf_idst   rangeR  t   move_up_bulkR,   t   build_pos_nzf_tablet   keysRX  (   R/   t   nzf_idst   targett   pos_nzf_tableR  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   move_top_bulk  s    
c         C   s   |  j  |  | r t t |  j  t |  t |  j   } xO |  j | d t |  j |  } | j   } | j   | | k rA PqA qA Wn  d  S(   NR  (	   R  R  R  R   t   move_down_bulkR,   R  R  RX  (   R/   R  R  R  R  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   move_bottom_bulk  s    +
c         C   s   | r |  j  |  n  | r |  j |  } xx | r t |  } | j |  } | d k r. |  j | d } | j | k r | |  j | d <| |  j | <q q. q. Wn  d  S(   Ni    i   (   R  R  R~   R  R   Rd   (   R/   R  R  R  t   posR(   t   tmp_nzf(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s    	c         C   s   | r |  j  |  n  | r |  j |  } x | r t |  } | j |  } | t |  j  d k  r. |  j | d } | j | k r | |  j | d <| |  j | <q q. q. Wn  d  S(   Ni   (   R  R  R   R  R  R   Rd   (   R/   R  R  R  R  R(   R  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s    	c      
      s   t  j   r y   f d   } d d d d d d d d	 d
 d g
 } i  } x | D] } | |  | | <qO Wt j j | d    j   j j d  |  Wq q Xn  d  S(   Nc            sD     j  j d |  d   p/   j  j d |  d   } | r@ | d Sd  S(   Ns   x-oznzb-rating-s	   x-rating-i    (   R   R   R*   (   RN   t   values(   R/   (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   _get_first_meta#  s    2t   videot   videocntt   audiot   audiocntt   voteupt   votedownt   spams   confirmed-spamt
   passwordeds   confirmed-passwordedt   ids   x-rating-host(   R%  t   rating_enableR    R  t
   add_ratingR   R   R   (   R/   R  t   rating_typest   fieldst   k(    (   R/   s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   update_rating   s    2c         C   s   t  |  j |  j |  j  S(   N(   R   R  R   R   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR;   1  s    c         C   s   t  j j t j j   |  j  S(   N(   R   R   R   R%  R.  R/  R   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   downpath6  s    c         C   s   |  j  r |  j  d Sd  Sd  S(   Ni    (   R   R*   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR   ;  s    	c         C   s  |  j  } x$ |  j D] } t j | j |  q Wx< |  j D]1 } x( |  j | D] } t j | j |  qN Wq: Wx$ |  j D] } t j | j |  qy W|  j r|  j r| r t	 | d  t	 | d  n t	 | d t
 | r t	 |  j d t
 qy t j |  j  WqqXn  d  S(   Ns   SABnzbd_nz?_*s   SABnzbd_article_*t	   recursive(   R;   R   R1   R   Rd   RX   R   R  R   R   Rr   R  R   t   rmdir(   R/   R  t	   del_filest   wpathR(   t   _set(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRH  B  s&    	c         C   s+   d } x |  j  D] } | | j 7} q W| S(   Ni    (   R   Ra   (   R/   Ra   R(   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt	   remaining]  s    c         C   sD   d } d } x+ |  j  D]  } | | j 7} | | j 7} q W| | f S(   Ni    (   R   R&   Ra   (   R/   R&   Ra   R(   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   total_and_remainingd  s    c         C   sZ  d } g  } g  } g  } xu |  j  D]j } | j } | j } | sL | j } n  | j }	 | rs t j |	 j    }	 n  | j d | | |	 f  q" Wx |  j	 D] } | j
 }
 | j } | j } | s | j } n  | j }	 | r t j |	 j    }	 n  | |
 7} | j |
 | | |	 | j f  q Wx |  j D] } x |  j | D]v } | j
 }
 | j } | j } | sr| j } n  | j }	 | rt j |	 j    }	 n  | j | |
 | | |	 f  q?Wq+W|  j } | rt j | j    } n  |  j |  j |  j |  j |  j |  j i  |  j |  j |  j | |  j | | | | |  j |  j t |  j j d g    f S(   Ni    R  (   R   R&   RL   RJ   RH   R   t   mktimet	   timetupleRp   R   Ra   Rd   RX   R   R   R   R   R   R   R  R   R   R   R   R   R  R  R   (   R/   t   for_clit   bytes_left_allt   active_filest   queued_filesR   R(   R&   RL   RH   Ra   R  R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   gather_infom  sZ    							
				$	c         C   s   | |  j  k r |  j  | Sd  S(   N(   R   (   R/   Rd   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   get_nzf_by_id  s    R   c         C   s   t  } | s |  j j |  s. g  |  j | <n  | r t d |  } xU t t |  j |   D]7 } | |  j | | k r^ | |  j | | <t } q^ q^ Wn  | s |  j | j |  q n | g |  j | <d  S(   Ns   [%s](   R,   R   t   has_keyR   t   xrangeR  Rr   Rp   (   R/   t   keyR   t   setR  Ru   R  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s     c         C   s/   | r" | r" d | | f |  _  n	 d |  _  d  S(   Ns   %s: %sR   (   R   (   R/   t   actionR   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   set_action_line  s    c         C   s   |  j  |  j |  j f S(   N(   R   R   R   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   repair_opts  s    c         C   s3   |  j    |  j r/ t j |  |  j |  j  n  d  S(   N(   t   save_attribsR   R1   Rl   R;   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s    
	c         C   s8   t  |  j |  j |  j |  j |  j |  j |  j f  d  S(   N(   t   set_attrib_fileR;   R   R^  R   R   RO  R   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s    c         C   sV   i  } xI | D]A } | |  j  k r |  j  | } |  j j |  } | | | <q q W| S(   N(   R   R   t   index(   R/   R  R  Rd   R(   R  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s    c         C   s[   xT | D]K } | |  j  k rF |  j  | |  j k rS | j |  qS q | j |  q Wd  S(   N(   R   R   Rn   (   R/   R  Rd   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s
    c         C   s4   i  } x' t  D] } |  j | d | | d <q W| S(   Ni   i    (   t   NzbObjectMapperR>   (   R/   R?   R@   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRA     s    c         C   s   xP t  D]H } y | | d |  j | d <Wq t k
 rN d  |  j | d <q Xq Wt |  _ t j |  j j	    |  _
 d  |  _ |  j d  k r i  |  _ n  t j |   d  S(   Ni    i   (   R  R>   RB   R*   R,   R)  R   R  R   R  R   R(  R   R   R)   (   R/   R?   R@   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRC     s    		c         C   s   d |  j  S(   Ns   <NzbObject: filename=%s>(   RL   (   R/   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRD     s    (8   RE   RF   R*   R,   R   Rr   R)   Rx  Rz  R{  R}   R  R  Rx   RV  R   R^  R  R  RO  RM  RG  R  R  R  t   ret   compilet   IR  R  R  R   R8   R  R  R  R  R  R;   R  R   RH  R  R  R  R  R  R  R  R  R  R  R  RA   RC   RD   (    (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR#     sd   	 A						3		6	
					!		*						8				
			c         C   s4   |  j  } | s |  j } n  | s* d } n  | j   S(   NR   (   RL   RJ   R   (   R(   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   nzf_get_filename  s    		c          C   sV   g  }  xI t  j   D]; } | j   } | j d  sA d | } n  |  j |  q W|  S(   NR  (   R%  t   prio_sort_listR   t
   startswithRp   (   t   extsRe  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   get_ext_list  s    c         C   s.   x' | D] } |  j  |  d k r t Sq Wt S(   Ni    (   t   rfindRr   R,   (   R   t   lstRe  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   ext_on_list  s    c         C   s   t  |  | d t S(   NR   (   RZ  R,   (   t   nzf1t   nzf2(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRY  #  s    s0   (\.rar|\.r\d\d|\.s\d\d|\.t\d\d|\.u\d\d|\.v\d\d)$c         C   s  t  |   } t  |  } d | k o- d | k } d | k oE d | k } | rb | j d  rb d S| r| | j d  r| d S| r | r d S| r | r d St   } | r t | |  } t | |  }	 | r |	 r d S|	 r | r d Sn  | rt j |  }
 t j |  } |
 r+| p#| r+d S| rB| p:|
 rBd S|
 rr|
 j d  d k rr| j d d  } n  | r| j d  d k r| j d d  } n  t | |  St |  j	 | j	  Sd  S(   Ns   .vols   .par2ii   s   .rars   .r//(
   R  R!  R  R  t   RE_RARR   R   R   R  RH   (   R  R  R   t   name1t   name2t   is_par1RP   t   ext_listt   onlist1t   onlist2t   m1t   m2(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRZ  ,  sB    	  c         C   s   |  j    }  |  j d  d k  r t j |   } | ra | j d  j d  j    | j d  f St j |   } | r | j d  j d  j    d f S|  j    d f Sd S|  j    d f Sd  S(   Ns   ://i    i   R  i   R   (   R   R   (   R   t   findt
   RE_NEWZBINt   matchR   t   rstript	   RE_NORMAL(   R   t   m(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR+  _  s    +"i    c         C   s   d   } y t  |   }  Wn t k
 r2 d }  n Xd } | rY | d | | d  7} n  |  d d k r | d | |  d d  7} |  |  d d 8}  n  |  d	 d k r | d | |  d	 d
  7} |  |  d	 d	 8}  n  |  d k r | d | |  d  7} n | d | d d  7} | j   S(   Nc         S   s4   |  d k r |  t  |  f S|  t  | d  f Sd  S(   Ni   t   s(   t   Tx(   t   nt   single(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   unitu  s    i    R   s   %s %s t   dayi  i   t   houri<   t   minutet   seconds   %s %s(   Ry   R   R   (   R  R  R1  t   completestr(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR  r  s$    	
c         C   sZ  d |  k s d |  k r" |  d  f S|  j d  } | d k  rL t |   } n  |  j d  } | d k r | | k  r d |  k r |  |  j d  |  | d f S|  j d  } | d k r |  |  j d  |  | d	 f S| t |   k  r%|  j d
  r%|  |  j d  |  | d t |   d !f S| d k rP|  |  j d  |  | d f S|  d  f S(   Ns   http://s   https://s   {{i    t   /s	   password=s   . i   i	   s   }}i   (   R*   R'  R  R   R!  (   R   t   bracest   slasht   pw(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR#    s     
$!,c         C   s   g  } t  j j |  t  }  y t |  d  } Wn! g  t |  D] } d  ^ qA SXx t |  D]s } | j   j d  } | r | j	   d k r d  } n  y t
 |  } Wn n X| j |  q_ | j d   q_ W| j   | S(   NRa  s   
 t   none(   R   R   R   R   t   openR  R*   t   readlineR   R   Ry   Rp   t   close(   R   t   sizet   attribsR  R/  t   line(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRL    s&    	
c         C   sc   t  j j |  t  }  y t |  d  } Wn d  SXx | D] } | j d |  q: W| j   d  S(   Nt   ws   %s
(   R   R   R   R   R<  t   writeR>  (   R   R@  R  t   item(    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR    s    c         C   s   d  } d } } |  r t j |   r t j |   } | rk | j d  } | j d  } | j d  } q |  j   j d  d k r t j j	 |   d j
   } q d  } n  | | | f S(   Ni    i   i   i   s   .par2(   R*   t   REJECT_PAR2_RER   t   PROBABLY_PAR2_RER   R   R'  R   R   R"  R   (   R   R   RR   R  R,  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR|    s    
	c         C   sZ   |  } xG t  j t |   D]3 } | j d  } | r t j |  r | } q q Wt |  S(   Ns    "(   R  t   findallt   SUBJECT_FN_MATCHERR   t   RE_NORMAL_NAMER   R   (   RJ   t   resultR   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyRj     s    c         C   sD   | j  |   r< | | j |    j   } | p; | j  d  St Sd  S(   Nt   "(   R!  R  R   R,   (   t   patternR  (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyR}    s    (W   R   R   R  R5   R   t   xml.saxR5  t   xml.sax.handlert   xml.sax.xmlreadert	   cStringIOR    t   ImportErrorR1   t   sabnzbd.constantsR   R   R   R   R   R   R   R   R	   R
   R   R   R   R   t   sabnzbd.miscR   R   R   R   R   R   R   R   R   R   R   R   t   sabnzbd.cfgR%  t   sabnzbd.trylistR   t   sabnzbd.encodingR   R   R   R   t   sabnzbd.ratingR    t   __all__R  R  R(  R+  RH  R   RF  RE  RI  R=   R!   R   R"   R6  R9  t   ContentHandlerR   R  R#   R  R  R  RY  R  Rr   RZ  R+  R  R#  RL  R  R|  Rj   R}  (    (    (    s$   /var/www/SABnzbd/sabnzbd/nzbstuff.pyt   <module>   s   ^X"				@																																																																								   					3		 				