§
   Ñú\Q]ûVáã                   ón   — d Z ddlZddlZddlZddlmZ ej        fd„Zd„ Zd„ Z	dd„Z
d	„ Zd
„ Zd„ Zd„ ZdS )z¡
Stream Cinema katalog browser.
Prohlizeni obsahu SC API -- filmy, serialy, koncerty, dokumenty, anime, sport.
Pouziva SCClient._api_get() pro komunikaci s API.
é    N)Ú_api_getc                 ó8   — t          j        d| › �|¬¦  «         dS )zLogovani s prefixem.z#[plugin.video.milionar] SCBrowser: ©ÚlevelN)ÚxbmcÚlog)Úmsgr   s     úh/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/streamcinema/SCBrowser.pyÚ_logr      s&   € å„HÐ8°3Ð8Ð8ÀÐFÑFÔFÐFÐFÐFó    c                 óò   — |                       d¦  «        }|st          dt          j        ¬¦  «         g S t	          di |¬¦  «        }|r.d|v r*|d         }t          dt          |¦  «        › d�¦  «         |S g S )	zj
    Nacte hlavni menu SC API (root /).
    
    Returns:
        list polozek menu nebo prazdny list
    Úsc_auth_tokenz!Browse root failed: no auth tokenr   ú/©ÚparamsÚ
auth_tokenÚmenuzRoot menu: ú items©Ú
getSettingr   r   Ú
LOGWARNINGr   Úlen)ÚaddonÚtokenÚresponseÚitemss       r
   Úbrowse_rootr      s”   € ð ×Ò˜_Ñ-Ô-€EØð ÝÐ0½¼ÐHÑHÔHÐHØˆ	å˜ B°5Ð9Ñ9Ô9€HØð �F˜hÐ&Ð&Ø˜Ô ˆÝÐ-�3˜u™:œ:Ð-Ð-Ð-Ñ.Ô.Ð.Øˆà€Ir   c           	      óT  — |                      d¦  «        }|st          dt          j        ¬¦  «         dS t          d| › �¦  «         t	          | i |¬¦  «        }|r/d|v r+t          d| › d	t          |d         ¦  «        › d
�¦  «         |S t          d| › �t          j        ¬¦  «         dS )zÓ
    Nacte obsah libovolne SC cesty.
    
    Args:
        path: SC API cesta (napr. '/FMovies/latest')
        addon: xbmcaddon instance
    
    Returns:
        dict s 'menu' a 'system' klicy, nebo None
    r   z!Browse path failed: no auth tokenr   Nz
Browsing: r   r   zPath z: r   zNo menu in response for r   )Úpathr   r   r   s       r
   Úbrowse_pathr    +   sÎ   € ð ×Ò˜_Ñ-Ô-€EØð ÝÐ0½¼ÐHÑHÔHÐHØˆtåÐ	�dÐ	Ð	ÑÔÐÝ˜ R°EÐ:Ñ:Ô:€Hàð �F˜hÐ&Ð&ÝÐ:�TÐ:Ð:�S ¨&Ô!1Ñ2Ô2Ð:Ð:Ð:Ñ;Ô;Ð;ØˆåÐ	* DÐ	*Ð	*µ$´/ÐBÑBÔBÐBØˆ4r   Úcsc                 ó8  — |                       |i ¦  «        }|                      |i ¦  «                              |¦  «        }|r|S |                      di ¦  «                              |¦  «        }|r|S |                      di ¦  «                              |¦  «        }|S )a
  
    Ziska lokalizovanou hodnotu z i18n_info nebo i18n_art.
    Preferuje CS, fallback EN.
    
    Args:
        item: SC API polozka
        field: 'i18n_info' nebo 'i18n_art'
        key: klic (napr. 'title', 'plot', 'poster')
        lang: preferovany jazyk
    ÚenÚsk)Úget)ÚitemÚfieldÚkeyÚlangÚi18nÚvalues         r
   Ú	_get_i18nr,   H   sŸ   € ð �8Š8�E˜2ÑÔ€Dð �HŠH�T˜2ÑÔ×"Ò" 3Ñ'Ô'€EØð Øˆð �HŠH�T˜2ÑÔ×"Ò" 3Ñ'Ô'€EØð Øˆð �HŠH�T˜2ÑÔ×"Ò" 3Ñ'Ô'€EØ€Lr   c                 ól	  — |                       dd¦  «        |                       dd¦  «        |                       dd¦  «        |                       dd¦  «        dœ}t          | dd	¦  «        pd|d	<   t          | dd
