
    |`T                         d Z ddlmZmZmZmZ ddlZddlmZ ddl	m
Z
mZ dZddZd Zd	 Zdd
Zd Zd Zd ZddZedk(  r e        yy)z=
This module provides the command line interface for IMDbPY.
    )absolute_importdivisionprint_functionunicode_literalsN)ArgumentParser)VERSIONIMDb   c           
          |dk(  rdnd}t        d|z         t        ddt        |      z         t        | d |       D ]-  \  }}t        d|dz   t        ||d	z         |d
|z      dz         / y )Nmovietitlenamez  # IMDb id %sz=== ======= =z!%(index)3d %(imdb_id)7s %(title)s   IDz
long imdb )indeximdb_idr   )printlen	enumerategetattr)itemstype_nfieldiitems         */usr/lib/python3/dist-packages/imdb/cli.pylist_resultsr       s    'GVE	
U
"#	cCJ.
01U2AY' 41UtUT\2,./5
 
 	    c                    t               }| j                  | j                  nt        }| j                  dk(  r|j	                  | j
                        }| j                  r#|j                  |d         }t        |d|       y t        d       t        d       t        |d |       D ]  \  }}t        d|dz   |d	z          y | j                  dk(  r|j                  | j
                        }n| j                  d
k(  r|j                  | j
                        }nU| j                  dk(  r|j                  | j
                        }n*| j                  dk(  r|j                  | j
                        }| j                  r1|j                  d          t        |d   j!                                y t        | j                  | j                         y )Nkeywordr   r   )r   r   z  # keywordz=== =======z%(index)3d %(kw)sr   )r   kwperson	charactercompany)r	   r   DEFAULT_RESULT_SIZEtypesearch_keywordkeyfirstget_keywordr   r   r   search_moviesearch_personsearch_charactersearch_companyupdatesummary)args
connectionr   r   r   r"   s         r   search_itemr5   ,   sp   J&&$*=AyyI))$((3::**584Eg3- - 'bq	2 M
7)a!e7,KKLM 99++DHH5EYY(",,TXX6EYY+%//9EYY)#--dhh7E::eAh'%(""$%dii466:r    c                 P   t               }| j                  dk(  rI| j                  | j                  nt        }|j	                  | j
                  |      }t        |d       y | j                  dk(  r|j                  | j
                        }n| j                  dk(  r|j                  | j
                        }nU| j                  dk(  r|j                  | j
                        }n*| j                  dk(  r|j                  | j
                        }t        j                                y )Nr"   )resultsr   )r   r$   r%   r&   )r	   r(   r   r'   r,   r*   r   	get_movie
get_personget_characterget_companyr   r2   )r3   r4   r   r   r   s        r   get_itemr<   J   s    JyyIff(DFF.A&&txx&;U'*99''1DYY("((2DYY+%++DHH5DYY)#))$((3Ddllnr    c                    t        d       t        d       ||nt        }t        | d |       D ]S  \  }}t        d|dz   |j                  d      |j                  d      |j                  |j                  d      dz         U y )	Nz   # rating   votes IMDb id titlez === ====== ======= ======= =====z:%(index)3d    %(rating)s %(votes)7s %(imdb_id)7s %(title)sr   ratingvoteszlong imdb title)r   r>   r?   r   r   )r   r'   r   getmovieID)r   r   r   r   s       r   list_rankingrB   \   s    	
,-	
,-] 3AeBQi( 5JUii)YYw'}}YY01N
 
 	r    c                     t               }|j                         }| j                  r1|j                  |d          t	        |d   j                                y t        || j                         y Nr   )r   )r	   get_top250_moviesr+   r1   r   r2   rB   r   r3   r4   r   s      r   get_top_moviesrG   j   sS    J((*Ezz%(#eAh !Udff%r    c                     t               }|j                         }| j                  r1|j                  |d          t	        |d   j                                y t        || j                         y rD   )r	   get_bottom100_moviesr+   r1   r   r2   rB   r   rF   s      r   get_bottom_moviesrJ   t   sS    J++-Ezz%(#eAh !Udff%r    c                    t        |       }|j                  dddt        z          |j                  dd      }d|_        |j                  dd	
      }|j                  ddg d       |j                  dd
       |j                  dt        d       |j                  ddd       |j                  t               |j                  dd
      }|j                  ddg d       |j                  dd
       |j                  dt        d       |j                  t               |j                  dd
      }|j                  dt        d        |j                  ddd       |j                  t               |j                  d!d"
      }|j                  dt        d        |j                  ddd       |j                  t               |S )#Nz	--versionversionz	%(prog)s )actionrL   command)metavardestTsearchzsearch for items)helpr(   ztype of item to search for)r   r$   r%   r&   r"   )rR   choicesr*   z#title or name of item to search forz-nznumber of items to list)r(   rR   z--first
store_truezdisplay only the first result)rM   rR   )funcr@   z"retrieve information about an itemztype of item to retrievez-IMDb id (or keyword name) of item to retrievez,number of movies to list (only for keywords)topzget top ranked moviesznumber of movies to listbottomzget bottom ranked movies)r   add_argumentr   add_subparsersrequired
add_parserintset_defaultsr5   r<   rG   rJ   )progparsercommand_parserscommand_search_parsercommand_get_parsercommand_top_parsercommand_bottom_parsers          r   make_parserre   ~   s   D!F
I{W?TU++II+NO#O+66xFX6Y&&v4P/e ' g&&u3X&Y&&t#<U&V&&yLk&l&&K&8(33E@d3e##F1K,b $ d##E0_#`##Ds9g#h###2(33E@W3X##Ds9S#T##IlIh#i###8+66xF`6a&&t#<V&W&&yLk&l&&,=&>Mr    c                     | | nt         j                  } t        d      }|j                  | dd        }|j	                  |       y )Nimdbpy)r^   r   )sysargvre   
parse_argsrU   )ri   r_   	argumentss      r   mainrl      s>    #4Dh'F!!$qr(+INN9r    __main__)N)__doc__
__future__r   r   r   r   rh   argparser   imdbr   r	   r'   r   r5   r<   rB   rG   rJ   re   rl   __name__ r    r   <module>rt      sa   " S R 
 #   	;<$&& F zF r    