ó
‚•oTc           @   sg  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 Z	 Wn e
 Z	 n Xd  d l Td  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 Z d  d l j Z d  d l j Z d a d „  Z d	 „  Z  d
 e! f d „  ƒ  YZ" d „  Z# e$ ƒ  Z% d e& f d „  ƒ  YZ' d S(   iÿÿÿÿN(   t   *(   t   BOOKMARK_FILE_NAME(   t   synchronized(   t   cat_to_optst   sanitize_foldernamet	   bad_fetcht   cat_convertt   format_source_url(   t
   name_fixeri    c         C   s=   t  d 7a  t  d k r, t j |  ƒ d a  n t j |  ƒ d  S(   Ni   i   i    (   t
   _gFailurest   loggingt   warningt   debug(   t   msg(    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyt
   _warn_user4   s
    
	c           C   s
   d a  d  S(   Ni    (   R	   (    (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyt
   _access_ok?   s    t   MSGIDGrabberc           B   s5   e  Z d Z d  „  Z d d „ Z d „  Z d „  Z RS(   c         C   sl   d d l  m } t j |  ƒ t j ƒ  |  _ x' | j j ƒ  D] } |  j j | ƒ q< Wt	 |  _
 |  t _ d  S(   Niÿÿÿÿ(   t   NzbQueue(   t   sabnzbd.nzbqueueR   t   Threadt   __init__t   Queuet   queuet   dot
   get_msgidst   putt   Falset   shutdownR   (   t   selfR   t   tup(    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyR   H   s    	c         C   s6   | r t  j  ƒ  | | _ n  |  j j | | f ƒ d  S(   N(   t   timet   waitR   R   (   R   t   msgidt   nzot   when(    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyt   grabQ   s    c         C   s   t  |  _ |  j j d ƒ d  S(   N(   NN(   t   TrueR   R   R   t   None(   R   (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyt   stopW   s    	c         C   s_  d d l  m } t |  _ x2|  j sMt j d ƒ |  j j ƒ  \ } } |  j sW | r[ Pn  | j r | j t j ƒ  k r |  j	 | | ƒ q n  t
 j d | ƒ t | ƒ \ } } } } | rç| rçt | ƒ } | j } | j }	 | j }
 |
 d k sý |
 rt | ƒ }
 n  | j } | j } t |
 | |	 | ƒ \ }
 } }	 } yV t j j | | | | d | d |	 d |
 d	 | d
 | d | ƒt t | ƒ ƒ | _ WnF t
 j t d ƒ | ƒ t
 j d d t ƒ| j j  | j! t ƒ n Xd  } nA | r	|  j	 | | t# | ƒ ƒ n t$ | | d | d t ƒd  } | r t% j& t' d ƒ | d ƒ q q Wt
 j d ƒ d  S(   Niÿÿÿÿ(   R   i   s   Popping msgid %sR    t   ppt   scriptt   catt   priorityt   nzbnamet   nzo_infos   Failed to update newzbin job %ss   Traceback: t   exc_infoR   t   retrys   NZB added to queuet   downloads   Stopping MSGIDGrabber((   R   R   R   R   R   t   sleepR   t   getR   R#   R
   R   t   _grabnzbR   R'   R(   R)   R   R*   t   custom_nameR   t   sabnzbdt   nzbqueuet   insert_future_nzoR   t   strt   urlt   errort   Tat   infoR$   R   t   removet   nzo_idR%   t   floatR   t   growlert   send_notificationt   T(   R   R   R    R!   t   filenamet   datat   newzbin_catR,   R'   R(   R)   R*   R+   (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyt   run]   sJ    						!=	 N(   t   __name__t
   __module__R%   R   R   R#   R&   RE   (    (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyR   D   s
   			c         C   s‰  d } d/ } i |  d 6} t j d |  ƒ i d t j j d 6} y« t ra t j t	 j
 ƒ  ƒ } n t j t	 j
 ƒ  ƒ } i t	 j ƒ  d 6t	 j ƒ  d 6|  d	 6} t j | ƒ } d
 | d <d } | j d | | | ƒ | j ƒ  } | j ƒ  }	 Wn% t d ƒ t j d d t ƒ| SX| j d ƒ }
 | j d ƒ } y | j d ƒ | d <Wn n X|
 p[| sut j t d ƒ ƒ | S|
 d0 k r™t d |
 | f ƒ | St ƒ  |
 d k r't j d ƒ } y t | j | ƒ d ƒ } Wn d } n X| d k rýd } n  t j d | ƒ t | d ƒ d  d  d  f S|
 d k rOt d ƒ } d  d  d  | f S|
 d  k rwt d! ƒ } d  d  d  | f S|
 d1 k r£t d$ ƒ |  } d  d  d  | f S|
 d% k rÕt d& ƒ |
 | f } d d  d  | f S| j d' ƒ } | j d( ƒ } | oü| st d) ƒ |  } d d  d  | f St | ƒ } t  | ƒ d* k rV| d d+ !j! d, ƒ } n  | d- 7} t j d. |  | | | ƒ | |	 | | f S(2   Nt    i<   R    s#   Fetching NZB for Newzbin report #%ss   SABnzbd+/%ss
   User-agentt   usernamet   passwordt   reportids!   application/x-www-form-urlencodeds   Content-types
   /api/dnzb/t   POSTs-   Problem accessing Newzbin server, wait 1 min.s   Traceback: R-   s   X-DNZB-RCodes   X-DNZB-RTexts   X-DNZB-MoreInfot	   more_infos#   Newzbin server changed its protocolt   500t   503s2   Newzbin has a server problem (%s, %s), wait 5 min.t   450s   wait (\d+) secondsi    s&   Newzbin says we should wait for %s seci   t   402s*   You have no credit on your Newzbin accountt   401s2   Unauthorised, check your newzbin username/passwordt   400t   404s   Newzbin report %s not foundt   200s.   Newzbin gives undocumented error code (%s, %s)s   X-DNZB-Names   X-DNZB-Categorys(   Newzbin server fails to give info for %siP   iO   s   . s   .nzbs1   Successfully fetched report %s - %s (cat=%s) (%s)(   i<   NNN(   RN   RO   (   RS   RT   ("   R%   R
   R;   R4   t   versiont   __version__t	   _HAVE_SSLt   httplibt   HTTPSConnectiont   cfgt   newzbin_urlt   HTTPConnectiont   newzbin_usernamet   newzbin_passwordt   urllibt	   urlencodet   requestt   getresponset   readR   R$   t	   getheaderR9   RA   R   t   ret   compilet   intt   findallR   R:   R   t   lent   strip(   R    R   R.   R,   t   headerst   connt   postdatat   fetchurlt   responseRC   t   rcodet   rtextt   wait_reR   t   report_namet
   report_catt   newname(    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyR2   ‘   s„    '


	
t	   Bookmarksc           B   sb   e  Z d Z d  „  Z e e ƒ d e d „ ƒ Z e e ƒ d „  ƒ Z	 d „  Z
 d „  Z d „  Z RS(   c         C   s=   t  j t ƒ |  _ |  j s' g  |  _ n  t |  _ |  t _ d  S(   N(   R4   t
   load_adminR   t	   bookmarksR   t   _Bookmarks__busyRw   R   (   R   (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyR   
  s
    		c         C   sk  t  j ƒ  p | s d  St  j ƒ  o+ t  j ƒ  s2 d  Si d t j d 6} yó t rg t j t  j	 ƒ  ƒ } n t j
 t  j	 ƒ  ƒ } | rÃ t j d | ƒ i t  j ƒ  d 6t  j ƒ  d 6d d 6| d 6} n4 t j d	 ƒ i t  j ƒ  d 6t  j ƒ  d 6d
 d 6} t j | ƒ } d | d <d } | j d | | | ƒ | j ƒ  } Wn% t d ƒ t j d d t ƒd  SX| j ƒ  } t | j ƒ }	 |	 d& k r’t ƒ  n  |	 d k r®t j d ƒ n¦|	 d' k rÐt j t d ƒ ƒ n„|	 d k ròt j t d ƒ ƒ nb|	 d( k rt d |	 ƒ nE|	 d k r>| r| j d ƒ ret j d | ƒ | |  j k r|  j j | ƒ qq;| |  j k r;t j t d ƒ | ƒ q;qTxÁ | j d  ƒ D]— }
 y |
 j d! d" ƒ \ } } } Wn d  } } } n X| r | |  j k r |  j j | ƒ t j d# | | ƒ t j  t! | ƒ d  d  d$ d  ƒq q Wn t j" t d% ƒ |	 ƒ |  j# ƒ  t$ |  _% d  S()   Ns   SABnzbd+/%ss
   User-Agents$   Trying to delete Newzbin bookmark %sRI   RJ   t   deletet   actiont	   reportidss   Fetching Newzbin bookmarkst   fetchs!   application/x-www-form-urlencodeds   Content-types   /api/bookmarks/RL   s!   Problem accessing Newzbin server.s   Traceback: R-   RN   RO   t   204s   No bookmarks setRR   t   403s2   Unauthorised, check your newzbin username/passwordRQ   s*   You have no credit on your Newzbin accounts"   Newzbin has a server problem (%s).RU   t   1s   Deleted newzbin bookmark %ss$   Could not delete newzbin bookmark %ss   