¦  «        pd|d
<   t          | dd¦  «        pg |d<   t          | dd¦  «        pg |d<   t          | dd¦  «        pd|d<   t          | dd¦  «        pd|d<   t          | dd¦  «        pd|d<   t          | dd¦  «        pd|d<   t          | dd¦  «        pd|d<   |                       di ¦  «        }|                      dd¦  «        |d<   |                       di ¦  «        }|                      d¦  «        |d<   |                      d¦  «        |d<   |                      d¦  «        |d<   |                      dd¦  «        |d<   |                      dg ¦  «        |d<   |                      dd¦  «        |d<   |                      dd¦  «        |d<   |                      dg ¦  «        |d<   |                      d¦  «        |d<   |                      d¦  «        |d<   |                      d d¦  «        |d <   |                      d!d¦  «        |d!<   |                       d"g ¦  «        |d"<   |                       d#i ¦  «        |d#<   |                       d$i ¦  «        }||d$<   |                      d%i ¦  «        }|r!t          |                     ¦   «         ¦  «        ng |d%<   |                      d&i ¦  «        }t	          |t
          ¦  «        re|                      d'd¦  «        |d(<   |                      d)d*¦  «        |d+<   |                      d,d*¦  «        |d-<   |                      d.d¦  «        |d/<   nd|d(<   d*|d+<   d*|d-<   d|d/<   |                      d0i ¦  «        }t	          |t
          ¦  «        r3|                      d'd¦  «        |d1<   |                      d2d*¦  «        |d3<   n
d|d1<   d*|d3<   |                      d4d¦  «        |d4<   |                      d5d¦  «        |d5<   |                      d6d¦  «        |d6<   |                       d7d¦  «        p|                      d7d¦  «        |d7<   |                       d8d¦  «        |d8<   |S )9zË
    Extrahuje vsechna metadata z SC API polozky do jednotneho slovniku.
    
    Args:
        item: dict z SC API (polozka z 'menu' listu)
    
    Returns:
        dict s normalizovanymi metadaty
    ÚtypeÚ ÚidÚurlÚselectF)r.   r0   r1   r2   Ú	i18n_infoÚtitleÚplotÚgenreÚcountryÚotitleÚ	sorttitleÚepnameÚi18n_artÚposterÚfanartÚartÚiconÚinfoÚyearÚratingÚdurationÚmpaaÚstudioÚ	dateaddedÚ	mediatypeÚdirectorÚseasonÚepisodeÚtvshowtitleÚoriginaltitleÚcastÚ
