Ë
    $±¦jå ã                   ó’  — U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mc mZ ddlmZmZ ddlmZmZmZmZmZ ddlmZmZmZmZ ddlZddlZddlZ	 ddlmZ  dZ!ddlZdd	l#m$Z$m%Z%m&Z& ejN                  d
k(  r;	 ejP                  jS                  dd¬«       ejT                  jS                  dd¬«       dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4ejj                  jm                  ejj                  jo                  e8«      «      Z9ejj                  ju                  e9d«      Z;ejj                  ju                  e9d«      Z<ejj                  ju                  e9d«      Z=ejj                  ju                  e9d«      Z>ejj                  ju                  e9d«      Z?ejj                  ju                  e9d«      Z@ejj                  ju                  e9d«      ZAejj                  ju                  e9d«      ZBejj                  ju                  e9d«      ZCejj                  ju                  e9d «      ZD eE«       ZFeEeGd!<   daHdZd"eId#eJd$eKfd%„ZLd[d"eId$dfd&„ZMd\d'„ZN ejž                  eN«       d(ZPd)ZQeRj§                  d*«      ZTi aUeeJef   eGd+<   e4fd,eJd-eJd$dfd.„ZVd\d/„ZW G d0„ d1«      ZX eXe?«      ZYd$eeJef   fd2„ZZd3eeJef   d$dfd4„Z[d\d5„Z\d\d6„Z]d7eJd$eeJef   fd8„Z^d7eJd$eeKeIeeJef   f   fd9„Z_ddl`Z`ddlaZad]d:eJd;eJd<eeeJeJf      d$eeJeeJ   f   fd=„Zbd]d>eeJef   d?eeJ   d$eJfd@„Zcd]d<eeeJeJf      d$efdA„ZddBeJd$eKfdC„ZedDeJd$eeeJ   eeJ   f   fdE„ZfdFeeJef   d>eeJef   dGeJd$eJfdH„ZgdIeJd7eJd>eeJef   d<eeeJeJf      d$eeeeJef      eeJ   f   f
dJ„Zhd^dBeJdKeJdLeJd>eeJef   dMeeJef   dNeeJ   d<eeeJeJf      d$eeeJ   eeJ   f   fdO„Zid_dFeeJef   d>eeJef   d7eJdMeeJef   dPeId$eeJef   fdQ„Zjd`d?eeJ   dReeeeJef         dSeKd$eeJef   fdT„Zkdaldamd$eeeJef      fdU„ZndadVeId?eeJ   dSeKd$dfdW„ZodX„ ZpeqdYk(  r ep«        yy# e"$ r
 ddlZ dZ!Y �ŒÑw xY w# e+$ r Y �Œ…w xY w)ba&  
====================================================================
 DAZN - Manager & DRM Extractor (Widevine WVD)
 Auto-Extractor: Live & Linear Streams (DAZN 1, Plus, ecc.)
 Output: dazn_channels.json & dazn_playlist.m3u
====================================================================
é    N)ÚdatetimeÚ	timedelta)ÚDictÚListÚOptionalÚTupleÚAny)ÚurlparseÚparse_qsÚ	urlencodeÚ
urlunparse)ÚrequestsTF)ÚPSSHÚCdmÚDeviceÚwin32úutf-8Úreplace©ÚencodingÚerrorsz[32mz[33mz[31mz[36mz[34mz[35mz[1mz[2mz[0mzdazn_config.jsonzdazn_tokens.jsonzpssh_cache.jsonzWVD.wvdz	proxy.txtzdazn_channels.jsonzdazn_proxy_data.jsonzdazn_playlist.m3uzdazn_playlist_proxy.m3uzdazn_proxy.pyÚ_eligibility_blocked_idsÚportÚhostÚreturnc                 ó   — 	 t        j                   t         j                  t         j                  «      5 }|j                  d«       |j	                  || f«      dk(  cd d d «       S # 1 sw Y   y xY w# t
        $ r Y yw xY w)Ng      à?r   F)ÚsocketÚAF_INETÚSOCK_STREAMÚ
settimeoutÚ
connect_exÚ	Exception)r   r   Úss      ú3C:\Users\Claud\Documents\ScriptNowTest\dazn\dazn.pyÚis_port_openr%   K   sa   € ðÜ�]‰]œ6Ÿ>™>¬6×+=Ñ+=Ô>À!Ø�L‰L˜ÔØ—<‘<  t Ó-°Ñ2÷ ?×>Ò>ûô ò Ùðús.   ‚2A1 ´'A%Á	A1 Á%A.Á*A1 Á.A1 Á1	A=Á<A=c                 óØ  — t        | «      rt        d| › d�t        «       y t        j                  j                  t        «      st        dt        › �t        «       y t        d| › d�t        «       	 t        j                  t        j                  t        gt        ¬«      at        dt        j                  › d�t        «       y # t         $ r}t        d	|› �t"        «       Y d }~y d }~ww xY w)
Nu5   ðŸ“¡ DAZN Proxy giÃ  attivo e in ascolto sulla porta Ú.u#   âš ï¸� Script proxy non trovato in u3   ðŸš€ Avvio automatico DAZN HTTPS Proxy sulla porta ú...)Úcwdu+   âœ… DAZN Proxy avviato in background (PID: Ú)u'   â�Œ Impossibile avviare dazn_proxy.py: )r%   ÚlogÚGREENÚosÚpathÚexistsÚPROXY_SCRIPT_FILEÚYELLOWÚCYANÚ
subprocessÚPopenÚsysÚ
executableÚ
SCRIPT_DIRÚ_PROXY_PROCESSÚpidr"   ÚRED)r   Úes     r$   Úensure_proxy_runningr<   S   sÈ   € ä�DÔÜÐCÀDÀ6ÈÐKÌUÔSØä�7‰7�>‰>Ô+Ô,ÜÐ1Ô2CÐ1DÐEÄvÔNØäÐ
=¸d¸VÀ3ÐGÌÔNð@Ü#×)Ñ)Ü�^‰^Ô.Ð/Üô
ˆô 	Ð9¼.×:LÑ:LÐ9MÈQÐOÔQVÕWøÜò @ÜÐ5°a°SÐ9¼3×?Ñ?ûð@ús   Á1AC Ã	C)ÃC$Ã$C)c                  ó  — t         rQt         j                  «       €<t        dt        «       	 t         j	                  «        t         j                  d¬«       y y y # t        $ r( 	 t         j                  «        Y y # t        $ r Y Y y w xY ww xY w)Nu   ðŸ›‘ Arresto DAZN Proxy...é   )Útimeout)r8   Úpollr+   r1   Ú	terminateÚwaitr"   Úkill© ó    r$   Ú
stop_proxyrF   g   s{   € åœ.×-Ñ-Ó/Ð7ÜÐ(¬&Ô1ð	Ü×$Ñ$Ô&Ü×Ñ¨ÐÕ*ð	 8€~øô
 ò 	ðÜ×#Ñ#Ö%øÜò Úðúð	ús)   ¬*A Á	B
Á#A9Á9	BÂB
ÂBÂB
i0*  z$edef8ba9-79d6-4ace-a3c8-27dcd51d21edÚ edef8ba979d64acea3c827dcd51d21edÚ
pssh_cacheÚmsgÚcolorc                 ó|   — t        |› dt        j                  «       j                  d«      › d| › t        › �d¬«       y )NÚ[z%H:%M:%Sú] T)Úflush)Úprintr   ÚnowÚstrftimeÚRESET)rI   rJ   s     r$   r+   r+   €   s4   € Ü	ˆUˆG�1”X—\‘\“^×,Ñ,¨ZÓ8Ð9¸¸C¸5ÄÀÐ
HÐPTÖUrE   c                  ó‚   — t         › dt        › d› t        › dt        › dt        › dt        › d› t        › �} t	        | «       y )Nzž
  ____     _     ______  _   _ 
 |  _ \   / \   |__  / \| \ | |
 | | | | / _ \    / /|  \|  \| |
 | |_| |/ ___ \  / /_| |\ \  |
 |____//_/   \_\/____|_| \_|
õÒ   â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�Ú
u=     â—† DAZN Auto-Manager Â· Widevine Extractor & Decryptor â—†)r1   ÚBLUErR   r2   rO   )Úbanners    r$   Úprint_bannerrX   ƒ   sO   € Ü�ð ô €€z€l”5�'ð Ü€ÐCÄEÀ7ð KÜ€€z€l”5�'ð€Fô 
ˆ&…MrE   c                   ó¼   — e Zd ZdZefdefd„Zdedee   fd„Zde	ddfd	„Z
dd
e	ddfd„Zdeeeef      fd„Zdeeeef      fd„Zdefd„Zdeeeeeef      fd„Zy)ÚProxyManagerzKCarica, analizza, valida e ruota i proxy da proxy.txt o da dazn_config.jsonÚfilepathc                 ó\   — || _         g | _        d | _        d| _        | j	                  «        y )Nr   )r[   ÚproxiesÚconfig_proxyÚcurrent_idxÚload)Úselfr[   s     r$   Ú__init__zProxyManager.__init__’   s)   € Ø ˆŒØ"$ˆŒØ6:ˆÔØˆÔØ�	‰	�rE   Úliner   c                 ó$  — |j                  «       }|r|j                  d«      ry |j                  d«      r|S |j                  d«      }t        |«      dk(  r|\  }}}}d|› d|› d|› d|› �S t        |«      dk(  rd|d   › d|d	   › �S d|v rd|› �S y )
NÚ#)úhttp://zhttps://z	socks5://z
socks5h://Ú:é   rf   Ú@r>   r   é   )ÚstripÚ
startswithÚsplitÚlen)ra   rc   Úpartsr   r   ÚuserÚpwds          r$   Úparse_proxy_linezProxyManager.parse_proxy_line™   s²   € Ø�z‰z‹|ˆÙ�t—‘ sÔ+Øà�?‰?ÐMÔNØˆKà—
‘
˜3“ˆÜˆu‹:˜Š?Ø$)Ñ!ˆD�$˜˜cØ˜T˜F ! C 5¨¨$¨¨q°°Ð7Ð7Ü�‹Z˜1Š_Ø˜U 1™X˜J a¨¨a© zÐ2Ð2Ø�D‰[Ø˜T˜FÐ#Ð#àrE   Ú
proxy_confNc                 ó’  — t        |t        «      rZ|j                  d«      xs |j                  d«      }|j                  d«      xs |j                  d«      }|r||xs |dœ| _        y y t        |t        «      rM|j                  «       r<| j                  |j                  «       «      xs |j                  «       }||dœ| _        y y y )NÚhttpÚhttps©ru   rv   )Ú
isinstanceÚdictÚgetr^   Ústrrk   rr   )ra   rs   Úhttp_pÚhttps_pÚparseds        r$   Úset_config_proxyzProxyManager.set_config_proxy¬   s°   € Ü�j¤$Ô'Ø—^‘^ FÓ+ÒF¨z¯~©~¸gÓ/FˆFØ —n‘n WÓ-ÒG°·±ÀÓ1GˆGÙØ-3¸gÒ>OÈÑ$P�Õ!ð ä˜
¤CÔ(¨Z×-=Ñ-=Ô-?Ø×*Ñ*¨:×+;Ñ+;Ó+=Ó>ÒTÀ*×BRÑBRÓBTˆFØ)/¸&Ñ AˆDÕð .@Ð(rE   r^   c                 ó¾  — g | _         |�| j                  |«       t        j                  j	                  | j
                  «      rq	 t        | j
                  ddd¬«      5 }|D ]@  }| j                  |«      }|sŒ|| j                   vsŒ&| j                   j                  |«       ŒB 	 d d d «       d| _
        y d| _
        y # 1 sw Y   ŒxY w# t        $ r
 Y d| _
        y w xY w)NÚrr   Úignorer   r   )r]   r   r-   r.   r/   r[   Úopenrr   Úappendr"   r_   )ra   r^   Úfrc   r~   s        r$   r`   zProxyManager.load¶   sÁ   € ØˆŒØÐ#Ø×!Ñ! ,Ô/ä�7‰7�>‰>˜$Ÿ-™-Ô(ðÜ˜$Ÿ-™-¨°wÀxÕPÐTUÛ !˜Ø!%×!6Ñ!6°tÓ!<˜Ú! f°D·L±LÒ&@Ø ŸL™L×/Ñ/°Õ7ñ !"÷ Qð ˆÕ˜1ˆÕ÷ QÐPûô
 ò ØàˆÕðús6   ÁC	 ÁB=Á8B=ÂB=Â%C	 Â=CÃC	 Ã		CÃCc                 ó´   — | j                   r4| j                   | j                  t        | j                   «      z     }||dœS | j                  r| j                  S y )Nrw   )r]   r_   rn   r^   )ra   Ú	proxy_urls     r$   Úget_dictzProxyManager.get_dictÇ   sN   € Ø�<Š<ØŸ™ T×%5Ñ%5¼¸D¿L¹LÓ8IÑ%IÑJˆIØ%°	Ñ:Ð:Ø×ÒØ×$Ñ$Ð$ØrE   c                 óŽ   — | j                   r*| j                  dz   t        | j                   «      z  | _        | j                  «       S )Nrj   )r]   r_   rn   rˆ   ©ra   s    r$   ÚrotatezProxyManager.rotateÏ   s6   € Ø�<Š<Ø $× 0Ñ 0°1Ñ 4¼¸D¿L¹LÓ8IÑIˆDÔØ�}‰}‹ÐrE   c                 ód   — | j                   rt        | j                   «      S | j                  rdS dS )Nrj   r   )r]   rn   r^   rŠ   s    r$   ÚcountzProxyManager.countÔ   s*   € Ø$(§L¢LŒs�4—<‘<Ó ÐU¸D×<MÒ<M°qÐUÐSTÐUrE   c           	      óÆ  — g }t        | j                  «      }|s*| j                  r|j                  | j                  d   «       |D ]¼  }||dœ}t	        j                  «       }	 t        j                  d|d¬«      }t        t	        j                  «       |z
  dz  d«      }|j                  r6|j                  «       j                  dd	«      }|j                  |d
