mň
ÓjGc           @   s   d  k  Z  d  k Z d  k Z d  k Z d  k Z d  k Z d g Z d Z d Z d  d  d  Z
 d   Z d   Z e d j o e   n d  S(   Nt   udt    cf222e71ad118baf1800d629658af542s2   abcdefghijklmnopqrstuvwxyz0123456789 .,!?:-_\/:;'"c         C   sj   t  i d  } t  i d |  } t i | | |   } |  d j o t
 |  } n t i | | |  d  S(   Nt   commonR    (   t   impt   find_modulet   module_locationt   load_modulet   moduleR   t   NormalizeMessaget   msgt   irct   keywordt   UDLookupt   resultt   DeliverMessaget   channel(   R   R	   R
   R   R   R   R   (    (    tI   /home/avleen/devel/python/googlebot2/modules/googlebot_urbandictionary.pyt   Gather   s    c   	      C   sX  x) |  D]! } | i   t j o g  Sq q Wt i d  } | i t |   } y | d d Wn  t	 j
 o d |  g } nÖ Xg  } d } xĹ d D]˝ } y t i | | d d  } x2 t | d  D]  } | i | | i d   qÇ Wy | | Wn t	 j
 o
 w n( X| i d	 t i d
  i d |    Wq t	 j
 o
 q q Xq W| S(   sp   Get answers from Urban Dictionary!
  
  Args:
    msg: string

  Returns:
    str: Success or failure message
  s#   http://api.urbandictionary.com/soapi    t
   definitions   No results found for %si   i   s   
s   latin-1s_   Long result returned. For full result, please see http://urbandictionary.com/define.php?term=%ss   \s+t   +N(   i    i   (   t   queryt   chart   lowert   OK_CHARSt   SOAPpyt	   SOAPProxyt   servert   lookupt   YOUR_URBANDICTIONARY_KEYt
   IndexErrorR   t   max_msgst   entryt   stringt   splitt   msglistt   ranget   linet   appendt   encodet   ret   compilet   sub(	   R   R   R   R"   R   R   R   R$   R   (    (    R   R      s8        *c          C   s   y t  i d }  Wn  t j
 o t  i d  n Xy t  i d } Wn  t j
 o t  i d  n X|  t j o t |  |  n d  S(   Ni   i   (   t   syst   argvR   R   t   exitt   argumentt   module_triggersR   (   R   R-   (    (    R   t   mainA   s    t   __main__(   R   R   R'   R   R    R*   R.   R   R   t   NoneR   R   R/   t   __name__(   R   R   R    R'   R   R   R   R*   R   R   R/   R.   (    (    R   t   ?   s   									(	