unique_idsÚstream_infoÚlangsÚvideoÚcodecÚvideo_codecÚwidthr   Úvideo_widthÚheightÚvideo_heightÚaspectÚvideo_aspectÚaudioÚaudio_codecÚchannelsÚaudio_channelsÚfaudioÚfvideoÚsrcÚsubsÚlid)r%   r,   ÚlistÚkeysÚ
isinstanceÚdict)r&   Úparsedr>   r@   rO   rP   rQ   rZ   s           r
   Úparse_sc_itemrh   d   sÞ  € ð —’˜ Ñ$Ô$Ø�hŠh�t˜RÑ Ô Ø�xŠx˜˜rÑ"Ô"Ø—(’(˜8 UÑ+Ô+ð	ð €Fõ    k°7Ñ;Ô;ÐA¸r€Fˆ7�OÝ˜t [°&Ñ9Ô9Ð?¸R€Fˆ6�NÝ  k°7Ñ;Ô;ÐA¸r€Fˆ7�OÝ! $¨°YÑ?Ô?ÐEÀ2€Fˆ9ÑÝ   {°HÑ=Ô=ÐCÀ€Fˆ8ÑÝ# D¨+°{ÑCÔCÐIÀr€Fˆ;ÑÝ   {°HÑ=Ô=ÐCÀ€Fˆ8Ñõ !  z°8Ñ<Ô<ÐBÀ€Fˆ8ÑÝ   z°8Ñ<Ô<ÐBÀ€Fˆ8Ñð �(Š(�5˜"Ñ
Ô
€CØ—W’W˜V RÑ(Ô(€Fˆ6�Nð �8Š8�F˜BÑÔ€DØ—X’X˜fÑ%Ô%€Fˆ6�NØ—x’x Ñ)Ô)€Fˆ8ÑØŸš *Ñ-Ô-€Fˆ:ÑØ—X’X˜f bÑ)Ô)€Fˆ6�NØ—x’x ¨"Ñ-Ô-€Fˆ8ÑØŸ(š( ;°Ñ3Ô3€Fˆ;ÑØŸ(š( ;°Ñ3Ô3€Fˆ;ÑØŸš *¨bÑ1Ô1€Fˆ:Ñð —x’x Ñ)Ô)€Fˆ8ÑØŸš Ñ+Ô+€Fˆ9ÑØ ŸHšH ]°BÑ7Ô7€Fˆ=ÑØ"Ÿhšh ¸Ñ;Ô;€Fˆ?Ñð —X’X˜f bÑ)Ô)€Fˆ6�Nð  Ÿ8š8 L°"Ñ5Ô5€Fˆ<Ñð —(’(˜=¨"Ñ-Ô-€KØ'€Fˆ=Ñð �OŠO˜G RÑ(Ô(€EØ,1Ð9•d˜5Ÿ:š:™<œ<Ñ(Ô(Ð(°r€Fˆ7�Oð �OŠO˜G RÑ(Ô(€EÝ�%�ÑÔð 	$Ø %§	¢	¨'°2Ñ 6Ô 6ˆˆ}ÑØ %§	¢	¨'°1Ñ 5Ô 5ˆˆ}ÑØ!&§¢¨8°QÑ!7Ô!7ˆˆ~ÑØ!&§¢¨8°RÑ!8Ô!8ˆˆ~ÑÐà "ˆˆ}ÑØ !ˆˆ}ÑØ!"ˆˆ~ÑØ!#ˆˆ~Ñð �OŠO˜G RÑ(Ô(€EÝ�%�ÑÔð %Ø %§	¢	¨'°2Ñ 6Ô 6ˆˆ}ÑØ#(§9¢9¨Z¸Ñ#;Ô#;ˆÐÑ Ð à "ˆˆ}ÑØ#$ˆÐÑ ð #—’ x°Ñ4Ô4€Fˆ8ÑØ"—’ x°Ñ4Ô4€Fˆ8ÑØ—O’O E¨2Ñ.Ô.€Fˆ5�Mð —X’X˜f bÑ)Ô)ÐH¨[¯_ª_¸VÀRÑ-HÔ-H€Fˆ6�Nð —H’H˜U BÑ'Ô'€Fˆ5�Mà€Mr   c                 óà  — g }|                       dd¦  «        }|dk    r|                     d¦  «         nV|dk    r|                     d¦  «         n:|dk    r|                     d¦  «         n|dk    r|                     |› d	�¦  «         |                       d
g ¦  «        }|r(|                     d                     |¦  «        ¦  «         g }|                       d¦  «        r|                     | d         ¦  «         |                       d¦  «        r|                     | d         ¦  «         |r(|                     d                     |¦  «        ¦  «         |rd                     |¦  «        ndS )z^
    Vytvori kratky popis kvality z parsovane polozky.
    Napr. '1080p | CZ, EN | ATMOS'
    rW   r   ip  Ú4Ki8  Ú1080piÐ  Ú720pÚprP   z, r^   r_   z | r/   )r%   ÚappendÚjoin)rg   ÚpartsÚhrP   Úextrass        r
   Ú_build_quality_labelrs   É   ss  € ð
 €Eð 	�
Š
�> 1Ñ%Ô%€AØˆD‚y€yØ�Š�TÑÔÐÐØ	
ˆdŠˆØ�Š�WÑÔÐÐØ	
ˆcŠˆØ�Š�VÑÔÐÐØ	
ˆQŠˆØ�Š˜�W�W�WÑÔÐð �JŠJ�w Ñ#Ô#€EØð 'Ø�Š�T—Y’Y˜uÑ%Ô%Ñ&Ô&Ð&ð €FØ‡z‚z�(ÑÔð (Ø�Š�f˜XÔ&Ñ'Ô'Ð'Ø‡z‚z�(ÑÔð (Ø�Š�f˜XÔ&Ñ'Ô'Ð'Øð (Ø�Š�T—Y’Y˜vÑ&Ô&Ñ'Ô'Ð'à %Ð-ˆ5�:Š:�eÑÔÐ¨2Ð-r   c           
      óV  — ddl m} | d         }|s,|                      d¦  «        p|                      d¦  «        pd}t          j        |¬¦  «        }i }| d         r| d         |d<   | d         |d	<   | d
         r| d
         |d