||f«       n"|j                  |dd|j                  › �|f«       Œ¾ |S # t        $ rP}	t        t	        j                  «       |z
  dz  d«      }|j                  |dt        |	«      d d |f«       Y d }	~	�Œd }	~	ww xY w)Nru   rw   z!https://api.ipify.org?format=jsoné
   )r]   r?   éè  rj   ÚipÚOKTFúHTTP é   )Úlistr]   r^   r„   Útimer   rz   ÚroundÚokÚjsonÚstatus_coder"   r{   )
ra   ÚresultsÚlist_to_testÚpÚproxies_dictÚt0r�   Údurr‘   r;   s
             r$   Útest_allzProxyManager.test_all×   s7  € ØˆÜ˜DŸL™LÓ)ˆÙ × 1Ò 1Ø×Ñ × 1Ñ 1°&Ñ 9Ô:ãˆAØ$%°Ñ2ˆLÜ—‘“ˆBð
=Ü—L‘LÐ!DÈlÐdfÔg�ÜœTŸY™Y›[¨2Ñ-°Ñ5°qÓ9�Ø—4’4ØŸ™›Ÿ™ d¨DÓ1�BØ—N‘N A t¨R°Ð#5Õ6à—N‘N A u°°a·m±m°_Ð.EÀsÐ#KÔLøð ð ˆøô ò =ÜœTŸY™Y›[¨2Ñ-°Ñ5°qÓ9�Ø—‘  5¬#¨a«&°°"¨+°sÐ;×<Ò<ûð=ús   Á#B DÄ	E ÄAEÅE ©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
PROXY_FILEr{   rb   r   rr   r	   r   r`   r   rˆ   r‹   Úintr�   r   r   ÚboolÚfloatr¡   rD   rE   r$   rZ   rZ   �   s³   „ ÙUØ'1ñ  ó ð Sð ¨X°c©]ó ð&B¨3ð B°4ó Bñ ð °ó ð"˜( 4¨¨S¨¡>Ñ2ó ð˜  c¨3 h¡Ñ0ó ð
V�só Vð˜$˜u S¨$°°UÐ%:Ñ;Ñ<ô rE   rZ   c                  ó(  — dddddddddddœdd	d
ddddœddd	d
ddddœddddœgdœddidœ} t         j                  j                  t        «      s7t	        t        dd¬«      5 }t        j                  | |dd¬«       d d d «       | }n=	 t	        t        dd¬«      5 }t        j                  |«      }d d d «       dvr| d   |d<   d|v r"d |d   v rt        j                  |d   d    «       |S # 1 sw Y   ŒqxY w# 1 sw Y   ŒIxY w# t        $ r | }Y ŒMw xY w)!NÚ z$57b6a530-70a4-4d65-b412-46a1a5c22b38z$66125bf7-0b92-47fc-b618-93cfea67f55cú0.147.8ú@dazn/peng-html5-core/web/webÚitrw   úhttps://www.dazn.com/úA"Chromium";v="152", "Not?A_Brand";v="24", "Google Chrome";v="152"ú?0ú	"Windows"úoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36ÚDAZN)Úrefererú	sec-ch-uaúsec-ch-ua-mobileúsec-ch-ua-platformú
user-agentúx-brandúapplication/octet-stream)úcontent-typer¶   r·   r¸   r¹   rº   r»   Ú4hqcjx5zv91f1bdx71io4bnrlzDAZN 1©ÚidÚnameÚplayback_url)ÚtokenÚemailÚpasswordÚ	device_idÚdaznidÚapp_versionÚ	player_idÚlanguageÚproxyÚheadersÚlicense_headersÚchannelsÚrefresh_interval_hoursé   )ÚdaznÚloopÚwr   ©r   r>   F©ÚindentÚensure_asciir�   rÑ   rË   )r-   r.   r/   ÚCONFIG_FILErƒ   r™   Údumpr`   r"   Úproxy_managerr   )Údefault_configr…   Úcfgs      r$   Úload_configrÝ   ð   s`  € ð ØØØ?Ø<Ø$Ø8ØàØñð
 3Ø`Ø$(Ø&1ð PØ!ñð !;Ø2Ø`Ø$(Ø&1ð PØ!ñ ð 6Ø$Ø$&ñðñ=%
ðN % að
ñO*€NôX �7‰7�>‰>œ+Ô&Ü”+˜s¨WÕ5¸Ü�I‰I�n a°ÀÕF÷ 6à‰ð	!Ü”k 3°Õ9¸QÜ—i‘i “l�÷ :à˜SÑ Ø,¨VÑ4��F‘ð ��}˜ C¨¡KÑ/Ü×&Ñ& s¨6¡{°7Ñ';Ô<à€J÷ 6Ð5ú÷
 :Ð9ûô ò 	!Ø ŠCð	!ús6   Á!C+ÂD ÂC7Â/D Ã+C4Ã7D Ã<D ÄDÄDrÜ   c                 ó¼  — 	 i }t         j                  j                  t        «      r0t	        t        dd¬«      5 }t        j                  |«      }d d d «       |j                  | «       t	        t        dd¬«      5 }t        j                  ||dd¬«       d d d «       y # 1 sw Y   ŒOxY w# 1 sw Y   y xY w# t        $ r}t        d|› �t        «       Y d }~y d }~ww xY w)	Nr�   r   rÔ   rÓ   r>   FrÕ   zErrore salvataggio config: )r-   r.   r/   rØ   rƒ   r™   r`   ÚupdaterÙ   r"   r+   r:   )rÜ   Úcurrentr…   r;   s       r$   Úsave_configrá   /  s¦   € ð	4ØˆÜ�7‰7�>‰>œ+Ô&Ü”k 3°Õ9¸QÜŸ)™) A›,�÷ :à�‰�sÔÜ”+˜s¨WÕ5¸Ü�I‰I�g˜q¨¸Õ?÷ 6Ð5÷ :Ð9ú÷ 6Ð5ûäò 4ÜÐ)¨!¨Ð-¬s×3Ñ3ûð4úsL   ‚7B5 ¹BÁ+B5 Á:B)ÂB5 ÂB&Â"B5 Â)B2Â.B5 Â2B5 Â5	CÂ>CÃCc                  óè   — t         j                  j                  t        «      r2	 t	        t        dd¬«      5 } t        j                  | «      ad d d «       y y # 1 sw Y   y xY w# t        $ r i aY y w xY w)Nr�   r   rÔ   )	r-   r.   r/   Ú
CACHE_FILErƒ   r™   r`   rH   r"   ©r…   s    r$   Ú
load_cacherå   ;  sY   € ä	‡w�w‡~�~”jÔ!ð	Ü”j #°Õ8¸AÜ!ŸY™Y q›\�
÷ 9Ð8ð "ç8Ð8ûäò 	ØŠJð	ús.   ¥A# ·AÁA# ÁA ÁA# Á A# Á#A1Á0A1c                  óŒ   — t        t        dd¬«      5 } t        j                  t        | dd¬«       d d d «       y # 1 sw Y   y xY w)NrÓ   r   rÔ   r>   FrÕ   )rƒ   rã   r™   rÙ   rH   rä   s    r$   Ú
save_cacherç   D  s.   € Ü	Œj˜#¨Õ	0°AÜ�	‰	”*˜a¨¸Õ>÷ 
1×	0Ñ	0ús	   “:ºArÃ   c                 ó<  — 	 | j                  «       j                  d«      }t        |«      dk7  ri S |d   }t        |«      dz  }|dkD  r|dd|z
  z  z  }t        j                  |«      }t        j                  |j                  d«      «      S # t        $ r i cY S w xY w)zFDecodifica il payload di un JWT DAZN senza richiedere librerie esterner'   rÐ   rj   rh   r   Ú=r   )	rk   rm   rn   Úbase64Úurlsafe_b64decoder™   ÚloadsÚdecoder"   )rÃ   ro   Úpayload_b64ÚremÚdecodeds        r$   Údecode_jwt_payloadrñ   I  sš   € ðØ—‘“×#Ñ# CÓ(ˆÜˆu‹:˜Š?ØˆIØ˜A‘hˆÜ�+Ó Ñ"ˆØ�Š7Ø˜3 ! c¡'™?Ñ*ˆKÜ×*Ñ*¨;Ó7ˆÜ�z‰z˜'Ÿ.™.¨Ó1Ó2Ð2øÜò ØŠ	ðús   ‚.B ±AB ÂBÂBc                 ó¢   — t        | «      }|sddi fS |j                  dd«      }t        t        j                  «       «      }||z
  }|dkD  }|||fS )u*   Verifica validitÃ  e scadenza del JWT DAZNFr   Úexpé<   )rñ   rz   r¨   r–   )rÃ   Úpayloadró   rP   Ú	remainingÚis_valids         r$   Úcheck_token_statusrø   X  sZ   € ä  Ó'€GÙØ�a˜ˆ|ÐØ
�+‰+�e˜QÓ
€CÜ
Œd�i‰i‹kÓ
€CØ�c‘	€IØ˜2‰~€HØ�Y Ð'Ð'rE   rÄ   rÅ   Ú
proxy_dictc                 ót  — d}dj                  t        j                  t        j                  d¬«      «      }dj                  t        j                  t        j                  d¬«      «      }| |dd|› d�d	|› d
�dœ}dddddddddddddddœ}t        d| › d�t        «       	 t        |«      }|j                  |||d¬«      }	|	j                  }
t        d| › d |	j                  › d!|
d"d# › �t        «       d$|
v sd%|
v s|	j                  d&k(  rt        d't        «       y(d)|
v sd*|
v ry+d,|
v sd-|
v ry(d.|
v sd/|
v rX	 |	j                  «       j                  d/«      xs/ |	j                  «       j                  d0i «      j                  d/«      }|rd1|fS 	 |	j                   rY	 |	j                  «       j                  d/«      xs/ |	j                  «       j                  d0i «      j                  d/«      }|rd1|fS 	 y+y+# t        $ r Y Œqw xY w# t        $ r Y y+w xY w# t        $ r}t        d2|› �t"        «       Y d"}~y(d"}~ww xY w)3zSEffettua il login su DAZN e restituisce lo stato (SUCCESS, RETRY, FAIL) e il token.z3https://authentication-prod.ar.indazn.com/v5/SignInr¬   rh   )ÚkrÐ   ÚwebÚ0Úe5edÚ2bdz6s9kÚydg5ujkhink9)ÚEmailÚPasswordÚPlatformÚDeviceIdÚProfilingSessionIdz*/*zen-GB,en;q=0.9,it;q=0.8zno-cachezapplication/jsonúhttps://www.dazn.comr°   zA"Google Chrome";v="143", "Chromium";v="143", "Not A(Brand";v="24"r²   r³   ÚemptyÚcorsz
cross-sitezoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36z£Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 signin/undefined hyper/0.14.0 (web; production; it))Úacceptzaccept-languagezcache-controlr½   Úoriginr¶   r·   r¸   r¹   zsec-fetch-destzsec-fetch-modezsec-fetch-siterº   z	x-dazn-uau%   ðŸ”‘ Tentativo di Login in corso per r(   é   )r™   rÌ   r?   u   ðŸ”� DEBUG Risposta Login per z: HTTP z - Né,  zRequest blockedÚ
CloudFronti“  u8   ðŸ›‘ CloudFront WAF ha bloccato la richiesta! Riprovo...)ÚRETRYNÚInvalidPasswordÚAccountBlocked)ÚFAILNz)Request limiting policy has been breachedz!Security policy has been breachedÚSignedInÚTokenÚ	AuthTokenÚSUCCESSu    â�Œ Eccezione durante il Login: )ÚjoinÚrandomÚchoicesÚstringÚdigitsr+   r2   Úcreate_sessionÚpostÚtextrš   ÚDIMr1   r™   rz   r"   r˜   r:   )rÄ   rÅ   rù   ÚurlÚs_valÚk_valrõ   rÌ   r#   r�   r  rÃ   r;   s                r$   Ú
dazn_loginr"  f  sh  € à
?€Cà�G‰G”F—N‘N¤6§=¡=°AÔ6Ó7€EØ�G‰G”F—N‘N¤6§=¡=°AÔ6Ó7€Eð ØØØ˜�w˜d�OØ (¨¨¨|Ð<ñ€Gð Ø4Ø#Ø*Ø(Ø*ØXØ Ø)Ø!Ø Ø&ð Hð {ñ€Gô" Ð
/°¨w°cÐ:¼DÔAð$ä˜:Ó&ˆØ�F‰F�3˜W¨g¸rˆFÓBˆØ�v‰vˆäÐ,¨U¨G°7¸1¿=¹=¸/ÈÈTÐRVÐSVÈZÈLÐYÔ[^Ô_ð  Ñ$¨¸Ñ(<ÀÇÁÐQTÒ@TÜÐJÌFÔSØ à Ñ$Ð(8¸DÑ(@ØØ6¸$Ñ>ÐBeÐimÑBmØ Ø˜Ñ ¨D¡ðØŸ™›Ÿ™ WÓ-Ò[°·±³·±¸kÈ2Ó1N×1RÑ1RÐSZÓ1[�ÙØ$ eÐ+Ð+ð ð �4Š4ðØŸ™›Ÿ™ WÓ-Ò[°·±³·±¸kÈ2Ó1N×1RÑ1RÐSZÓ1[�Ù ¨EÐ!1Ð1�5ñ øô ò Ùðûô ò Øàðûô ò ÜÐ.¨q¨cÐ2´CÔ8Üûðúso   Â!A9H ÄH Ä$H Ä-H Ä6AG3 ÆH ÆAH Ç3	G?Ç<H Ç>G?Ç?H È	HÈH ÈHÈH È	H7ÈH2È2H7ÚconfigÚ	cli_tokenc                 ó
  — |}|s�t         j                  j                  t        «      rj	 t	        j
                  t        t        dd¬«      «      }|j                  dd«      }|r0t        |«      \  }}}|r|}nt        dt        › d| › d�t        «       |s"| j                  d	i «      j                  dd«      }|rt        |«      \  }}}|sd}|�s~t         j                  j                  t         j                  j                  t        «      d
«      }	t         j                  j                  |	«      �rwt        d|	› d�t        «       	 t        |	dd¬«      5 }
|
D �cg c])  }d|v sŒ|j                  d«      rŒ|j!                  «       ‘Œ+ }}ddd«       D ]ÿ  }|j#                  dd«      \  }}d}|dkD  rÝt$        j'                  «       }t)        |||«      \  }}|dk(  rK|rI|}t        dt*        «       	 t        t        dd¬«      5 }
t	        j,                  d|i|
d¬«       ddd«       ni|dk(  rIt        d|› d|dz
  › d�t        «       t$        j/                  «        |dz  }t1        j2                  d«       nt        d|› d�t4        «       n|dkD  rŒÝ|sŒÿ n |s·t        dt4        «       n¦| j                  d	i «      j                  dd«      }| j                  d	i «      j                  d d«      }|r`|r^t$        j'                  «       }t)        |||«      \  }}|r8|}	 t        t        dd¬«      5 }
