§
   Ú€ë;m¥Êã                   óž  — d Z ddlZddlmZmZmZ ddlmZmZmZ	m
ZmZ ddlmZ dZdZdZd	Zd
ZdZdZdZdZdZdZej        h d£z  ZdddœZddddddddddddddœZd „ Zd!„ ZdGd"„Z d#„ Z!d$„ Z"d%„ Z#d&d'i fd(d)i fd&d*d+d,d-d.œfd(d/i ffZ$d&d0i fd(d1i ffZ%d2„ Z&d3„ Z'd4„ Z(d5„ Z)d6Z*dGd7„Z+d8Z,d9Z-d:d;d<d=œZ.dZ/ G d>„ d?e0¦  «        Z1d@„ Z2dAZ3dB„ Z4dHdD„Z5dE„ Z6dF„ Z7dS )IuO  Build the Pro tebe snapshot (docs/plan/pro-tebe/010 Â§1).

signals -> seed details -> taste profile -> candidates from TMDb -> light score -> details of the best ->
full score, match %, reason -> rows per chip mode -> snapshot in `meta` (key `foryou:snapshot`).
Runs in the service (P3) or the harness; widgets only read the snapshot.
é    N)ÚdateÚdatetimeÚ	timedelta)ÚapiÚcomposeÚfeaturesÚscoreÚsignals)Ú	userfirstzforyou:snapshoti �' é   é   é   éÈ   é   é   é   é(   >   ÚdaÚdeÚesÚfiÚfrÚisÚitÚnlÚnoÚplÚsvip  iÜ  ©ÚmovieÚtvi*  i*  i*  é#   é   éP   é°%  éc   é   é%   éÿ)  )é   é   in  r   i *  r"   r#   r$   r%   r&   r'   r(   r)   c                 ó  — |                      d¦  «        r|dvrd S t          j        ||d         ¦  «        }|                       |¦  «        }|€?t          j        ||¦  «        t          j        ||¦  «        i t          ¦   «         i dœx}| |<   |S )NÚidr   ©Úcardr   ÚsourcesÚkindsÚnames)ÚgetÚFÚkeyr/   r   Úset)ÚpoolÚmediaÚdatar5   Úentrys        ú_/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/foryou/engine.pyÚ_entryr<   "   s“   € Ø�8Š8�D‰>Œ>ð ˜U¨/Ð9Ð9ØˆtÝ
Œ%��t˜D”zÑ
"Ô
"€CØ�HŠH�S‰MŒM€EØ€}Ý%&¤V¨D°%Ñ%8Ô%8ÅaÄjÐQUÐW\ÑF]ÔF]ÐjlÝ&)¡e¤e°bð:ð :ð 	:ˆ��S‘	à€Ló    c                 ó0   — |                       d¦  «        p|S )NÚ
media_type©r3   )ÚitemÚdefaults     r;   Ú	_media_ofrC   -   s   € Ø�8Š8�LÑ!Ô!Ð, WÐ,r=   c                 ó   — t          |¦  «        D ]}\  }}t          ||¦  «        }t          | ||¦  «        }|€Œ)|d                              |¦  «         |r7||f}	t	          ||d                              |	|¦  «        ¦  «        |d         |	<   Œ~d S )Nr1   r0   )Ú	enumeraterC   r<   ÚaddÚminr3   )
r7   Úitemsr8   ÚkindÚ
source_keyÚrankrA   Úmr:   Úsrcs
             r;   Ú	_add_listrN   1   s­   € Ý Ñ&Ô&ð Oð O‰
ˆˆdÝ�d˜EÑ"Ô"ˆÝ�t˜Q Ñ%Ô%ˆØˆ=ØØˆgŒ×Ò˜4Ñ Ô Ð Øð 	OØ˜Ð$ˆCÝ$'¨¨e°IÔ.>×.BÒ.BÀ3ÈÑ.MÔ.MÑ$NÔ$NˆE�)Ô˜SÑ!øðOð Or=   c           
      ó  — d„ t          d„ |                      ¦   «         D ¦   «         d„ ¬¦  «        dt          …         D ¦   «         }g }|D ]<}|                     ddd|d	d
dœf¦  «         |                     ddd|d	ddœf¦  «         Œ=|S )z¢Discover by the profile's strongest keywords ('sitcom', 'artificial intelligence') - TMDb recommendations
    miss many obvious neighbours that the keywords find.c                 ó(   — g | ]\  }}|d d…         ‘ŒS ©é   N© ©Ú.0ÚnÚ_vs      r;   ú
<listcomp>z _taste_calls.<locals>.<listcomp>@   s6   € ð Mð Mð M™%˜!˜R��!�"�"”ð Mð Mð Mr=   c              3   óN   K  — | ] \  }}|                      d ¦  «        ¯||fV — Œ!dS )zk:N©Ú
startswith)rU   rV   Úvs      r;   ú	<genexpr>z_taste_calls.<locals>.<genexpr>@   s<   è è € Ð*`Ð*`±d°a¸ÈQÏ\Ê\ÐZ^ÑM_ÔM_Ð*`¨A¨q¨6Ð*`Ð*`Ð*`Ð*`Ð*`Ð*`r=   c                 ó   — | d          S ©Nr   rS   ©Úkvs    r;   ú<lambda>z_taste_calls.<locals>.<lambda>A   s   € ¸"¸Q¼%¸€ r=   ©r5   Nr    Úkeywordúdiscover/movieúpopularity.descé,  )Úwith_keywordsÚsort_byúvote_count.gter!   údiscover/tvé–   )ÚsortedrH   ÚKEYWORDSÚappend)ÚposÚkeywordsÚcallsÚkws       r;   Ú_taste_callsrt   =   sö   € ðMð M¥6Ð*`Ð*`¸c¿iºi¹k¼kÐ*`Ñ*`Ô*`Ø.?Ð.?ð$Añ $Aô $AØAJÅ(Àô$Lð Mñ Mô M€Hà€EØð Pð PˆØ�Š�g˜yÐ*:ÈbÐ]nØORð=Tð =Tð Uñ 	Vô 	Vð 	Và�Š�d˜I }ÈÐWhØILð7Nð 7Nð Oñ 	Pô 	Pð 	Pð 	Pà€Lr=   c                 óÚ  ‡‡— i t          ¦   «         cŠŠ|D ]i\  }}|d         dk    rŒ|D ]T}|                     d¦  «        r=‰                     |d¦  «        dz   ‰|<   |d         dk    r‰                     |¦  «         ŒUŒjˆˆfd„|                      ¦   «         D ¦   «         }d„ t          |                     ¦   «         d	„ ¬
¦  «        dt          …         D ¦   «         }t          j        d„ |D ¦   «         ¦  «        }g }t          ||¦  «        D ]^\  }	}
d„ |
pi                      d¦  «        pg D ¦   «         }| 
                    d„ ¬
¦  «         |                     |	|dd…         f¦  «         Œ_|S )uÎ   Other works of the household's series creators (Chuck Lorre -> MalÃ½ Sheldon, Graham Linehan -> Otec Ted);
    a film director only when two watched titles share him (an auteur, not "the director of HP 1").Úweightr   úd:r   r8   r!   c                 ó‚   •— i | ];\  }}|                      d ¦  «        ¯|‰v s‰                     |d¦  «        dk    ¯8||“Œ<S )rw   r   rR   )r[   r3   )rU   rV   r\   ÚcountÚ	tv_makerss      €€r;   ú