s   	i   s"   Found new bookmarked msgid %s (%s)R*   s*   Newzbin gives undocumented error code (%s)(   RN   RO   (   RR   R€   (   RN   RO   (&   R[   t   newzbin_bookmarksR^   R_   R4   RW   RX   RY   RZ   R\   R]   R
   R   R;   R`   Ra   Rb   Rc   R   R$   Rd   R7   t   statusR   R   R:   t
   startswithRy   R<   t   splitR%   t   appendt	   add_msgidRh   R9   t   _saveR   Rz   (   R   R{   t   forceRl   Rm   Rn   Ro   Rp   RC   Rq   t   lineR    t   sizet   text(    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyRE     sp    $'


)
c         C   s   |  j  ƒ  d  S(   N(   Rˆ   (   R   (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyt   savei  s    c         C   s   t  j |  j t ƒ d  S(   N(   R4   t
   save_adminRy   R   (   R   (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyRˆ   n  s    c         C   s   |  j  S(   N(   Ry   (   R   (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyt   bookmarksListr  s    c         C   s&   t  j ƒ  r" |  j t | ƒ ƒ n  d  S(   N(   R[   t   newzbin_unbookmarkRE   R7   (   R   R    (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyt   del_bookmarkv  s    N(   RF   RG   R%   R   R   R   t	   BOOK_LOCKR   RE   R   Rˆ   R   R‘   (    (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyRw     s   		W		((   RY   R`   R   R
   Rf   R   t   sockett   sslR$   RX   R   t	   threadingR4   t   sabnzbd.constantsR   t   sabnzbd.decoratorsR   t   sabnzbd.miscR   R   R   R   R   t   sabnzbd.encodingR   t   sabnzbd.newswrappert   sabnzbd.cfgR[   t   sabnzbd.growlerR?   R	   R   R   R   R   R2   t   LockR’   t   objectRw   (    (    (    s#   /var/www/SABnzbd/sabnzbd/newzbin.pyt   <module>   s6   


(		M	r	