t	        j,                  d|i|
d¬«       ddd«       |�rCt        |«      \  }}}|�r	|d!z  }|d!z  }t        d"|› d#|d!z  › d$|j                  d%d&«      › d'�t*        «       ||j                  d%d«      |j                  d(d«      |j                  d)d«      |j                  d*d+«      |j                  d,d«      |j                  d-d«      |j                  d.d«      t7        j8                  «       j;                  «       d/œ	}t        t        dd¬«      5 }
t	        j,                  ||
dd0¬1«       ddd«       |S t        d2t4        «       t        d3t<        › d4�t        «       |S # t        $ r Y �Œw xY wc c}w # 1 sw Y   �Œ$xY w# t        $ r g }Y �Œ5w xY w# 1 sw Y   �Œ¯xY w# t        $ r Y �Œ¾w xY w# 1 sw Y   �Œ£xY w# t        $ r Y �Œ²w xY w# 1 sw Y   |S xY w)5z]Recupera il token attivo dal file tokens, dalla config, oppure esegue il login se configurator�   r   rÔ   rÃ   r¬   u   âš ï¸� Token salvato in u    Ã¨ scaduto (scaduto da zs)rÑ   úaccounts.txtu;   â�³ Nessun token valido trovato, avvio Login automatico da r(   rg   re   Nrj   rÐ   r   r  u9   âœ… Login completato con successo! Nuovo token acquisito.rÓ   r>   )rÖ   r  u   âš ï¸� Rate limit o errore per z, cambio proxy e riprovo... (z tentativi rimasti)u   â�Œ Account z4 fallito (Invalid o Blocked), passo al successivo...uE   â�Œ Nessun account in accounts.txt Ã¨ risultato valido o funzionante.rÄ   rÅ   rô   u'   ðŸ”‘ Token DAZN valido Â· Scadenza tra zh zm (ViewerID: ÚviewerIdúN/Ar*   rp   ÚdeviceIdÚcountryr¯   Ú
userstatusÚissuedró   )	rÃ   Ú	viewer_idrÇ   rÆ   r*  Úuser_statusr,  ró   Ú
updated_atFrÕ   u<   âš ï¸� ATTENZIONE: Il token fornito Ã¨ SCADUTO o NON VALIDO!zAggiorna il token in z o usa --token <nuovo_token>)r-   r.   r/   Ú
TOKEN_FILEr™   r`   rƒ   rz   rø   r+   r1   r"   r  ÚdirnameÚ__file__rl   rk   rm   rÚ   rˆ   r"  r,   rÙ   r‹   r–   Úsleepr:   r   rP   Ú	isoformatrØ   )r#  r$  rÃ   Út_dataÚt_candÚvalrï   Ú_rõ   Úaccounts_filer…   ÚlÚlinesrc   rÄ   rÅ   Úretriesrù   ÚstatusÚ	new_tokenÚstÚtkÚminsÚhrsÚt_infos                            r$   Ú	get_tokenrD  ­  sÎ  € à€EÙ”R—W‘W—^‘^¤JÔ/ð
	Ü—Y‘Yœt¤J°¸gÔFÓGˆFØ—Z‘Z ¨Ó,ˆFÙÜ0°Ó8‘��S˜!ÙØ"‘EäÐ2´:°,Ð>VÐX[ÐW[ÐV\Ð\^Ð_ÔagÔhñ Ø—
‘
˜6 2Ó&×*Ñ*¨7°BÓ7ˆáÜ.¨uÓ5ÑˆˆS�'ÙØˆEò ÜŸ™Ÿ™¤R§W¡W§_¡_´XÓ%>ÀÓOˆÜ�7‰7�>‰>˜-Õ(ÜÐMÈmÈ_Ð\_Ð`ÔbhÔiðÜ˜-¨°wÕ?À1Ù01ÓX±¨1°S¸A²XÀaÇlÁlÐSVÕFW˜QŸW™W�Y°�EÐX÷ @ó
 �Ø"&§*¡*¨S°!Ó"4‘��xà�Ø ’kÜ!.×!7Ñ!7Ó!9�JÜ(2°5¸(ÀJÓ(OÑ%�F˜Ià Ò*©yØ )˜ÜÐWÔY^Ô_ð!Ü!%¤j°#ÀÕ!HÈAÜ $§	¡	¨7°EÐ*:¸AÀaÕ H÷ "Ið Ø 7Ò*ÜÐ=¸e¸WÐDaÐbiÐjkÑbkÐalÐlð  Aô  CIô  JÜ%×,Ñ,Ô.Ø 1™˜ÜŸ
™
 1�ä˜l¨5¨'Ð1eÐfÔhkÔlØð)  “kò, Ùð7 ñ: ÜÐ[Ô]`Õað —J‘J˜v rÓ*×.Ñ.¨w¸Ó;ˆEØ—z‘z &¨"Ó-×1Ñ1°*¸bÓAˆHÙ™Ü*×3Ñ3Ó5�
Ü# E¨8°ZÓ@‘��BÙØ�EðÜ!¤*¨c¸GÕDÈÜ ŸI™I w°Ð&6¸À!ÕD÷ Eò
 Ü.¨uÓ5ÑˆˆS�'ÚØ˜"‘9ˆDØ˜"‘*ˆCÜÐ9¸#¸¸bÀÈÁÀÈ=ÐY`×YdÑYdÐeoÐqvÓYwÐXxÐxyÐzô  }Bô  Cð Ø$Ÿ[™[¨°RÓ8Ø!Ÿ+™+ f¨bÓ1Ø$Ÿ[™[¨°RÓ8Ø"Ÿ;™; y°$Ó7Ø&Ÿ{™{¨<¸Ó<Ø!Ÿ+™+ h°Ó2Ø—{‘{ 5¨!Ó,Ü&Ÿl™l›n×6Ñ6Ó8ñ
ˆFô ”j #°Õ8¸AÜ—	‘	˜& !¨A¸EÕB÷ 9ð €Lô ÐNÔQTÔUÜÐ'¬ }Ð4PÐQÔSYÔZà€Løôy ò 	Úð	üò$ Y÷ @Ñ?ûäò Ø“ðú÷ "IÑ!Hûä(ò !Ú ð!ú÷6 EÑDûä$ò Úðú÷* 9ð €Lúsº   ©A)R ÅR6 ÅR)Å	R$Å!R$Å3R$ÆR)ÆR6 Ç.SÈ SÈSÌS2 Ì)S%ÍS2 ÑTÒ	R!Ò R!Ò$R)Ò)R3Ò.R6 Ò6SÓSÓS	ÓSÓ	S"Ó!S"Ó%S/Ó*S2 Ó2	S?Ó>S?ÔTc                 óz   — t         rt        j                  d¬«      }nt        j                  «       }| r| |_        |S )zUCrea una sessione HTTP ottimizzata con impersonazione Chrome per bypassare CloudFrontÚ	chrome120)Úimpersonate)ÚHAS_CURL_CFFIÚcffi_requestsÚSessionr   r]   )rù   r#   s     r$   r  r    s2   € åÜ×!Ñ!¨kÔ:‰ä×ÑÓˆÙØˆŒ	Ø€HrE   Úpssh_b64c                 óì   — 	 t        j                  | «      }t        |«      dk\  r|dd t        k(  ryt	        | «      }t        |j                  «      j                  «       t        k(  S # t        $ r Y yw xY w)z9Verifica se una stringa PSSH Base64 appartiene a Widevineé   é   TF)
rê   Ú	b64decodern   ÚWIDEVINE_SYSTEM_ID_BYTESr   r{   Ú	system_idÚlowerÚWIDEVINE_SYSTEM_IDr"   )rK  Úrawr�   s      r$   Úis_widevine_psshrU  $  sl   € ðÜ×Ñ˜xÓ(ˆÜˆs‹8�rŠ>˜c " R˜jÔ,DÒDØÜ�‹NˆÜ�1—;‘;Ó×%Ñ%Ó'Ô+=Ñ=Ð=øÜò Ùðús   ‚/A' ²4A' Á'	A3Á2A3Úmpd_contentc           	      óî  — 	 t        j                  | «      }g }|j                  «       D �cg c]   }|j                  j                  d«      sŒ|‘Œ" }}|s|g}|D �]M  }|j                  j                  d«      xs |j                  j                  d«      xs dj                  «       }d|v xs d	|v }|j                  «       D �cg c]   }|j                  j                  d
«      sŒ|‘Œ" }	}|	D ]¸  }
|
j                  j                  dd«      j                  «       }t        |v }|
j                  «       D �cg c]   }|j                  j                  d«      sŒ|‘Œ" }}|D ]F  }|j                  xs dj                  «       }|sŒ$|st        |«      sŒ2|j                  |||dœ«       ŒH Œº �ŒP |s”|j                  «       D ]�  }|j                  j                  d«      sŒ|j                  sŒ,|j                  j                  «       sŒG|j                  j                  «       }t        |«      sŒm|j                  |dddœ«       Œƒ |sy|j!                  d„ d¬«       |d   d   }d}	 t#        |«      }|j$                  r°|j$                  d   }t'        |d«      r&t)        t+        |d«      «      r|j-                  «       }not'        |d«      r't/        |j,                  t0        «      r|j,                  }n<t/        |t2        «      r|j-                  «       }nt1        |«      j5                  dd«      }||fS # t        $ r}t        d|› �t        «       Y d}~yd}~ww xY wc c}w c c}w c c}w # t        $ r Y ||fS w xY w)zGEstrae il blocco PSSH Widevine e il relativo KID dal manifesto DASH MPDz'Errore parsing XML del manifesto DASH: N©NNÚAdaptationSetÚmimeTypeÚcontentTyper¬   ÚvideoÚmp4ÚContentProtectionÚschemeIdUriÚpssh)r`  Úis_videoÚis_wv_schemeTc                 ó   — | d   | d   fS )Nra  rb  rD   )Úcs    r$   Ú<lambda>z'extract_widevine_pssh.<locals>.<lambda>_  s   €  1 Z¡=°!°NÑ2CÑ"DrE   )ÚkeyÚreverser   ÚhexÚ-)ÚETÚ
fromstringr"   r+   r:   ÚiterÚtagÚendswithÚattribrz   rR  rS  r  rk   rU  r„   Úsortr   Úkey_idsÚhasattrÚcallableÚgetattrrh  rx   r{   Úbytesr   )rV  Úrootr;   Ú
candidatesÚelemÚadaptation_setsÚasetÚmimera  ÚcpsÚcpÚ	scheme_idrb  Ú
pssh_nodesÚnoder  Ú	best_psshÚexpected_kidr�   Ú	first_kids                       r$   Úextract_widevine_psshr„  /  s  € ðÜ�}‰}˜[Ó)ˆð
 €JØ(,¯	©	¬ÓZ© °t·x±x×7HÑ7HÈÕ7Y’t¨€OÐZÙØ˜&ˆäˆØ—‘—‘ 
Ó+ÒS¨t¯{©{¯©¸}Ó/MÒSÐQS×ZÑZÓ\ˆØ˜d�?Ò3 e¨t mˆà $§	¡	¤ÓV¡˜¨t¯x©x×/@Ñ/@ÐATÕ/UŠt ˆÐVÛˆBØŸ	™	Ÿ™ m°RÓ8×>Ñ>Ó@ˆIÜ-°Ð:ˆLà+-¯7©7¬9ÓR©9 4¸¿¹×8IÑ8IÈ&Õ8Qš$¨9ˆJÐRÛ"�ØŸ	™	š R×.Ñ.Ó0�ÙØÙÔ#3°DÕ#9Ø×%Ñ%Ø $Ø$,Ø(4ñ'õ ñ #ò ð  ñ* Ø—I‘I–KˆDØ�x‰x× Ñ  Õ(¨T¯Y«Y¸4¿9¹9¿?¹?Õ;LØ—y‘y—‘Ó(�Ü# DÕ)Ø×%Ñ%Ø $Ø$(Ø(,ñ'õ ð	  ñ Øà‡O�OÑDÈd€OÔSØ˜1‘˜fÑ%€Ià€LðÜ�‹OˆØ�9Š9ØŸ	™	 !™ˆIÜ�y %Ô(¬X´g¸iÈÓ6OÔ-PØ(Ÿ}™}›‘Ü˜ EÔ*¬z¸)¿-¹-ÌÔ/MØ(Ÿ}™}‘Ü˜I¤uÔ-Ø(Ÿ}™}›‘ä" 9›~×5Ñ5°c¸2Ó>�ð �lÐ"Ð"øô ò ÜÐ5°a°SÐ9¼3Ô?Üûðüò
 [ùò Wùò
 SøôT ò Øà�lÐ"Ð"ðúsM   ‚L- « MÁMÃ MÃ$MÄ3 M ÅM É"CM% Ì-	MÌ6MÍMÍ%	M4Í3M4Úchannelr-  c                 ó¸  — |j                  di «      }| j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd	«      }|xs d
}t        t        j                  «       dz  «      }	t        j                  «       j
                  dd j                  «       }