<dictcomp>z!_maker_titles.<locals>.<dictcomp>W   sV   ø€ ÐpÐpÐp™˜˜A°·²¸TÑ0BÔ0BÐpÈÈYÈÈÐZ_×ZcÒZcÐdeÐghÑZiÔZiÐmnÒZnÐZn��1ÐZnÐZnÐZnr=   c                 ó(   — g | ]\  }}|d d…         ‘ŒS rQ   rS   rT   s      r;   rX   z!_maker_titles.<locals>.<listcomp>X   s$   € ÐZÐZÐZ™˜˜2ˆa���ŒeÐZÐZÐZr=   c                 ó   — | d          S r_   rS   r`   s    r;   rb   z_maker_titles.<locals>.<lambda>X   s   € È"ÈQÌ%È€ r=   rc   Nc                 ó   — g | ]}|fd „‘ŒS )c                 óh   — t          j        d                     | ¦  «        d t           j        ¦  «        S )Nzperson/{}/combined_credits©r   r3   ÚformatÚ
TTL_DETAIL)rL   s    r;   rb   z*_maker_titles.<locals>.<listcomp>.<lambda>Y   s)   € ­¬Ð0L×0SÒ0SÐTUÑ0VÔ0VÐX\Õ^aÔ^lÑ(mÔ(m€ r=   rS   )rU   rL   s     r;   rX   z!_maker_titles.<locals>.<listcomp>Y   s1   € ð -ð -ð -Ø !ð &'ÐmÐmÐmð -ð -ð -r=   c                 ó¾   — g | ]Z}|                      d ¦  «        dv rA|                      d¦  «        dv r*t          |                      d¦  «        pd¦  «        dk    ¯X|‘Œ[S )Újob)ÚDirectorÚCreatorr?   r   Ú
vote_countr   é2   )r3   Úint)rU   Úws     r;   rX   z!_maker_titles.<locals>.<listcomp>]   sr   € ð :ð :ð :�qØ—E’E˜%‘L”LÐ$;Ð;Ð;ÀÇÂÀlÑ@SÔ@SÐWfÐ@fÐ@fÝ˜Ÿš˜|Ñ,Ô,Ð1°Ñ2Ô2°bÒ8Ð8ð à8Ð8Ð8r=   Úcrewc                 óL   — t          |                      d¦  «        pd¦  «         S )NÚ
popularityr   )Úfloatr3   )rŠ   s    r;   rb   z_maker_titles.<locals>.<lambda>`   s"   € ¥%¨¯ª¨lÑ(;Ô(;Ð(@¸qÑ"AÔ"AÐ!A€ r=   é   )r6   r[   r3   rF   rH   rm   ÚMAKERSr   ÚparallelÚzipÚsortro   )rp   Úseed_featuresÚseedÚfeatsÚnameÚeligibleÚmakersÚanswersÚoutÚmakerr9   Úworksry   rz   s               @@r;   Ú_maker_titlesrž   K   sÆ  øø€ ð �3™5œ5Ð€Eˆ9Ø$ð (ð (‰ˆˆeØ�Œ>˜QÒÐØØð 	(ð 	(ˆDØ�Š˜tÑ$Ô$ð (Ø#Ÿiši¨¨aÑ0Ô0°1Ñ4��d‘Ø˜”= DÒ(Ð(Ø—M’M $Ñ'Ô'Ð'øð		(ð
 qÐpÐpÐpÐp §¢¡¤ÐpÑpÔp€HØZÐZ¥¨¯ªÑ(8Ô(8Ð>OÐ>OÐ!PÑ!PÔ!PÐQXÕRXÐQXÔ!YÐZÑZÔZ€FÝŒlð -ð -Ø%+ð-ñ -ô -ñ .ô .€Gà
€CÝ˜6 7Ñ+Ô+ð (ð (‰ˆˆtð:ð :˜T˜Z R×,Ò,¨VÑ4Ô4Ð:¸ð :ñ :ô :ˆð 	�
Š
ÐAÐAˆ
ÑBÔBÐBØ�
Š
�E˜5  " œ:Ð&Ñ'Ô'Ð'Ð'Ø€Jr=   c                 óˆ  — g }| dd…         D ]R}|                      ddd|dddd	œf¦  «         |t          v r)|                      d
ddt          |         dddd	œf¦  «         ŒSd                     d„ | dd…         D ¦   «         ¦  «        }d                     t          d„ | dd…         D ¦   «         ¦  «        ¦  «        }| sd„ t          D ¦   «         }d                     d„ t          t
          j        ¦  «        D ¦   «         ¦  «        }dD ]/}|                      ddd||dddt          d         d|dœf¦  «         Œ0dD ].}|                      d
dd||dddt          d
         |dœf¦  «         Œ/|t          d¬ ¦  «        z
   	                    ¦   «         }|t          d!¬ ¦  «        z
   	                    ¦   «         }	d"D ]!}|                      dd#d||	dd$|d%œf¦  «         Œ"d"D ]D}|                      d
d#d|t          d¬ ¦  «        z
   	                    ¦   «         |	dd!|d&œf¦  «         ŒE|D ]#\  }
}}}| 
                    d'¦  «        d(k    r|d'= Œ$|S ))zX(media, kind, path, params) of the discover queries that fill the pool around the taste.Nr   r    Úgenrere   rf   i�  gffffff@)Úwith_genresri   rj   úvote_average.gter!   rk   rl   ç333333@ú|c              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Ústr©rU   Úgs     r;   r]   z"_discover_calls.<locals>.<genexpr>n   s(   è è € Ð8Ð8 A�˜Q™œÐ8Ð8Ð8Ð8Ð8Ð8r=   r   c                 óT   — h | ]%}|t           v ¯t          t           |         ¦  «        ’Œ&S rS   )ÚTV_DISCOVERr¨   r©   s     r;   ú	<setcomp>z"_discover_calls.<locals>.<setcomp>o   s0   € Ð aÐ aÐ a¸ÐPQÕU`ÐP`ÐP`¥¥[°¤^Ñ!4Ô!4ÐP`ÐP`ÐP`r=   c                 ó"   — g | ]\  }}}|d ||f‘ŒS )ÚcoldrS   ©rU   rL   ÚpÚqs       r;   rX   z#_discover_calls.<locals>.<listcomp>q   s'   € Ð=Ð=Ð=¡w q¨!¨Q�!�V˜Q Ð"Ð=Ð=Ð=r=   ú,c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r¦   r§   r©   s     r;   r]   z"_discover_calls.<locals>.<genexpr>r   s(   è è € Ð<Ð< •S˜‘V”VÐ<Ð<Ð<Ð<Ð<Ð<r=   )r   rR   r   r   é   Úgemzvote_average.descg      @rg   z
1975-01-01)r¡   Úwithout_genresri   r¢   rj   úvote_count.lteúprimary_release_date.gteÚpage)r   rR   r   gš™™™™™@éd   )r¡   r·   ri   r¢   rj   r¸   rº   )Údaysé   )r   rR   Únewé<   )r¹   zprimary_release_date.lteri   rj   rº   )zfirst_air_date.gtezfirst_air_date.lteri   rj   rº   r¡   Ú )ro   r¬   Újoinrm   Ú
COLD_CALLSr4   ÚNICHE_GENRESÚ	GEM_VOTESr   Ú	isoformatr3   )Ú
top_genresÚtodayrr   ÚgidÚ	any_genreÚ	tv_genresÚnicherº   ÚsinceÚuntilÚ_mediaÚ_kindÚ_pathÚparamss                 r;   Ú_discover_callsrÒ   e   sc  € à€EØ˜"˜1˜"Œ~ð kð kˆØ�Š�g˜wÐ(8È#ÐZkØMPÐfið;kð ;kð lñ 	mô 	mð 	mà•+ÐÐØ�LŠL˜$ ¨ÍÐTWÔHXÐevØKNÐdgð9ið 9ið jñ kô kð køà—’Ð8Ð8¨°B°Q°B¬Ð8Ñ8Ô8Ñ8Ô8€IØ—’�Ð aÐ a¸jÈÈ!È¼nÐ aÑ aÔ aÑbÔbÑcÔc€IØð >Ø=Ð=µ*Ð=Ñ=Ô=ˆØ�HŠHÐ<Ð<¥V­A¬NÑ%;Ô%;Ð<Ñ<Ô<Ñ<Ô<€EØð sð sˆØ�Š�g˜uÐ&6È	ÐejØDWÐmpØKNÕbkÐlsÔbtØUaÐkoð9qð 9qð rñ 	sô 	sð 	sð 	sð ð Cð CˆØ�Š�d˜E =À)Ð_dØ>QÐgjØEHÕ\eÐfjÔ\kØ;?ð3Að 3Að Bñ 	Cô 	Cð 	Cð 	Cð •Y CÐ(Ñ(Ô(Ñ(×3Ò3Ñ5Ô5€EØ•Y BÐ'Ñ'Ô'Ñ'×2Ò2Ñ4Ô4€EØð _ð _ˆØ�Š�g˜uÐ&6ÐUZØUZÐgxØKMÐW[ð9]ð 9]ð ^ñ 	_ô 	_ð 	_ð 	_ð ð Yð YˆØ�Š�d˜E =È%ÕR[ÐadÐReÑReÔReÑJe×IpÒIpÑIrÔIrØINÐ[lØEGÐQUð3Wð 3Wð Xñ 	Yô 	Yð 	Yð 	Yð ).ð &ð &Ñ$ˆ��u˜fØ�:Š:�mÑ$Ô$¨Ò*Ð*Ø�}Ð%øØ€Lr=   r    ztrending/movie/weekr!   ztrending/tv/weekre   ÚCZÚflatraterf   )Úwatch_regionÚwith_watch_monetization_typesri   ztrending/tv/dayzmovie/top_ratedztv/top_ratedc                 ó2  — i }| D ]e\  }}t          |¦  «        D ]P\  }}t          j        t          ||¦  «        |d         ¦  «        }|                     |d¦  «        d|dz   z  z   ||<   ŒQŒfd„ t          |                     ¦   «         d„ ¬¦  «        D ¦   «         S )ua   Top 10 v ÄŒR: blend of TMDb trending (global) and popularity on CZ streaming, by reciprocal rank.r-   ç        ç      ð?r   c                 ó   — g | ]\  }}|‘ŒS rS   rS   )rU   ÚkÚ_ps      r;   rX   z_top_order.<locals>.<listcomp>›   s   € ÐIÐIÐI‘%�!�RˆAÐIÐIÐIr=   c                 ó   — | d          S r_   rS   r`   s    r;   rb   z_top_order.<locals>.<lambda>›   s   € À"ÀQÄ%À€ r=   rc   )rE   r4   r5   rC   r3   rm   rH   )ÚlistsÚpointsr8   rH   rK   rA   r5   s          r;   Ú
_top_orderrà   ”   sµ   € à€FØð Bð B‰ˆˆuÝ# EÑ*Ô*ð 	Bð 	B‰JˆD�$Ý”%�	 $¨Ñ.Ô.°°T´
Ñ;Ô;ˆCØ Ÿ*š* S¨#Ñ.Ô.°¸¸q¹Ñ1AÑAˆF�3‰KˆKð	Bð JÐI�6 &§,¢,¡.¤.Ð6GÐ6GÐHÑHÔHÐIÑIÔIÐIr=   c                 óN  — d„ |D ¦   «         }t          | d         ¦  «        t          j        z  s| d         rdS | d         r| d         t          vr| d         |vrdS | d         dk    r| d         d	k     rdS | d         d
k    o$| d         t	          j        ¦   «         j        dz
  k    S )zhTop 10 is not personal, but it must look like a Czech household's chart (no foreign anime / talk shows).c                 óL   — h | ]!}|                      d ¦  «        ¯|dd…         ’Œ"S )zlang:rµ   NrZ   ©rU   rV   s     r;   r­   z_sane.<locals>.<setcomp>    s1   € Ð?Ð?Ð?˜Q¨¯ª°gÑ)>Ô)>Ð?�1�Q�R�R”5Ð?Ð?Ð?r=   ÚgenresÚadultFÚlanguageÚvotesr   Úratingg      @r½   Úyearr   )r6   r4   ÚBLOCKED_TV_GENRESÚ
