
oTc           @   sm  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 m Z m Z m Z m Z d  d l m Z d  d l j Z d  d l 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$ m% Z% d  d l& j' Z' d  d l( m) Z) d  d l* Z d  d	 l+ m, Z, m- Z- d  d l. j/ Z/ d  d
 l0 m1 Z1 m2 Z2 d  d l3 m4 Z4 d e f d     YZ5 d   Z6 d   Z7 d   Z8 d   Z9 e d    Z: e e; e; e; e e; e; d   Z< e d    Z= e d    Z> e e? d   Z@ e e e  d     ZA e e e  e? eB d    ZC d S(   iN(   t   TryList(   t	   NzbObject(   t   exit_sabt   cat_to_optst   get_admin_patht
   remove_allt   globber(   t   panic_queue(   t   NZBQUEUE_LOCKt   synchronizedt   synchronized_CV(   t   QUEUE_FILE_NAMEt   QUEUE_VERSIONt   FUTURE_Q_FOLDERt	   JOB_ADMINt   LOW_PRIORITYt   NORMAL_PRIORITYt   HIGH_PRIORITYt   TOP_PRIORITYt   REPAIR_PRIORITYt   STOP_PRIORITYt   VERIFIED_FILEt   PNFO_BYTES_FIELDt   PNFO_BYTES_LEFT_FIELDt   Status(   t   ArticleCache(   t	   Assemblert   file_has_articles(   t   latin1t   platform_encode(   t   BPSMetert   NzbQueuec           B   sL  e  Z d5 Z d    Z d   Z e e d  Z d5 d  Z	 d   Z
 e e  d    Z e e  d5 d   Z e e  d    Z e e  d5 d5 d5 d5 e d5 d   Z e e  d5 d5 d5 e d5 d5 d	   Z e e  d
    Z e e  d    Z e e  d5 d   Z e e  d5 d   Z e e  d    Z e e  e e d   Z e e  e e e e e d   Z e e  e d   Z e e  d    Z e e  d    Z e e  d    Z e e  d    Z e e  d    Z e e  d    Z  e e  d    Z! e e  d    Z" e e  d    Z# e e  d    Z$ e e  d    Z% e e  d    Z& e e  e d   Z' e e  e d   Z( e e  e d    Z) e e  d5 d!   Z* d"   Z+ e e  d#    Z, e e  d5 d5 d$   Z- e e  d%    Z. e e  d&    Z/ e e  d'    Z0 e e  d(    Z1 e e  e d)   Z2 d*   Z3 e e  e d+   Z4 e e  e d, d-   Z5 e e  d.    Z6 e e  d/    Z7 e e  e e d0   Z8 e e  d1    Z9 d2   Z: d3   Z; d4   Z< RS(6   c         C   s>   t  j |   t |  _ d  |  _ g  |  _ i  |  _ |  t _	 d  S(   N(
   R    t   __init__t   Falset   _NzbQueue__top_onlyt   Nonet   _NzbQueue__top_nzot   _NzbQueue__nzo_listt   _NzbQueue__nzo_tableR   t   do(   t   self(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR    5   s    				c         C   sX  g  } | d k  r t  j t  } | r yp | \ } } } | t k s g  } t j t d   | s t t j	 j
 t j j   t   t d  q n  Wq t k
 r g  } t j t d  t j	 j
 t j j   t   | s d  Sq Xq n  g  } x | D] } t j	 j |  \ } }	 t t |  | t  }
 t  j |	 |
 d t } | s}t t |  | t  }
 t  j |	 |
  } n  | r |  j | d t d t | j |  q q W| rT|  j |  x t t j	 j
 t j j   t   D]d }
 t j	 j |
  \ }
 } | |  j k rt  j | |
 d t } | rM|  j | d t qMqqWn  d  S(   Ni   s,   Incompatible queuefile found, cannot proceeds'   Error loading %s, corrupt file detectedt   removet   savet   quiet(   t   sabnzbdt
   load_adminR   R   t   loggingt   errort   TaR   t   ost   patht   joint   cfgt	   cache_dirt   get_pathR   t
   ValueErrort   splitR   t   boolR!   t	   load_datat   Truet   addt   appendt	   scan_jobsR   t	   admin_dirR   R&   (   R(   t   repairt   nzo_idst   datat
   queue_verst   dummyt   folderst   nzo_idt   foldert   _idR2   t   nzo(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt
   read_queue@   sJ    "+c   	      C   sJ  g  } | r g  } n g  |  j  D] } | j ^ q } t j   d } | j g  | D]I } | d s~ | d s~ | d t j k rQ t t j	 j
 | d   ^ qQ  x t t j j    D] } t j	 j |  r)t j	 j
 |  | k r)| rt j d |  |  j |  n  | j t j	 j
 |   q | r t j d |  q q W| S(   Ni    t   retryt   loadedt   statusR2   s   Repairing job %ss   Skipping repair for job %s(   R%   t	   work_nameR,   t   proxy_build_historyt   extendR   t   QUEUEDR   R1   R2   t   basenameR   R4   t   download_dirR6   t   isdirR.   t   infot
   repair_jobR=   (	   R(   t   allt   actiont   resultt
   registeredRI   t   itemst   itemRG   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR>   u   s     		T*c   	      C   s  d   } d  } t j j |  } t j j | t  } t | d  rQ | j } n d } | sI| |  s{ t | d  } n  t	 |  d k r t
 j d t |   t j | d d d  d d  d	 d  d
 d  d | d t d } qt
 j d t |   t | d d d  d d  d d d	 d  d
 d  d | d t } |  j |  | j } nc t | d  t
 j d t |  t |   t j | d d  d d  d	 d  d
 d  d | d t d } | S(   Nc         S   sM   t  j t |  d t p" i t d 6} t g  | D] } | | s/ t ^ q/  S(   NR)   t   x(   R,   R:   R   R!   R9   R;   (   R2   t   verifiedR]   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   all_verified   s    %t   filenamet    s   *.gzi    s%   Repair job %s by reparsing stored NZBt   ppt   scriptt   catt   priorityt   nzbnamet   reusei   s    Repair job %s without stored NZBt   nzbs   Repair job %s with new NZB (%s)(   R#   R1   R2   RR   R3   R   t   hasattrR`   R   t   lenR.   t   debugR   R,   t   add_nzbfileR;   R   R<   RF   R   (	   R(   RG   t   new_nzbR_   RF   t   nameR2   R`   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyRV      s*    	>97c         C   s   y t  | j d  d } Wn t j d | j  d  SXd d l m } | | j d | d t \ } } | d k r | r |  j	 | | d  } t
 | _ n  d  S(   Ns   *.gzi    s,   Failed to find NZB file after pre-check (%s)i(   t   ProcessSingleFiles   .nzbRg   (   R   t   workpathR.   Rk   RF   t   sabnzbd.dirscannerRo   RN   R;   t   replace_in_qR!   Rg   (   R(   RI   t   nzb_pathRo   t   resRA   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt	   send_back   s    "c         C   s   yh |  j  |  } |  j j |  } |  j j |  } | |  j | <|  j j |  |  j | j =~ | SWn. t j d | j  t j d d t	 | SXd  S(   Ns*   Failed to restart NZB after pre-check (%s)s   Traceback: t   exc_info(
   t   get_nzoR%   t   indext   popR&   RF   R.   R/   RU   R;   (   R(   RI   RF   t   new_nzot   post	   targetpos(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyRr      s    c         C   s   t  j d  g  } x |  j D] } | j rQ | j t j j | j | j	   n | j | j	  | d  k sy | | k r t j | | j	 | j  | j s | j   q q q Wt j t | g  f t  d  S(   Ns   Saving queue(   R.   RU   R%   t   new_cachingR=   R1   R2   R3   RN   RF   R#   R,   t	   save_dataRp   t
   futuretypet   save_to_diskt
   save_adminR   R   (   R(   t   save_nzoRA   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR*      s    	%	c         C   s   | |  _  d  S(   N(   R"   (   R(   t   value(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   set_top_only   s    c   	      C   sM   t  | d | | d  t d | d | d | d | d t j } |  j |  | S(   Ni    Rd   t   urlRe   Rf   RM   (   R   R#   R;   R   t   GRABBINGR<   (	   R(   t   msgRb   Rc   Rd   R   Re   Rf   t
   future_nzo(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   generate_future   s    <c         C   s0  |
 d  k r i  }
 n  | j } | |  j k ryt j | | j  t j d |  | j \ } } } | d  k	 r t j	 | | |  } n  | j
 } | d  k r | } n  | j } | d  k r | } n  t | | | |  \ } } } } | j } yT | j | | | | d | d t d | d | d |	 d |
 | | _ |  j |  WnA t k
 rf|  j | t  n! t k
 r|  j | t  n X| | k rd  | _ n  |  j | j |  t j   r|  j   n  |  j   Wq,t j t d  |  t j d	 d
 t |  j | t  q,Xn t j d |  d  S(   Ns   Regenerating item: %sRh   R   Rd   Re   Rf   t   nzo_infos   Error while adding %s, removings   Traceback: Rv   s$   Item %s no longer in queue, omitting(   R#   RF   R&   R,   t   remove_dataRp   R.   RU   t   repair_optst
   opts_to_ppRc   Rd   R   Re   R    R!   R*   R7   R)   t	   TypeErrort   set_priorityR4   t	   auto_sortt   sort_by_avg_aget   reset_try_listR/   R0   R;   (   R(   t   futureR`   t   msgidRB   Rb   Rc   Rd   Re   Rf   R   RF   t   rt   ut   dt   scrt   categt   old_prio(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   insert_future   sL    						!	:		c         C   s]   xV g  | j  d  D] } | j   ^ q D], } | |  j k r) |  j | j |  q) q) Wd  S(   Nt   ,(   R8   t   stripR&   t   set_pp(   R(   RA   Rb   R\   RF   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   change_opts(  s    /c         C   sY   xR g  | j  d  D] } | j   ^ q D]( } | |  j k r) | |  j | _ q) q) Wd  S(   NR   (   R8   R   R&   Rc   (   R(   RA   Rc   R\   RF   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   change_script.  s    /c   	      C   s   x g  | j  d  D] } | j   ^ q D]o } | |  j k r) |  j | } t |  \ | _ } | _ } | j |  | d  k r |  j | |  q q) q) Wd  S(   NR   (	   R8   R   R&   R   Rd   Rc   R   R#   R   (	   R(   RA   Rd   t   explicit_priorityR\   RF   RI   Rb   t   prio(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt
   change_cat4  s    /c         C   sH   | |  j  k rD |  j  | } | j s8 | j | |  qD d  | _ n  d  S(   N(   R&   R   t   set_final_name_pwR#   t   wait(   R(   RF   Rn   t   passwordRI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   change_name>  s
    	c         C   s"   | |  j  k r |  j  | Sd  Sd  S(   N(   R&   R#   (   R(   RF   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyRw   H  s    c         C   s  | j  s* t j d | j |  j  | _  n  | j rO | j rO |  j |  d S| j   |  j   | j  rt	 | _
 | j } | |  j | j  <| t k r |  j j d |  n | t k r |  j j |  n |  j rJd } t	 } xG |  j D]< } | j | k  r |  j j | |  t } Pn  | d 7} q W| sZ|  j j |  qZn |  j j |  | rp|  j |  n  | p| j d k st j t d  | j d  qn  t j   r|  j   n  | j  S(	   NRI   Ra   i    i   t   Fetchings   NZB added to queuet   download(   R   (   RF   R,   t
   get_new_idRp   R&   t   filesR   t   end_jobR   R!   t   deletedRe   R   R%   t   insertR   R=   R;   R*   RM   t   growlert   send_notificationt   TR`   R4   R   R   (   R(   RI   R*   R+   Re   R{   t   addedt   position(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR<   O  sD    	!

				"c   	      C   s   | |  j  k r |  j  j |  } t | _ |  j j |  t j | | j  | r t	 j
   } | j | d d d d d  | j   n | r |  j | | |  n  | r |  j |  q n  d  S(   NRa   i    (   R&   Ry   R;   R   R%   R)   R,   R   Rp   t   databaset   get_history_handlet   add_history_dbt   closet   cleanup_nzoR*   (	   R(   RF   t   add_to_historyR*   t   cleanupt
   keep_basict	   del_filesRI   t
   history_db(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR)     s    	c         C   sH   x4 | D], } |  j  | d t d t d | d | q W|  j d  d  S(   NR   R*   R   R   R]   (   R)   R!   R*   (   R(   RA   R   RF   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   remove_multiple  s    *c         C   s   g  } x |  j  D] } | j |  q WxY | D]Q } |  j  j |  } t | _ |  j j |  t j | | j	  |  j
 |  q. W~ |  j   d  S(   N(   R&   R=   Ry   R;   R   R%   R)   R,   R   Rp   R   R*   (   R(   t   lstRF   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    	c         C   s   | |  j  k r |  j  | } | j |  } | r | j |  } | r~ | j r_ |  j |  q{ |  j | d t d t q~ q n  d  S(   NR   R   (   R&   t   get_nzf_by_idt
   remove_nzft   finished_filesR   R)   R!   (   R(   RF   t   nzf_idRI   t   nzft	   post_done(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    	c         C   s"   x | D] } |  j  |  q Wd  S(   N(   t	   pause_nzo(   R(   RA   RF   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   pause_multiple_nzo  s    c         C   s=   | |  j  k r9 |  j  | } | j   t j d |  n  d  S(   Ns   Paused nzo: %s(   R&   t   pauseR.   Rk   (   R(   RF   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    
c         C   s"   x | D] } |  j  |  q Wd  S(   N(   t
   resume_nzo(   R(   RA   RF   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   resume_multiple_nzo  s    c         C   sQ   | |  j  k rC |  j  | } | j   | j   t j d |  n  |  j   d  S(   Ns   Resumed nzo: %s(   R&   t   resumet   reset_all_try_listsR.   Rk   R   (   R(   RF   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    

c         C   s  y  t  |  } |  j | j } Wn n Xy |  j | } |  j | } Wn t k
 r\ d SX| j } | j } y^ |  j | d j } |  j | }	 |	 j }
 | | k r |
 | k s | | k r | | _ n  Wn | | _ n Xd } d } x t t |  j   D] } | |  j | j k r'| } n | |  j | j k rF| } n  | d k r| d k r|  j | } |  j | =|  j j | |  | | j f SqWd | j f S(   Nii    i   (   ii    (	   t   intR%   RF   R&   t   KeyErrorRe   t   xrangeRj   R   (   R(   t	   item_id_1t	   item_id_2t   it   nzo1t   nzo2t   nzo1_priorityt   nzo2_priorityt	   item_id_3t   nzo3t   nzo3_priorityt   item_id_pos1t   item_id_pos2R\   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   switch  sB    			$		
