§
   XOp?‹±�dã                   óV   — d Z ddlZddlZdZd\  ZZd„ Zd„ Zd„ Zdd„Z	d	„ Z
d
„ Zdd„ZdS )uš  Live test provider (docs/plan/milionar-library/120 Â§3): local ffmpeg videos instead of Webshare / Kraska.

Active only when the hidden setting `dev_fixture_provider` is on AND the harness ENABLED flag exists, so
it can never trigger for a normal user. The resolver (L1) asks `file_for()`; `seed_meta()` pre-fills the
TMDb cache from scripts/library_harness/fixtures/tmdb_fixture.json so no network is needed.
é    Nzplugin.video.milionar)zfixture_long.mp4zfixture_short.mp4c            	      óø   — t           j                             t           j                             t           j                             t           j                             t          ¦  «        ¦  «        ¦  «        ¦  «        S ©N)ÚosÚpathÚdirnameÚabspathÚ__file__© ó    úk/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/library2/fixture_provider.pyÚ
_addon_dirr      s@   € ÝŒ7�?Š?�2œ7Ÿ?š?­2¬7¯?ª?½2¼7¿?º?Í8Ñ;TÔ;TÑ+UÔ+UÑVÔVÑWÔWÐWr   c                  ó\   — t           j                             t          ¦   «         dd¦  «        S )NÚscriptsÚlibrary_harness)r   r   Újoinr   r
   r   r   Ú_harness_dirr      s   € ÝŒ7�<Š<�
™œ iÐ1BÑCÔCÐCr   c                  óp  — 	 dd l } dd l}|                      t          ¦  «                             d¦  «        dk    rdS t
          j                             |                     d 	                    t          ¦  «        ¦  «        d¦  «        }t
          j         
                    |¦  «        S # t          $ r Y dS w xY w)Nr   Údev_fixture_providerÚtrueFz(special://profile/addon_data/{}/harness/ÚENABLED)Ú	xbmcaddonÚxbmcvfsÚAddonÚADDON_IDÚ
getSettingr   r   r   ÚtranslatePathÚformatÚexistsÚ	Exception)r   r   Úflags      r   Úenabledr!      s±   € ðØÐÐÐØˆˆˆØ�?Š?�8Ñ$Ô$×/Ò/Ð0FÑGÔGÈ6ÒQÐQØ�5ÝŒw�|Š|˜G×1Ò1Ð2\×2cÒ2cÕdlÑ2mÔ2mÑnÔnÐpyÑzÔzˆÝŒw�~Š~˜dÑ#Ô#Ð#øÝð ð ð Øˆuˆuðøøøs   ‚9B' ½A)B' Â'
B5Â4B5c                 ó,  — | dk    rt          |¦  «        dk    p| dk    ot          |pd¦  «        dz  dk    }t          j                             t	          ¦   «         d|rt
          nt          ¦  «        }t          j                             |¦  «        r|ndS )z\Path of the test video for a title: the last episode / second fixture film is the short one.Úmoviei¼ Úepisoder   é   ÚmediaN)Úintr   r   r   r   ÚSHORTÚLONGr   )Ú
media_typeÚtmdb_idÚseasonr$   Úshortr   s         r   Úfile_forr.   #   s‰   € à˜7Ò"Ð=¥s¨7¡|¤|°vÒ'=ÐzÀ:ÐQZÒCZÐCyÕ_bÐcjÐcoÐnoÑ_pÔ_pÐstÑ_tÐxyÒ_y€EÝŒ7�<Š<�™œ¨¸%Ð1Iµ°ÅTÑJÔJ€DÝ”7—>’> $Ñ'Ô'Ð1ˆ4ˆ4¨TÐ1r   c                  óØ   — t          t          j                             t	          ¦   «         dd¦  «        dd¬¦  «        5 } t          j        | ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )NÚfixturesztmdb_fixture.jsonÚrzutf-8)Úencoding)Úopenr   r   r   r   ÚjsonÚload)Úhandles    r   Úload_fixturer7   *   sž   € Ý	�bŒg�lŠl�<™>œ>¨:Ð7JÑKÔKÈSÐ[bÐ	cÑ	cÔ	cð !ÐgmÝŒy˜Ñ Ô ð!ð !ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   ¾AÁA#Á&A#c                 óP   ‡‡‡‡‡— ddl mŠmŠ ˆˆˆfd„Šˆˆfd„Š ‰| ¦  «         | S )znFixture dates (frozen "today" 2026-06-15) moved by `days`, so live tests see unaired episodes relative to now.r   )ÚdateÚ	timedeltac                 óæ   •— 	 d„ | d d…                               d¦  «        D ¦   «         \  }}} ‰|||¦  «         ‰‰¬¦  «        z                        ¦   «         S # t          t          f$ r | cY S w xY w)Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   )r'   )Ú.0Úxs     r   ú	<genexpr>z)_shifted.<locals>.move.<locals>.<genexpr>5   s(   è è € ÐEÐE¨1¥ A¡¤ÐEÐEÐEÐEÐEÐEr   é
   ú-)Údays)ÚsplitÚ	isoformatÚ