<   | d         r| d         |d<   |r|                     |¦  «         || d         | d         pddœ}| d         r| d         |d<   | d         r| d         |d<   | d         r| d         |d<   | d         r| d         |d<   | d         r| d         |d<   | d         r| d         |d<   | d         r| d         |d<   | d         r| d         |d<   | d         r| d         |d<   | d         r| d         |d<   | d         r| d         |d<   | d         �| d         |d<   | d         �| d         |d<   | d         r| d         |d<   |                     ||¦  «         | d         r´g }| d         D ]~}t          j        |                     dd ¦  «        |                     d!d ¦  «        |                     d"d¦  «        |                     d#d ¦  «        ¦  «        }	| 	                    |	¦  «         Œ|r)| 
                    ¦   «         }
|
                     |¦  «         | d$         r‚| 
                    ¦   «         }
| d$         }d%|v r|
                     |d%         ¦  «         i }|                     ¦   «         D ]\  }}|rt          |¦  «        ||<   Œ|r|
                     |¦  «         |S )&zÔ
    Vytvori xbmcgui.ListItem s kompletnimi metadaty z parsovane SC polozky.
    
    Args:
        parsed: dict z parse_sc_item()
        addon: xbmcaddon instance
    
    Returns:
        xbmcgui.ListItem
    r   )Úutilsr4   r8   rL   u
   Bez nÃ¡zvu)Úlabelr<   Úthumbr=   r?   r5   rG   rQ   )r4   r5   rG   rA   rB   rC   rD   r6   r7   rH   rE   r9   rF   rI   NrJ   rK   rM   Únamer/   ÚroleÚorderÚ	thumbnailrN   Úimdb)Úwcsru   r%   ÚxbmcguiÚListItemÚsetArtÚset_video_info_tagr   ÚActorrn   ÚgetVideoInfoTagÚsetCastÚsetIMDBNumberr   ÚstrÚsetUniqueIDs)rg   r   ru   r4   Úlistitemr>   Ú	info_dictÚ	cast_listÚcÚactorÚ	video_tagÚuidrN   r(   Úvals                  r
   Úcreate_list_itemr�   ì   s  € ð ÐÐÐÐÐà�7ŒO€Eð ð TØ—
’
˜8Ñ$Ô$ÐS¨¯
ª
°?Ñ(CÔ(CÐSÀ|ˆåÔ eÐ,Ñ,Ô,€Hð €CØˆhÔð (Ø˜xÔ(ˆˆH‰Ø˜hÔ'ˆˆG‰ØˆhÔð )Ø˜xÔ(ˆˆH‰Øˆf„~ð %Ø˜V”nˆˆF‰Ø
ð Ø�Š˜ÑÔÐð Ø�v”Ø˜KÔ(Ð3¨Gðð €Ið ˆf„~ð +Ø" 6œNˆ	�&ÑØˆhÔð /Ø$ XÔ.ˆ	�(ÑØˆjÔð 3Ø & zÔ 2ˆ	�*ÑØˆf„~ð +Ø" 6œNˆ	�&ÑØˆg„ð -Ø# Gœ_ˆ	�'ÑØˆiÔð 1Ø% iÔ0ˆ	�)ÑØˆjÔð 3Ø & zÔ 2ˆ	�*ÑØˆhÔð /Ø$ XÔ.ˆ	�(ÑØˆhÔð 6Ø%+¨HÔ%5ˆ	�/Ñ"ØˆkÔð 5Ø!'¨Ô!4ˆ	�+ÑØˆkÔð 5Ø!'¨Ô!4ˆ	�+ÑØˆhÔÐ#Ø$ XÔ.ˆ	�(ÑØˆiÔÐ$Ø% iÔ0ˆ	�)ÑØˆmÔð 9Ø#)¨-Ô#8ˆ	�-Ñ à	×Ò˜X yÑ1Ô1Ð1ð ˆf„~ð )Øˆ	Ø˜”ð 	$ð 	$ˆAÝ”JØ—’�f˜bÑ!Ô!Ø—’�f˜bÑ!Ô!Ø—’�g˜qÑ!Ô!Ø—’�k 2Ñ&Ô&ñ	ô ˆEð ×Ò˜UÑ#Ô#Ð#Ð#Øð 	)Ø ×0Ò0Ñ2Ô2ˆIØ×Ò˜iÑ(Ô(Ð(ð ˆlÔð 
/Ø×,Ò,Ñ.Ô.ˆ	Ø�\Ô"ˆØ�Sˆ=ˆ=Ø×#Ò# C¨¤KÑ0Ô0Ð0Øˆ
ØŸ	š	™œð 	+ð 	+‰HˆC�Øð +Ý"% c¡(¤(�
˜3‘øØð 	/Ø×"Ò" :Ñ.Ô.Ð.à€Or   c                 óh  — |                       di ¦  «                              d¦  «        }|sdS 	 ddlm}  ||¦  «         n# t          t          f$ r Y dS w xY w|                       dd¦  «        }	 |dk    rdd	lm}  ||¦  «        }n|d
v rddlm}  ||¦  «        }ndS |sdS | d         s#|                      d¦  «        rd|d         › �| d<   | d         s#|                      d¦  «        rd|d         › �| d<   | d         s |                      d¦  «        r|d         | d<   | d         s |                      d¦  «        r|d         | d<   t          d|                       dd¦  «        dd…         › d|› d�¦  «         dS # t          $ r)}t          d|› �t          j	        ¬¦  «         Y d}~dS d}~ww xY w)uI  
    ObohatÃ­ parsovanou polozku o metadata z TMDb (poster, fanart, plot).
    Vola se pouze pokud mame TMDb API klic a polozka ma tmdb ID.
    
    Args:
        parsed: dict z parse_sc_item() -- modifikuje se in-place
        addon: xbmcaddon instance
    
    Returns:
        True pokud se podarilo obohatit, False jinak
    rN   ÚtmdbFr   )Úget_tmdb_api_keyrG   r/   Úmovie)Úget_movie_detailed_info)ÚtvshowrJ   )Úget_series_detailed_infor<   Úposter_pathzhttps://image.tmdb.org/t/p/w500r=   Úbackdrop_pathz#https://image.tmdb.org/t/p/originalr5   ÚoverviewrB   Úvote_averagezTMDb enriched: r4   Né   z
 (tmdb_id=ú)TzTMDb enrich error: r   )