SANE_LANGSr   rÇ   ré   )r/   rp   Útaste_langss      r;   Ú_sanerí   ž   s¿   € à?Ð? #Ð?Ñ?Ô?€KÝ
ˆ4�Œ>ÑÔ�QÔ0Ñ0ð °D¸´Mð ØˆuØˆJÔð ˜D Ô,µJÐ>Ð>À4È
ÔCSÐ[fÐCfÐCfØˆuØˆG„}˜ÒÐ˜t Hœ~°Ò3Ð3ØˆuØ�Œ=˜BÒÐH 4¨¤<µ4´:±<´<Ô3DÀqÑ3HÒ#HÐHr=   c                 óð   ‡— t          j        |¦  «        Š| d         t           j        vr| d         ‰d         vrdS t          ˆfd„t	          | d         ¦  «        t
          j        z  D ¦   «         ¦  «         S )z_A gem must be watchable for this household: its languages and no niche genre outside the taste.ræ   ÚlangsFc              3   óX   •K  — | ]$}‰d                                |d¦  «        dk     V — Œ%dS )ÚsharerØ   gffffffÖ?Nr@   )rU   rª   Útastes     €r;   r]   z_gem_ok.<locals>.<genexpr>¯   s<   øè è € ÐcÐc¸�5˜”>×%Ò% a¨Ñ-Ô-°Ò4ÐcÐcÐcÐcÐcÐcr=   rä   )ÚSÚtaste_ofÚ
HOME_LANGSÚanyr6   r4   rÃ   )r/   rp   rò   s     @r;   Ú_gem_okr÷   ª   su   ø€ åŒJ�s‰OŒO€EØˆJÔ�qœ|Ð+Ð+°°ZÔ0@ÈÈgÌÐ0VÐ0VØˆuÝÐcÐcÐcÐc½cÀ$ÀxÄ.Ñ>QÔ>QÕTUÔTbÑ>bÐcÑcÔcÑcÔcÐcÐcr=   c                 óh   — t          | d         ¦  «        o| d         |                     ¦   «         k    S )Nr   )ÚboolrÅ   )r/   rÇ   s     r;   Ú	_releasedrú   ²   s,   € Ý��V”ÑÔÐC $ v¤,°%·/²/Ñ2CÔ2CÒ"CÐCr=   r¿   c           
      ó8  ‡ ‡‡‡— d„ |D ¦   «         }i }i }‰                       ¦   «         D ]�\  }}	|	d         }
|
d         dk    r|
d         r|
d         t          k     rŒ3|
d         s|	||<   ŒAd                     |
d         ¦  «        |vr/|                     |
d         g ¦  «                             |¦  «         ŒŽ|pi D ]/}d                     |¦  «        |vr|                     |g ¦  «         Œ0t          j        d„ |D ¦   «         ¦  «        }t          |                      ¦   «         |¦  «        D �]m\  \  }}}t          d	„ |pi  	                    d
¦  «        pg D ¦   «         d„ ¬¦  «        }ˆfd„|D ¦   «         }|pi  	                    |¦  «        Šˆfd„t          |¦  «        D ¦   «         }|r|d         dz   nd}t          ˆfd„||d…         |d|…         z   D ¦   «         d¦  «        }|€|sŒ¿t          |ˆ fd„¬¦  «        }|‰ vr¬t          j        d|                     d¦  «        d         ¦  «        }|r*| 	                    d¦  «        r| 	                    d¦  «        s�Œ3t          j        |d¦  «        t          j        |d¦  «        i t%          ¦   «         t          j        |d¦  «        dœ‰ |<   ‰ |         }	|D ]|}‰ |         d                               ¦   «         D ]8\  }}t          ||	d          	                    ||¦  «        ¦  «        |	d         |<   Œ9|	dxx         ‰ |         d         h d£z
  z  cc<   Œ}‰r\t          t(          |	d          	                    d‰ft(          ¦  «        ¦  «        |	d         d‰f<   |	d                              d¦  «         |	||<   �Œo|S )a	  One title per collection: its first part not seen yet (Harry Potter 2, not all seven, even when part 2 did not
    make it into the pool); a collection whose earlier part waits unwatched in the list is left out. Films under an
    hour (shorts, TV specials) go too.c                 ód   — h | ]-\  }}|d          dk    ¯|D ]}|                      d¦  «        ¯|’ŒŒ.S )rI   Úlistzcol:rZ   )rU   r•   r–   r—   s       r;   r­   z_collapse.<locals>.<setcomp>½   sV   € ð =ð =ð =™˜˜e¸¸V¼ÈÒ8NÐ8NØ ð 9OÐ8NØ D§O¢O°FÑ$;Ô$;ð 9OˆtÐ8NÐ8NÐ8NÐ8Nr=   r/   r8   r    ÚruntimeÚ