ValueErrorÚ	TypeError)ÚtextÚyearÚmonthÚdayr9   rB   r:   s       €€€r   Úmovez_shifted.<locals>.move3   s‘   ø€ ð	ØEÐE°°S°b°S´	·²ÀÑ0DÔ0DÐEÑEÔEÑˆD�%˜Ø�D˜˜u cÑ*Ô*¨Y¨Y¸DÐ-AÑ-AÔ-AÑA×LÒLÑNÔNÐNøÝ�IÐ&ð 	ð 	ð 	ØˆKˆKˆKð	øøøs   ƒAA ÁA0Á/A0c                 ó  •— t          | t          ¦  «        rO|                      ¦   «         D ]8\  }}|dv r$t          |t          ¦  «        r ‰|¦  «        | |<   Œ- ‰|¦  «         Œ9d S t          | t          ¦  «        r| D ]} ‰|¦  «         Œd S d S )N)Úair_dateÚfirst_air_dateÚrelease_date)Ú
isinstanceÚdictÚitemsÚstrÚlist)ÚnodeÚkeyÚvaluerK   Úwalks      €€r   rX   z_shifted.<locals>.walk:   s¿   ø€ Ý�d�DÑ!Ô!ð 	Ø"Ÿjšj™lœlð  ð  ‘
��UØÐHÐHÐHÍZÐX]Õ_bÑMcÔMcÐHØ $  U¡¤�D˜‘I�Ià�D˜‘K”K�K�Kð	 ð  õ
 ˜�dÑ#Ô#ð 	Øð ð �Ø��U‘”��ð	ð 	ðð r   )Údatetimer9   r:   )ÚdatarB   r9   rK   r:   rX   s    `@@@@r   Ú_shiftedr[   /   st   øøøøø€ à(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ðð ð ð ð ð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	€Dˆ�J„J€JØ€Kr   Fc                 ó~  — ddl m} ddlm} t	          ¦   «         }|rCt          ||                     ¦   «         |                     |d         ¦  «        z
  j        ¦  «        }d}d}|d          	                    ¦   «         D ]5\  }}| 
                    |                     |¦  «        ||| ¦  «         |dz  }Œ6|d          	                    ¦   «         D ]N\  }	}
|	                     d	¦  «        \  }}| 
                    |                     ||¦  «        |
|| ¦  «         |dz  }ŒO|d
          	                    ¦   «         D ]5\  }}| 
                    |                     |¦  «        ||| ¦  «         |dz  }Œ6|d          	                    ¦   «         D ]5\  }}| 
                    |                     |¦  «        ||| ¦  «         |dz  }Œ6|S )zÁWrite the fixture TMDb data into meta with a long TTL; returns the number of keys.

    relative_to_today=True shifts every date so the fixture's frozen day becomes the real today (live tests).r   )r9   )ÚmetaÚtodayi€3áÚtvé   r,   ú:r#   Ú
collection)rY   r9   Úwcs.library2r]   r7   r[   r^   ÚfromisoformatrB   rR   ÚputÚkey_tvrC   Ú
key_seasonÚ	key_movieÚkey_collection)ÚnowÚrelative_to_todayr9   r]   rZ   ÚttlÚcountr+   ÚshowrV   r,   Úshow_idÚnumberr#   Úcidrb   s                   r   Ú	seed_metarr   H   sÚ  € ð ÐÐÐÐÐØ!Ð!Ð!Ð!Ð!Ð!Ý‰>Œ>€DØð WÝ˜˜tŸzšz™|œ|¨d×.@Ò.@ÀÀgÄÑ.OÔ.OÑOÔUÑVÔVˆØ
€CØ€EØ˜dœ×)Ò)Ñ+Ô+ð ð ‰ˆ�Ø�Š�—’˜WÑ%Ô% t¨S°#Ñ6Ô6Ð6Ø�‰
ˆˆØ˜H”~×+Ò+Ñ-Ô-ð ð ‰ˆˆVØŸ)š) C™.œ.‰ˆ�Ø�Š�—’ ¨&Ñ1Ô1°6¸3ÀÑDÔDÐDØ�‰
ˆˆØ˜wœ-×-Ò-Ñ/Ô/ð ð ‰ˆ�Ø�Š�—’ Ñ(Ô(¨%°°cÑ:Ô:Ð:Ø�‰
ˆˆØ Ô-×3Ò3Ñ5Ô5ð ð ‰ˆˆZØ�Š�×$Ò$ SÑ)Ô)¨:°s¸CÑ@Ô@Ð@Ø�‰
ˆˆØ€Lr   )NN)NF)Ú__doc__r4   r   r   r)   r(   r   r   r!   r.   r7   r[   rr   r
   r   r   ú<module>rt      s´   ððð ð €€€Ø 	€	€	€	à"€Ø5�€€eðXð Xð XðDð Dð Dð	ð 	ð 	ð2ð 2ð 2ð 2ð!ð !ð !ð
ð ð ð2ð ð ð ð ð r   