c         C   s>   x7 t  t |  j   D]  } | |  j | j k r | Sq Wd S(   Ni(   R   Rj   R%   RF   (   R(   t   nzb_idR   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   get_position	  s    c         C   s*   | |  j  k r& |  j  | j |  n  d  S(   N(   R&   t   move_up_bulk(   R(   RF   t   nzf_ids(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    c         C   s*   | |  j  k r& |  j  | j |  n  d  S(   N(   R&   t   move_top_bulk(   R(   RF   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    c         C   s*   | |  j  k r& |  j  | j |  n  d  S(   N(   R&   t   move_down_bulk(   R(   RF   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    c         C   s*   | |  j  k r& |  j  | j |  n  d  S(   N(   R&   t   move_bottom_bulk(   R(   RF   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    c         C   s,   t  j d |  t |  j t |  |  _ d  S(   Ns'   Sorting by average date...(reversed:%s)(   R.   RU   t   sort_queue_functionR%   t   _nzo_date_cmp(   R(   t   reverse(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR   $  s    c         C   s,   t  j d |  t |  j t |  |  _ d  S(   Ns   Sorting by name...(reversed:%s)(   R.   RU   R   R%   t   _nzo_name_cmp(   R(   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   sort_by_name)  s    c         C   s,   t  j d |  t |  j t |  |  _ d  S(   Ns   Sorting by size...(reversed:%s)(   R.   RU   R   R%   t   _nzo_size_cmp(   R(   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   sort_by_size.  s    c         C   s   t  | t  r3 | j   d k r* t } q3 t } n  | d  k rH t } n  | j   d k rj |  j |  nf | j   d k s | j   d k r |  j |  n2 | j   d k r |  j |  n t	 j
 d |  d  S(   Nt   descRn   t   sizet   bytest   avg_ages   Sort: %s not recognised(   t
   isinstancet   strt   lowerR;   R!   R#   R   R   R   R.   Rk   (   R(   t   fieldR   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt
   sort_queue4  s    			$c   
      C   s  yt  |  } |  j | } d } d } | t k rE |  j |  d  Sx= t t |  j   D]& } | |  j | j k r[ | } Pq[ q[ W| |  j | j k r | S| | _ | j	   | d k r|  j | =| t
 k r |  j j d |  d } q| t k rt |  j  } |  j j |  q|  j rd } t } xM |  j D]B }	 |	 j | k  ru|  j j | |  | } t } Pn  | d 7} q=W| st |  j  } |  j j |  qq|  j j |  d } n  | SWn d SXd  S(   Nii    i   (   R   R&   R   R   R   Rj   R%   RF   Re   R   R   R   R   R=   R!   R;   (
   R(   RF   Re   RI   t   nzo_id_pos1R{   R   t   pR   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   __set_priorityF  sT    	

			c         C   sb   yS d } xB g  | j  d  D] } | j   ^ q D] } |  j | |  } q2 W| SWn d SXd  S(   NiR   (   R8   R   t   _NzbQueue__set_priority(   R(   RA   Re   t   nR\   RF   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    /c         C   s4   | r | j    n  | r& | j    n  |  j    d  S(   N(   R   (   R(   R   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   reset_try_lists  s
    c         C   s,   x |  j  D] } | j   q
 W|  j   d  S(   N(   R%   R   R   (   R(   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    c         C   sh   |  j  s t S|  j rV xK |  j  D]/ } | j t j t j f k r  | j |  Sq  Wn |  j |  Sd  S(   N(   R%   R!   R"   RM   R   t   PAUSEDR   t   server_in_try_list(   R(   t   serverRI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   has_articles_for  s    		c         C   sF   x? |  j  D]4 } | j t k r
 | j t j t j f k r
 t Sq
 Wt S(   N(	   R%   Re   R   RM   R   R   R   R;   R!   (   R(   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   has_forced_items  s    *c         C   s   |  j  rc |  j r xK |  j D]= } | j t j t j f k r | j |  } | rY | Sq q Wq nh xX |  j D]M } | j |  rm | j t j t j f k rm | j |  } | r | Sqm qm W|  j |  d  S(   N(	   R"   R%   RM   R   R   R   t   get_articleR   t   add_to_try_list(   R(   R   RI   t   article(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    		+c   
      C   si  | j  } | j } | j r2 t j d | j  d  S| j | |  \ } } } | j } | ri |  j   n  | rO| j	 d  k s t j   | j	 k r t j | | j | j  t j j   | j d  k r d  | _	 q t j   | j | _	 n  | j sO| j }	 | r$|	 r$t j j | | f  qLt |  rLt j t d  |  qLqOn  | re|  j |  n  d  S(   Ns)   Discarding article %s, no longer in queues   %s -> Unknown encoding(   R   RI   R   R.   Rk   R  t   remove_articleR`   R   t	   next_saveR#   t   timeR,   R~   RF   Rp   R   R'   R*   t   save_timeoutt   precheckt   typeR   t   processR   t   warningR0   R   (
   R(   R  t   foundR   RI   t	   file_doneR   t   resetR`   t   _type(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   register_article  s0    				$		c         C   s   |  j  d t  d k  rL t j   rL t j j j rL t j j j j   qL n  | j	 s t
 | _	 | j r | j   | j   \ } } | r | j } |  j | d t
 |  j |  d  Sn  t j j | d  f  n  d  S(   Nt   grabsi   R   (   t   activesR!   R4   t   autodisconnectR,   t
   downloadert
   DownloaderR'   t
   disconnectR   R;   R  R   t   check_qualityt   downpathR   Ru   R   R  R#   (   R(   RI   t   enought   ratiot   workdir(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    $			
	c         C   sk   d } x^ |  j  D]S } | r; | j t j k r; | d 7} q | j t j t j f k r | d 7} q q W| S(   Ni    i   (   R%   RM   R   R   R   (   R(   R  R   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR    s    i    c         C   s   d } d } d } g  } d } x |  j  D] } | sA | | k  r | j d |  }	 | j |	  | j d k r | |	 t 7} | |	 t 7} | d 7} q nB | j d k r | j   \ }
 } | |
 7} | | 7} | d 7} n  | d 7} q( W| | | | f S(   Ni    t   for_clit   Pausedi   (   R%   t   gather_infoR=   RM   R   R   t   total_and_remaining(   R(   R  t   max_jobst
   bytes_leftR   t   q_sizet	   pnfo_listR   RI   t   pnfot   bt   b_left(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt
   queue_info  s(    

c         C   s@   d } x3 |  j  D]( } | j d k r | | j   7} q q W| S(   Ni    R  (   R%   RM   t	   remaining(   R(   R  RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR&  3  s
    c         C   sA   t  } x4 |  j D]) } | j r | j d k r t } Pq q W| S(   NR  (   R;   R%   R   RM   R!   (   R(   t   emptyRI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   is_empty>  s    c         C   s'   | j  | |  t j j | j  d  S(   N(   t
   purge_dataR   R'   t   purge_articlest   saved_articles(   R(   RI   R   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR   G  s    c         C   s{   g  } xP |  j  D]E } | j r | j r | j t j t j f k r | j |  q q Wx | D] } |  j |  q` Wd  S(   N(	   R%   R   R   RM   R   R   R   R=   R   (   R(   R'  RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   stop_idle_jobsM  s    /c         C   st   g  } xg |  j  D]\ } |  j  | } | j r | j } | j rl | j   j d  rl | j | | f  ql q q W| S(   Nt   http(   R&   R   R   R   t
   startswithR=   (   R(   R   RF   RI   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   get_urlsX  s    		c         C   sq   g  } xd |  j  D]Y } |  j  | } | j } | j r | j   sS t |  d k r | j | | f  q q W| S(   Ni   (   R&   R   R   t   isdigitRj   R=   (   R(   R   RF   RI   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt
   get_msgidsc  s    	'c         C   s   d S(   Ns
   <NzbQueue>(    (   R(   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   __repr__m  s    N(=   t   __name__t
   __module__R#   R'   R    RJ   R!   R;   R>   RV   Ru   R	   R   Rr   R*   R   R   R   R   R   R   R   R   Rw   R<   R)   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R   R  R%  R&  R(  R   R,  R/  R1  R2  (    (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR   1   s   		5 "				2					6			-					A
			&							
c         C   sw   |  j  } | j  } | d  k r. | d  k r. d S| d  k rL t j j   } n | d  k rj t j j   } n  t | |  S(   Ni    (   t   avg_dateR#   t   datetimet   nowt   cmp(   R   R   t	   avg_date1t	   avg_date2(    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR   r  s    		c         C   s   t  |  j j   | j j    S(   N(   R8  t
   final_nameR   (   R   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    c         C   s   t  |  j | j  S(   N(   R8  R   (   R   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    c         C   s  g  |  D] } | j  t k r | ^ q } g  |  D] } | j  t k r/ | ^ q/ } g  |  D] } | j  t k rW | ^ qW } g  |  D] } | j  t k r | ^ q } g  |  D] } | j  t k r | ^ q } | j d | d |  | j d | d |  | j d | d |  | j d | d |  | j d | d |  | }	 |	 j |  |	 j |  |	 j |  |	 j |  x* |  D]" }
 |
 |	 k rw|	 j |
  qwqwW|	 S(   NR8  R   (	   Re   R   R   R   R   R   t   sortRP   R=   (   t   nzo_listt   methodR   RI   t   ultra_high_priorityt   super_high_priorityt   high_priorityt   normal_priorityt   low_priorityt   new_listR\   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s&    (((((c         C   s   t  j j |   S(   N(   R   R'   R<   (   RI   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   add_nzo  s    c
   
      C   sV   |	 d  k r i  }	 n  t j j |  | | | d | d | d | d | d | d |	 d  S(   NRb   Rc   Rd   Re   Rf   R   (   R#   R   R'   R   (
   R   R`   R   RB   Rb   Rc   Rd   Re   Rf   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   insert_future_nzo  s    	c         C   s   t  j j |  |  S(   N(   R   R'   R   (   RA   Re   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    c         C   s   t  j j |   S(   N(   R   R'   Rw   (   RF   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyRw     s    c         C   s   t  j j |  |  d  S(   N(   R   R'   R   (   R   R   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR     s    c         C   s   t  j j |  |  S(   N(   R   R'   RV   (   RG   Rm   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyRV     s    c         C   s   t  j j |  |  S(   N(   R   R'   R>   (   RW   RX   (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyR>     s    (D   R1   R.   R  R6  R,   t   sabnzbd.trylistR    t   sabnzbd.nzbstuffR   t   sabnzbd.miscR   R   R   R   R   t   sabnzbd.panicR   t   sabnzbd.databaseR   t   sabnzbd.decoratorsR   R	   R
   t   sabnzbd.constantsR   R   R   R   R   R   R   R   R   R   R   R   R   R   t   sabnzbd.cfgR4   t   sabnzbd.articlecacheR   t   sabnzbd.downloadert   sabnzbd.assemblerR   R   t   sabnzbd.growlerR   t   sabnzbd.encodingR   R   t   sabnzbd.bpsmeterR   R   R   R   R   R   RE  R#   RF  R   Rw   R!   R   RV   R;   R>   (    (    (    s$   /var/www/SABnzbd/sabnzbd/nzbqueue.pyt   <module>   sL   (^   D					