|	› d|› d|› d|
› �}|dd|dd
dddd|d||dœ}dt        |«      › �S )z@Costruisce l'endpoint Playback con SessionId e timestamp freschirÑ   rÀ   r¾   rÈ   r­   rÉ   r®   rÊ   r¯   Úunknownr�   Né   ri  ÚWIDEVINEz	MPEG-DASHrü   ÚtrueÚ	microsoftÚfalsezhcst,mtar¬   )Ú
AppVersionÚDrmTypeÚFormatÚPlayerIdr  ÚModelÚSecureÚManufacturerÚPlayReadyInitiatorÚCapabilitiesÚAssetIdÚMtaLanguageCodeÚLanguageCodeÚ	SessionIdz,https://api.playback.indazn.com/v5/Playback?)rz   r¨   r–   ÚuuidÚuuid4rh  Úupperr   )r…  r#  r-  Údazn_cfgÚasset_idrÈ   rÉ   ÚlangÚv_idÚtsÚrnd_hexÚ
session_idÚparamss                r$   Úbuild_playback_urlr¥  t  sø   € à�z‰z˜& "Ó%€HØ�{‰{˜4Ð!<Ó=€HØ—,‘,˜}¨iÓ8€KØ—‘˜[Ð*IÓJ€IØ�<‰<˜
 DÓ)€DØÒ!˜	€DÜ	ŒT�Y‰Y‹[˜4ÑÓ	 €BÜ�j‰j‹l×Ñ˜r Ð"×(Ñ(Ó*€GØ�4�q˜˜˜a ˜z¨¨7¨)Ð4€Jð "ØØØØØØØ#Ø%Ø"ØØØØñ€Fð  :¼)ÀFÓ:KÐ9LÐMÐMrE   rÂ   c                 ó„  — |j                  di «      }t        |«      }|r|j                  d«      ndxs |j                  dd«      }|r|j                  d«      ndxs |j                  dd«      }d	|› �d
d|j                  di «      j                  dd«      dd|j                  di «      j                  dd«      dt        t        j                  «       «      ||dœ}t        |«      }		 |	j                  | |d¬«      }
|
j                  sg	 |
j                  «       }|j                  di «      j                  di «      j                  d«      xs |
j                  dd }dd|
j                  › d|› �fS |
j                  «       dfS # t        $ r |
j                  dd }Y Œ@w xY w# t        $ r}dt        |«      fcY d}~S d}~ww xY w)zWEffettua la chiamata all'endpoint Playback DAZN con headers personalizzati e bypass WAFrÑ   rp   NrÇ   ú$790f7b77-25f4-4cd8-bc68-15c600c9eb89r)  rÆ   r¬   zBearer r  r°   rÌ   r·   r±   r²   r³   rº   r´   rµ   )ÚAuthorizationÚOriginÚRefererr·   r¸   r¹   rº   r»   úx-correlation-idúx-dazn-deviceúx-daznidé   ©rÌ   r?   zodata.errorÚmessageÚvalueéÈ   r“   ú: )rz   rñ   r{   rš  r›  r  r˜   r™   r  r"   rš   )rÂ   rÃ   r#  rù   r�  rõ   Úuser_idrÆ   rÌ   r#   r�   Úerr_jsonrI   r;   s                 r$   Úrequest_playback_infor¶  ’  sÄ  € à�z‰z˜& "Ó%€HÜ  Ó'€GÙ&-ˆw�{‰{˜6Ô"°4Òz¸H¿L¹LÈÐSyÓ<z€GÙ,3�—‘˜ZÔ(¸Ò_À(Ç,Á,È{Ð\^ÓB_€Ið # 5 'Ð*Ø(Ø*Ø—\‘\ )¨RÓ0×4Ñ4°[ð  CFó  GØ Ø)Ø—l‘l 9¨bÓ1×5Ñ5°lð  Evó  wØÜ¤§
¡
£Ó-Ø"Øñ€Gô 	�zÓ"€AðØ�E‰E�,¨¸ˆEÓ<ˆØ�tŠtð#ØŸ6™6›8�Ø—l‘l =°"Ó5×9Ñ9¸)ÀRÓH×LÑLÈWÓUÒeÐYZ×Y_ÑY_Ð`dÐadÐYe�ð ˜5 §¡ ¨r°#°Ð7Ð7Ð7à�v‰v‹x˜ˆ~Ðøô	 ò #Ø—f‘f˜T˜c�l’ð#ûô
 ò Ø”S˜“Vˆ|ÕûðúsI   Ã( F Ä	AF ÅF Å/F ÆFÆF ÆFÆF Æ	F?Æ(F:Æ4F?Æ:F?rž  Úla_urlÚtokens_payloadr‚  c                 ó 	  — |r|› d|j                  «       › �}n9|› dt        j                  | j                  «       «      j	                  «       dd › �}|t
        v r+t
        |   }|j                  d«      |j                  d«      fS t        j                  j                  t        «      st        dt        › d�t        «       y	 t        j                  t        «      }	t        j                   |	«      }
|
j#                  «       }|
j%                  |t'        | «      «      }|j                  d	i «      }|j                  d
«      xs |j                  dd«      }|j                  d«      xs |j                  dd«      }ddd|j                  di «      j                  dd«      dd|j                  di «      j                  dd«      dt)        t+        j,                  «       «      ||dœ}t/        |«      }|j1                  |||d¬«      }|j2                  s?t        d|j4                  › d|j6                  dd  › �t        «       |
j9                  |«       y|
j;                  ||j<                  «       g }|
j?                  |«      D �]K  }|j@                  d!k7  sŒtC        |jD                  d"«      r:tG        |jD                  jH                  t(        «      r|jD                  jH                  nTtC        |jD                  d"«      r|jD                  jI                  «       n$t)        |jD                  «      jK                  d#d«      }tM        tO        |jP                  d"d«      «      r|jP                  jI                  «       n)tO        |jP                  d"t)        |jP                  «      «      }|jS                  |j                  «       |j                  «       f«       �ŒN |
j9                  |«       |st        d$t        «       yd\  }}|r#|D ]  \  }}||j                  «       k(  sŒ||}} n |s
|r|d%   \  }}|r.|r,||d&œt
        |<   tU        «        t        d'|› d|› �tV        «       ||fS # tX        $ r}t        d(|› �t        «       Y d}~yd}~ww xY w))zSDecifra la chiave di contenuto Widevine usando WVD.wvd e l'endpoint di Licenza DAZNrg   Né   Úkidrf  zERRORE: File CDM z non trovato!rX  rÑ   rp   rÇ   r§  r)  rÆ   r¬   r¼   r  r°   rÍ   r·   r±   r²   r³   rº   r´   rµ   )zContent-Typer©  rª  r·   r¸   r¹   rº   r»   r«  r¬  r­  r”   )rÌ   Údatar?   zChiamata License fallita (HTTP z): r²  ÚSIGNINGrh  ri  z5Nessuna chiave di contenuto trovata nella licenza DRMr   )r»  rf  z"Chiave DRM estratta con successo: zErrore licenza DRM Widevine: )-rR  ÚhashlibÚsha256ÚencodeÚ	hexdigestrH   rz   r-   r.   r/   ÚWVD_FILEr+   r:   r   r`   r   Úfrom_devicerƒ   Úget_license_challenger   r{   rš  r›  r  r  r˜   rš   r  ÚcloseÚparse_licenseÚcontentÚget_keysÚtyperr  r»  rx   rh  r   rs  rt  rf  r„   rç   r,   r"   )rK  rž  r·  r#  r¸  r‚  rù   Ú	cache_keyÚcachedÚdeviceÚcdmÚsessionÚ	challenger�  r´  rÆ   Úlic_headersr#   r�   Úcontent_keysrû   Úk_kidÚk_keyr»  rf  Úc_kidÚc_keyr;   s                               r$   Úget_keys_wvdrÖ  ¶  s  € ñ Ø�j  ,×"4Ñ"4Ó"6Ð!7Ð8‰	à�j ¤'§.¡.°·±Ó1BÓ"C×"MÑ"MÓ"OÐPSÐQSÐ"TÐ!UÐVˆ	à”JÑÜ˜IÑ&ˆØ�z‰z˜%Ó  &§*¡*¨UÓ"3Ð3Ð3ä�7‰7�>‰>œ(Ô#ÜÐ¤˜z¨Ð7¼Ô=Øð>Ü—‘œXÓ&ˆÜ�o‰o˜fÓ%ˆØ—(‘(“*ˆØ×-Ñ-¨g´t¸H³~ÓFˆ	à—:‘:˜f bÓ)ˆØ ×$Ñ$ VÓ,Òn°·±¸XÐGmÓ0nˆØ"×&Ñ& zÓ2ÒS°h·l±lÀ;ÐPRÓ6Sˆ	ð 7Ø,Ø.Ø!Ÿ™Ð&7¸Ó<×@Ñ@Àð  ORó  SØ $Ø"-Ø"Ÿ,™,Ð'8¸"Ó=×AÑAÀ,ð  QBó  CØÜ #¤D§J¡J£LÓ 1Ø&Øñ
ˆô ˜:Ó&ˆØ�F‰F�6 ;°YÈˆFÓKˆØ�tŠtÜÐ1°!·-±-°ÀÀAÇFÁFÈ4ÈCÀLÀ>ÐRÔTWÔXØ�I‰I�gÔØà×Ñ˜' 1§9¡9Ô-à.0ˆØ—‘˜g×&ˆAØ�v‰v˜Ó"Ü%,¨Q¯U©U°EÔ%:¼zÈ!Ï%É%Ï)É)ÔUXÔ?Y˜Ÿ™Ÿ	š	ÔovÐwx×w|Ñw|ð  Dô  pEÐ`a×`eÑ`e×`iÑ`iÔ`kô  KNð  OP÷  OTñ  OTó  KU÷  K]ñ  K]ð  ^að  ceó  Kf�Ü'/´¸¿¹¸uÀdÓ0KÔ'L˜Ÿ™Ÿ	™	œÔRYÐZ[×Z_ÑZ_ÐafÔhkÐlm×lqÑlqÓhrÓRs�Ø×#Ñ# U§[¡[£]°E·K±K³MÐ$BÖCð	 'ð
 	�	‰	�'ÔáÜÐGÌÔMØà‰ˆˆSÙÛ ,‘��uØ˜L×.Ñ.Ó0Ó0Ø$ e˜�CÙð !-ñ
 ‘|Ø# A‘‰HˆC�á‘3Ø,/¸Ñ$<ŒJ�yÑ!ÜŒLÜÐ4°S°E¸¸3¸%Ð@Ä%ÔHØ�CˆxˆøÜò ÜÐ+¨A¨3Ð/´Ô5Üûðús4   ÃFQ ÉAQ ÊEQ Ï-"Q ÐAQ Ñ	Q=Ñ Q8Ñ8Q=Úmax_retriesc                 óˆ  ‡>‡?— t         j                  «       }|j                  dd«      }| j                  dd«      }d}d}	d}
d}d}i }d}d}d}d}i }d\  }}t        d|dz   «      D �]¼  }t	        | ||«      }|dk(  rt        d	|› d
�t        «       nt        d|› d|› d|› d�t        «       t        ||||«      \  }Š>‰>s|�s ‰>r]dt        ‰>«      v rPt        d|› d�t        «       t        j                  | j                  d«      «       | j                  d«      |d‰>dœc S ‰>r?t        ˆ>fd„dD «       «      r+t        d‰>› �t        «       | j                  d«      |d‰>dœc S ‰>rt        d|› d‰>› d�t        «       |dk  rt        j                  d«       �Œ0t        d‰>› �t        «       | j                  d«      |d‰>dœc S |j                  di «      }|j                  d «      r|j                  d «      }|j                  d!g «      }|}|sD|dk  rt        j                  d«       �ŒÁt        d"t        «       | j                  d«      |d#d$dœc S g d%¢Š?ˆ?fd&„}t!        ||¬'«      }t#        |«      }|j                  d(i «      j                  d)i «      }|j                  d*d+«      }|D �]:  }|j                  d,d«      } |j                  d-d«      }!|j                  d.i «      }"|j                  d/d«      }#|j                  d0d«      }$|"j                  d1d2«      }%|"j                  d3d«      }&|%r|&rd4| v rd5nd4}'| › |'› |%› d6|&› �}(n| }(d7d8||j                  d9d:«      |j                  d;d<«      |j                  d=d>«      d?œ})|%r|&r
|%› d6|&› �|)d@<   	 |j                  |(|)dA¬B«      }*|*j$                  r|*j&                  nd}+d},dC}-|+�r_	 t+        j,                  |+«      }.|.j/                  dD«      D ]î  }/|/j                  dE«      dFk(  sŒdC}0dG}1|/j/                  dH«      D ]«  }2|2j                  dI«      }3|2j                  dJ«      }4|2j                  dK«      }5|3rF|3j1                  «       r6t3        |3«      |0k\  r(t3        |3«      }0|4r|4j1                  «       rt3        |4«      }1|5sŒ�|5j1                  «       sŒ’t3        |5«      |-kD  sŒ¡t3        |5«      }-Œ­ |0dCkD  r|0› dL|1dGkD  r|1nd› �}, n t5        |+«      \  }6}7|6r7|!r5t7        |6| j                  d|j                  dMd«      «      |!|||7|¬N«      \  }}|(}| }	|$}
|#}|,}|"}|!}|%r	|&r|%› d6|&› �nd}8|8}dO|(› dP|› dQ�}9|8r	|9dR|8› dQ�z  }9|r,|r*|9dS|› dT|› dQ�z  }9dU|› dQ�}:|8r	|:dV|8› dQ�z  }:|:dW|› dX|(› dQ�z  }:ndU|› dQ�}:|8r	|:dV|8› dQ�z  }:|:dX|(› dQ�z  }:|9}|:}|s�Œù|s�Œý|-r	dY|-dZz  › d[�nd};t        d\|,› |;› d]|#j9                  «       › d^�d_|,v rt:        nt        «        n |r|r n<||k  s�Œ‹t        d|› d`|dz   › d|› da�t        «       t        j                  d«       �Œ¿ |r|rdbn|rdcnd}<| j                  ddd«      |j                  ded«      df| j                  d|j                  dM«      «      › dg�||r	|r|› dT|› �ndh| j                  di«      djœ}=i d| j                  d|j                  dM«      «      “dk|<“dl|“dm|	“dn|
“do|“dp|“dq|“dr|“ds|“dt|“du|r	|r|› dT|› �ndh“dv|rdw|› �ndh“dx|“dy|“dz|“d{t=        j>                  «       jA                  «       “|=d|<   |=S # t(        $ r d}+Y �Œyw xY w# t(        $ r Y �Œjw xY w)}u:  
    Esegue l'estrazione completa per un singolo canale DAZN con retry intelligente:
    se un flusso restituisce 'Solo Manifest' (nessuna chiave DRM al primo colpo),
    riprova automaticamente esplorando tutti i CDN disponibili e ripetendo la richiesta
    finchÃ© la chiave non viene estratta con successo.
    r'  r¬   rÁ   zDAZN ChannelÚfhdr‡  rX  rj   zRichiesta Playback per 'ú'...õ   ðŸ”� [z] Tentativo Ú/z&: riprovo estrazione Playback & DRM...ÚEligibilityu   â›” [u6   ] Eligibility not allowed â€” evento escluso dal JSON.rÀ   ÚELIGIBILITY_BLOCKED)rÀ   rÁ   r=  Úerrorc              3   ó8   •K  — | ]  }|t        ‰«      v –— Œ y ­wr¢   )r{   )Ú.0ÚtermÚerrs     €r$   Ú	<genexpr>z"extract_channel.<locals>.<genexpr>3  s   øè ø€ ÐcÑ8b°˜4¤3 s£8Ô+Ñ8bùs   ƒ)ÚPinÚEntitlementÚGeoz	not validz"Errore Playback non recuperabile: ÚERRORõ   âš ï¸� [z] Errore temporaneo: u    â€” riprovo...r>   g      ø?zErrore Playback: ÚAssetÚTitleÚPlaybackDetailsz1Nessun PlaybackDetails disponibile nella rispostaÚ
NO_STREAMSzNessun PlaybackDetails trovato)zdcs-fs-livezdct-fs-livezdca-fs-liveÚfszdcs-ac-livezdct-ac-livezdca-ac-liveÚaczdct-ak-livezdcs-ak-liveÚakc                 ó|   •— | j                  dd«      j                  «       }t        ‰«      D ]  \  }}||v sŒ|c S  y)NÚCdnNamer¬   iç  )rz   rR  Ú	enumerate)ÚdÚc_nameÚidxÚprefÚ
pref_orders       €r$   Ú	cdn_scorez"extract_channel.<locals>.cdn_score]  s@   ø€ Ø—U‘U˜9 bÓ)×/Ñ/Ó1ˆFÜ& zÖ2‘	��TØ˜6’>Ø’Jð 3ð rE   )rf  rÑ   rÌ   rº   r´   ÚManifestUrlÚLaUrlÚCdnTokenÚ
Resolutionrò  ÚNameú
dazn-tokenÚValueÚ?Ú&ré   r  r°   r·   r±   r¸   r²   r¹   r³   )r©  rª  z
User-Agentr·   r¸   r¹   ÚCookier  r¯  r   z/.//{urn:mpeg:dash:schema:mpd:2011}AdaptationSetr[  r\  r®  z-{urn:mpeg:dash:schema:mpd:2011}RepresentationÚheightÚ	frameRateÚ	bandwidthr�   ÚId)rK  rž  r·  r#  r¸  r‚  rù   zmpv "z" --user-agent="Ú"z --http-header-fields="Cookie: z" --demuxer-lavf-o="decryption_key=rg   zffplay -user_agent "z -headers "Cookie: z -cenc_decryption_key z "z @ r�   z kbpszRisoluzione stream: z (Profilo API: r*   Ú1080z@] Solo Manifest (chiavi DRM non ancora pronte). Nuovo tentativo z
 tra 2s...r’   ÚMANIFEST_ONLYÚlogoÚEventIdz*https://addictedbytheproject.nl:8443/play/z/stream.mpdNÚepg©r  Úevent_idÚproxy_manifestrÁ   Ú	clear_keyr  r=  Úmanifest_urlÚbase_manifest_urlÚcdn_nameÚ
