
oTc           @   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 y e j e j d  Wn n Xy d  d l	 Z	 d  d l
 Z
 Wn e k
 r n Xd  d l Z d  d l Td  d l j Z d  d l j Z d  d l m Z d  d l m Z m Z m Z m Z m Z d  d l j Z d  d l j Z d  d l m Z d  d l  m! Z! m" Z" d  d l# m$ Z$ d  d	 l% m& Z& d  d
 l' m( Z( m) Z) m* Z* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ m0 Z0 m1 Z1 m2 Z2 m3 Z3 d  d l4 m5 Z5 m6 Z6 m7 Z7 m8 Z8 m9 Z9 d  d l: m; Z; d  d l< m= Z= d  d l> m? Z? d  d l@ mA ZA d  d lB mC ZC d  d lD mE ZE d  d lF mG ZG mH ZH mI ZI d  d lJ Z d  d lK Z d  d lL Z d ZM d ZN d ZO d ZP d ZQ d ZR d ZS d ZT d ZU d ZV e  jW d k re  jX jY d d  jZ   j[ d  Z\ n g  Z\ d    Z] d!   Z^ d"   Z_ d#   Z` d$   Za d%   Zb d&   Zc d'   Zd d(   Ze d)   Zf d*   Zg d+   Zh d,   Zi d-   Zj d.   Zk d/   Zl d0   Zm d1   Zn d2   Zo d3   Zp d4   Zq d5   Zr d6   Zs d7   Zt d8   Zu d9   Zv d:   Zw d;   Zx d<   Zy e jz d=  Z{ d>   Z| d?   Z} d@   Z~ dA   Z dB   Z dC   Z dD   Z dE   Z dF   Z dG   Z dH   Z dI   Z dJ   Z dK   Z dL   Z dM   Z dN   Z dO   Z dP   Z dQ   Z dR   Z dS   Z dT   Z dU   Z dV   Z dW   Z dX   Z dY   Z dZ   Z d[   Z d\   Z d]   Z d^   Z d_   Z d`   Z i, e da 6e^ db 6e_ dc 6e` dd 6ea de 6eb df 6en dg 6eo dh 6ep di 6eq dj 6er dk 6es dl 6et dm 6eu dn 6ev do 6ew dp 6ex dq 6ey dr 6e| ds 6e| dt 6e} du 6e~ dv 6e dw 6e dx 6e dy 6e dz 6e d{ 6e d| 6e d} 6e d~ 6e d 6e d 6e d 6e d 6e d 6e d 6e d 6e d 6e d 6e d 6e d 6e d 6e d 6e d 6Z i
 ec d 6ed d 6ee d 6ef d 6eg d 6eh du 6ei dv 6ej d 6ek d 6em d 6Z i e d 6e d 6e d 6e d 6e d 6e d 6e d 6e d 6Z d d d d e d  Z d e f d     YZ d   Z d   Z d   Z d d e e d d d e d d d e d d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z i  a d   Z d   Z d d  Z d d e d d d d  Z d   Z d d d  Z d   Z d   Z e d  Z d   Z e d  Z e d  Z d   Z i d d 6d d 6d d 6d d 6d dx 6d d 6d d 6Z d d  Z d   Z d   Z d S(   iNt    (   t   *(   t
   Downloader(   t   NzbQueuet   set_priorityt
   sort_queuet	   scan_jobst
   repair_job(   t	   SKIN_TEXT(   t   RSSt   Item(   t
   JsonWriter(   t   folders_at_path(   t   loadavgt   to_unitst   diskfreet	   disktotalt   get_extt   get_filenamet   int_convt   globbert   time_formatt
   remove_allt   starts_with_patht   cat_convert(   t   xml_namet   unicodert   special_fixert   platform_encodet   html_escape(   t   PostProcessor(   t   ArticleCache(   t   test_nntp_server_dict(   t	   Bookmarks(   t   Rating(   t   BPSMeter(   t   build_history_infot   unpack_history_infot   get_history_handles   expect one parameters   expect two parameterss   expect integer values   item does not exists   not implementeds   no file givens   file does not exists   Format not supporteds   Config item does not exists   Incorrect server settingst   ntt   PATHEXTt   ;c         C   s   |  j  d d  } |  j  d  } |  j  d d  } |  j  d d  } t | t  ra | d } n  t | t  r} | d } n  t j  | t  | | |   } | d k r | r d | | f } n  | S(	   Nt   modeR    t   outputt   namet   callbacki    t   jsons   %s(%s)(   t   gett
   isinstancet   listt
   _api_tablet   _api_undefined(   t   kwargsR*   R+   R,   R-   t   response(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   api_handler[   s      c         C   s@   t  j | j d  | j d   \ } } t | d d d | S(   Nt   sectiont   keywordt   configt   data(   R9   t   get_dconfigR/   t   report(   R,   R+   R4   t   resR:   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_get_configl   s    *c         C   s   | j  d  d k r+ t | |  | d <nx | j  d  d k rV t | |  | d <nM | j  d  d k r t | |  | d <n" t j |  } | s t | t  St j   t j	 | j  d  | j  d   \ } } t | d d d | S(   NR7   t   serversR8   t   rsst
   categoriesR9   R:   (
   R/   t   handle_server_apit   handle_rss_apit   handle_cat_apiR9   t
   set_configR<   t   _MSG_NO_SUCH_CONFIGt   save_configR;   (   R,   R+   R4   R=   R:   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_set_configq   s    
*c         C   s'   t  |  r t |  St | t  Sd  S(   N(   t   del_from_sectionR<   t   _MSG_NOT_IMPLEMENTED(   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_del_config   s    
c         C   s4   | d k r d } n d } t  | d | d t   S(   NR.   R    t   queueR8   R:   (   R<   t   qstatus_data(   R,   R+   R4   R8   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_qstatus   s    	c         C   s.   | j  d d  } t j  |  t  | | |  S(   Nt   valueR    (   R/   t   _api_queue_tablet   _api_queue_default(   R,   R+   R4   RO   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt
   _api_queue   s    c         C   s   | j    d k r) t j j   t |   S| rp | j d  } t | j d   } t j j | |  t |   St |  t	  Sd  S(   Nt   allt   ,t	   del_files(
   t   lowerR   t   doR   R<   t   splitR   R/   t   remove_multiplet   _MSG_NO_VALUE(   R+   RO   R4   t   itemsRU   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_queue_delete   s    

c         C   sI   | j  d  } | r8 | r8 t j j | |  t |   St |  t  Sd  S(   Nt   value2(   R/   R   RW   t
   remove_nzfR<   t   _MSG_NO_VALUE2(   R+   RO   R4   R]   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_queue_delete_nzf   s
    
c         C   sg   | j  d  } | j  d  } | rV | rV t j j | t |  t |   t |   St |  t  Sd  S(   NR]   t   value3(   R/   R   RW   t   change_nameR   R<   R_   (   R+   RO   R4   R]   Ra   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_queue_rename   s    "
c         C   s   t  j |  t |   S(   N(   t   sabnzbdt   change_queue_complete_actionR<   (   R+   RO   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt!   _api_queue_change_complete_action   s    c         C   s   t  j j   t |   S(   N(   R   RW   R   R<   (   R+   RO   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_queue_purge   s    c         C   s2   | r( | j  d  } t j j |  n  t |   S(   NRT   (   RX   R   RW   t   pause_multiple_nzoR<   (   R+   RO   R4   R[   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_queue_pause   s    c         C   s2   | r( | j  d  } t j j |  n  t |   S(   NRT   (   RX   R   RW   t   resume_multiple_nzoR<   (   R+   RO   R4   R[   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_queue_resume   s    c         C   s   | j  d  } | r | r yM y t |  } Wn t |  t  SXt | |  } t |  d d d | SWq t |  t  SXn t |  t  Sd  S(   NR]   R8   t   positionR:   (   R/   t   intR<   t   _MSG_INT_VALUER   R_   (   R+   RO   R4   R]   t   priorityt   pos(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_queue_priority   s    c         C   sO   | j  d  } | j  d d  } | r> t | |  t |   St |  t  Sd  S(   Nt   sortt   dirR    (   R/   R   R<   R_   (   R+   RO   R4   Rr   t	   direction(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_queue_sort   s    
c         C   s?  | j  d  } | j  d d  } | j  d  } | j  d  } | j  d  } |  d k r| r | d	 k r | j   d
 k } t | |  n  t | j  d   }	 t d |	 d | d | d |  d |  \ }
 } } } } |
 j d  |
 d <|
 j d  |
 d <t |  d d d t |
  S|  d k r.t   St |  t	  Sd  S(   NRr   Rs   R    t   startt   limitt   transt   xmlR.   t   indext   desct   historyR+   t   cat_listRA   t   script_listt   scriptsR8   RL   R:   R@   (   Ry   R.   (
   R/   RV   R   t   boolt   build_queuet   popR<   t   remove_callablet   rss_qstatusRJ   (   R+   RO   R4   Rr   Rt   Rv   Rw   Rx   t   reverseR|   t   infot	   pnfo_listt   bytespersect   verbose_listt   dictn(    (    s   /var/www/SABnzbd/sabnzbd/api.pyRQ      s"    6c         C   sc  i t  j d 6t  j d 6} i t  j d 6t  j d 6t  j d 6t  j d 6t  j d 6} | j d  } | j d	  } | rRy | d
 k r | d k r | n d  } | d k r | d k r | n d  } | d k r | | n d  }	 | d k r | | n d  }
 t
 j   r0t  j j | | | |	 |
 | j d   n  t |   SWq_t |  t  SXn t |  t  Sd  S(   Nt   upt   downt   spamt	   encryptedt   expiredt   othert   commentt   typet   settingt   videot   -t   audiot   votet   flagt   detail(   R"   t   VOTE_UPt	   VOTE_DOWNt	   FLAG_SPAMt   FLAG_ENCRYPTEDt   FLAG_EXPIREDt
   FLAG_OTHERt   FLAG_COMMENTR/   t   Nonet   cfgt   rating_enableRW   t   update_user_ratingR<   t   _MSG_BAD_SERVER_PARMSRZ   (   R+   RO   R4   t   vote_mapt   flag_mapR   R   R   R   R   R   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_queue_rating  s     8$$+c         C   s
   t  |  S(   N(   t   options_list(   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_options'  s    c      	   C   s(   t  | d d d t | j d d   S(   NR8   RO   R:   R    (   R<   t   TxR/   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_translate,  s    c         C   s  |  d  k s* t |  t  s* t |  t  r< | j d  }  n  |  d  k sf t |  t  sf t |  t  rx | j d  }  n  t |  d  r |  j } n' t |  d  r t |  j  } n d } |  d  k	 r| r|  j	 r| j d  } | j d  } | r| rt
 |  } n  t j |  | j d  | j d	  | | j d
  | j d   } t | d d d i | d d k d 6| d d 6d t St | t  Sd  S(   Nt   Filedatat   nzbfilet   getvalueRO   i    t   catt   xcatt   ppt   scriptRo   t   nzbnameR8   R    R:   t   statusi   t   nzo_idst   compat(   R   R0   t   strt   unicodeR/   t   hasattrt   lengtht   lenRO   t   filenameR   Rd   t   add_nzbfileR<   t   TrueRZ   (   R,   R+   R4   t   sizeR   R   R=   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_addfile1  s$    **$8c         C   s   | j  d  } |  d  k s9 t |  t  s9 t |  t  rK | j  d  }  n  |  d  k su t |  t  su t |  t  r | j  d  }  n  t | |   } | r t | t  r | d } n  t | d d d i t d 6| d	 6St | t	  Sd  S(
   NRO   R   R   i    R8   R    R:   R   t   nzo_id(
   R/   R   R0   R   R   t	   retry_jobR1   R<   R   t   _MSG_NO_ITEM(   R,   R+   R4   RO   R   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt
   _api_retryN  s    **$c         C   s  |  r" t  |  t  r" |  d }  n  |  rt j j |   rqt |   } | ra| j d  } | j d  } | j d  } | j d  } | r | r t |  } n  | j d  } | j d  }	 t |   d k rt	 j
 j | |  d | d | d | d | d
 t d |	 }
 qnt |   d k rnt	 j
 j | |  d | d | d | d | d
 t d |	 }
 qnq~t | t  Sn t | t  St | d d d i |
 d d k d 6|
 d d 6d t St | t  Sd  S(   Ni    R   R   R   R   Ro   R   s   .zips   .rart   keeps   .nzbs   .gzR8   R    R:   R   i   R   R   (   s   .zips   .rar(   s   .nzbs   .gz(   R0   R1   t   ost   patht   existsR   R/   R   R   Rd   t
   dirscannert   ProcessArchiveFileR   t   ProcessSingleFileR<   t   _MSG_NO_FILEt   _MSG_NO_PATHRZ   (   R,   R+   R4   t   fnR   R   R   R   Ro   R   R=   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_addlocalfilea  s0    	3	68c         C   s   | j  d  } | j  d  } | r | r t j j | |  \ } } | d
 k rg t | d | | f St | d d d i | d 6| d	 6Sn t | t  Sd  S(   NRO   R]   Ry   R.   R:   R8   t   resultRl   Ro   (   Ry   R.   (   R/   R   RW   t   switchR<   R_   (   R,   R+   R4   RO   R]   Rp   t   prio(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_switch  s    'c         C   sy   | j  d  } | j  d  } | rh | rh | } | } | d k rK d  } n  t j j | |  t |  St | t  Sd  S(   NRO   R]   R   (   R/   R   R   RW   t
   change_catR<   RZ   (   R,   R+   R4   RO   R]   R   R   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_change_cat  s    	
c         C   s   | j  d  } | j  d  } | rn | rn | } | } | j   d k rQ d  } n  t j j | |  t |  St | t  Sd  S(   NRO   R]   t   none(   R/   RV   R   R   RW   t   change_scriptR<   RZ   (   R,   R+   R4   RO   R]   R   R   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_change_script  s    	
c         C   s\   | j  d  } | j  d  } | rR | rR | j   rR t j j | t |   n  t |  S(   NRO   R]   (   R/   t   isdigitR   RW   t   change_optsRm   R<   (   R,   R+   R4   RO   R]   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_change_opts  s
    c         C   s   t  | t d  S(   Ns    YET(   R<   RJ   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_fullstatus  s    c         C   s:  | j  d d  } | j  d  } | j  d  } | j  d  } | j  d  } | sc t j   } n  |  d k rY| j   } t t | j  d    }	 | d k rt j j }
 | d k r |	 r t	 |
 j
 |   n  |
 j |  n  | d k r|
 j |  n  t |  S| rI| j d  } x | D] } t | |	  q(Wt |  St | t  Sn |  s)t t  \ } } } t j j   \ } } } } t |  t |  t |  t |  f \ | d <| d <| d <| d <t d | d | d t d | d |  \ | d <} | d <t | d d d t |  St | t  Sd  S(   NRO   R    Rv   Rw   t   searcht   failed_onlyt   deleteRU   RS   t   failedt	   completedRT   t
   total_sizet
   month_sizet	   week_sizet   day_sizet   verboset   slotst	   noofslotsR8   R|   R:   (   RS   R   R   (   RS   R   (   RS   R   (   R/   R   t   history_limitRV   R   R   t   cherrypyt   thread_datat
   history_dbt   del_job_filest   get_failed_pathst   remove_failedt   remove_completedR<   RX   t   del_hist_jobRZ   t   build_headerR   R#   RW   t   get_sumsR   t   build_historyR   RJ   (   R,   R+   R4   RO   Rv   Rw   R   R   t   specialRU   R   t   jobst   jobR|   R   R   t   grandt   montht   weekt   dayt   fetched_items(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_history  s@    

F8c         C   sB   | j  d  } | r1 t | d d d t |  St | t  Sd  S(   NRO   R8   t   filesR:   (   R/   R<   t   build_file_listRZ   (   R,   R+   R4   RO   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_get_files  s    s   /browse/post/(\d+)c         C   s  | j  d  } | j  d  } | j  d  } | j  d  } | j  d  } t |  t  sf |  g }  n  t | t  s | g } n  x	t t |    D] } |  | }	 | t |  k  r | | }
 n d }
 t j |	 j    } |	 r |	 j   }	 n  |	 r6|	 j	   st |	  d k r6t
 j |	 | | | | |
  q | rdt
 j | j d  | | | | |
  q |	 r t
 j |	 | | | | |
  q q Wt |   d	 k rt |  St | t  Sd  S(
   NR   R   R   Ro   R   R    i   i   i    (   R/   R0   R1   t   xrangeR   t   _RE_NEWZBIN_URLR   RV   t   stripR   Rd   t	   add_msgidt   groupt   add_urlR<   RZ   (   t   namesR+   R4   R   R   R   Ro   t   nzbnamest   nR,   R   t   newzbin_url(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt
   _api_addid  s4    
$(#
c         C   s$   t  j d  t j j   t |  S(   Ni    (   t	   schedulert   plan_resumeR   RW   t   pauseR<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt
   _api_pause  s    c         C   s!   t  j d  t j   t |  S(   Ni    (   R  R  Rd   t   unpause_allR<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_resume  s    
c         C   s*   t  j   t j j   t t  _ t |  S(   N(   Rd   t   haltR   t   enginet   exitR   t   SABSTOPR<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_shutdown   s    
	c         C   s   |  d k r+ t  | d d d t j j   S|  d k rV t  | d d d t j j   S|  ri t  | t  St  | d d d t j j   S(   Nt   clearR8   t   warningsR:   t   show(   R<   Rd   t
   GUIHANDLERR  t   contentRJ   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_warnings(  s    c         C   s   t  | d d d t t  S(   NR8   RA   R:   (   R<   t	   list_catst   False(   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_get_cats3  s    c         C   s8   g  t    D] } t |  ^ q
 } t | d d d | S(   NR8   R   R:   (   t   list_scriptsR   R<   (   R,   R+   R4   t   valR:   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_get_scripts8  s    "c         C   s   t  | d d d t j S(   NR8   t   versionR:   (   R<   Rd   t   __version__(   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_version>  s    c         C   s   d } t  j   sr d } | j d d  } | s9 d } q | t  j   k rT d } n  | t  j   k r d } q n! t  j   r t  j   r d } n  t | d d	 d
 | S(   NR   t   badkeyt   keyR    t   apikeyt   nzbkeyt   loginR8   t   authR:   (   R   t   disable_keyR/   t   nzb_keyt   api_keyt   usernamet   passwordR<   (   R,   R+   R4   R,  R(  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt	   _api_authC  s    			c         C   s6   |  d k r) t  j j d t  t |  St | t  S(   Nt   get_bookmarkst   force(   R!   RW   t   runR   R<   RJ   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_newzbinU  s    
c         C   s!   t  j   t j j   t |  S(   N(   Rd   R  R   R  t   restartR<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_restart]  s    
c         C   s+   t  j   t  j   t j j   t |  S(   N(   Rd   t   request_repairR  R   R  R7  R<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_restart_repaird  s    

c         C   s   t  j j   t |  S(   N(   R   RW   t
   disconnectR<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_disconnectl  s    c         C   s8   | j  d d  j   } t j j | d k  t |  S(   NRO   t   1t   0(   R/   R  R   t   osx_menut   setR<   (   R,   R+   R4   RO   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_osx_iconr  s    c         C   s   t  d t d t  t |  S(   NRS   t   action(   R   R  R   R<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_rescany  s    c         C   s   d d  l  } | j d d  }  | j d d  } | j d  } | j d d  } | j j | | |  |  } | d  k r t | t  St | d d d	 | Sd  S(
   NiR,   R    RO   t   titlet
   movieextraR8   R   R:   (   t   sabnzbd.tvsortR/   t   tvsortt	   eval_sortR   R<   RJ   (   R,   R+   R4   Rd   RO   RD  t	   multipartR   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_eval_sort  s    c         C   s   t  j j   t |  S(   N(   Rd   R   t   dirscanR<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_watched_now  s    c         C   s   t  t j _ t |  S(   N(   R  R   RW   t   pausedR<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_resume_pp  s    c         C   s   t  t j _ t |  S(   N(   R   R   RW   RM  R<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_pause_pp  s    c         C   s   t  j   t |  S(   N(   R  t	   force_rssR<   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_rss_now  s    
c         C   s   t  j j d t  d  S(   NR4  (   R#   RW   t   reset_quotaR   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_reset_quota  s    c         C   s   t  j d  i  } d d g | d <d d g | d <t j j d d d t t j j t j j	 t
 j j   d	   d t d  | d
 d d d | } | d k r d  } n  t | d | S(   Ns   Sending testmails   action 1s   action 2t   downloadt   unpacks   I had a dja vui{   t   unknowns   /unknown/I had a dja vut	   my_scripts   Line 1
Line 2
Line 3
dja vu
i    t   tests   Email succeededt   error(   t   loggingR   Rd   t   emailert   endjobR   R   R   t   normpatht   joinR   t   complete_dirt   get_patht   MEBIR   R<   (   R,   R+   R4   t   packR=   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_test_email  s    '		c         C   sG   t  j d  t j j d t d  d d t d | } t | d | S(   Ns   Sending test notificationt   SABnzbds   Test NotificationR   t   waitRX  RY  (   RZ  R   Rd   t   growlert   send_notificationt   TR   R<   (   R,   R+   R4   R=   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_test_notif  s    *c         C   s   t  | t  S(   N(   R<   RJ   (   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR3     s    c         C   s   | j  d  } | r | d k r g  } t | j  d d   }  g  t t j j |    D] } d | k rX | d ^ qX } t | d d d | St |   }  t |  t  } t | d d d | Sd  S(	   Nt   compactR=  t   termR    R   R8   R:   t   paths(   R/   R   R   R   R   t   dirnameR<   R   (   R,   R+   R4   Rj  Rl  t   entry(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_browse  s    ;c         C   s   t  j |  t  | |  S(   N(   t   _api_config_tableR/   t   _api_config_undefined(   R,   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_config  s    c         C   sy   | j  d  } | s d } n  | j   rh y t |  } Wn t |  t  SXt j j |  t |   St |  t  Sd  S(   NRO   R>  (   R/   R   Rm   R<   RZ   R   RW   t   limit_speed(   R+   R4   RO   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_config_speedlimit  s    	
c         C   s%   t  |  d d d t t j j    S(   NR8   t
   speedlimitR:   (   R<   Rm   R   RW   t	   get_limit(   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_config_get_speedlimit  s    c         C   sw   | j  d  } | j  d  } | r7 t j j |  n  | rP t j j |  n  | s\ | rf t |   St |  t  Sd  S(   NRO   R]   (   R/   R   t	   web_colorR@  t
   web_color2R<   RZ   (   R+   R4   RO   R]   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_config_set_colorscheme  s    
c         C   s,   | j  d  } t j t |   t |   S(   NRO   (   R/   R  R  R   R<   (   R+   R4   RO   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_config_set_pause  s    c         C   s<   t  j j t j    t j   t |  d d d t  j   S(   NR8   R)  R:   (   R   R/  R@  R9   t   create_api_keyRG   R<   (   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_config_set_apikey  s    
c         C   s<   t  j j t j    t j   t |  d d d t  j   S(   NR8   R*  R:   (   R   R.  R@  R9   R|  RG   R<   (   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_config_set_nzbkey  s    
c         C   sD   t  |  \ } } i | d 6| d 6} |  r< t |  d | S| Sd  S(   NR   t   messageR:   (   R    R<   (   R+   R4   R   t   msgR5   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_config_test_server  s
    c         C   s   t  |  t  S(   N(   R<   RJ   (   R+   R4   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyRq    s    c         C   s   t  j j   \ } } } } i | d 6| d 6| d 6| d 6} i  | d <xt t j   D]f } t  j j |  \ }	 }
 } } i |	 p d d 6|
 p d d 6| p d d 6| p d d 6| d | <qT Wt | d d d	 | S(
   Nt   totalR   R   R   R?   i    R8   R    R:   (   R#   RW   R   R9   t   get_serverst   amountsR<   (   R,   R+   R4   t   sum_tt   sum_mt   sum_wt   sum_dt   statst   svrt   tt   mt   wt   d(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _api_server_stats  s    "
Ft   server_statst
   get_configRE   t
   del_configt   qstatusRL   t   optionst	   translatet   addfilet   retryt   addlocalfileR   R   R   R   t
   fullstatusR|   t	   get_filest   addurlt   addidR  t   resumet   shutdownR  R9   t   get_catst   get_scriptsR$  R,  t   newzbinR7  t   restart_repairR;  t   osx_icont   rescanRH  t   watched_nowt	   resume_ppt   pause_ppt   rss_nowt   browseRR  t
   test_emailt
   test_notifR   t
   delete_nzft   renamet   change_complete_actiont   purgeRo   Rr   t   ratingRu  t   set_speedlimitt   get_speedlimitt   set_colorschemet	   set_pauset
   set_apikeyt
   set_nzbkeyt   test_serverRO   c         C   s  |  d k r d } | r/ i t  d 6| d 6} nH | d  k rK i t d 6} n, t | d  rj | rj | } n i | | 6} t   j |  } | rd | | f } qnC|  d k r?| s d } n  d	 } t   }	 | r |	 j d i t  d 6| d 6 }
 n: | d  k r |	 j d i t d 6 }
 n |	 j | |  }
 d
 |
 } n d } | rXd | } n | sj| d  k rsd } nu t |  t	 t
 f k rg  | D] } t |  ^ q} d j |  } n  t | t  rd | } n d t |  } | t j j d <d t j j d <| S(   NR.   s   application/json;charset=UTF-8R   RY  t   __iter__s   %s(%s)Ry   R   s   text/xmls+   <?xml version="1.0" encoding="UTF-8" ?>
%s
s
   text/plains
   error: %s
s   ok
t    u   %s
s   %s
s   Content-Types   no-cachet   Pragma(   R  R   R   R   R   t   writet   xml_factoryR5  R   R1   t   tupleR   R^  R0   R   R   R5   t   headers(   R+   RY  R8   R:   R-   R   R  R   R5   t   xmlmakert
   status_strR"  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR<   t  sJ    			#	R  c           B   s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C   s   d |  _  d  S(   NR    (   t   _xml_factory__text(   t   self(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   __init__  s    c         C   s=   g  } x' | D] } | j  |  j | |   q Wd j |  S(   NR    (   t   appendR5  R^  (   R  t   keywt   lstt   textt   item(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _tuple  s    c         C   sb   g  } x1 | j    D]# } | j |  j | | |   q W| rZ d | d j |  | f Sd Sd  S(   Ns   <%s>%s</%s>
R    (   t   keysR  R5  R^  (   R  R  R  R  R(  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   _dict  s    !c         C   s.  g  } x | D] } t  | t  rG | j |  j t | d  |   q t  | t  r{ | j |  j t | d  |   q t  | t  r | j |  j t | d  |   q t  | t	  s t
 |  } n  t | d  } | j d | t | d d | f  q W| r&d | d j |  | f Sd Sd  S(	   Nt   slotR1   R  R  s   <%s>%s</%s>
t   encodings   utf-8R    (   R0   t   dictR  R  t   plural_to_singleR1   t   _listR  R  t
   basestringR   R   R^  (   R  R  R  R  R   R,   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR    s    %%%*c         C   s   t  | t  r$ |  j | |  } nv t  | t  rH |  j | |  } nR t  | t  rl |  j | |  } n. | r d | t | d d | f } n d } | S(   Ns   <%s>%s</%s>
R  s   utf-8R    (   R0   R  R  R1   R  R  R  R   (   R  R  R  R  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR5    s    "(   t   __name__t
   __module__R  R  R  R  R5  (    (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR    s
   					c         C   s   | j  d  } | s' | j  d  } n  | r t j d |  } | r[ | j |  | } n t j | |  d  } t j j | |  n  | S(   NR8   R,   R?   (	   R/   R9   R  t   set_dictt   ConfigServerR   R   RW   t   update_server(   R+   R4   R,   t   servert   old_name(    (    s   /var/www/SABnzbd/sabnzbd/api.pyRB     s    	c         C   sm   | j  d  } | s' | j  d  } n  | s1 d  St j d |  } | rY | j |  n t j | |  | S(   NR8   R,   R@   (   R/   R   R9   R  R  t	   ConfigRSS(   R+   R4   R,   t   feed(    (    s   /var/www/SABnzbd/sabnzbd/api.pyRC     s    c         C   sm   | j  d  } | s' | j  d  } n  | s1 d  St j d |  } | rY | j |  n t j | |  | S(   NR8   R,   RA   (   R/   R   R9   R  R  t	   ConfigCat(   R+   R4   R,   R  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyRD     s    c   <      C   s	  | r t  } n t } | s$ g  } n  | r3 | } n g  } t | |  \ } } } | | d <t j j } | j d  r t t | d j	   | d <n
 d | d <t
 j   r t
 j   r t | d <n  t
 j   d k r t t
 j    | d <n
 d | d <t j j   } t   | d <t | d  k  | d	 <t t
 j    | d
 <d } t } d } g  } g  } t |	  }	 t |  } | rt   } t |  | k  rg  } qn g  } t |  t |  | d <| | d <|	 | d <| d | d | d <| d | d k r| d | d <n  x| D]} | t } | t } | t } | t } | t } | t } | sld } n  | t }  | t  }! | t! }" | t" }# | t# }$ | t$ }% | t% }& |" t& }' |# t& }( | t' }) | s| r| t( }* | t) }+ | t* }, n  | j+ |  i | d 6t |  d 6}- t, j- | | |  }. t |.  |- d <| r\| |- d <n
 d |- d <|! |- d <| |   |- d <| |- d <d |' |- d <d |( |- d <| st. j/ d t0 |(  t  |- d <t. j/ d t0 |( |'  t  |- d <n  t1 |#  |- d <t1 |"  |- d <t2 j3 j4 rr|% t5 j6 t5 j7 f k rr| rr|% t5 j8 k r\t5 j8 |- d <n t5 j9 |- d <t } n d  |% |- d <|& t: k rd! |- d" <nU |& t; k rd# |- d" <n< |& t< k rd$ |- d" <n# |& t= k rd% |- d" <n
 d& |- d" <|( |' k rd |- d' <n  d  t0 |( |' |( d(  |- d' <|) |- d) <t2 j3 j4 sat2 j3 j> sa|% t5 j9 t5 j? f k r|& t: k rd* |- d+ <d, |- d- <n{ | |" 7} t@ | |  |- d+ <y; | t jA d. |" |  } d  | jB tC d/   |- d- <Wn  t j j   } d, |- d- <n X|% t5 jD k rd0 |- d1 <n tE |$ t |   |- d1 <d |- d2 <|  rrg  }/ g  }0 g  }1 | sh| | k rQd3 |- d2 <x |* D] }2 |2 \ }3 }# }4 }5 | |4  }4 tE |5  }6 i |4 d 6d |3 t& d 6d |# t& d 6t1 |#  d 6t1 |3  d 6|6 d4 6}7 |/ j+ |7  qyWx |+ D] }2 |2 \ }3 }# }4 }5 }8 | |4  }4 tE |5  }6 i |4 d 6d |3 t& d 6d |# t& d 6t1 |#  d 6t1 |3  d 6|8 d5 6|6 d4 6}7 |0 j+ |7  qWx |, D] }2 |2 \ }9 }3 }# }4 }5 | |4  }4 | |9  }9 tE |5  }6 i |4 d 6|9 d6 6d |3 t& d 6d |# t& d 6t1 |#  d 6t1 |3  d 6|6 d4 6}7 |1 j+ |7  qWn  |/ |- d7 <|0 |- d8 <|1 |- d9 <n  tF j3 jG |  }: |: d  k	 |- d: <|: r|: jH |- d; <|: jI |- d< <n  | | k r| | |	 k  s|	 r| j+ |-  n  | d= 7} qW| r	| | d> <n g  | d> <g  } |	 d k r	y | d k r	| t |  k rQ	g  } q	| |	 }; | |	 t |  k r	t |  }; n  | | |; !} n |	 t |  k s	| |	  } n  Wq	q	Xn  | | | | | f S(?   Nt	   isverboset   queue_detailsR>  t   newzbinDetailsi    t   refresh_rateR    R~   R}   R   R   Rv   Rw   t   finishR   Rz   R   t
   unpackoptsR   t   msgidR   R   s   %.2ft   mbleftt   mbs   %dt   mb_fmtt
   mbdone_fmtR   t   sizeleftR   s   %st   ForceRo   t   Repairt   Hight   Lowt   Normalt
   percentageid   t   missings   0:00:00t   timeleftRV  t   etat   secondss   %H:%M %a %d %bs   ---t   avg_aget	   verbosityR   t   aget   nzf_idR@  t   finishedt   activet   queuedt
   has_ratingt   rating_avg_videot   rating_avg_audioi   R   (J   R   R   R   R   t   requestt   cookiet   has_keyR   R   RO   R   t   newzbin_usernamet   newzbin_passwordR   R  t   datetimet   nowR!  R  R   R   R   R  t   format_history_for_queueR   t   PNFO_REPAIR_FIELDt   PNFO_UNPACK_FIELDt   PNFO_DELETE_FIELDt   PNFO_SCRIPT_FIELDt   PNFO_NZO_ID_FIELDt   PNFO_EXTRA_FIELD1t   PNFO_FILENAME_FIELDt   PNFO_MSGID_FIELDt   PNFO_BYTES_LEFT_FIELDt   PNFO_BYTES_FIELDt   PNFO_AVG_DATE_FIELDt   PNFO_STATUS_FIELDt   PNFO_PRIORITY_FIELDRa  t   PNFO_MISSING_FIELDt   PNFO_FINISHED_FILES_FIELDt   PNFO_ACTIVE_FILES_FIELDt   PNFO_QUEUED_FILES_FIELDR  Rd   t
   opts_to_ppt   localet   formatRm   t   format_bytesR   RW   RM  t   Statust   PAUSEDt   FETCHINGt   CHECKINGt   DOWNLOADINGt   TOP_PRIORITYt   REPAIR_PRIORITYt   HIGH_PRIORITYt   LOW_PRIORITYt   postproct   QUEUEDt   calc_timeleftt	   timedeltat   strftimeR   t   GRABBINGt   calc_ageR"   t   get_rating_by_nzot	   avg_videot	   avg_audio(<   t   web_dirt   rootR   t   primt   webdirR   t
   dictionaryR|   Rv   Rw   t   dummy2Rx   R+   t	   converterR   R   R   R   R  t	   datestartR
  t   found_activet   running_bytest   slotinfoR   t   pnfot   repairRU  R   R   R   R   R   R  t	   bytesleftt   bytest   average_dateR   Ro   R  R  R  t   finished_filest   active_filest   queued_filesR  R  R  R  R  t   tupt
   bytes_leftR   t   dateR  t   lineR  t   _setR  t   end(    (    s   /var/www/SABnzbd/sabnzbd/api.pyR   "  st   			
 

	







	














&,	
 
0

!








#
	
c          C   sI   t  j j   }  t j j } t j j   } t |  |  } | |  | | f S(   N(   R   RW   t	   remainingR   RM  R#   t   get_bpsR$  (   R@  RM  t   bpsnowt	   time_left(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt
   fast_queue  s
    c          C   s  t  j j   }  |  t } g  } d } t j j   } x | D] } | t } | t } | t t	 } | | t 7} | t
 t	 }	 | t }
 | j i |
 d 6|	 d 6| d 6t |  d 6| d 6t | |  d 6 q; Wd } t j j r t j } n  |  t t	 d k rt j } n  i | d	 6t j j   d
 6t j j d 6t j   d 6| t d 6t | d d d 6|  t t	 d 6|  t t	 d 6t |  d 6t t j j     d 6t! t" j# j$    d 6t! t" j% j$    d 6t |  t |  d 6t&   d 6| d 6} | S(   Ni    t   idR  R  R   R  R  t   IDLEt   statet	   pp_activeRM  t	   pause_intt   kbpersect	   dec_limiti   t   speedR   t   have_warningst
   diskspace1t
   diskspace2R   R   ('   R   RW   t
   queue_infot   QNFO_PNFO_LIST_FIELDR#   RF  R
  R  R  Ra  R  R  R  R   R$  R   RM  R  R  t   QNFO_BYTES_LEFT_FIELDR  R   t   emptyR  RN  t   KIBIR   t   QNFO_BYTES_FIELDR   R   Rd   R  t   countR   R   t   download_dirR`  R_  R   (   t   qnfoR   R   t   bytesleftprogessRG  R7  R   R  R9  R:  R   RL  R   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyRM     sP    





c         C   sz  t  j j   } | t } g  } xT| D]L} | t } | |  k r& | t } | t } | t } d }	 x | D] }
 |
 \ } } } } t |  } t	 |  } i | d 6d | t
 d 6d | t
 d 6d | d 6| d 6t |	  d 6d	 d
 6} | j |  |	 d 7}	 qm Wx | D] }
 |
 \ } } } } } t |  } t	 |  } i | d 6d | t
 d 6d | t
 d 6d | d 6| d 6| d 6t |	  d 6d d
 6} | j |  |	 d 7}	 qWx | D] }
 |
 \ } } } } } t |  } t |  } t	 |  } i | d 6| d 6d | t
 d 6d | t
 d 6d | d 6| d 6t |	  d 6d d
 6} | j |  |	 d 7}	 qWq& q& W| S(   Ni    R   s   %.2fR  R  R:  R  RJ  R  R   i   R  R  R@  R  (   R   RW   RU  RV  R  R  R  R  R   R(  Ra  R   R  (   RJ  R]  R   R   R7  R   R<  R=  R>  R
  R?  R@  R:  R   RA  R  RB  R  RC  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR   R  s\    






c         C   s]   d } g  } xC | D]; } i  } d | | d <| | d <| d 7} | j  |  q Wi | |  6S(   Ni    s   %sRJ  R,   i   (   R  (   R7   R  R
  R  R  t   c(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt	   json_list  s    

c          C   s  t  j j   }  |  t } t   } d | j _ d | j _ d t j	   t j
   f | j _ d | j _ t   } d t |  t t j j    |  t t t j j   t f | _ | j |  d } x| D]} | t } | t } | t t } | t t }	 | t }
 |	 t } | t } | |
 k r5d } n d t | |
 | d	  } t |  } d
 | | f } t   } | | _ | rd t j   | f | _ n( d t j	   t j
   f | _ | | _ g  } | j d  | j d | |	 f  | | t 7} | j d t | t j j     | j d t | t    | j d  d j! |  | _ | j |  q Wt" t# j#    | j _$ | j j$ | j _% d | j _& | j'   S(   Ns   SABnzbd Queues   Overview of current downloadss   http://%s:%s/sabnzbd/queuet   ens2   Total ETA: %s - Queued: %.2f MB - Speed: %.2f kB/si    s   0%s   %s%%id   u   %s (%s)s   https://%s/browse/post/%s/s   http://%s:%s/sabnzbd/historys   <tr>s#   <dt>Remain/Total: %.2f/%.2f MB</dt>s   <dt>ETA: %s </dt>s   <dt>Age: %s</dt>s   </tr>R    R=  ((   R   RW   RU  RV  R	   t   channelRD  t   descriptionR   t
   cherryhostt
   cherryportt   linkt   languageR
   R$  RW  R#   RF  Ra  RY  t   addItemR
  R  R  R  R  Rm   R   R  t   guidR  R(  R  R^  t   std_timet   timet   lastBuildDatet   pubDatet   ttlR  (   R]  R   R@   R  t   sum_bytesleftR7  R   R  R9  R:  R  R  R   R  R,   t   status_line(    (    s   /var/www/SABnzbd/sabnzbd/api.pyR     s`    
		




				#c         C   s~   t  |  d d d i t j j d 6t j j d 6t j j d 6t j j d 6t j j d 6t j j	 d	 6t j j
 d
 6t j j d 6S(   NR8   R  R:   t   yenct   par2t   par2ct   rart   zipt   nicet   ionicet   ssl(   R<   Rd   t   decodert	   HAVE_YENCt
   newsunpackt   PAR2_COMMANDt   PAR2C_COMMANDt   RAR_COMMANDt   ZIP_COMMANDt   NICE_COMMANDt   IONICE_COMMANDt   newswrappert   HAVE_SSL(   R+   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR     s    c         C   sT   |  rP t  j j } | j |   } | rP t t |  |  } | j |   | Sn  d  S(   N(   R   R   R   R`  R   R   t   remove_historyR   (   R   t   new_nzbR   R   R   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR     s    c         C   sR   xK |  D]C } | r | j    j t j j   j     r t | d t q q Wd  S(   Nt	   recursive(   RV   t
   startswithR   R\  R`  R   R   (   t	   job_pathsR   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR     s    *c         C   s   |  r t  j j |   } | r7 t  j j |  d | n> t j j } | j |   } t  j j |  d | | j |   | r | r | j   j	 t
 j j   j    r t | d t q n  t S(   NRU   R  (   R   RW   R`  R   R   R   R   R  RV   R  R   R\  R   R   (   R   RU   R   R   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR   
  s    0c         C   s4   |  d k r t  d  S|  d k r, t  d  S|  Sd  S(   NR   t   DefaultR   (   R  R   (   Rh  (   t   txt(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   Tspec  s
    

c         C   sD   |  t  k r t  |  St t t j |  |     } | t  |  <| Sd  S(   N(   t   _SKIN_CACHER   R   R   R/   (   R  t   tra(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt	   Ttemplate(  s
    
c          C   s   t  }  i  a  ~  t t _ d  S(   N(   R  R   Rd   t   WEBUI_READY(   t   dummy(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   clear_trans_cache4  s    c         C   s  y t  t j  } Wn d } n X|  r5 t j } n	 t j } | sM d } n  i	 t d 6t d 6t d 6t j d 6t j	 j
 p t j	 j d 6t j   d 6t j d	 6| d
 6| d 6} t j	 j   } | d k r d } n  d | d <d t t j j    | d <d t t j j    | d <d t t j j    | d <d t t j j    | d <t   | d <d | | d <t j | d <t t j j    | d <t j j   j d t d   j d t d   | d <t j   | d <t j   | d <t j  | d  <t j! | d! <| | d" <t j   | d <t j" | d# <t j# | d$ <t j$ | d% <t j# p]t j$ p]t j% | d& <t j&   | d' <t j'   ot j( | d( <t) j	 j*   } t+ j	 j,   } | t- } | t. }	 d | t/ | d) <t0 | d* d+ d, d+ | d- <d | t1 | d. <d |	 t1 | d/ <t2 |  | d0 <t2 |	  | d1 <t0 t) j	 j3  | d2 <t4 t) j	 j3 d3 k  | d4 <t0 t) j	 j5  | d5 <t j j6   | d6 <d }
 t j	 j
 st j	 j rt7 j8 }
 n | d k rt7 j9 }
 n d7 }
 |
 | d8 <t: j	 j;   } t | t<  | d9 <t2 | t=  | d: <t | t>  | d; <d | d< <t j? r_t j? j@ d=  \ | d> <| d? <n d | d> <d | d? <tA | |  | d@ <yD tB jB jC   tB jD dA | |  } d | jE tF dB   | dC <Wn& tB jB jC   } tG dD  | dC <n X| | tH | f S(E   NR   R    Rh  R  R   R$  RM  RN  t
   paused_allt   uptimet   color_schemei    s   http://wiki.sabnzbd.org/t   helpuris   %.2fRS  RT  t   diskspacetotal1t   diskspacetotal2R   s   %sRu  t   restart_reqRR  t   WARNINGs   WARNING:t   ERRORs   ERROR:t   last_warningt   active_langR  t
   my_lcldatat   my_homeR/  t   finishactionR'   t   darwint   power_optionst   sessiont	   uniconfigRO  t   spacesi   RP  RQ  R  R  R  R   t   quotag        t
   have_quotat
   left_quotat   pp_pause_eventt   IdleR   t	   cache_artt
   cache_sizet	   cache_maxt	   nzb_quotaR)   t   new_releaset   new_rel_urlR  R  s   %H:%M %a %d %bR  RV  (I   R(  Rd   t   STARTt	   WEB_COLORt
   WEB_COLOR2R  R  R%  R   RW   RM  R"  R  RN  t
   PAUSED_ALLRv  R   R   R\  R`  R_  R   R   t   RESTART_REQR   R  R[  t   lastt   replacet   TaRg  R  t   DIR_LCLDATAt   DIR_HOMEt   QUEUECOMPLETEt   WIN32t   DARWINt   LINUX_POWERR/  R  t   WEB_DIRCR#   RF  R   RU  RW  RZ  RY  R   Ra  R  R  R   t   leftR  R  R  R  R   t
   cache_infot   ANFO_ARTICLE_SUM_FIELDt   ANFO_CACHE_SIZE_FIELDt   ANFO_CACHE_LIMIT_FIELDt   NEW_VERSIONRX   R$  R  R  R%  R&  R   Rh  RV  (   R.  R/  R  t   colort   headert   speed_limitR   R]  R9  R:  R   t   anfoR3  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR   >  s    
		"	
7




	#

#!i    c         C   s  | s g  } n  t  |  } | s* d } n  t  |   }  t  |  } d   } t j j   } | r g  | D] } | | j |  rg | ^ qg } n  t |  }	 |  |	 k r g  } | }
 nK y( | r | |  |  | !} n
 | |  } Wn n Xt | t |  d  }
 t |  |	 d  } y t j j	 } t
 } Wn t   } t } n X|
 sx| j | d | |  \ } } } g  } d } n! | j | |
 | |  \ } } } g  } | rt } n t
 } t j j } | j d  r-| d j } | d d } | d d } | d d } | d	 k rt } n  | j d
  } n  | j |  | j   t | |  } | j   g  } x| D]} | rd | d <n' | d | k rd | d <n
 d | d <| d rt | d  | d <n
 d | d <| j d  st
 | d <n  t | j d d   } t t | j d  d k o]| o]| | k o]t | t j j    o]t j  j! |   ot t" t j  j# | t$  d    | d <| d r| j% |  n  t& j rt& j j' | d  } n d  } | d  k	 | d <| rj| j) | d <| j* | d <| j+ | d <| j, | d <| j- | d <| j. | d <| j/ | d <qjqjW| |	 7} t |  } | rr| j0   n  | | | f S(   Ni@B c         S   so   | j    j d d  j d d  d } y t j | t j  } Wn t j t d  |  t SX| j	 |   S(   NR   s   .*R  s   .*?s+   Failed to compile regex for search term: %s(
   R  R  t   ret   compilet   IRZ  RY  R  R  R   (   R  t   search_textt	   re_search(    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   matches_search  s    (i    i   t   history_verbosityR   s   max-ageR$  RS   RT   R   t   show_detailsR   R    R:  R   t   loadedR   t   Faileds
   SABnzbd_n*R  R  R  R  t   rating_avg_vote_upt   rating_avg_vote_downt   rating_user_videot   rating_user_audiot   rating_user_vote(1   R   R   RW   t	   get_queuet
   final_nameR   t   maxR   R   R   R  R&   R   t   fetch_historyR  R  R  RO   RX   t   extendR   t   get_active_historyR  R   R/   Rm   R   R   R   R\  R`  R   R   R   R   R^  t	   JOB_ADMINR  R"   R)  R   R*  R+  t   avg_vote_upt   avg_vote_downt
   user_videot
   user_audiot	   user_votet   close(   Rv   Rw   R   R   R   R   R  RL   t   nzot   full_queue_sizet   h_limitt   h_startR   t   close_dbR[   R   t   total_itemst   kt   details_show_allR  t   c_patht   c_aget	   c_versiont   retry_foldersR  R   R  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR     s    	 		.	
	
!	!		




,
	
c          C   s   g  }  t    } x{ | D]s } i | d d 6| d d 6t | d  d 6t d 6| d d 6| d	 d	 6| d
 d
 6| d d 6} |  j |  q W|  S(   NR   R<   R  R,   R   R  t	   stage_logt   stagesR   R:  R   (   R  R   R  R  (   R6  t   history_itemsR  R  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR  2  s    	#!c         C   s  | d  k r g  } n  |  d  k r3 t j j   }  n  x\|  D]T} t |  } i  } | \ | d <| d <| d <| d <| d <| d <| d <| d <| d	 <| d
 <| d <| d <| d <| d <| d <| d <| d <| d <| d <| d <| d <| d <| j | d <t |  } | j | d <| d r9t | d  | d <n
 d | d <x; | D]3 } t	 | | t
  rJ| | j d  | | <qJqJW| j |  q: W| S(   NR   R,   t   nzb_namet   categoryR   R   R<   t   urlR   R   t   storageR   t
   script_logt   script_linet   download_timet   postproc_timeR  t
   downloadedt   completenesst   fail_messaget   url_infoR:  t   action_lineR  R   R    s   utf-8(   R   R   RW   R  R$   R   R%   RM  R  R0   R   t   decodeR  (   RL   R[   R  R|   R  t   kw(    (    s   /var/www/SABnzbd/sabnzbd/api.pyR  A  s&    	

c         C   s(   t  |   } | d k r | S| d Sd  S(   NR    t   B(   R   (   R:  t   b(    (    s   /var/www/SABnzbd/sabnzbd/api.pyR  c  s    c         C   s   y t  |  |  } t | d  \ } } t | d  \ } } | d k  rV d | } n  | d k  ro d | } n  d | | | f SWn d SXd  S(   Ni<   i
   s   0%ss   %s:%s:%ss   0:00:00(   Rm   t   divmod(   R9  t   bpst   totalsecondst   minutesR  t   hours(    (    s   /var/www/SABnzbd/sabnzbd/api.pyR$  k  s    c   	      C   s   | r- t  d  } t  d  } t  d  } n d } d } d } yz t j j   } | |  } | j } | j r d | j | f } n5 | d r d | d | f } n d | d | f } Wn d } n X| S(   NR  t   hR  s   %s%si  i<   R   (   Rh  R  R  R  t   days(	   RA  Rx   R  R
  R  R  t   dageR  R  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR(  |  s&    
		

c         C   s;   t  j t d  t  j |    } | d t  j d 7} | S(   Ns   %a, %d %b %Y %H:%M:%Ss
    GMT %+05di$   (   Rk  R&  R   t	   localtimet   timezone(   t   whenR  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyRj    s    !c         C   s4  g  } t  j j   } | r0t j | t j  r0x t |  D] } t j j |  r= t	 j
 r t j j |  d j   t k r t j |  t j @s | j d  s t	 j
 r t j | t j  r t j j |  j d  r | j t j j |   q q= q= W| j d d  |  r0| j d d  q0n  | S(   Ni   s   .pyt   .i    R   R  (   R   t
   script_dirR`  R   t   accesst   R_OKR   R   t   isfileRd   R  t   splitextRV   R(   t   win32apit   GetFileAttributest	   win32filet   FILE_ATTRIBUTE_HIDDENt   endswitht   X_OKt   basenameR  R  t   insert(   t   defaultR  R   R   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR!    s    +;#c         C   sB   t  t j   j    } |  r> | j d  | j d d  n  | S(   NR   i    R  (   t   sortedR9   t   get_categoriesR  t   removeR  (   R  R  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR    s
    c         C   s7   x0 |  j    D]" \ } } t |  r |  | =q q W|  S(   N(   R[   t   callable(   t   dicR(  RO   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyR     s    R  RA   R  R?   R  R@   R   R   t   warningt   fileR   R   R   c         C   s%   y t  |  SWn t k
 r  | SXd  S(   N(   t   _PLURAL_TO_SINGLEt   KeyError(   R  t   def_kw(    (    s   /var/www/SABnzbd/sabnzbd/api.pyR    s    c         C   s   |  j  d d  } | d k r |  j  d  } | r t j | |  } | r | j   ~ t j   | d k r t j j | d   q q n  t	 St
 Sd  S(   NR7   R    R?   R@   RA   R8   (   R?   R@   RA   (   R/   R9   R  R   RG   R   RW   R  R   R   R  (   R4   R7   R8   R  (    (    s   /var/www/SABnzbd/sabnzbd/api.pyRI     s    

c          C   sA   t  j d  t   }  t |  j    |  j   |  j   ~  d  S(   Ns$   Scheduled removal of all failed jobs(   RZ  R   R&   R   R   R   R  (   R   (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   history_remove_failed  s    	

(   R   RZ  R  R  Rk  R   R  t	   setlocalet   LC_ALLR  R  t   ImportErrorRd   t   sabnzbd.constantst   sabnzbd.configR9   t   sabnzbd.cfgR   t   sabnzbd.downloaderR   t   sabnzbd.nzbqueueR   R   R   R   R   t   sabnzbd.nzbstufft   nzbstufft   sabnzbd.schedulerR  t   sabnzbd.skintextR   t   sabnzbd.utils.rsslibR	   R
   t   sabnzbd.utils.jsonR   t   sabnzbd.utils.pathbrowserR   t   sabnzbd.miscR   R   R   R   R   R   R   R   R   R   R   R   t   sabnzbd.encodingR   R   R   R   R   t   sabnzbd.postprocR   t   sabnzbd.articlecacheR   t   sabnzbd.utils.servertestsR    t   sabnzbd.newzbinR!   t   sabnzbd.ratingR"   t   sabnzbd.bpsmeterR#   t   sabnzbd.databaseR$   R%   R&   t   sabnzbd.growlert   sabnzbd.rsst   sabnzbd.emailerRZ   R_   Rn   R   RJ   R   R   t   _MSG_OUTPUT_FORMATRF   R   R,   t   environR/   RV   RX   R(   R6   R>   RH   RK   RN   RR   R\   R`   Rc   Rf   Rg   Ri   Rk   Rq   Ru   RQ   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R  R  R  R  R  R   R#  R&  R2  R6  R8  R:  R<  RA  RC  RJ  RL  RN  RO  RQ  RS  Rc  Ri  R3   Ro  Rr  Rt  Rw  Rz  R{  R}  R~  R  Rq  R  R2   RP   Rp  R   R  R<   t   objectR  RB   RC   RD   R   R   RI  RM   R   R`  R   R   R   R   R   R  R  R  R  R   R   R  R  R  R$  R(  Rj  R!  R  R   R&  R  RI   R)  (    (    (    s   /var/www/SABnzbd/sabnzbd/api.pyt   <module>   s  
(R('								
														!							(			$																																
		


;;				
	3	>		E								
g	"		#				
	