§
   ,ÿ~z¡áÏã                   ób   — d Z ddlZddlZddlZddlmZ dZdZd„ Zd„ Z	dd	„Z
dd„Zdd„Zdd„ZdS )a'  Title logos (TMDb /images) for series and movies, with tmdb_id resolution.

Dialogs reached from the Kodi library often have no tmdb_id, so the id is
resolved from the library's uniqueid first and from a TMDb search second.
Results (including "no logo") are cached in the TMDb cache for a week.
é    N)Ú	TMDbCachezhttps://image.tmdb.org/t/p/w500i€:	 c                  ó"   — ddl m}   | ¦   «         S )Nr   ©Úget_tmdb_api_key)Úwcs.metadata.TMDbClientr   r   s    úc/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/metadata/TMDbLogo.pyÚ_api_keyr	      s#   € Ø8Ð8Ð8Ð8Ð8Ð8ØÐÑÔÐó    c                 óÒ  — d\  }}| pg D ]Ü}|                      dd¦  «        pd}|r'|                     ¦   «                              d¦  «        rŒD|                      dd¦  «        pd|                      dd¦  «        pd}}|r||z  nd}|                      d¦  «        }d	d
ddœ                      |d¦  «        }	|	|dk    rdndz   |                      dd¦  «        pdz   }
|
|k    r||
}}ŒÝ|S )zXBest logo dict: Czech > English > textless > any other language; wide preferred; no SVG.)NéÿÿÿÿÚ	file_pathÚ z.svgÚwidthr   ÚheightÚ	iso_639_1i'  iˆ  i¸  )ÚcsÚenNg       @iè  Úvote_average)ÚgetÚlowerÚendswith)ÚlogosÚbestÚ
best_scoreÚlogoÚpathr   r   ÚratioÚlangÚ
lang_scoreÚscores              r   Ú	pick_logor!      s  € àÑ€Dˆ*Ø�˜ð 
+ð 
+ˆØ�xŠx˜ RÑ(Ô(Ð.¨BˆØð 	�t—z’z‘|”|×,Ò,¨VÑ4Ô4ð 	ØØŸš ¨!Ñ,Ô,Ð1°°4·8²8¸HÀaÑ3HÔ3HÐ3MÈAˆvˆØ"(Ð/�˜‘�¨aˆØ�xŠx˜Ñ$Ô$ˆØ!¨°TÐ:Ð:×>Ò>¸tÀQÑGÔGˆ
Ø e¨c¢k k˜d˜d°qÑ9¸T¿XºXÀnÐVWÑ=XÔ=XÐ=]Ð\]Ñ^ˆØ�:ÒÐØ# U�*ˆDøØ€Kr
   Útvc                 ó^  ‡— | sdS d                      |dk    rdnd| ¦  «        Šˆfd„}	 t          j        ‰ddi|t          ¦  «        }nK# t          $ r>}t          j        d                      ‰|¦  «        t
          j        ¦  «         Y d}~dS d}~ww xY w|r|                     d	¦  «        r|ndS )
z<Return {'url', 'aspect'} for the title's best logo, or None.Nz{}/{}/imagesr"   Úmoviec                  ó�  •— t          j        d‰z   dt          ¦   «         id¬¦  «        } |                      ¦   «          t	          |                      ¦   «                              dg ¦  «        ¦  «        }|sddiS |                     d¦  «        pd	}t          |d
         z   |                     d¦  «        pdt          |¦  «        z  dœS )Núhttps://api.themoviedb.org/3/Úapi_keyé   ©ÚparamsÚtimeoutr   Úurlr   r   é   r   r   r   )r,   Úaspect)Úrequestsr   r	   Úraise_for_statusr!   ÚjsonÚ
