ó
‚•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 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 j Z d Z e ƒ  Z d a d „  Z d „  Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   *(   t   synchronized(   t   OrderedSetQueues"   /releaseRatings/releaseRatings.phpi    c         C   s*   t  d 7a  t  d k  r& t j |  ƒ n  d  S(   Ni   i   (   t   _g_warningst   loggingt   warning(   t   msg(    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   _warn,   s    
c           C   s
   d a  d  S(   Ni    (   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   _reset_warn2   s    t	   NzbRatingc           B   s   e  Z d  „  Z RS(   c         C   sp   d |  _  d |  _ d |  _ d |  _ d |  _ d |  _ d  |  _ d  |  _ d  |  _	 i  |  _
 i  |  _ d |  _ d  S(   Ni    (   t	   avg_videot   avg_video_cntt	   avg_audiot   avg_audio_cntt   avg_vote_upt   avg_vote_downt   Nonet
   user_videot
   user_audiot	   user_votet	   user_flagt	   auto_flagt   changed(   t   self(    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   __init__7   s    											(   t   __name__t
   __module__R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyR	   6   s   t   NzbRatingV2c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s;   t  t |  ƒ j ƒ  d |  _ t |  _ d |  _ t |  _ d  S(   Ni    (   t   superR   R   t   avg_spam_cntt   Falset   avg_spam_confirmt   avg_encrypted_cntt   avg_encrypted_confirm(   R   (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyR   F   s
    			c         C   s   |  j  j | j  ƒ |  S(   N(   t   __dict__t   update(   R   t   rating(    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   to_v2M   s    (   R   R   R   R%   (    (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyR   E   s   	t   Ratingc           B   s  e  Z d  Z d Z d  Z d Z d Z d  Z d Z d Z	 d Z
 d Z d  Z d Z d Z d Z d Z d „  Z d	 „  Z d
 „  Z e e ƒ d „  ƒ Z e e ƒ d „  ƒ Z e e ƒ d d „ ƒ Z e e ƒ d d „ ƒ Z e e ƒ d „  ƒ Z e e ƒ d „  ƒ Z d „  Z d „  Z RS(   i   i   i    i   i   i   i   i   c         C   s  |  t  _ t |  _ t ƒ  |  _ y£ t j d ƒ \ |  _ |  _	 |  _
 |  j d k r¢ i  } x3 |  j	 j ƒ  D]" \ } } t ƒ  j | ƒ | | <qg W| |  _	 d |  _ n  |  j t  j k rÀ t ƒ  ‚ n  Wn% t  j |  _ i  |  _	 i  |  _
 n Xt j |  ƒ t st j d ƒ |  j ƒ  n  d  S(   Ns
   Rating.sabi   i   s)   Ratings server requires secure connection(   R&   t   doR   t   shutdownR   t   queuet   sabnzbdt
   load_admint   versiont   ratingst   nzo_indexer_mapt	   iteritemsR   R%   t   VERSIONt	   Exceptiont   ThreadR   t	   _HAVE_SSLR   R   t   stop(   R   R-   t   kt   v(    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyR   f   s*    		!		c         C   s   t  |  _ |  j j d  ƒ d  S(   N(   t   TrueR(   R)   t   putR   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyR4   }   s    	c         C   sÃ   t  |  _ x¦ |  j s± t j d ƒ t j ƒ  s4 q n  |  j j ƒ  } ya | r£ |  j | ƒ r£ x1 t	 d d ƒ D]  } |  j r Pn  t j d ƒ ql W|  j j
 | ƒ n  Wq q Xq Wt j d ƒ d  S(   Ni   i    i<   s   Stopping ratings(   R   R(   t   timet   sleept   cfgt   rating_enableR)   t   gett   _send_ratingt   rangeR8   R   t   debug(   R   t
   indexer_idt   i(    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   run   s     	 	 c         C   s;   |  j  r7 |  j r7 t j |  j |  j  |  j f d ƒ n  d  S(   Ns
   Rating.sab(   R-   R.   R*   t
   save_adminR,   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   save‘   s    c      	   C   s2  | r.| r.t  | ƒ d k r.t j d | | | d | d | d | d ƒ yÔ|  j j | t ƒ  ƒ } | d r± | d r± t t | d ƒ ƒ | _ t t | d ƒ ƒ | _	 n  | d rú | d rú t t | d ƒ ƒ | _
 t t | d ƒ ƒ | _ n  | d r t t | d ƒ ƒ | _ n  | d rFt t | d ƒ ƒ | _ n  | d	 rlt t | d	 ƒ ƒ | _ n  | d
 r’| d
 j ƒ  d k | _ n  | d r¸t t | d ƒ ƒ | _ n  | d rÞ| d j ƒ  d k | _ n  | rýt | t ƒ rý| d n | | _ | |  j | <| |  j | <Wq.q.Xn  d  S(   Ni
   s#   Add rating (%s, %s: %s, %s, %s, %s)t   videot   audiot   voteupt   votedownt   videocntt   audiocntt   spams   confirmed-spamt   yest
   passwordeds   confirmed-passwordedi    (   t   lenR   R@   R-   R=   R   t   intt   floatR
   R   R   R   R   R   R   t   lowerR   R    R!   t
   isinstancet   listt   hostR.   (   R   RA   t   nzo_idRU   t   fieldsR$   (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt
   add_rating—   s6    /
 
 
 
 
 
 (c   	      C   sº  t  j d | | | | | ƒ | |  j k r? t  j d | ƒ d  S|  j | } |  j | } | r¯ t | ƒ | _ t | j | j | j | j d ƒ | _ | j	 t
 j B| _	 n  | rt | ƒ | _ t | j | j | j | j d ƒ | _ | j	 t
 j B| _	 n  | r>i t | ƒ d 6| d 6| _ | j	 t
 j B| _	 n  | r¦| j r¦t | ƒ | _ | j	 t
 j B| _	 | j t
 j k r”| j d 7_ q¦| j d 7_ n  |  j j | ƒ d  S(   Ns)   Updating user rating (%s: %s, %s, %s, %s)s*   indexer id (%s) not found for ratings filei   t   valt   detail(   R   R@   R.   R   R-   RP   R   R   R
   R   R&   t   CHANGED_USER_VIDEOR   R   R   t   CHANGED_USER_AUDIOR   t   CHANGED_USER_FLAGR   t   CHANGED_USER_VOTEt   VOTE_UPR   R   R)   R8   (	   R   RV   RF   RG   t   votet   flagt   flag_detailRA   R$   (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   update_user_rating¯   s0    ++c         C   s¥   | s0 t  j ƒ  s0 t  j ƒ  s0 | |  j k r4 d  St j d | | ƒ |  j | } |  j | } i t | ƒ d 6| d 6| _ | j	 t
 j B| _	 |  j j | ƒ d  S(   Ns   Updating auto flag (%s: %s)RY   RZ   (   R;   R<   t   rating_feedbackR.   R   R@   R-   RP   R   R   R&   t   CHANGED_AUTO_FLAGR)   R8   (   R   RV   Ra   Rb   RA   R$   (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   update_auto_flagË   s    0c         C   s.   | |  j  k r d  St j |  j |  j  | ƒ S(   N(   R.   R   t   copyR-   (   R   RV   (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   get_rating_by_nzoÖ   s    c         C   s   t  j  |  j | ƒ S(   N(   Rg   R-   (   R   RA   (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   _get_rating_by_indexerÜ   s    c         C   s  | t  j k r! i d d 6| d 6S| t  j k rB i d d 6| d 6S| t  j k rŽ | ro t | ƒ d k ro | n d } i d d 6| d 6| d 6S| t  j k rÇ | rÇ t | ƒ d k rÇ i d	 d 6| d
 6S| t  j k r | r t | ƒ d k r i d d 6| d
 6Sd  S(   Nt   rst   mt   autot   rpi    t   Othert   rprt   prt   ot   rt   rc(   R&   t	   FLAG_SPAMt   FLAG_ENCRYPTEDt   FLAG_EXPIREDRO   t
   FLAG_OTHERt   FLAG_COMMENT(   R   RY   Rb   Rl   t   expired_host(    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   _flag_requestà   s    $''c         C   sú  t  j d | ƒ t j ƒ  } t j ƒ  } | s2 t Sg  } i d t j j d 6d d 6} |  j	 | ƒ } t
 | d ƒ r‰ | j r‰ | j } n  | s“ t S| j t j @rË | j i d d 6d	 d 6| j d
 6ƒ n  | j t j @r| j i d d 6d d 6| j d
 6ƒ n  | j t j @rV| j t j k r+d n d } | j i d d 6| d 6d d 6ƒ n  | j t j @r| j |  j | j j d ƒ | j j d ƒ d ƒ ƒ n  | j t j @rä| j |  j | j j d ƒ | j j d ƒ d ƒ ƒ n  yù t j | ƒ } x¶ t d „  | ƒ D]¢ }	 | |	 d <| |	 d <| j d t  t! j" |	 ƒ d | ƒ| j# ƒ  }
 |
 j$ ƒ  |
 j% t j& k r{t' d ƒ t( S|
 j% t j) k r	t' d |
 j% |
 j* f ƒ t( Sq	W|  j+ | j | j @|  j+ | _ t, ƒ  t SWn t' d | ƒ t( SXd  S(   Ns   Updating indexer rating (%s)s   SABnzbd+/%ss
   User-agents!   application/x-www-form-urlencodeds   Content-typeRU   Rr   Rk   t   videoQualityt   rnt   audioQualityt   upt   downR6   t   overallRY   RZ   i    i   c         S   s
   |  d  k	 S(   N(   R   (   Rr   (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   <lambda>
  s    t   apikeyRB   t   POSTt   headerss    Ratings server unauthorized users1   Ratings server failed to process request (%s, %s)s$   Problem accessing ratings server: %s(-   R   R@   R;   t   rating_api_keyt   rating_hostR7   R*   R,   t   __version__Ri   t   hasattrRU   R   R&   R[   t   appendR   R\   R   R^   R   R_   R]   Rz   R   R=   Re   R   t   httplibt   HTTPSConnectiont   filtert   requestt
   RATING_URLt   urllibt	   urlencodet   getresponset   readt   statust   UNAUTHORIZEDR   R   t   OKt   reasonR-   R   (   R   RA   t   api_keyR†   t   requestst   _headersR$   t   up_downt   connR   t   response(    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyR>   í   sV    ((%77

"

"N(   R   R   R0   R_   t	   VOTE_DOWNt   FLAG_OKRt   Ru   Rv   Rw   Rx   R[   R\   R^   R]   Re   R   R'   R   R4   RC   R   t   RATING_LOCKRE   RX   Rc   Rf   Rh   Ri   Rz   R>   (    (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyR&   Q   s8   					
	(   RŠ   R   R9   R   Rg   t   sockett   sslR7   R3   R   t	   threadingR*   t   sabnzbd.decoratorsR   t   sabnzbd.miscR   t   sabnzbd.cfgR;   RŽ   t   RLockRŸ   R   R   R   t   objectR	   R   R2   R&   (    (    (    s"   /var/www/SABnzbd/sabnzbd/rating.pyt   <module>   s.   


			