collectionzcol:{}c                 ó   — g | ]}|fd „‘ŒS )c                 óh   — t          j        d                     | ¦  «        d t           j        ¦  «        S )Nzcollection/{}r€   ©Úcs    r;   rb   z&_collapse.<locals>.<listcomp>.<lambda>Ì   s$   € ¥c¤g¨o×.DÒ.DÀQÑ.GÔ.GÈÍsÌ~Ñ&^Ô&^€ r=   rS   ©rU   r  s     r;   rX   z_collapse.<locals>.<listcomp>Ì   s"   € ÐoÐoÐoÐcd 1Ð^Ð^Ð^ÐoÐoÐor=   c              3   óD   K  — | ]}|                      d ¦  «        ¯|V — ŒdS )r-   Nr@   )rU   r±   s     r;   r]   z_collapse.<locals>.<genexpr>Î   s1   è è € ÐRÐR˜aÀaÇeÂeÈDÁkÄkÐR˜ÐRÐRÐRÐRÐRÐRr=   Úpartsc                 ó0   — |                       d¦  «        pdS )NÚrelease_dateÚ9999r@   )r±   s    r;   rb   z_collapse.<locals>.<lambda>Ï   s   €  Q§U¢U¨>Ñ%:Ô%:Ð%D¸f€ r=   rc   c                 óz   •— g | ]7}|                      d ¦  «        ¯|d          ‰                     ¦   «         k    ¯5|‘Œ8S )r  )r3   rÅ   )rU   r±   rÇ   s     €r;   rX   z_collapse.<locals>.<listcomp>Ð   sF   ø€ ÐiÐiÐi˜!¨¯ª¨nÑ(=Ô(=ÐiÀ!ÀNÔBSÐW\×WfÒWfÑWhÔWhÒBhÐBh�AÐBhÐBhÐBhr=   c                 ó\   •— g | ](\  }}‰¯t          j        d |d         ¦  «        ‰k    ¯&|‘Œ)S )r    r-   ©r4   r5   )rU   Úir±   r•   s      €r;   rX   z_collapse.<locals>.<listcomp>Ò   s@   ø€ ÐdÐdÐd™D˜A˜q¸4ÐdÅAÄEÈ'ÐSTÐUYÔSZÑD[ÔD[Ð_cÒDcÐDc�aÐDcÐDcÐDcr=   éÿÿÿÿr   r   c              3   ó€   •K  — | ]8}d t          |d         ¦  «        f‰v¯t          j        d |d         ¦  «        V — Œ9dS )r    r-   N)r‰   r4   r5   )rU   r±   Úexcludes     €r;   r]   z_collapse.<locals>.<genexpr>Ô   sX   øè è € ð ?ð ?°Ø¥ Q t¤W¡¤Ð.°gÐ=Ð=õ ”E˜' 1 T¤7Ñ+Ô+Ø=Ð=Ð=Ð=ð?ð ?r=   Nc                 ó,   •— ‰|          d         d         S )Nr/   r   rS   ©rÛ   r7   s    €r;   rb   z_collapse.<locals>.<lambda>Ù   s   ø€ ¨T°!¬W°V¬_¸VÔ-D€ r=   ú:Úposter_pathÚbackdrop_pathr.   r0   r1   >   r¶   r¾   ÚtopÚtrendÚrecÚsaga)rH   ÚMIN_FILM_MINUTESr�   Ú
setdefaultro   r   r‘   r’   rm   r3   rE   ÚnextrG   ÚdetailÚsplitr4   r/   r   r6   r2   Ú	SAGA_RANKrF   )r7   r”   r  rÇ   Úseed_collectionsÚwaitingÚgroupsr›   r5   r:   r/   rÿ   r  Úmembersr9   ÚorderÚreleasedÚ
watched_atÚstartÚnxtr  rM   rK   r•   s   ` ``                   @r;   Ú	_collapser)  ¹   sE  øøøø€ ð=ð = }ð =ñ =ô =€Gà€FØ
€CØ—j’j‘l”lð Bð B‰
ˆˆUØ�VŒ}ˆØ�Œ=˜GÒ#Ð#¨¨Y¬Ð#¸DÀ¼OÕN^Ò<^Ð<^ØØ�LÔ!ð 	BØˆC�‰HˆHØ�_Š_˜T ,Ô/Ñ0Ô0¸Ð?Ð?Ø×Ò˜d <Ô0°"Ñ5Ô5×<Ò<¸SÑAÔAÐAøØ&Ð,¨"ð .ð .ˆ
Ø�?Š?˜:Ñ&Ô&¨gÐ5Ð5Ø×Ò˜j¨"Ñ-Ô-Ð-øÝŒLÐoÐoÐhnÐoÑoÔoÑpÔp€EÝ'*¨6¯<ª<©>¬>¸5Ñ'AÔ'Að ñ Ñ#Ñˆ�W˜tÝÐRÐR D J¨B×#3Ò#3°GÑ#<Ô#<Ð#BÀÐRÑRÔRØDÐDðFñ Fô FˆàiÐiÐiÐi˜uÐiÑiÔiˆØ Ð& B×+Ò+¨JÑ7Ô7ˆØdÐdÐdÐd¥I¨hÑ$7Ô$7ÐdÑdÔdˆ
Ø&0Ð7�
˜2” Ñ"Ð"°aˆÝð ?ð ?ð ?ð ?°X¸e¸f¸fÔ5EÈÐQWÐRWÐQWÔHXÑ5Xð ?ñ ?ô ?Ø@DñFô Fˆàˆ;Øð ØÝ�gÐ#DÐ#DÐ#DÐ#DÐEÑEÔEˆCØ�dˆ?ˆ?Ý”Z ¨¯ª°3©¬¸Ô):Ñ;Ô;ˆFØð  §¢¨MÑ!:Ô!:ð À&Ç*Â*È_ÑB]ÔB]ð ÙÝ!"¤¨°Ñ!8Ô!8ÅaÄjÐQWÐY`ÑFaÔFaÐnpÝ"%¡%¤%µ!´'¸&À'Ñ2JÔ2JðLð LˆD�‰Ià�S”	ˆØð 	Rð 	RˆCØ! #œY yÔ1×7Ò7Ñ9Ô9ð Sð S‘	��TÝ(+¨D°%¸	Ô2B×2FÒ2FÀsÈDÑ2QÔ2QÑ(RÔ(R��iÔ  Ñ%Ð%Ø�'ˆNˆNŒN˜d 3œi¨Ô0Ð3QÐ3QÐ3QÑQÑQˆNˆN‰NˆNØð 	'Ý.1µ)¸UÀ9Ô=M×=QÒ=QÐSXÐZ^ÐR_ÕajÑ=kÔ=kÑ.lÔ.lˆE�)Ô˜e T˜]Ñ+Ø�'ŒN×Ò˜vÑ&Ô&Ð&ØˆˆC‰‰Ø€Jr=   )r    ÚqualityÚtrendingéU   rÙ   gq=
×£pí?g333333ë?)Úcz_dubÚcz_subÚsk_dubc                   ó   — e Zd ZdZdS )Ú	NotEnoughzOThe Webshare check left too few titles; the caller keeps the previous snapshot.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rS   r=   r;   r1  r1  ò   s   € € € € € ØYÐYÐYÐYr=   r1  c                 óö   ‡ ‡— t          ‰ ˆ fd„¬¦  «        }ˆ fd„|D ¦   «         dt          …         }dD ]Š|ˆˆ fd„|D ¦   «         dd…         z  }Œt          t                               ||z   ¦  «        ¦  «        S )z‘Titles in the order their availability matters: the chart, then by score, with each special kind's best
    ones early enough to fill their rows.c                 ó"   •— ‰|          d          S ©Nr	   rS   r  s    €r;   rb   z_check_order.<locals>.<lambda>ù   ó   ø€ ¨¨a¬°Ô)9Ð(9€ r=   rc   c                 ó   •— g | ]}|‰v ¯|‘Œ	S rS   rS   ©rU   rÛ   r7   s     €r;   rX   z _check_order.<locals>.<listcomp>ú   s   ø€ Ð/Ð/Ð/�1 Q¨$ Y YˆQ Y Y Yr=   N)r¾   r¶   c                 ó4   •— g | ]}‰‰|         d          v ¯|‘ŒS )r1   rS   )rU   rÛ   rI   r7   s     €€r;   rX   z _check_order.<locals>.<listcomp>ü   s,   ø€ Ð@Ð@Ð@˜ t¨t°A¬w°wÔ/?Ð'?Ð'?�!Ð'?Ð'?Ð'?r=   r   )rm   ÚTOP_DETAILEDrý   ÚdictÚfromkeys)r7   Ú	top_orderÚrankedÚfirstrI   s   `   @r;   Ú_check_orderrC  ö   s    øø€ õ �DÐ9Ð9Ð9Ð9Ð:Ñ:Ô:€FØ/Ð/Ð/Ð/˜	Ð/Ñ/Ô/°µ°Ô>€EØð Fð FˆØÐ@Ð@Ð@Ð@Ð@˜VÐ@Ñ@Ô@ÀÀ"ÀÔEÑEˆˆÝ•—’˜e f™nÑ-Ô-Ñ.Ô.Ð.r=   g      Ð?c                 ó
  — d„ |D ¦   «         }|                       ¦   «         D ]a}d„ |d         D ¦   «         D ]L}|                     |d         ¦  «        }|�$t          j        ||d         ¦  «        t          k     r	|d         |= ŒMŒbdS )u(  TMDb "similar" and the seed-keyword queries share a single tag at times (ÄŒarodÄ›jky for Dva a pÅ¯l chlapa);
    such a link to the seed is dropped unless the title has enough in common with the seed (its features, with the
    full detail now). TMDb recommendations are behaviour-based and stay.c                 óp   — i | ]3\  }}|d          dk    ¯t          j        |d         |d         ¦  «        |“Œ4S ©rv   r   r8   r-   r  ©rU   Úsr–   s      r;   r{   z&_prune_loose_links.<locals>.<dictcomp>  sD   € ÐbÐbÐb±X°Q¸ÐRSÐT\ÔR]Ð`aÒRaÐRa�qŒu�Q�w”Z  4¤Ñ)Ô)¨5ÐRaÐRaÐRar=   c                 ó&   — g | ]}|d          dv ¯|‘ŒS )r   )Úsimrs   rS   )rU   rM   s     r;   rX   z&_prune_loose_links.<locals>.<listcomp>	  s&   € ÐRÐRÐR˜s¸#¸a¼&ÀMÐ:QÐ:Q�sÐ:QÐ:QÐ:Qr=   r0   r   Nr   )Úvaluesr3   ró   Ú
similarityÚ
LOOSE_LINK)r7   r”   Úvectorsr:   Úsourcer•   s         r;   Ú_prune_loose_linksrP    s£   € ð cÐbÀÐbÑbÔb€GØ—’‘”ð -ð -ˆØRÐR e¨IÔ&6ÐRÑRÔRð 	-ð 	-ˆFØ—;’;˜v aœyÑ)Ô)ˆDØˆ|�qœ|¨D°%¸
Ô2CÑDÔDÅzÒQÐQØ˜)Ô$ VÐ,øð	-ð-ð -r=   Tc                 ó  ‡<‡=‡>‡?‡@‡A‡B‡C‡D‡E‡F‡G‡H‡I— t          j         ¦   «         }| pt          j         ¦   «         } |pt          j        | ¦  «        }|€t          j        | ¦  «        j        n|}|pd„ }t          j        | ¦  «        \  }}d„ |D ¦   «         dt          …         }d„ |D ¦   «         dt          …         }	||	z   ŠIt          j
        d„ ‰ID ¦   «         ¦  «        }
g i i i f\  }ŠE}}i }i }i ŠDi ŠAt          j        ¦   «          t          ‰I|
¦  «        D �]\  }}|sŒ	t          j        |d         |d         ¦  «        }|                     |t          j        ||d         ¦  «        f¦  «         |                     d¦  «        p|                     d	¦  «        pd
‰E|<   |d         ||<   |d         ||<   t          j        |¦  «        ||<   t          j        ||d         ¦  «        ‰D|<   |d         dk    �r2|                     d¦  «        pi                      d¦  «        r9|d         dv r/|                     t-          |d         d         ¦  «        |¦  «         t/          ‰A|                     d¦  «        pi                      d¦  «        pg |d         d|¦  «         t1          t          j        t          j        |¦  «        ¦  «        dd…         ¦  «        ŠBˆBfd„|                     d¦  «        pi                      d¦  «        pg D ¦   «         }t/          ‰A||d         d|¦  «         �Œt5          j        |¦  «        \  }}d„ t5          j        |d¦  «        D ¦   «         } |d                     t=          |¦  «        t=          |¦  «        t=          |	¦  «        |¦  «        ¦  «         d„ t>          D ¦   «         }|tA          ||¦  «        tC          |¦  «        z   z  }t          ‰I|
¦  «        D ]¿\  }}|r¸|d         dk    r¬||dd…         v r t          j"        |¦  «        }|rŠ|                     |d         dt          j        |d         |d         ¦  «        z   d                     |d         ¦  «        d #                    d„ |D ¦   «         ¦  «        d d!|d         d"k    rd#nd$d%œf¦  «         ŒÀ|dd&…         D ]e}|                     |d         d't          j        |d         |d         ¦  «        z   d(                     |d         |d         ¦  «        d)d*if¦  «         Œft          j
        d+„ |D ¦   «         ¦  «        }g }t          j        ¦   «          t          ||¦  «        D �]¼\  \  }}}}}|pg }| $                    d¦  «        rä|d,d…         } t          j        |                     | g ¦  «        ¦  «        dd…         ŠBtK          |¦  «        D ]˜\  }!}"t1          ‰B¦  «        t1          t          j        t          j        |"¦  «        ¦  «        ¦  «        z  sŒItM          ‰A||"¦  «        }#|#�<|#d-          '                    d.¦  «         |#d/                              d.| fd|!z   ¦  «         Œ™�Œ| $                    d'¦  «        rp|d&d…         } tK          |¦  «        D ]T\  }!}"tM          ‰A||"¦  «        }#|#�<|#d-          '                    d¦  «         |#d/                              d| fd0|!z   ¦  «         ŒU�Œ�t/          ‰A|||¦  «         |d1k    r|                     ||f¦  «         �Œ¾tQ          ||¦  «        D ]>\  }$}%|%D ]6}&tM          ‰A|&d2         |&¦  «        }#|#�|#d-          '                    d3¦  «         Œ7Œ?tS          |¦  «        ŠHt          j        ¦   «          ‰HD ]'}|‰Av r!‰A|         d-          '                    d4¦  «         Œ(tU          ‰A¦  «        D ]f}| +                    d5¦  «        \  }}'‰A|         d6         }(|t-          |'¦  «        f|v s(|(d7         s |(d8         r|(d9         rtY          |(|¦  «        s‰A|= Œg |d:                     t=          ‰A¦  «        t=          |¦  «        ¦  «        ¦  «         t5          j-        ‰A|||| .                    ¦   «         ¦  «         t_          ‰AˆAfd;„¬<¦  «        ŠC‰Cdt`          …         })ˆAfd=„‰HD ¦   «         dtb          …         }*ˆAˆCfd>„d?D ¦   «         }+tU          td           3                    |)|*z   |+z   ¦  «        ¦  «        },t          j
        d@„ |,D ¦   «         ¦  «        }-i }.t          j        ¦   «          t          |,|-¦  «        D ]x\  }}|sŒ| +                    d5¦  «        d         }‰A|         }#t          j4        ||¦  «        |#d6<   t          j        ||¦  «        |#dA<   t          j5        ||¦  «        |#dB<   |#|.|<   Œytm          |.||||¦  «        ŠAto          ‰A|¦  «         t5          j-        ‰A|||| .                    ¦   «         ¦  «         tq          dC„ ‰A 9                    ¦   «         D ¦   «         dgz   ¦  «        }/i }0t          j        ¦   «          ‰A 9                    ¦   «         D ]}#|0 :                    |#dB         ¦  «         Œtw          dD„ ‰ID ¦   «         ¦  «        }1dE„ |D ¦   «         }2‰A <                    ¦   «         D ]©\  }}#|1rt5          j=        |#dF         |/¦  «        nd|#dG<   t5          j>        |#||‰E||0|2¦  «        |#dH<   |#dH         d         t~          v rt�          |#dG         t‚          ¦  «        |#dG<   t…          |#d6         |¦  «        |#dI<   t‡          |#d6         |¦  «        |#dJ<   Œªt‰          jE        |¦  «        ŠGt5          jF        |¦  «        dK         ŠFi dLcŠ<}3|rsddMlGmH}4 	 t“          ‰A‰H¦  «        }5|4 J                    ˆAfdN„|5D ¦   «         ||¬O¦  «        Š<dP}3n5# |4jK        $ r(}6 |dQ                     |6¦  «        ¦  «         Y d}6~6nd}6~6ww xY w|3r¿ˆAfdR„‰< <                    ¦   «         D ¦   «         Š@t=          ‰@¦  «        t˜          k     r/t›          dS                     t=          ‰@¦  «        ¦  «        ¦  «        ‚ˆ@fdT„Š=‰@D ]J}‰A|         dFxx         tœ                               ‰<|                              dU¦  «        dV¦  «        z  cc<   ŒKˆ<fdW„Š>ndxŠ=Š>dX„ | <                    ¦   «         D ¦   «         Š?ˆ=ˆ>ˆ?ˆAˆDˆFˆGˆHˆIf	dY„tˆ          jO        D ¦   «         }7dZ„ |7 9                    ¦   «         D ¦   «         }8t_          |8¦  «        }9te          t          |9t          j
        d[„ |9D ¦   «         ¦  «        ¦  «        ¦  «        }:i }t          j        ¦   «          |8D ]à}‰A|         }#te          |#d6         ¦  «        }"|" :                    |#dG         |#dH         t_          |#d-         ¦  «        t¡          |#dF         d¦  «        |#d\         ‰<                     |i ¦  «                             dUd