IMAGE_BASEÚfloat)Úresponser   r   Úendpoints      €r   Úfetchzget_logo.<locals>.fetch0   sÊ   ø€ Ý”<Ð ?À(Ñ JØ(1µ8±:´:Ð'>ÈðKñ Kô Kˆà×!Ò!Ñ#Ô#Ð#Ý˜Ÿš™œ×,Ò,¨W°bÑ9Ô9Ñ:Ô:ˆØð 	Ø˜2�;ÐØ—’˜(Ñ#Ô#Ð( qˆÝ! D¨Ô$5Ñ5À$Ç(Â(È7ÑBSÔBSÐBXÐWXÕ\aÐbhÑ\iÔ\iÑAiÐjÐjÐjr
   Úkindr   z/[plugin.video.milionar] TMDbLogo: {} failed: {}r,   )	Úformatr   Úget_or_fetchÚCACHE_SECONDSÚ	ExceptionÚxbmcÚlogÚ
LOGWARNINGr   )Útmdb_idÚ
media_typer6   ÚdataÚexcr5   s        @r   Úget_logorC   *   sç   ø€ àð ØˆtØ×$Ò$¨Z¸4Ò-?Ð-? T TÀWÈgÑVÔV€Hðkð kð kð kð kðÝÔ% h°¸Ð0@À%ÍÑWÔWˆˆøÝð ð ð ÝŒÐB×IÒIÈ(ÐTWÑXÔXÕZ^ÔZiÑjÔjÐjØˆtˆtˆtˆtˆtøøøøðøøøð Ð5˜DŸHšH U™OœOÐ5ˆ4ˆ4°Ð5s   ªA	 Á	
BÁ3BÂBr   c                 ó  — |sdS | dk    rd\  }}nd\  }}dd|ddgd	d
|dœdœdœ}	 t          j        t          j        t          j        |¦  «        ¦  «        ¦  «                             di ¦  «                             |g ¦  «        }n# t          t          f$ r Y dS w xY w|D ]j}|r6t          |                     dd¦  «        ¦  «        ddt          |¦  «        fvrŒ:|                     d¦  «        pi                      d¦  «        }|r|c S ŒkdS )zGtmdb uniqueid of a title in the Kodi video library (exact title match).Nr"   )zVideoLibrary.GetTVShowsÚtvshows)zVideoLibrary.GetMoviesÚmoviesz2.0r-   ÚuniqueidÚyearÚtitleÚis)ÚfieldÚoperatorÚvalue)Ú
propertiesÚfilter)ÚjsonrpcÚidÚmethodr*   Úresultr   Ú0Útmdb)	r1   Úloadsr<   ÚexecuteJSONRPCÚdumpsr   Ú
ValueErrorÚ	TypeErrorÚstr)	r@   rI   rH   rR   ÚkeyÚqueryÚitemsÚitemr?   s	            r   Ú_library_tmdb_idr`   B   s`  € àð ØˆtØ�TÒÐØ:‰ˆ��à8‰ˆ�Ø Q°&Ø'1°6Ð&:Ø,3ÀÐPUÐ"VÐ"VðXð XðYð Y€EðÝ”
�4Ô.­t¬z¸%Ñ/@Ô/@ÑAÔAÑBÔB×FÒFÀxÐQSÑTÔT×XÒXÐY\Ð^`ÑaÔaˆˆøÝ�	Ð"ð ð ð Øˆtˆtðøøøàð ð ˆØð 	•C˜Ÿš ¨Ñ,Ô,Ñ-Ô-°b¸#½sÀ4¹y¼yÐ5IÐIÐIØØ—8’8˜JÑ'Ô'Ð-¨2×2Ò2°6Ñ:Ô:ˆØð 	ØˆNˆNˆNð	àˆ4s   §A B ÂBÂBc                 óœ  ‡‡— |sdS d                      | dk    rdnd¦  «        Š|ddœŠ|r"t          |¦  «        dd…         ‰| dk    rdnd	<   ˆˆfd
„}	 t          j        ‰‰|t          ¦  «                             d¦  «        S # t          $ r>}t          j        d                      ||¦  «        t          j	        ¦  «         Y d}~dS d}~ww xY w)z:First TMDb search hit for the title (and year when known).Nz	search/{}r"   r$   zcs-CZ)r]   Úlanguageé   Úfirst_air_date_yearrH   c                  ó(  •— t          j        d‰z   t          ‰t          ¦   «         ¬¦  «        d¬¦  «        } |                      ¦   «          |                      ¦   «                              dg ¦  «        }d|r|d                              d¦  «        nd iS )Nr&   )r'   r(   r)   ÚresultsrQ   r   )r/   r   Údictr	   r0   r1   )r4   rf   r5   r*   s     €€r   r6   z_search_tmdb_id.<locals>.fetchc   s�   ø€ Ý”<Ð ?À(Ñ JÝ'+¨F½H¹J¼JÐ'GÑ'GÔ'GÐQRðTñ Tô Tˆà×!Ò!Ñ#Ô#Ð#Ø—-’-‘/”/×%Ò% i°Ñ4Ô4ˆØ¨gÐ?�g˜a”j—n’n TÑ*Ô*Ð*¸4Ð@Ð@r
   rQ   z:[plugin.video.milionar] TMDbLogo: search failed for {}: {})
r8   r[   r   r9   r:   r   r;   r<   r=   r>   )r@   rI   rH   r6   rB   r5   r*   s        @@r   Ú_search_tmdb_idrh   Z   s  øø€ àð ØˆtØ×!Ò!¨*¸Ò*<Ð*< $ $À'ÑJÔJ€HØ¨'Ð2Ð2€FØð XÝJMÈdÉ)Ì)ÐTVÐUVÐTVÌ-ˆ¨
°dÒ(:Ð(:Ð$Ð$ÀÑGðAð Að Að Að Að AðÝÔ% h°¸½}ÑMÔM×QÒQÐRVÑWÔWÐWøÝð ð ð ÝŒÐM×TÒTÐUZÐ\_Ñ`Ô`ÕbfÔbqÑrÔrÐrØˆtˆtˆtˆtˆtøøøøðøøøs   Á.B Â
CÂ3CÃCc                 ój   — |p!t          | ||¦  «        pt          | ||¦  «        }t          || ¦  «        S )zNLogo for a series ('tv') or movie ('movie'); resolves a missing tmdb_id first.)r`   rh   rC   )r@   r?   rI   rH   s       r   Úresolve_logorj   q   s=   € àÐnÕ)¨*°e¸TÑBÔBÐnÅoÐV`ÐbgÐimÑFnÔFn€GÝ�G˜ZÑ(Ô(Ð(r
   )r"   )r   )Nr   r   )Ú__doc__r1   r/   r<   Úwcs.metadatar   r2   r:   r	   r!   rC   r`   rh   rj   © r
   r   ú<module>rn      sÀ   ððð ð €€€à €€€Ø €€€à "Ð "Ð "Ð "Ð "Ð "à.€
Ø€ðð ð ð
ð ð ð"6ð 6ð 6ð 6ð0ð ð ð ð0ð ð ð ð.)ð )ð )ð )ð )ð )r
   