resolutionÚactual_resolutionÚ	cdn_tokenÚlicense_urlr»  rf  Ú
key_stringÚcookie_headerzCookie: Úmpv_cmdÚmpv_commandÚffplay_commandÚextracted_atÚ	_internal)!rÚ   rˆ   rz   Úranger¥  r+   r2   r1   r¶  r{   r   ÚaddÚanyr:   r–   r3  Úsortedr  r˜   r  r"   rj  rk  ÚfindallÚisdigitr¨   r„  rÖ  rœ  r,   r   rP   r4  )@r…  r#  rÃ   r¸  r×  rù   r-  Úchannel_nameÚlast_composed_manifest_urlÚlast_raw_manifest_urlÚlast_cdn_nameÚlast_resolutionÚlast_actual_resolutionÚlast_cdn_tokenÚlast_la_urlÚlast_cookie_hdrÚlast_mpv_cmdÚlast_ffplay_cmdÚ
last_assetr»  rf  ÚattemptrÂ   Úplayback_dataÚassetÚdetails_listrù  Úsorted_detailsr#   Údazn_headersÚuarô  Úraw_manifest_urlr·  r  r  r  Ú
token_nameÚ	token_valÚsepÚcomposed_manifest_urlÚmpd_headersÚr_mpdÚmpd_textr  Úmax_bandwidthrv  rz  Úmax_hÚmax_fpsÚrepÚhÚfpsÚbwrK  r‚  Ú
cookie_hdrr  Ú
ffplay_cmdÚbw_strr=  Úresult_entryrã  rø  s@                                                                 @@r$   Úextract_channelrL    s	  ù€ ô ×'Ñ'Ó)€JØ×"Ñ" :¨rÓ2€IØ—;‘;˜v ~Ó6€Là!#ÐØÐØ€MØ€OØ&ÐØ€NØ€KØ€OØ€LØ€OØ€JØ�H€Cˆä˜˜K¨!™O×,ˆÜ)¨'°6¸9ÓEˆØ�aŠ<ÜÐ*¨<¨.¸Ð=¼tÕDä�&˜˜ l°7°)¸1¸[¸MÐIoÐpÔrxÔyä2°<ÀÈÐPZÓ[Ñˆ�sÙ’má�}¬¨C«Ñ0Ü�e˜L˜>Ð)_Ð`ÔbhÔiÜ(×,Ñ,¨W¯[©[¸Ó->Ô?à!Ÿ+™+ dÓ+Ø(Ø3Ø ñ	ò ñ ”sÓcÑ8bÓcÔcÜÐ8¸¸Ð>ÄÔDà!Ÿ+™+ dÓ+Ø(Ø%Ø ñ	ò ñ Ü�h˜|˜nÐ,AÀ#ÀÀoÐVÔX^Ô_Ø˜Š{Ü—
‘
˜3”ÙÜÐ# C 5Ð)¬3Ô/à—k‘k $Ó'Ø$Ø!Øñ	ò ð ×!Ñ! '¨2Ó.ˆØ�9‰9�WÔØ Ÿ9™9 WÓ-ˆLØ$×(Ñ(Ð):¸BÓ?ˆØˆ
áØ˜Š{Ü—
‘
˜3”ÙÜÐCÄcÔJà—k‘k $Ó'Ø$Ø&Ø9ñ	ò ò `ˆ
ô	ô   °)Ô<ˆä˜:Ó&ˆØ—z‘z &¨"Ó-×1Ñ1°)¸RÓ@ˆØ×Ñ˜lð  -^ó  _ˆäˆAØ Ÿu™u ]°BÓ7ÐØ—U‘U˜7 BÓ'ˆFØŸ™˜j¨"Ó-ˆIØŸ™˜|¨UÓ3ˆJØ—u‘u˜Y¨Ó+ˆHà"Ÿ™ v¨|Ó<ˆJØ!Ÿ™ g¨rÓ2ˆIÙ™iØ Ð$4Ñ4‘c¸#�Ø+;Ð*<¸S¸EÀ*ÀÈQÈyÈkÐ(ZÑ%à(8Ð%ð 1Ø2Ø Ø)×-Ñ-¨kÐ;~ÓØ$0×$4Ñ$4Ð5GÈÓ$NØ&2×&6Ñ&6Ð7KÈ[Ó&YñˆKñ ™iØ+5¨,°a¸	°{Ð(C�˜HÑ%ðØŸ™Ð3¸[ÐRT˜ÓU�Ø).¯ª˜5Ÿ:š:°r�ð !*ÐØˆMÚðÜŸ=™=¨Ó2�DØ $§¡Ð-^Ö _˜ØŸ8™8 MÓ2°gÓ=Ø$%˜EØ&(˜GØ'+§|¡|Ð4cÖ'd Ø$'§G¡G¨HÓ$5 Ø&)§g¡g¨kÓ&: Ø%(§W¡W¨[Ó%9 Ù#$¨¯©¬Ü'*¨1£v°¢Ü03°A³¨Ù+.°3·;±;´=Ü69¸#³h¨GÚ#%¨"¯*©*­,¼3¸r»7À]Ó;RÜ47¸³G¡Mð (eð  % qšyØ7<°g¸QÈ'ÐTVÊ,¹wÐ\^Ð>_Ð4`Ð 1Ù!ð# !`ô* *?¸xÓ)HÑ&�˜,Ù¡Ü+Ø!)Ø!(§¡¨T°5·9±9¸TÀ2Ó3FÓ!GØ%Ø%Ø'5Ø%1Ø#-ô ‘H�C˜ð *?Ð&Ø$4Ð!Ø$ˆMØ(ˆOØ%6Ð"Ø&ˆNØ ˆKá9CÉ	˜J˜< q¨¨Ñ4ÐXZˆJØ(ˆOØÐ3Ð4Ð4DÀRÀDÈÐJˆGÙØÐ<¸Z¸LÈÐJÑJ�Ù‘sØÐ?À¸uÀAÀcÀUÈ!ÐLÑL�Ø3°B°4°qÐ9�
ÙØÐ$7¸
°|À1Ð"EÑE�JØÐ 6°s°e¸2Ð>SÐ=TÐTUÐVÑV‘
à3°B°4°qÐ9�
ÙØÐ$7¸
°|À1Ð"EÑE�JØ Ð#8Ð"9¸Ð;Ñ;�
Ø"ˆLØ(ˆOã“sÙ?L˜3˜}°Ñ4Ð5°UÑ;ÐRT�ÜÐ*Ð+<Ð*=¸f¸XÀ_ÐU_×UeÑUeÓUgÐThÐhiÐjÐu{ð  @Qñ  vQÕlqô  W]ô  ^ÙðK  ñN ‘3Ùà�[Ô Ü�(˜<˜.Ð(hÐipÐstÑitÐhuÐuvð  xCð  wDð  DNð  Oô  QWô  XÜ�J‰J�qŽMðo -ñr ™c‰TÑ<V©Ð\c€Fà—‘˜F BÓ'Ø—N‘N 9¨bÓ1ØFÀwÇ{Á{ÐSWÐYc×YgÑYgÐhlÓYmÓGnÐFoÐozÐ{ØÙ(+±˜�u˜A˜c˜U‘^¸$Ø�{‰{˜5Ó!ñ€Lð!Øˆg�k‰k˜$ 
§¡¨tÓ 4Ó5ð!à�&ð!ð 	Ð2ð!ð 	Ð2ð	!ð
 	�Mð!ð 	�oð!ð 	Ð3ð!ð 	�^ð!ð 	�{ð!ð 	ˆsð!ð 	ˆsð!ð 	©±˜˜˜Q˜s˜e‘n¸4ð!ð 	¹˜8 OÐ#4Ñ5Èdð!ð 	�<ð!ð 	�|ð!ð  	˜/ð!!ð" 	œŸ™›×0Ñ0Ó2ð#!€L�Ñð& Ðøô] ò Ø“ðûô4 !ò Úðús=   Î	.\"Î?=\4Ï=B\4Ò\4Ò$\4Ò3#\4Ü"\1Ü0\1Ü4	]Ý ]rÎ   Úinclude_eventsc                 ó´  ‡F— t        «       }t        «        t        j                  |j	                  di «      j	                  d«      ¬«       t        || «      }|st        dt        «       i S t        |«      \  }}}|€||j	                  di «      j	                  dg «      j                  «       }|rHt        «       }|D �	ch c]  }	|	j	                  d«      ’Œ }
}	|D ]  }|d   |
vsŒ|j                  |«       Œ |}|st        dt        «       i S |D �	cg c]  }	|	j	                  d«      t        vsŒ|	‘Œ }}	t        d	t        |«      › d
�t        «       g }dg}d}d}d}d„ ŠFd“d„}t!        |d«      D �]  \  }}	|	j	                  d|	j	                  dd|› �«      «      }t#        d|d›dt        |«      › d|d›�dd¬«       t%        |	|||«      }|j                  |«        ‰F|«      }|dk(  rt#        t        › dt&        › �«       Œ“|dk(  r> ||dd«      } ||dd«      }t#        t(        › d |dd! › d"|dd! › d#t&        › �«       |dz  }ŒÖ|d$k(  rt#        t        › d%t&        › �«       Œôt#        t        › d&|j	                  d'd(«      › d)t&        › �«       �Œ! t!        |«      D ��cg c]  \  }} ‰F|«      d$k(  sŒ|‘Œ }}}|r§t        d*t        |«      › d+�t        «       t+        j,                  d,«       |D ]p  }||   }|j	                  dd-«      }t        d.|› d/�t        «       t%        ||||d0¬1«      } ‰F|«      dk(  sŒJ|||<   |dz  }t        d2|› d3 ||d4«      › �t(        «       Œr t!        |«      D ��cg c]5  \  }}|j	                  d'«      rd5t/        |j	                  d'd«      «      v r|‘Œ7 }}}|�rt0        j2                  j5                  t0        j2                  j7                  t8        «      d6«      }g } t0        j2                  j;                  |«      rL	 t=        |d7d8¬9«      5 }!|!D �"cg c])  }"d:|"v sŒ|"j?                  d;«      rŒ|"jA                  «       ‘Œ+ } }"ddd«       | st        d<t        |«      › d=�t        «       �n@t        d>t        |«      › d?�t        «       i }#d}$|D �]  }||   }|j	                  dd-«      }d@}%tE        dAt        | «      «      }&tG        |&«      D �]Á  }| |$t        | «      z     }'|$dz  }$|'jI                  d:d«      \  }(})|(|#v r	|#|(   \  }*}+n‡t        dB|› dC|(› dD�t        «       t        jK                  «       },tM        |(|)|,«      \  }-}*|-dEk7  s|*st        dF|(› dG�t        «       di f|#|(<   Œšt        |*«      \  }}}+|*|+f|#|(<   t        dH|(› �t(        «       |*sŒÆt        dI|› dJ|(› dD�t        «       t%        |||*|+dA¬1«      } ‰F|«      }|dk(  r.|||<   |dz  }t        dK|› dL|(› dM ||d4«      › �t(        «       d}% n�|d$k(  r |||<   t        dN|› dO|(› dP�t        «       d}% nx|j	                  d'«      r6d5t/        |j	                  d'd«      «      v rt        dQ|› dR|(› dS�tN        «       �Œ”|||<   t        dT|› dU|(› dM|j	                  d'd(«      › �t        «        n |%r�Œt        dN|› dV�t        «       �Œ tQ        dW„ |D «       «      }.|.rt        d<|.› dX�t        «       dg}dg}/|j	                  di «      j	                  dYi «      j	                  dZd«      }0tS        ||«      D �]Ö  \  }	} ‰F|«      }|d[v sŒ ||dd«      } ||dd«      } ||d\d«      }1|j	                  d]d«      }2|j	                  d^«      xs |	j	                  d^d«      }3|3rd_|3› d`�nd}4tU        |	j	                  da«      «      }5|5rdbndc}6|s|dk(  r ||dd«      } ||de«      }tW         ||dfi «      tX        «      r ||dfi «      j	                  dgd«      nd}7tW         ||dfi «      tX        «      r ||dfi «      j	                  dhdi«      ndi}8|8r
|7rdj|8› dk|7› �nd}9 ||dd«      }:|j                  dl|:› dm|j	                  d«      › d`|4› dn|6› do|j	                  d«      › �
«       |j                  dp«       |j                  dq«       |j                  dr«       |j                  ds«       |j                  dt«       |r*|r(|j                  du«       |j                  dv|› d:|› �«       |0r<|j                  dw|0› dx|9› �«       |j                  dy|0› �«       |j                  dz«       |j                  |1«       |/j                  dl|:› dm|j	                  d«      › d`|4› dn|6› do|j	                  d«      › �
«       |/j                  dp«       |/j                  dq«       |r*|r(|/j                  d{«       |/j                  dv|› d:|› �«       |/j                  |2«       �ŒÙ g };g }<|D �]!  } ‰F|«      }|d[v sŒ|j	                  d|i «      }=|;j                  |j	                  d^d«      |j	                  d}d«      |j	                  d]d«      |j	                  dd«      |j	                  d~«      |j	                  da«      dœ«       |j	                  d^d«      |j	                  d}d«      |j	                  d]d«      |j	                  dd«      |j	                  d~«      |j	                  da«      dœ}>|>j[                  |=«       |<j                  |>«       �Œ$ |D �cg c]  } ‰F|«      d€vsŒ|‘Œ }?}tQ        ˆFfd�„|D «       «      }@|@rt        d‚@› dƒ�t        «       t]        j^                  «       ja                  «       }A|At        |«      ||;d„œ}Bt=        tb        d…d8¬9«      5 }!te        jf                  B|!d,d@¬†«       ddd«       At        |«      |t        jK                  «       |<|?d‡œ}Ct=        th        d…d8¬9«      5 }!te        jf                  C|!d,d@¬†«       ddd«       t=        tj        d…d8¬9«      5 }!|!jm                  dˆj5                  |«      dˆz   «       ddd«       t=        tn        d…d8¬9«      5 }!|!jm                  dˆj5                  |/«      dˆz   «       ddd«       |rPt0        j2                  j5                  tp        d‰«      }Dt=        |Dd…d8¬9«      5 }!|!jm                  dŠ|› d‹�«       ddd«       |rPt0        j2                  j5                  tp        dŒ«      }Et=        |Ed…d8¬9«      5 }!|!jm                  dŠ|› d‹�«       ddd«       t        d�tr        › tb        › t&        › dŽ|› dt        |«      › d��	t(        «       t        d�tr        › tj        › t&        › �t(        «       |r#t        d‘t        «       t        d’|› �t        «       BS c c}	w c c}	w c c}}w c c}}w c c}"w # 1 sw Y   �	Œ–xY w# tB        $ r Y �	Œ¥w xY wc c}w # 1 sw Y   �Œ<xY w# 1 sw Y   �ŒñxY w# 1 sw Y   �ŒÀxY w# 1 sw Y   �Œ�xY w# 1 sw Y   �ŒJxY w# 1 sw Y   �ŒxY w)”zUEstrae tutti i canali/eventi configurati, risolve le chiavi DRM e aggiorna JSON & M3UrÑ   rË   ©r^   zNERRORE CRITICO: Nessun token DAZN disponibile! Configuralo in dazn_config.jsonNrÎ   rÀ   z"Nessun canale o evento da estrarreu   ðŸš€ Avvio estrazione di z canali/eventi DAZN...z#EXTM3U x-tvg-url=""r   c                 ój   — | j                  d«      xs! | j                  di «      j                  d«      S )Nr=  r  ©rz   )r�   s    r$   Ú_get_statusz)extract_and_save_all.<locals>._get_status   s+   € Ø�u‰u�X‹ÒF !§%¡%¨°RÓ"8×"<Ñ"<¸XÓ"FÐFrE   r¬   c                 óF   — | j                  di «      j                  ||«      S )Nr  rQ  )r�   rf  Údefaults      r$   Ú_get_internalz+extract_and_save_all.<locals>._get_internal"  s    € Ø�u‰u�[ "Ó%×)Ñ)¨#¨wÓ7Ð7rE   rj   rÁ   zCanale z  [Ú2drÜ  rM   z<35Ú T)ÚendrN   rÞ  u%   â›” Eligibility not allowed (escluso)r’   r»  rf  u   âœ… OK (é   z...:z...)r
  u2   âš ï¸�  Solo Manifest (in coda per sweep di retry)u   â�Œ Errore (rß  r(  r*   u   ðŸ”„ Rilevati z= canali con 'Solo Manifest'. Avvio sweep di retry dedicato...r>   ÚEventou1   ðŸ”� Secondo tentativo di estrazione chiavi per 'rÚ  rˆ  )r×  u(   âœ… Chiave recuperata con successo per 'z': r  ÚConcurrencyr&  r�   r   rÔ   rg   re   u   âš ï¸� zO canali bloccati per Concurrency ma nessun account alternativo in accounts.txt.u   ðŸ”„ Sweep Concurrency: zB canali bloccati. Provo con account alternativi da accounts.txt...FrÐ   u   ðŸ”‘ [z ] Login con account alternativo r(   r  u   â�Œ Login fallito per z, provo il prossimo account...u   âœ… Login riuscito con rÛ  z] Retry con account u   âœ… [z] Recuperato con successo via r³  ré  z] Solo Manifest via z (senza chiavi DRM)u   â�³ [z] Ancora Concurrency con z, provo un altro account...u   â�Œ [z] Errore con z2] Non recuperabile con nessun account alternativo.c              3   ó€   K  — | ]6  }|j                  d «      sŒdt        |j                  d d«      «      v sŒ3d–— Œ8 y­w)rß  r[  r¬   rj   N)rz   r{   )rá  r�   s     r$   rä  z'extract_and_save_all.<locals>.<genexpr>›  s8   è ø€ Ðn¡w !°!·%±%¸µ.À]ÔVYÐZ[×Z_ÑZ_Ð`gÐikÓZlÓVmÒEmœA¡wùs   ‚>™>·>zL canali ancora bloccati per Concurrency dopo aver provato tutti gli account.rÌ   rº   )r’   r
  r  r  r  z tvg-logo="r  r  zDAZN Eventi LivezDAZN Canalir  r  r  r   rþ  rÿ  z&Cookie=ré   z#EXTINF:-1 tvg-id="z" tvg-name="z group-title="z",z*#KODIPROP:inputstream=inputstream.adaptivez0#KODIPROP:inputstream.adaptive.manifest_type=mpdz=#KODIPROP:inputstream.adaptive.manifest_update_parameter=fullz+#KODIPROP:inputstream.adaptive.live_delay=8z4#KODIPROP:inputstream.adaptive.live_delay_type=fixedz>#KODIPROP:inputstream.adaptive.license_type=com.widevine.alphaz+#KODIPROP:inputstream.adaptive.license_key=z9#KODIPROP:inputstream.adaptive.stream_headers=User-Agent=z&Referer=https://www.dazn.com/z#EXTVLCOPT:http-user-agent=z.#EXTVLCOPT:http-referrer=https://www.dazn.com/z4#KODIPROP:inputstream.adaptive.license_type=clearkeyr  r  r  r  )r’   r
  rÞ  c              3   ó:   •K  — | ]  } ‰|«      d k(  sŒd–— Œ y­w)rÞ  rj   NrD   )rá  r�   rR  s     €r$   rä  z'extract_and_save_all.<locals>.<genexpr>ñ  s   øè ø€ ÐZ¡w !±+¸a³.ÐDYÓ2YœA¡wùs   ƒ”u   â›” zD eventi esclusi per Eligibility not allowed (non saranno ritentati).)r/  Útotal_channelsÚ
keys_foundrÎ   rÓ   rÕ   )r/  r^  r_  Ú
proxy_usedrÎ   Úfailed_channelsrU   zplay_ffplay.batz
@echo off
z
pause
zplay_mpv.batu   ðŸ’¾ Salvato con successo in: ú (z canali attivi)u!   ðŸ“‹ Playlist M3U aggiornata in: u6   ðŸŽ¬ Launcher generati: play_ffplay.bat e play_mpv.batu   â–¶ï¸�  Comando FFplay:
)r¬   ):rÝ   rå   rÚ   r`   rz   rD  r+   r:   rø   ÚcopyÚfetch_live_events_from_epgr„   r1   r   rn   r2   ró  rO   rL  rR   r,   r–   r3  r{   r-   r.   r  r1  r2  r/   rƒ   rl   rk   r"   Úminr   rm   rˆ   r"  r  ÚsumÚzipr©   rx   ry   rß   r   rP   r4  ÚOUTPUT_JSON_FILEr™   rÙ   ÚPROXY_DATA_FILEÚPLAYLIST_FILEÚwriteÚPLAYLIST_PROXY_FILEr7   ÚBOLD)Gr$  rÎ   rM  r#  rÃ   r8  r¸  Úbase_channelsÚlive_eventsÚchÚbase_idsÚevr›   Ú	m3u_linesÚfoundÚfirst_ffplay_cmdÚfirst_mpv_cmdrU  ÚirÁ   Úresr?  r»  rf  rö  r�   Úmanifest_only_indicesÚ	target_chÚch_titleÚ	retry_resÚconcurrency_indicesr9  Úalt_accountsr…   r:  Úalt_token_cacheÚaccount_idxÚresolvedÚattempts_per_channelÚ	acct_linerÄ   rÅ   Ú	alt_tokenÚalt_payloadrù   r=  Ústill_concurrencyÚproxy_m3u_linesr8  Úmanifestr  r  Ú	logo_attrÚis_live_eventÚ
group_namer;  r:  rH  Úch_idÚclean_channelsÚproxy_channelsÚinternalÚproxy_entryra  Úeligibility_countÚnow_tsÚoutput_dataÚproxy_outputÚ
ffplay_batÚmpv_batrR  sG                                                                         @r$   Úextract_and_save_allr—  ø  s:  ø€ ä‹]€FÜ„LÜ×Ñ F§J¡J¨v°rÓ$:×$>Ñ$>¸wÓ$GÐÔHä�f˜iÓ(€EÙÜÐ\Ô^aÔbØˆ	ä-¨eÓ4Ñ€A€qˆ.ð ÐØŸ
™
 6¨2Ó.×2Ñ2°:¸rÓB×GÑGÓIˆÙÜ4Ó6ˆKÙ/<Ó=©}¨˜Ÿ™˜t�¨}ˆHÐ=Û!�Ø�d‘8 8Ò+Ø!×(Ñ(¨Õ,ð "ð !ˆáÜÐ0´&Ô9Øˆ	ñ &ÓV™X�r¨¯©°«Ô=UÒ)U’˜X€HÐVäÐ
#¤C¨£M ?Ð2HÐIÌ4ÔPØ€GØ)Ð*€IØ€EàÐØ€MòGó8ô ˜8 Q×'‰ˆˆ2Ø�v‰v�f˜bŸf™f T¨W°Q°C¨=Ó9Ó:ˆÜ��A�b�6˜œ3˜x›=˜/¨¨D°¨:Ð6¸CÀtÕLä˜b &¨%°Ó@ˆØ�‰�sÔá˜ÓˆØÐ&Ò&Ü”V�HÐAÄ%ÀÐIÕJØ�4ŠZÙ  U¨BÓ/ˆCÙ  U¨BÓ/ˆCÜ”U�G˜8 C¨¨ G 9¨D°°R°a°°	¸¼e¸WÐEÔFØ�Q‰J‰EØ�?Ò"Ü”V�HÐNÌuÈgÐVÕWä”S�E˜ c§g¡g¨g°uÓ&=Ð%>¸aÄ¸wÐGÖHð% (ô* 09¸Ô/AÔgÑ/A¡V S¨!Á[ÐQRÃ^ÐWfÓEfšSÐ/AÐÑgÙÜˆnœSÐ!6Ó7Ð8Ð8uÐvÔx|Ô}Ü�
‰
�1ŒÛ(ˆCØ  ™ˆIØ —}‘} V¨XÓ6ˆHÜÐCÀHÀ:ÈTÐRÔTZÔ[Ü'¨	°6¸5À.Ð^_Ô`ˆIÙ˜9Ó%¨Ó-Ø(�˜‘Ø˜‘
�ÜÐ>¸x¸jÈÉMÐZcÐeqÓLrÐKsÐtÔv{Õ|ð )ô $ GÔ,ôÙ,‘��QØ�5‰5�Œ>˜m¬s°1·5±5¸À"Ó3EÓ/FÑFò 	Ð,ð ñ ò äŸ™Ÿ™¤R§W¡W§_¡_´XÓ%>ÀÓOˆØˆÜ�7‰7�>‰>˜-Ô(ðÜ˜-¨°wÕ?À1Ù78Ó#_±q°!¸CÀ1ºHÈQÏ\É\ÐZ]ÕM^ A§G¡G¥I°q�LÐ#_÷ @ñ
 Ü�'œ#Ð1Ó2Ð3ð  4Cð  Dô  FLö  MäÐ*¬3Ð/BÓ+CÐ*Dð  EGð  Hô  JNô  Oð !ˆOØˆKä*�Ø$ S™M�	Ø$Ÿ=™=¨°Ó:�ð !�Ü'*¨1¬c°,Ó.?Ó'@Ð$äÐ3×4�AØ ,¨[¼3¸|Ó;LÑ-LÑ M�IØ 1Ñ$�KØ&/§o¡o°c¸1Ó&=‘O�E˜8ð  Ñ/Ø1@ÀÑ1GÑ.˜	¡;ä˜f X JÐ.NÈuÈgÐUXÐYÔ[_Ô`Ü%2×%;Ñ%;Ó%=˜
Ü,6°u¸hÈ
Ó,SÑ)˜ 	Ø! YÒ.±iÜÐ"8¸¸Ð?]Ð ^Ô`cÔdØ6:¸B°Z˜O¨EÑ2Ø$Ü,>¸yÓ,IÑ)˜˜1˜kØ2;¸[Ð1I˜¨Ñ.ÜÐ5°e°WÐ=¼uÔEá$Ø ô ˜&  
Ð*>¸u¸gÀSÐIÌ6ÔRÜ /°	¸6À9ÈkÐghÔ i�IÙ$ YÓ/�Bà˜T’zØ'0˜ ™Ø ™
˜Ü˜e H :Ð-KÈEÈ7ÐRTÑUbÐclÐnzÓU{ÐT|Ð}ô  @Eô  FØ#'˜ÙØ˜Ò.Ø'0˜ ™Ü˜h x jÐ0DÀUÀGÐK^Ð_ÔagÔhØ#'˜ÙØ"Ÿ™ wÔ/°MÄSÈÏÉÐW^Ð`bÓIcÓEdÑ4dÜ˜e H :Ð-FÀuÀgÐMhÐiÔknÖoà'0˜ ™Ü˜e H :¨]¸5¸'ÀÀIÇMÁMÐRYÐ[`ÓDaÐCbÐcÔehÔiÙðY 5ó\  Ü˜( 8 *Ð,^Ð_ÔagÖhðo +ôt Ñn¡wÓnÓnÐÙÜˆgÐ'Ð(Ð(tÐuÔw}Ô~ð *Ð*€IØ/Ð0€OØ	�‰�F˜BÓ	×	#Ñ	# I¨rÓ	2×	6Ñ	6°|ÀRÓ	H€Bä�x ×)‰ˆˆCÙ˜ÓˆØÐ(Ò(Ù  U¨BÓ/ˆCÙ  U¨BÓ/ˆCÙ$ S¨.¸"Ó=ˆHØ ŸW™WÐ%5°rÓ:ˆNØ—7‘7˜6“?Ò8 b§f¡f¨V°RÓ&8ˆDÙ15˜+ d V¨1Ñ-¸2ˆIÜ  §¡¨£Ó/ˆMÙ/<Ñ+À-ˆJá#¨¨dª
Ù#0°Ð6FÓ#GÐ Ù -¨c°=Ó A�ô Q[Ñ[hÐilÐnyÐ{}Ó[~ô  AEô  QF™ c¨;¸Ó;×?Ñ?ÀÈÔLð  LNˆIÜZdÑerÐsvð  yDð  FHó  fIô  KOô  [P™ s¨K¸Ó<×@Ñ@ÀÈÔVð  VbˆJÙAKÑPY˜8 J <¨q°°Ñ<Ð`bˆJÙ! # t¨RÓ0ˆEà×ÑÐ2°5°'¸ÀcÇgÁgÈfÃoÐEVÐVWÐXaÐWbÐbpÐq{Ðp|Ð|~ð  @C÷  @Gñ  @Gð  HNó  @Oð  Pð  Qô  RØ×ÑÐIÔJØ×ÑÐOÔPØ×ÑÐ\Ô]Ø×ÑÐJÔKØ×ÑÐSÔTÙ‘sØ× Ñ Ð!aÔbØ× Ñ Ð#NÈsÈeÐSTÐUXÐTYÐ!ZÔ[ÙØ× Ñ Ð#\Ð]_Ð\`Ð`~ð  @Jð  Kð  "Lô  MØ× Ñ Ð#>¸r¸dÐ!CÔDØ× Ñ Ð!QÔRØ×Ñ˜XÔ&ð ×"Ñ"Ð%8¸¸¸|ÈCÏGÉGÐTZËOÐK\Ð\]Ð^gÐ]hÐhvð  xBð  wCð  CEð  FI÷  FMñ  FMð  NTó  FUð  EVð  $Wô  XØ×"Ñ"Ð#OÔPØ×"Ñ"Ð#UÔVÙ‘sØ×&Ñ&Ð']Ô^Ø×&Ñ&Ð)TÐUXÐTYÐYZÐ[^ÐZ_Ð'`ÔaØ×"Ñ" >Ö2ðY *ð^ €NØ€NÜˆÙ˜‹^ˆØÐ(Ò(Ø—u‘u˜[¨"Ó-ˆHà×!Ñ!ØŸ™˜f bÓ)ØŸE™E *¨bÓ1Ø"#§%¡%Ð(8¸"Ó"=ØŸ™˜f bÓ)ØŸU™U ;Ó/Ø—u‘u˜U“|ñ#ô ð Ÿ™˜f bÓ)ØŸE™E *¨bÓ1Ø"#§%¡%Ð(8¸"Ó"=ØŸ™˜f bÓ)ØŸU™U ;Ó/Ø—u‘u˜U“|ñˆKð ×Ñ˜xÔ(Ø×!Ñ! +Ö.ð/ ñ4 #*Ór¡'˜Q©[¸«^ÐCqÒ-q’q '€OÐräÓZ¡wÓZÓZÐÙÜˆdÐ$Ð%Ð%iÐjÔlrÔsä�\‰\‹^×%Ñ%Ó'€Fð Ü˜h›-ØØ"ñ	€Kô 
Ô ¨gÕ	6¸!Ü�	‰	�+˜q¨¸Õ?÷ 
7ð
 Ü˜h›-ØÜ#×,Ñ,Ó.Ø"Ø*ñ€Lô 
Œo˜s¨WÕ	5¸Ü�	‰	�, ¨!¸%Õ@÷ 
6ô 
Œm˜S¨7Õ	3°qØ	�‰�—	‘	˜)Ó$ tÑ+Ô,÷ 
4ô 
Ô! 3°Õ	9¸QØ	�‰�—	‘	˜/Ó*¨TÑ1Ô2÷ 
:ñ Ü—W‘W—\‘\¤*Ð.?Ó@ˆ
Ü�*˜c¨GÕ4¸Ø�G‰G�kÐ"2Ð!3°9Ð=Ô>÷ 5ñ Ü—'‘'—,‘,œz¨>Ó:ˆÜ�'˜3¨Õ1°QØ�G‰G�k - °	Ð:Ô;÷ 2ô Ð
(¬¨Ô/?Ð.@ÄÀÀrÈ%ÈÐPQÔRUÐV^ÓR_ÐQ`Ð`oÐpÔrwÔxÜÐ
+¬D¨6´-°ÄÀÐHÌ%ÔPÙÜÐDÄtÔLÜÐ'Ð(8Ð'9Ð:¼FÔCØÐùòw >ùò WùóJ hùóùò $`÷ @Ñ?ûäò Úðüòt s÷ 
7Ñ	6ú÷ 
6Ñ	5ú÷ 
4Ñ	3ú÷ 
:Ñ	9ú÷ 5Ñ4ú÷
 2Ñ1úsÀ   Â<wÄwÄ-wÊwÊ2wÍ0:wÐw7 Ð!w*Ð&	w%Ð0w%Ñw%Ñw*Ñw7 ì4xíxî8xðxñ$x&ò$x3ó"y ô4y÷%w*÷*w4÷/w7 ÷7	xøxøxøx#ø&x0ø3x=ù y
ùyc            
      ó”  — ddl m}  d}t        j                  | j                  «      j	                  d¬«      }|t        d¬«      z
  j                  d«      }|t        d¬«      z   j                  d«      }	 t        j                  «       j                  «       j                  «       j                  «       }t        t        |d	z  «      «      }ddd|d||dœ}g }t        r%t        j                  «       t        z
  dk  rt        }	n�t         j#                  «       }
	 t%        j&                  |||
d¬«      }|j(                  st+        d|j,                  › �t.        «       g S |j1                  «       }	|	at        j                  «       at+        dt2        «       |	j'                  dg «      }d}|D �]ª  }|j'                  d«      dk(  sŒ|j'                  dd«      }|j'                  dd«      }|sŒ@	 t        j4                  |j	                  dd«      j7                  d«      d   d«      }|r9t        j4                  |j	                  dd«      j7                  d«      d   d«      }n|t        d¬«      z   }|j8                  d k\  rŒÓ|t        d¬!«      z
  |cxk  r|t        d¬!«      z   k  r³n n°|j'                  d"«      }|s�Œ|j'                  d#d$|› �«      }t;        |j'                  d%«      t<        «      r!|j'                  d%i «      j'                  d&«      nd}|rd'|› �nd}|dz  }|j?                  |||d|jA                  «       |jA                  «       d(œd)œ«       �Œ­ t+        d*tC        |«      › d+|› d,�tD        «       |S # t        $ r d
}Y �Œºw xY w# t        $ r}t+        d|› �t.        «       g cY d}~S d}~ww xY w# t        $ r}Y d}~�Œd}~ww xY w)-zbScarica l'EPG ufficiale DAZN e restituisce una lista di canali degli eventi attualmente in direttar   )Útimezonez8https://epg.discovery.indazn.com/eu/v5/epgWithDatesRangeN)Útzinforj   )Údaysz%Y-%m-%drô   Ú120r¯   rŠ  rÑ   )r*  ÚlanguageCodeÚ
openBrowseÚtimeZoneOffsetÚbrandÚ	startDateÚendDater  r  )r¤  r]   r?   zErrore download EPG DAZN: HTTP uH   ðŸ“¥ EPG scaricato con successo dal server DAZN (aggiornato ogni 5 min).zErrore eccezione EPG: ÚTilesÚTypeÚLiveÚStartr¬   ÚEndÚZr'   z%Y-%m-%dT%H:%M:%SrÐ   )Úhoursi4  )Úminutesr–  rë  zEvent ÚImager  z6https://image.discovery.indazn.com/eu/v2/eu/image/?id=)ÚstartrX  )rÀ   rÁ   r  rÂ   r  u   ðŸ”Ž EPG Check: z" programmi in palinsesto. Trovati z eventi speciali LIVE attivi.)#r   r™  rP   Úutcr   r   rQ   Ú
astimezoneÚ	utcoffsetÚtotal_secondsr{   r¨   r"   Ú_epg_cache_datar–   Ú_epg_cache_timerÚ   rˆ   r   rz   r˜   r+   rš   r:   r™   r,   Ústrptimerm   Úyearrx   ry   r„   r4  rn   r  )r™  r  Únow_utcÚstart_date_strÚend_date_strÚ
offset_secÚ	tz_offsetr¤  Úlive_channelsr¼  rù   r�   r;   ÚtilesÚ
live_countÚtileÚ	start_strÚend_strÚstart_dtÚend_dtrž  ÚtitleÚimg_idÚlogo_urlÚparse_es                            r$   rd  rd  +  s‹  € õ "Ø
D€CÜ�l‰l˜8Ÿ<™<Ó(×0Ñ0¸Ð0Ó=€Gð ¤	¨qÔ 1Ñ1×;Ñ;¸JÓG€NØœi¨QÔ/Ñ/×9Ñ9¸*ÓE€LðÜ—\‘\“^×.Ñ.Ó0×:Ñ:Ó<×JÑJÓLˆ
Üœ˜J¨"Ñ,Ó-Ó.ˆ	ð
 ØØØ#ØØ#Øñ€Fð €Mõ œDŸI™I›K¬/Ñ9¸SÒ@Ü‰ä"×+Ñ+Ó-ˆ
ð	Ü—‘˜S¨¸ÈRÔPˆAØ—4’4ÜÐ5°a·m±m°_ÐEÄsÔKØ�	Ø—6‘6“8ˆDØ"ˆOÜ"Ÿi™i›kˆOÜÐZÔ]bÔcð
 �H‰H�W˜bÓ!€EØ€JäˆØ�8‰8�FÓ˜vÓ%ØŸ™ ¨"Ó-ˆIØ—h‘h˜u bÓ)ˆGÚð!Ü'×0Ñ0°×1BÑ1BÀ3ÈÓ1K×1QÑ1QÐRUÓ1VÐWXÑ1YÐ[nÓo�HÙÜ!)×!2Ñ!2°7·?±?À3ÈÓ3K×3QÑ3QÐRUÓ3VÐWXÑ3YÐ[nÓ!o™à!)¬I¸AÔ,>Ñ!>˜ð —{‘{ dÒ*Ø ð !¤9°RÔ#8Ñ8¸WÔhÈÔR[ÐdfÔRgÑIgÕhØ#'§8¡8¨IÓ#6˜Ù'Ù$à $§¡¨°F¸8¸*Ð2EÓ F˜ÜDNÈtÏxÉxÐX_ÓO`ÔbfÔDg §¡¨'°2Ó!6×!:Ñ!:¸4Ô!@Ðmq˜ÙhnÐ%[Ð\bÐ[cÑ#dÐtv˜à" a™˜
Ø%×,Ñ,Ø"*Ø$)Ø$,Ø,.à)1×);Ñ);Ó)=Ø'-×'7Ñ'7Ó'9ñ$ñ	.ô 	ùð7 ôP Ð
œ3˜u›:˜,Ð&HÈÈÐTqÐrÔtwÔxØÐøô[ ò Ø‹	ðûô: ò 	ÜÐ(¨¨Ð,¬cÔ2Ø�Iûð	ûôX !ò ÝûðúsX   Á5AM6 ÄAN Å6N Ç'BN3É9;N3Ê6BN3Í6NÎNÎ	N0ÎN+Î%N0Î+N0Î3	OÏOÚinterval_hoursc                 ó~  — t        «        t        «       }t        j                  |j	                  di «      j	                  d«      ¬«       |j	                  di «      j	                  d| «      }|dz  }d}|j	                  di «      j	                  dg «      j                  «       }t        «       }d	}	d
}
t        d¬«       	 	 t        j                  «       }|rt        «       }|D �ch c]  }|d   ’Œ	 }}ng }t        «       }||k7  rÛt        |«      t        |«      kD  r*t        dt        |«      t        |«      z
  › d�t        «       n@t        |«      t        |«      k  r)t        dt        |«      t        |«      z
  › d�t        «       |j                  «       }|D �ch c]  }|j	                  d«      ’Œ }}|D ]  }|d   |vsŒ|j                  |«       Œ ||d   d<   |}d
}
||	z
  |k\  r|	dkD  rt        d|› d�t        «       d
}
|
r„t!        dt"        › d› t$        › �«       t        dt        «       t!        t"        › d› t$        › �«       |d   d   }t'        ||d¬«      }t        j                  «       }	d}
t        d|› d�t(        «       nt        d|› d�t        «       t+        d«      st        d¬«       t        j,                  |«       �Œc c}w c c}w # t.        $ r' t!        dt0        › dt$        › d�«       t3        «        Y y"t4        $ r2}t        d |› �t6        «       t        j,                  d!«       Y d"}~Œpd"}~ww xY w)#zNEsegue l'estrazione all'avvio e ripete periodicamente monitorando EPG e canalirÑ   rË   rO  rÒ   rÏ   i  rô   rÎ   g        Téû   )r   rÀ   u   ðŸš¨ Trovati z NUOVI EVENTI LIVE nell'EPG!u   â„¹ï¸�  z eventi live sono terminati.r   u   â�° Intervallo programmato (z(h) trascorso. Rinnovo generale canali...rU   rT   u;   ðŸ”„ CICLO DI ESTRAZIONE CHIAVI & MANIFEST (Live + Lineari)F)r$  rÎ   rM  uK   âœ¨ Estrazione completata! Monitoraggio EPG attivo (prossimo controllo tra zs).uJ   ðŸ’¤ Nessun nuovo evento live nell'EPG. In attesa (prossimo controllo tra zs)...z