¦  «        ‰<                     |i ¦  «                             d]d
¦  «        |:                     |¦  «        pd
d^œ¦  «         |"||<   Œát¢          t-          | ¦  «        |1|3| .                    ¦   «         ‰GˆEfd_„‰ID ¦   «         ‰Et          jR        ¦   «         ||7|t=          ‰A¦  «        t¡          t          j         ¦   «         |z
  d¦  «        te          t          jS        ¦  «        d`œdaœ};|;S )bzaSnapshot dict; does not store it (see `save`). `verify`: only titles playable from Webshare (P2).Nc                 ó   — d S r¦   rS   )Úmsgs    r;   rb   zbuild.<locals>.<lambda>  s   € ˜d€ r=   c                 ó*   — g | ]}|d          dk    ¯|‘ŒS ©rv   r   rS   ©rU   rH  s     r;   rX   zbuild.<locals>.<listcomp>  ó!   € Ð8Ð8Ð8�a¨¨(¬°aª¨�¨¨¨r=   c                 ó*   — g | ]}|d          dk     ¯|‘ŒS rU  rS   rV  s     r;   rX   zbuild.<locals>.<listcomp>  rW  r=   c                 ó   — g | ]}|fd „‘ŒS )c                 óD   — t          j        | d         | d         ¦  «        S )Nr8   r-   )r   r  )rH  s    r;   rb   z"build.<locals>.<listcomp>.<lambda>  s   € ­¬
°1°W´:¸qÀ¼wÑ(GÔ(G€ r=   rS   rV  s     r;   rX   zbuild.<locals>.<listcomp>  s!   € Ð\Ð\Ð\ÈA QÐGÐGÐGÐ\Ð\Ð\r=   r8   r-   Útitler—   rÀ   rv   rI   r   Úbelongs_to_collection)ÚwatchedÚlikeÚpickÚrecommendationsÚresultsr  r   c           
      ó€   •— g | ]:}‰t          t          j        t          j        |¦  «        ¦  «        ¦  «        z  ¯8|‘Œ;S rS   )r6   r4   Úfolded_genresÚ	genre_ids)rU   r  Úprimarys     €r;   rX   zbuild.<locals>.<listcomp>0  sS   ø€ ð Jð Jð J˜QØ!¥C­¬½¼ÀA¹¼Ñ(GÔ(GÑ$HÔ$HÑHðJ�qð Jð Jð Jr=   ÚsimilarrJ  c                 ó<   — g | ]}t          |d d…         ¦  «        ‘ŒS rQ   )r‰   rã   s     r;   rX   zbuild.<locals>.<listcomp>4  s&   € Ð>Ð>Ð> •#�a˜˜˜”e‘*”*Ð>Ð>Ð>r=   r   z%seeds {} (+{} / -{}), taste genres {}c                 ó"   — g | ]\  }}}|d ||f‘ŒS )r  rS   r°   s       r;   rX   zbuild.<locals>.<listcomp>7  s'   € Ð9Ð9Ð9¡G A q¨!ˆa�˜!˜QÐÐ9Ð9Ð9r=   é   zkwseed:zdiscover/{}r¤   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r¦   r§   ©rU   rÛ   s     r;   r]   zbuild.<locals>.<genexpr>@  s(   è è € Ð8MÐ8MÀA½¸Q¹¼Ð8MÐ8MÐ8MÐ8MÐ8MÐ8Mr=   zvote_count.descr£   r    rg   r»   )rh   ri   r¢   rj   rµ   zrec2:z{}/{}/recommendationsrº   rR   c                 ó   — g | ]}|fd „‘ŒS )c                 óD   — t          j        | d         | d         ¦  «        S )NrR   r   )r   ra  r  s    r;   rb   z"build.<locals>.<listcomp>.<lambda>F  s   € ­¬°A°a´D¸!¸A¼$Ñ(?Ô(?€ r=   rS   r  s     r;   rX   zbuild.<locals>.<listcomp>F  s!   € ÐOÐOÐOÀA QÐ?Ð?Ð?ÐOÐOÐOr=   é   r1   rs   r0   r½   r  r?   rœ   r  r  r/   rå   ÚposterÚbackdropz pool {} candidates from {} listsc                 ó"   •— ‰|          d          S r8  rS   r  s    €r;   rb   zbuild.<locals>.<lambda>v  r9  r=   rc   c                 ó   •— g | ]}|‰v ¯|‘Œ	S rS   rS   r;  s     €r;   rX   zbuild.<locals>.<listcomp>x  s   ø€ Ð.Ð.Ð.�! A¨ I IˆA I I Ir=   c                 ób   •‡‡— g | ])Šd D ]$Šˆˆˆfd„‰D ¦   «         dt           …         D ]}|‘ŒŒ%Œ*S )r   c                 ód   •— g | ],}‰‰|         d          v ¯‰|         d         d         ‰k    ¯*|‘Œ-S )r1   r/   r8   rS   )rU   rÛ   rI   r8   r7   s     €€€r;   rX   z$build.<locals>.<listcomp>.<listcomp>{  sF   ø€ ÐlÐlÐl˜a¨T°T¸!´W¸WÔ5EÐ-EÐ-EÈ$ÈqÌ'ÐRXÌ/ÐZaÔJbÐfkÒJkÐJk˜ÐJkÐJkÐJkr=   N)ÚPER_KIND)rU   rÛ   rI   r8   r7   rA  s     @@€€r;   rX   zbuild.<locals>.<listcomp>z  s„   øøø€ ð yð yð y�DÈOð yð yÀ5ØlÐlÐlÐlÐlÐl 6ÐlÑlÔlÐmvÕnvÐmvÔwðyð yØð ð yð yð yð yð yr=   )r¾   r¶   rd   rœ   c                 ó   — g | ]}|fd „‘ŒS )c                 óD   — t          j        |                      d¦  «        Ž S ©Nr  )r   r  r  ©rÛ   s    r;   rb   z"build.<locals>.<listcomp>.<lambda>}  s   € ¥S¤Z°·²¸±´Ð%>€ r=   rS   rk  s     r;   rX   zbuild.<locals>.<listcomp>}  s!   € ÐOÐOÐOÀ1 !Ð>Ð>Ð>ÐOÐOÐOr=   r   r2   c                 ó   — g | ]
}|d          ‘ŒS )r	   rS   )rU   Úes     r;   rX   zbuild.<locals>.<listcomp>Œ  s   € Ð8Ð8Ð8 Q�a˜”jÐ8Ð8Ð8r=   c              3   ó.   K  — | ]}|d          dk    V — ŒdS )rv   r   NrS   rV  s     r;   r]   zbuild.<locals>.<genexpr>‘  s*   è è € Ð7Ð7 q�1�X”; ’?Ð7Ð7Ð7Ð7Ð7Ð7r=   c                 óp   — i | ]3\  }}|d          dk    ¯t          j        |d         |d         ¦  «        |“Œ4S rF  r  rG  s      r;   r{   zbuild.<locals>.<dictcomp>’  sD   € ÐgÐgÐg¹(¸!¸UÐWXÐYaÔWbÐefÒWfÐWf•A”E˜!˜Gœ* a¨¤gÑ.Ô.°ÐWfÐWfÐWfr=   r	   ÚmatchÚreasonÚsaneÚgem_okrñ   F)Úavailabilityc                 óF   •— g | ]}t          ‰|         d          ¦  «        ‘ŒS )r/   )r>  r;  s     €r;   rX   zbuild.<locals>.<listcomp>¢  s)   ø€ Ð,RÐ,RÐ,RÀq­T°$°q´'¸&´/Ñ-BÔ-BÐ,RÐ,RÐ,Rr=   )rÇ   ÚlogTzwebshare check off: {}c                 óT   •— h | ]$\  }}|                      d ¦  «        dk    ¯|‰v ¯"|’Œ%S )ÚstatusÚokr@   )rU   rÛ   Úrr7   s      €r;   r­   zbuild.<locals>.<setcomp>§  s7   ø€ ÐYÐYÐY™$˜!˜Q°1·5²5¸±?´?ÀdÒ3JÐ3JÈqÐTXÈyÈy�AÈyÈyÈyr=   zonly {} playable titlesc                 ó   •— | ‰v S r¦   rS   )r5   Úplayables    €r;   Ú	availablezbuild.<locals>.available«  s   ø€ Ø˜(�?Ð"r=   ÚlangrÙ   c                 ó^   •— ‰                      | i ¦  «                              d¦  «        dk    S )NrŒ  r-  r@   )r5   Úavails    €r;   Údubbedzbuild.<locals>.dubbed°  s*   ø€ Ø—9’9˜S "Ñ%Ô%×)Ò)¨&Ñ1Ô1°XÒ=Ð=r=   c                 ó>   — i | ]\  }}|t          j        |¦  «        “ŒS rS   )r4   rc  )rU   r5   Úidss      r;   r{   zbuild.<locals>.<dictcomp>´  s(   € ÐTÐTÐT±°°c�3�œ¨Ñ,Ô,ÐTÐTÐTr=   c                 óN   •	— i | ]!}|t          j        ‰‰
‰	‰‰|‰‰‰‰¬ ¦
  «
        “Œ"S ))ÚmodeÚtaste_sharer�  Úseed_genresÚseed_audience)r   Úrows)rU   r“  r‹  r�  Úmain_genresr7   r–  rñ   Úslotr@  Ú
used_seedss     €€€€€€€€€r;   r{   zbuild.<locals>.<dictcomp>µ  sW   ø€ ð (ð (ð (àð •7”<  j°)¸TÀ9ÐSWÐejØ'-¸;ÐVcðeñ eô eð (ð (ð (r=   c                 ó2   — h | ]}|D ]}|d          D ]}|’ŒŒŒS )rH   rS   )rU   r—  ÚrowrÛ   s       r;   r­   zbuild.<locals>.<setcomp>¸  s6   € ÐPÐPÐP�4°TÐPÐP¨cÀ3ÀwÄ<ÐPÐP¸aˆQÐPÐPÐPÐPÐPr=   c                 ó   — g | ]}|fd „‘ŒS )c                 óD   — t          j        |                      d¦  «        Ž S rx  )r   Úlogor  ry  s    r;   rb   z"build.<locals>.<listcomp>.<lambda>º  s   € ½¼À!Ç'Â'È#Á,Ä,Ð8O€ r=   rS   rk  s     r;   rX   zbuild.<locals>.<listcomp>º  s"   € Ð+aÐ+aÐ+aÐTU°QÐ,OÐ,OÐ,OÐ+aÐ+aÐ+ar=   r  r*  )r~  r  r1   r	   r  rŒ  r*  rŸ  c           
      óö   •— g | ]u}t          j        |d          |d         ¦  «        ‰                     t          j        |d          |d         ¦  «        d¦  «        t          |d         d¦  «        |d         dœ‘ŒvS )r8   r-   rÀ   rv   r   rI   )r5   r[  rv   rI   )r4   r5   r3   Úround)rU   rH  Úseed_titless     €r;   rX   zbuild.<locals>.<listcomp>Æ  s“   ø€ ð dð dð dØSTõ #$¤%¨¨'¬
°A°d´GÑ"<Ô"<À{ÇÂÕWXÔW\Ð]^Ð_fÔ]gÐijÐkoÔipÑWqÔWqÐsuÑGvÔGvÝ%*¨1¨X¬;¸Ñ%:Ô%:ÀAÀfÄIðOð Oð dð dð dr=   )r7   ÚsecondsÚtmdb)ÚversionÚbuilt_atÚpersonalÚverifiedÚdayr™  Úseedsr¢  rä   rò   ÚmodesrH   Ústats)TÚtimer   Úfromtimestampr   Úhourr
   ÚloadÚ	SEEDS_POSÚ	SEEDS_NEGr   r‘   r   Úbreather’   r4   r5   ro   r   r3   rd  Úaudiencer  r‰   rN   r6   rc  ró   ÚprofileÚtaste_summaryr�   ÚlenÚ	TOP_CALLSrÒ   rt   Úseed_keywordsrÁ   r[   rE   r<   rF   rž   rà   rý   r  rú   Ú
score_poolrÅ   rm   ÚDETAILEDr=  r>  r?  r/   r2   r)  rP  ÚmaxrK  Úupdaterö   rH   Úmatch_percentr  ÚWEAK_REASONSrG   ÚWEAK_MATCH_CAPrí   r÷   r   Úslot_ofrô   Ú
wcs.foryour‚  rC  Ú
check_manyÚUnavailableÚMIN_VERIFIEDr1  ÚLANG_FACTORÚMODESr¡  ÚVERSIONÚgenre_namesÚSTATS)JÚnowr¯  rÇ   r„  ÚverifyÚstartedÚ	seed_listr  ÚpositiveÚnegativeÚdetailsr”   Úseed_weightÚ	seed_kindr   Úseed_genre_idsr•   r9   r5   rf  rp   ÚnegrÆ   rr   Úkwsrš   Ú	top_listsr8   rI   rÐ   Ú_paramsrH   Úseed_keyrK   rA   r:   Ú_makerr�   ÚworkÚtmdb_idr/   ÚbestÚtopsÚsharesÚwantedÚfullÚdetailedÚ
best_scoreÚfeature_namesr§  Úseed_vectorsr¨  r‚  r$  Úexcr«  ÚshownÚorderedÚlogosÚsnapshotrŽ  r‹  r�  r˜  rŠ  r7   re  rA  r–  r¢  rñ   r™  r@  rš  sJ                                                               @@@@@@@@@@@@@@r;   Úbuildrë    sl  øøøøøøøøøøøøøø€ åŒi‰kŒk€GØ
Ð
•”‘”€CØÐ,•TÔ'¨Ñ,Ô,€EØ/3¨|�8Ô! #Ñ&Ô&Ô+Ð+À€DØ
Ð
#Ð"Ð"€CÝ œ cÑ*Ô*Ñ€IˆwØ8Ð8˜9Ð8Ñ8Ô8¸½)¸ÔD€HØ8Ð8˜9Ð8Ñ8Ô8¸½)¸ÔD€HØ˜HÑ$€JÝŒlÐ\Ð\ÐQ[Ð\Ñ\Ô\Ñ]Ô]€GØ9;¸RÀÀR¸Ñ6€M�; ¨YØÐØ€NØ€MØ€DÝÔÑÔÐÝ˜* gÑ.Ô.ð @ñ @‰
ˆˆdØð 	ØÝŒe�D˜”M 4¨¤:Ñ.Ô.ˆØ×Ò˜d¥A¤J¨t°T¸'´]Ñ$CÔ$CÐDÑEÔEÐEØŸ8š8 GÑ,Ô,ÐF°·²¸Ñ0@Ô0@ÐFÀBˆ�CÑØ œ>ˆ�CÑØ˜fœˆ	�#‰Ýœk¨$Ñ/Ô/ˆ�sÑÝœZ¨¨d°7¬mÑ<Ô<ˆ�cÑØ�Œ>˜AÒÑØ—’Ð0Ñ1Ô1Ð7°R×<Ò<¸TÑBÔBð [ÀtÈFÄ|ÐWrÐGrÐGrØ ×+Ò+­C°Ð5LÔ0MÈdÔ0SÑ,TÔ,TÐVYÑZÔZÐZÝ�d˜TŸXšXÐ&7Ñ8Ô8Ð>¸B×CÒCÀIÑNÔNÐTÐRTÐVZÐ[bÔVcÐejÐloÑpÔpÐpÝ�!œ/­!¬+°dÑ*;Ô*;Ñ<Ô<¸R¸a¸RÔ@ÑAÔAˆGðJð Jð Jð J 4§8¢8¨IÑ#6Ô#6Ð#<¸"×"AÒ"AÀ)Ñ"LÔ"LÐ"RÐPRð Jñ Jô JˆGå�d˜G T¨'¤]°E¸3Ñ?Ô?Ð?ùÝŒy˜Ñ'Ô'�H€CˆØ>Ð>¥a¤o°c¸1Ñ&=Ô&=Ð>Ñ>Ô>€JØ€CÐ/×6Ò6µs¸=Ñ7IÔ7IÍ3ÈxÉ=Ì=ÕZ]Ð^fÑZgÔZgÐisÑtÔtÑuÔuÐuà9Ð9­yÐ9Ñ9Ô9€EØ	�_˜Z¨Ñ/Ô/µ,¸sÑ2CÔ2CÑCÑC€Eå˜* gÑ.Ô.ð vð v‰
ˆˆdØð 	v�D˜”N QÒ&Ð&¨4°8¸B¸Q¸B´<Ð+?Ð+?Ý”/ $Ñ'Ô'ˆCØð vØ—’˜d 7œm¨Y½¼¸tÀG¼}ÈdÐSWÌjÑ9YÔ9YÑ-YØ+×2Ò2°4¸´=ÑAÔAØ03·²Ð8MÐ8MÈÐ8MÑ8MÔ8MÑ0MÔ0MÐZkØ36ÐQUÐV]ÔQ^ÐbiÒQiÐQiÈ#È#Ðorðtð tðuñ vô vð vøð
 ˜˜!˜”ð _ð _ˆØ�Š�d˜7”m W­q¬u°T¸'´]ÀDÈÄJÑ/OÔ/OÑ%OØ-×4Ò4°T¸'´]ÀDÈÄJÑOÔOÐRXÐZ[ÐQ\ð^ñ 	_ô 	_ð 	_ð 	_åŒlÐOÐOÈÐOÑOÔOÑPÔP€GØ€IÝÔÑÔÐÝ03°E¸7Ñ0CÔ0Cð -ñ -Ñ,Ñ%ˆ��e˜W uØ�˜ˆØ�?Š?˜9Ñ%Ô%ð 
	Ø˜A˜B˜B”xˆHÝ”o n×&8Ò&8¸À2Ñ&FÔ&FÑGÔGÈÈÈÔKˆGÝ'¨Ñ.Ô.ð Lð L‘
��dÝ˜7‘|”|¥c­!¬/½!¼+ÀdÑ:KÔ:KÑ*LÔ*LÑ&MÔ&MÑMð ØÝ˜t U¨DÑ1Ô1�ØÐ$Ø˜'”N×&Ò& tÑ,Ô,Ð,Ø˜)Ô$×/Ò/°°xÐ0@À!ÀdÁ(ÑKÔKÐKøÙØ�?Š?˜7Ñ#Ô#ð 	Ø˜A˜B˜B”xˆHÝ'¨Ñ.Ô.ð Nð N‘
��dÝ˜t U¨DÑ1Ô1�ØÐ$Ø˜'”N×&Ò& uÑ-Ô-Ð-Ø˜)Ô$×/Ò/°¸Ð0AÀ2ÈÁ9ÑMÔMÐMøÙÝ�$˜˜u dÑ+Ô+Ð+Ø�7Š?ˆ?Ø×Ò˜e U˜^Ñ,Ô,Ð,ùÝ& s¨MÑ:Ô:ð ,ð ,‰ˆ�Øð 	,ð 	,ˆDÝ˜4  lÔ!3°TÑ:Ô:ˆEØÐ Ø�g”×"Ò" 7Ñ+Ô+Ð+øð	,õ ˜9Ñ%Ô%€IÝÔÑÔÐØð *ð *ˆØ�$ˆ;ˆ;Ø�ŒI�gÔ×"Ò" 5Ñ)Ô)Ð)øå�D‰zŒzð ð ˆØŸš 3™œ‰ˆˆwØ�CŒy˜Ô ˆØ•3�w‘<”<Ð  GÐ+Ð+¨t°G¬}Ð+ÀDÈÄNÐ+ÐZ^Ð_iÔZjÐ+Ý   uÑ-Ô-ð ,à�S�	øØ€CÐ*×1Ò1µ#°d±)´)½SÀ¹Z¼ZÑHÔHÑIÔIÐIõ „L��s˜C ¨e¯oªoÑ.?Ô.?Ñ@Ô@Ð@Ý�DÐ9Ð9Ð9Ð9Ð:Ñ:Ô:€FØ�)•8�)Ô€DØ.Ð.Ð.Ð.�yÐ.Ñ.Ô.¨}µ¨}Ô=€Dðyð yð yð yð yÐ>ð yñ yô y€Få•$—-’-  t¡¨fÑ 4Ñ5Ô5Ñ6Ô6€FÝŒ<ÐOÐOÈÐOÑOÔOÑPÔP€DØ€HÝÔÑÔÐÝ˜ Ñ&Ô&ð ð ‰	ˆˆTØð 	ØØ—	’	˜#‘”˜qÔ!ˆØ�S”	ˆÝœ˜t UÑ+Ô+ˆˆf‰ÝœJ t¨UÑ3Ô3ˆˆjÑÝœ  uÑ-Ô-ˆˆg‰Øˆ�‰ˆÝ�X˜}¨g°uÐ>NÑOÔO€DÝ�t˜]Ñ+Ô+Ð+Ý„L��s˜C ¨e¯oªoÑ.?Ô.?Ñ@Ô@Ð@ÝÐ8Ð8¨$¯+ª+©-¬-Ð8Ñ8Ô8¸A¸3Ñ>Ñ?Ô?€JØ€MÝÔÑÔÐØ—’‘”ð -ð -ˆØ×Ò˜U 7œ^Ñ,Ô,Ð,Ð,ÝÐ7Ð7¨JÐ7Ñ7Ô7Ñ7Ô7€HØgÐgÀmÐgÑgÔg€LØ—j’j‘l”lð 6ð 6‰
ˆˆUØHPÐW�œ¨¨w¬¸ÑDÔDÐDÐVWˆˆg‰Ýœ( 5¨+°yÀ+ÈsÐTaÐcoÑpÔpˆˆh‰Ø�Œ?˜6Ô"¥lÐ2Ð2Ý   w¤µÑ@Ô@ˆE�'‰NÝ˜e Fœm¨SÑ1Ô1ˆˆf‰Ý! %¨¤-°Ñ5Ô5ˆˆh‰ˆåŒ?˜4Ñ Ô €DÝŒJ�s‰OŒO˜GÔ$€EØ˜%€O€Eˆ8Øð 6Ø+Ð+Ð+Ð+Ð+Ð+ð	6Ý   yÑ1Ô1ˆEØ ×+Ò+Ð,RÐ,RÐ,RÐ,RÈEÐ,RÑ,RÔ,RÐZ_ÐehÐ+ÑiÔiˆEØˆHˆHøØÔ'ð 	6ð 	6ð 	6ØˆCÐ(×/Ò/°Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5øøøøð	6øøøàð "ØYÐYÐYÐY %§+¢+¡-¤-ÐYÑYÔYˆÝˆx‰=Œ=�<Ò'Ð'ÝÐ5×<Ò<½SÀ¹]¼]ÑKÔKÑLÔLÐLð	#ð 	#ð 	#ð 	#ð 	#àð 	Oð 	OˆCØ�ŒI�gÐÐÔ¥+§/¢/°%¸´*·.².ÀÑ2HÔ2HÈ#Ñ"NÔ"NÑNÐÐÑÐð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð "Ð!ˆ	�FØTÐT¸^×=QÒ=QÑ=SÔ=SÐTÑTÔT€Kð(ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (å œð(ñ (ô (€Eð QÐP˜5Ÿ<š<™>œ>ÐPÑPÔP€EÝ�U‰mŒm€GÝ•�W�cœlÐ+aÐ+aÐY`Ð+aÑ+aÔ+aÑbÔbÑcÔcÑdÔd€EØ€EÝÔÑÔÐØð ð ˆØ�S”	ˆÝ�E˜&”MÑ"Ô"ˆØ�Š˜e Gœn¸¸h¼ÕRXÐY^Ð_fÔYgÑRhÔRhÝ# E¨'¤N°AÑ6Ô6ÀÀwÄØ"ŸYšY s¨BÑ/Ô/×3Ò3°F¸BÑ?Ô?ÈEÏIÊIÐVYÐ[]ÑL^ÔL^×LbÒLbÐclÐnpÑLqÔLqØ"ŸYšY s™^œ^Ð1¨rð3ð 3ñ 	4ô 	4ð 	4ð ˆˆc‰
ˆ
Ý"µ°C±´ÀhÐ\dÐmr×m|Òm|Ñm~Ôm~ð  IMðdð dð dð dØXbðdñ dô dà*µc´oÑ6GÔ6GÐR\Ø¨Ý"% d¡)¤)½½d¼i¹k¼kÈGÑ>SÐUVÑ8WÔ8WÕaeÕfiÔfoÑapÔapÐqÐqðsð s€Hð €Os   î%6o ï
pï&p	ð	pc                 óT   — ddl m} |                     t          | t          ¦  «         d S )Nr   ©Úmeta)Úwcs.library2rî  ÚputÚSNAPSHOT_KEYÚSNAPSHOT_TTL)rê  rî  s     r;   Úsaveró  Î  s0   € Ø!Ð!Ð!Ð!Ð!Ð!Ø‡H‚H�\˜8¥\Ñ2Ô2Ð2Ð2Ð2r=   c                  ó¶   — ddl m}  |                      t          ¦  «        \  }}t	          |t
          ¦  «        r |                     d¦  «        t          k    r|nd S )Nr   rí  r¥  )rï  rî  r3   rñ  Ú