r%   Úwcs.metadata.TMDbClientr“   Ú
ValueErrorÚ	Exceptionr•   r—   r   r   r   )	rg   r   Útmdb_idr“   rG   r•   Ú	tmdb_datar—   Úes	            r
   Úenrich_with_tmdbr¤   R  sm  € ð �jŠj˜ rÑ*Ô*×.Ò.¨vÑ6Ô6€GØð ØˆuðØ<Ð<Ð<Ð<Ð<Ð<ØÐ˜ÑÔÐÐøÝ�	Ð"ð ð ð Øˆuˆuðøøøð —
’
˜;¨Ñ+Ô+€Ið"Ø˜ÒÐØGÐGÐGÐGÐGÐGØ/Ð/°Ñ8Ô8ˆIˆIØÐ/Ð/Ð/ØHÐHÐHÐHÐHÐHØ0Ð0°Ñ9Ô9ˆIˆIà�5àð 	Ø�5ð �hÔð 	\ I§M¢M°-Ñ$@Ô$@ð 	\Ø[ÀÈ=ÔAYÐ[Ð[ˆF�8Ñð �hÔð 	b I§M¢M°/Ñ$BÔ$Bð 	bØaÀYÈÔE_ÐaÐaˆF�8Ñð �fŒ~ð 	3 )§-¢-°
Ñ";Ô";ð 	3Ø& zÔ2ˆF�6‰Nð �hÔð 	9 I§M¢M°.Ñ$AÔ$Að 	9Ø(¨Ô8ˆF�8ÑåÐQ˜vŸzšz¨'°2Ñ6Ô6°s¸°sÔ;ÐQÐQÀwÐQÐQÐQÑRÔRÐRØˆtøåð ð ð ÝÐ& 1Ð&Ð&­d¬oÐ>Ñ>Ô>Ð>Øˆuˆuˆuˆuˆuøøøøðøøøs6   ¯A ÁAÁAÁ0.E> Â E> Â$CE> Å>
F1ÆF,Æ,F1)r!   )Ú__doc__r   r~   Ú
xbmcpluginÚwcs.streamcinema.SCClientr   ÚLOGINFOr   r   r    r,   rh   rs   r�   r¤   © r   r
   ú<module>rª      sá   ððð ð €€€Ø €€€Ø Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .ð ”Lð Gð Gð Gð Gðð ð ð*ð ð ð:ð ð ð ð8bð bð bðJ .ð  .ð  .ðFcð cð cðL;ð ;ð ;ð ;ð ;r   