u   ðŸ›‘ Bot arrestato dall'utente.zErrore durante il ciclo: r”   N)rX   rÝ   rÚ   r`   rz   rc  Úsetr<   r–   rd  rn   r+   ÚMAGENTAr  r„   r2   rO   rV   rR   r—  r,   r%   r3  ÚKeyboardInterruptr1   rF   r"   r:   )rÆ  r$  rM  r#  Úrefresh_hoursÚrefresh_secondsÚcheck_intervalrn  Úlast_known_live_idsÚlast_full_extraction_timeÚforce_extractionrP   ro  rr  Úcurrent_live_idsÚnew_channel_listrp  rq  Útarget_channelsr“  r;   s                        r$   Úrun_auto_looprÕ  Š  sA  € ä„NÜ‹]€FÜ×Ñ F§J¡J¨v°rÓ$:×$>Ñ$>¸wÓ$GÐÔHð —J‘J˜v rÓ*×.Ñ.Ð/GÈÓX€MØ# dÑ*€Oð €Nð —J‘J˜v rÓ*×.Ñ.¨z¸2Ó>×CÑCÓE€MÜ›%ÐØ #ÐØÐô ˜dÕ#à
ðC	Ü—)‘)“+ˆCñ Ü8Ó:�Ù7BÓ#C±{° B t£H°{Ð Ñ#Cà �Ü#&£5Ð ð  Ð#6Ò6ÜÐ'Ó(¬3Ð/BÓ+CÒCÜ˜-¬Ð,<Ó(=ÄÐDWÓ@XÑ(XÐ'YÐYuÐvÔxõ  AÜÐ)Ó*¬SÐ1DÓ-EÒEÜ˜(¤3Ð':Ó#;¼cÐBRÓ>SÑ#SÐ"TÐTpÐqÔsvÔwð $1×#5Ñ#5Ó#7Ð Ù3@ÓA±=¨R˜BŸF™F 4�L°=�ÐAÛ%�BØ˜$‘x xÒ/Ø(×/Ñ/°Õ3ð &ð .>��v‘˜zÑ*Ø&6Ð#Ø#'Ð ð Ð/Ñ/°OÒCØ,¨qÒ0ÜÐ6°}°oÐEmÐnÔptÔuØ#'Ð ñ  Ü˜œ4˜&  ¬U¨GÐ4Ô5ÜÐQÔSWÔXÜœ˜˜z˜l¬5¨'Ð2Ô3à"(¨¡.°Ñ"<�Ü2¸YÐQ`ÐqvÔw�Ü,0¯I©I«KÐ)Ø#(Ð ÜÐaÐbpÐaqÐqtÐuÔw|Õ}äÐ`ÐaoÐ`pÐpuÐvÔx{Ô|ô   Ô%Ü$¨$Õ/ô �J‰J�~Ô&ñy ùò $Dùò BøôR !ò 	Ü�Dœ˜Ð ?Ä¸wÀbÐIÔJÜŒLÙÜò 	ÜÐ+¨A¨3Ð/´Ô5Ü�J‰J�r�N‰Nûð	úsD   Â?$K Ã#K	Ã/B)K ÆKÆ0K Æ?DK Ë	
K Ë-L<ÌL<Ì
(L7Ì7L<c                  óì  — t        j                  d¬«      } | j                  ddd¬«       | j                  ddd¬«       | j                  d	t        d d
¬«       | j                  dt        d d¬«       | j                  dt        d d¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddd¬«       | j	                  «       }|j
                  rMt        j                  j                  t        «      r)t        j                  t        «       t        dt        «       y |j                  r±t        «       }t        j!                  |j#                  di «      j#                  d«      ¬«       t        dt        j%                  «       › d�t&        «       t        j)                  «       }|D ]2  \  }}}}|rt        nt*        }t        d|› d|› |› t,        › d|› d�	«       Œ4 y |j.                  s|j0                  rŸt3        «        t        «       }t5        ||j6                  «      }	t9        |	«      \  }
}
}|j.                  xs d d!|j.                  xs d"› �|j0                  xs d#d$œ}t;        |||	|«      }t=        d%t?        j@                  |d&d'¬(«      z   «       y |jB                   }|jD                  r"t3        «        tG        |j6                  |¬)«       y tI        |j6                  |¬)«       y )*Nz*DAZN - DRM Widevine Stream & Key Extractor)Údescriptionz--onceÚ
store_truezEsegui una sola volta ed esci)ÚactionÚhelpz--loopz2Esegui in loop continuo con intervallo programmatoz--tokenz(Specifica o aggiorna il JWT Bearer Token)rÉ  rT  rÚ  z--assetz!Estrai solo uno specifico AssetIdz--urlz-Usa uno specifico URL Playback personalizzatoz--test-proxyz'Testa tutti i proxy configurati ed esciz--clear-cachez.Cancella la cache delle chiavi pssh_cache.jsonz--no-eventsz8Non includere eventi live dall'EPG (solo canali statici)z-Cache pssh_cache.json eliminata con successo!rÑ   rË   rO  zTest di z proxy in corso...z  z -> rb  zms)Úcustom_assetzAsset ÚCustomr¬   r¿   rU   r>   FrÕ   )r$  rM  )%ÚargparseÚArgumentParserÚadd_argumentr{   Ú
parse_argsÚclear_cacher-   r.   r/   rã   Úremover+   r,   Ú
test_proxyrÝ   rÚ   r`   rz   r�   r2   r¡   r:   rR   r4  r  rX   rD  rÃ   rø   rL  rO   r™   ÚdumpsÚ	no_eventsÚoncer—  rÕ  )ÚparserÚargsrÜ   r›   r�   r˜   Úip_msgr    ÚcolrÃ   r8  r¸  rz  rx  rM  s                  r$   Úmainrë  ç  s…  € Ü×$Ñ$Ð1]Ô^€FØ
×Ñ˜¨Ð<[ÐÔ\Ø
×Ñ˜¨Ð<pÐÔqØ
×Ñ˜	¬°TÐ@jÐÔkØ
×Ñ˜	¬°TÐ@cÐÔdØ
×Ñ˜¤c°4Ð>mÐÔnØ
×Ñ˜¨|ÐBkÐÔlØ
×Ñ˜°ÐCsÐÔtØ
×Ñ˜¨lÐA{ÐÔ|Ø×ÑÓ€Dà×ÒÜ�7‰7�>‰>œ*Ô%Ü�I‰I”jÔ!ÜÐ?ÄÔGØà‡‚Ü‹mˆÜ×Ñ¨¯©°¸Ó(;×(?Ñ(?ÀÓ(HÐÔIÜˆh”}×*Ñ*Ó,Ð-Ð-?Ð@Ä$ÔGÜ×(Ñ(Ó*ˆÛ")ÑˆAˆr�6˜3Ù•%¤3ˆCÜ�"�Q�C�t˜C˜5  ¬¨¨r°#°°cÐ:Õ;ð #*ð 	à‡z‚z�T—X’XÜŒÜ‹mˆÜ˜#˜tŸz™zÓ*ˆÜ1°%Ó8Ñˆˆ1ˆnà—*‘*Ò. Ø˜TŸZ™ZÒ3¨8Ð4Ð5Ø ŸH™HšN¨ñ
ˆ	ô
 ˜i¨¨e°^ÓDˆÜˆd”T—Z‘Z ¨A¸EÔBÑBÔCØàŸ™Ð'€Nà‡y‚yÜŒÜ t§z¡zÀ.ÕQØô ˜DŸJ™J°~ÖFrE   Ú__main__)z	127.0.0.1)rÈ  )r   Nr¢   rX  )rY  )NNT)rÐ   NT)rr¦   r-   r5   Úrer™   r–   rê   rš  r¾  rÝ  Úxml.etree.ElementTreeÚetreeÚElementTreerj  r   r   Útypingr   r   r   r   r	   Úurllib.parser
   r   r   r   r   r3   ÚatexitÚ	curl_cffir   rI  rH  ÚImportErrorÚ
pywideviner   r   r   ÚplatformÚstdoutÚreconfigureÚstderrr"   r,   r1   r:   r2   rV   rÊ  rm  r  rR   r.   r1  Úabspathr2  r7   r  rØ   r0  rã   rÂ  r§   rh  ri  rj  rl  r0   rÉ  r   Ú__annotations__r8   r¨   r{   r©   r%   r<   rF   ÚregisterÚDEFAULT_REFRESH_SECONDSrS  ru  ÚfromhexrP  rH   r+   rX   rZ   rÚ   rÝ   rá   rå   rç   rñ   rø   r  r  r"  rD  r  rU  r„  r¥  r¶  rÖ  rL  r—  r±  r²  rd  rÕ  rë  r£   rD   rE   r$   Ú<module>r      s  ðòó 
Û 
Û 	Û Û Û Û Û Û ß "Ð "ß (ß 3Õ 3ß BÓ BÛ Û Û ðÝ3Ø€Mó
 ß (Ñ (ð ‡<�<�7ÒðØ�
‰
×Ñ¨¸	ÐÔBØ�
‰
×Ñ¨¸	ÐÔBð
 €Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€Ø
€ð —7‘7—?‘? 2§7¡7§?¡?°8Ó#<Ó=€
Ø—7‘7—<‘< 
Ð,>Ó?€Ø—7‘7—<‘< 
Ð,>Ó?€
Ø—7‘7—<‘< 
Ð,=Ó>€
Ø—7‘7—<‘< 
¨IÓ6€Ø—7‘7—<‘< 
¨KÓ8€
Ø—7‘7—<‘< 
Ð,@ÓAÐ Ø—7‘7—<‘< 
Ð,BÓC€Ø—7‘7—<‘< 
Ð,?Ó@€Ø—g‘g—l‘l :Ð/HÓIÐ Ø—7‘7—<‘< 
¨OÓ<Ð ñ !$£Ð ˜#Ó %ð €ñ�sð  #ð ¸ó ñ@˜sð @¨dó @ó(ð €‡��
Ô ð #Ð ð <Ð Ø Ÿ=™=Ð)KÓLÐ à€
ˆD��c�‰NÓ ð  %ñ VˆSð V˜ð V¨ó Vó
÷[ñ [ñz ˜ZÓ(€ð=�T˜#˜s˜(‘^ó =ð~
4�T˜#˜s˜(‘^ð 
4¨ó 
4óó?ð
˜cð  d¨3°¨8¡nó ð	(˜cð 	( e¨D°#°t¸CÀ¸H±~Ð,EÑ&Fó 	(ó Û ñE�cð E Sð E°h¸tÀCÈÀH¹~Ñ6Nð EÐZ_Ð`cÐemÐnqÑerÐ`rÑZsó EñNi�d˜3 ˜8‘nð i°¸#±ð iÈ#ó iñX˜x¨¨S°#¨X©Ñ7ð À3ó ð	˜sð 	 tó 	ðC# sð C#¨u°X¸c±]ÀHÈSÁMÐ5QÑ/Ró C#ðJN  S¨# X¡ð N¸¸SÀ#¸X¹ð NÐSVð NÐ[^ó Nð<"¨ð "°Cð "ÀÀcÈ3ÀhÁð "Ð]eÐfjÐknÐpsÐksÑftÑ]uð "Ðzð  AIð  JNð  ORð  TWð  OWñ  JXñ  AYð  [cð  dgñ  [hð  Ahñ  {ió "ñHO˜3ð O¨#ð O°sð OÀDÈÈcÈÁNð OÐdhÐilÐnqÐiqÑdrð Oð  CKð  LOñ  CPð Oð  emð  nrð  svð  x{ð  s{ñ  n|ñ  e}ð Oð  INð  OWð  X[ñ  O\ð  ^fð  gjñ  ^kð  Okñ  Iló Oñbn˜T # s (™^ð n°T¸#¸s¸(±^ð nÈCð nÐaeÐfiÐknÐfnÑaoð nð  Bð nð  KOð  PSð  UXð  PXñ  KYó nñbm H¨S¡Mð mÀHÈTÐRVÐWZÐ\_ÐW_ÑR`ÑMaÑDbð mÐ{ð mð  LPð  QTð  VYð  QYñ  LZó mð`	 €Ø€ð\ D¨¨c°3¨h©Ñ$8ó \ñ~Z #ð Z°h¸s±mð ZÐ\`ð ZÐlpó Zòz2Gðh ˆzÒÙ…Fð øð{/ ò Û$ØƒMðûð ò Úðús$   Á P+ Â:P= Ð+P:Ð9P:Ð=QÑQ