isinstancer>  rÈ  )rî  r9   Ú_stales      r;   r°  r°  Ó  sY   € Ø!Ð!Ð!Ð!Ð!Ð!Ø—8’8�LÑ)Ô)�L€Dˆ&Ý˜d¥DÑ)Ô)ÐV¨d¯hªh°yÑ.AÔ.AÅWÒ.LÐ.Lˆ4ˆ4ÐRVÐVr=   r¦   )NNNNT)8r5  r­  r   r   r   rÂ  r   r   r   r4   r	   ró   r
   Úwcs.skinr   rñ  rò  rÈ  r±  r²  r»  r=  rn   r�   r  ru  rõ   rë   rÄ   r¬   r<   rC   rN   rt   rž   rÒ   r¸  rÂ   rà   rí   r÷   rú   r  r)  r¿  rÀ  rÆ  rÅ  Ú	Exceptionr1  rC  rM  rP  rë  ró  r°  rS   r=   r;   ú<module>rù     sâ  ððð ð €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ Ð Ð Ð Ð Ð à €Ø€Ø
€Ø€	Ø€	Ø€Ø€Ø€Ø	
€Ø€	Ø€ØŒ\Ð^Ð^Ð^Ñ^€
ð  $Ð'Ð'€	à˜e¨%°UÀ5ÈbÐVXÐ^`ÐhlØ˜2 2¨eð5ð 5€ðð ð ð-ð -ð -ð	Oð 	Oð 	Oð 	Oðð ð ðð ð ð4%ð %ð %ðP Ð,¨bÐ1°DÐ:LÈbÐ3QØÐ'¸$ÐakØ5Fð*Hð *Hð IàÐ% rÐ*ð,€	ð Ð)¨2Ð.°°~ÀrÐ0JÐK€
ðJð Jð Jð	Ið 	Ið 	Iðdð dð dðDð Dð Dð Ð ð0ð 0ð 0ð 0ðf 0€Ø€Ø¨¸Ð=Ð=€Ø€ðZð Zð Zð Zð Z�	ñ Zô Zð Zð/ð /ð /ð €
ð	-ð 	-ð 	-ð|ð |ð |ð |ð~3ð 3ð 3ð
Wð Wð Wð Wð Wr=   