ó
‚•oTc           @   s„   d  d l  Z d d „ Z d „  Z d d d „  ƒ  YZ d d d „  ƒ  YZ d	 d d
 „  ƒ  YZ d d d „  ƒ  YZ d d d „  ƒ  YZ d S(   iÿÿÿÿNt   asciic         C   s6   y |  j  | d ƒ SWn t k
 r1 t |  | ƒ SXd  S(   Nt   xmlcharrefreplace(   t   encodet
   ValueErrort   _xmlcharref_encode(   t   unicode_datat   encoding(    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyt   encode_for_xml   s    c         C   sl   g  } xV |  D]N } y | j  | j | d ƒ ƒ Wq t k
 rZ | j  d t | ƒ ƒ q Xq Wd j | ƒ S(   Nt   stricts   &#%i;t    (   t   appendR   t   UnicodeErrort   ordt   join(   R   R   t   charst   char(    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR      s    t   RSSc           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s"   t  ƒ  |  _ d |  _ d  |  _ d  S(   Ns   2.0(   t   Channelt   channelt   versiont   Nonet   contents(   t   self(    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyt   __init__h   s    	c         C   s½   d |  _  |  j  d |  j d 7_  |  j d  k	 rƒ |  j j d  k	 rƒ x< |  j j D]+ } |  j  d | j d | j d 7_  qQ Wn  |  j  d 7_  |  j  |  j ƒ  7_  |  j  d 7_  |  j  S(   Ns'   <?xml version="1.0" encoding="UTF-8"?>
s   <rss version="s   " s   xmlns:s   ="s   >
s   </rss>
(   R   R   R   R   t
   namespacest   namet   urlt   generateChannel(   R   t   ns(    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyt   writeŽ   s    	!,c         C   sb  d } |  j  j ƒ  rN| d 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d	 |  j  j	 ƒ 7} | |  j d
 |  j  j
 ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | |  j d |  j  j ƒ 7} | d |  j ƒ  d 7} n d } | d 7} | S(   NR	   s
   <channel>
t   titlet   linkt   descriptiont   languaget	   copyrightt   categoryt   managingEditort	   webMastert   pubDatet   lastBuildDatet   docst   cloudt   ttlt	   generatort   imaget   ratingt	   textInputt	   skipHourst   skipDayss   
s   </channel>
s$   [Channel not properly initialized.  s4   A required field is not set.(title/link/description](   R   t   initializedt   optionalWriteR   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   t   generateItems(   R   R   (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR      s4    

c         C   s¶  d } x©|  j  j D]›} | d 7} | |  j d | j ƒ 7} | |  j d | j ƒ 7} | |  j d | j ƒ 7} | |  j d | j ƒ 7} | |  j d t | j ƒ ƒ 7} | |  j d | j	 ƒ 7} | |  j d	 | j
 ƒ 7} | |  j d
 | j ƒ 7} | |  j d | j ƒ 7} | j j d k rm| d | j j d 7} | d t | j j ƒ d 7} | d | j j d 7} n  x4 | j j ƒ  D]# } | |  j | | j | ƒ 7} q}W| d 7} q W| S(   NR	   s   <item>R   R   R    t   authorR&   R#   t   commentst   guidt   sources   <enclosure url="s   " s   length="s   type="s   "/>
s	   </item>

(   R   t   itemsR2   R   R   R    R4   t   strR&   R#   R5   R6   R7   t	   enclosureR   t   lengtht   typet   nsItemst   keys(   R   t   ct   it   k(    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR3   ¾   s(    
!c         C   s,   |  j  j d  k	 r( |  j  j j | ƒ n  d  S(   N(   R   R   R   R
   (   R   R   (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyt   addNamespaceÛ   s    c         C   s)   |  j  d  k	 r% |  j  j j | ƒ n  d  S(   N(   R   R   R8   R
   (   R   t   item(    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyt   addItemß   s    c         C   sQ   | d  k	 rI | d k rI d | d t t j j j | ƒ ƒ d | d Sd Sd  S(   NR	   t   <t   >s   </s   >
(   R   R   t   xmlt   saxt   saxutilst   escape(   R   t   keyt   val(    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR2   ä   s    1(	   t   __name__t
   __module__R   R   R   R3   RB   RD   R2   (    (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR   '   s   A	&		!			t	   Namespacec           B   s   e  Z d  „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   R   R   (   R   R   R   (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR   í   s    	(   RM   RN   R   (    (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyRO   ì   s   R   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   sÁ   d  |  _ d  |  _ d  |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _	 d |  _
 d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ g  |  _ g  |  _ d  S(   NR	   (   R   R   R   R    R!   R"   R$   R%   R&   R'   R#   R+   R(   R)   R*   R,   R-   R.   R/   R0   R8   R   (   R   (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR   û   s*    																				c         C   s+   |  j  d  k	 o* |  j d  k	 o* |  j d  k	 S(   N(   R   R   R   R    (   R   (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR1     s    (   RM   RN   R   R1   (    (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR   ò   s   		t   Itemc           B   s   e  Z d  „  Z RS(   c         C   ss   d |  _  d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _	 t
 ƒ  |  _ i  |  _ d  S(   NR	   (   R   R   R    R4   R#   R5   R:   R6   R&   R7   t	   EnclosureR=   (   R   (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR   +  s    										(   RM   RN   R   (    (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyRP     s   RQ   c           B   s   e  Z d  „  Z RS(   c         C   s   d |  _  d |  _ d |  _ d  S(   NR	   i    (   R   R;   R<   (   R   (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyR   P  s    		(   RM   RN   R   (    (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyRQ   <  s   (    (    (    (    (    (	   t   xml.sax.saxutilsRG   R   R   R   RO   R   RP   RQ   (    (    (    s(   /var/www/SABnzbd/sabnzbd/utils/rsslib.pyt   <module>   s   	Å* 