Ë
    õQÑjwÇ ã                   ó6  — 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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mZ ddl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jT                  d
k(  r;	 ejV                  jY                  dd¬«       ejZ                  jY                  dd¬«       dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7ejp                  js                  ejp                  ju                  e;«      «      Z<ejp                  j{                  e<d«      Z>ejp                  j{                  e<d«      Z?ejp                  j{                  e<d«      Z@ejp                  j{                  e<d«      ZAejp                  j{                  e<d«      ZBejp                  j{                  e<d«      ZCejp                  j{                  e<d«      ZDejp                  j{                  e<d«      ZEejp                  j{                  e<d«      ZFejp                  j{                  e<d «      ZGejp                  j{                  e<d!«      ZH eI«       ZJeIeKd"<   d#ZLd$ZMd%ZNd&ZOd'd(d)d*d+d,œZPd-ZQd.ZRd(d/d0d1d2œZSd3ZTd4d5eTd6z   d7œd8d9eTd:z   d7œd;d<eTd=z   d7œd>d?eTd@z   d7œdAdBeTdCz   d7œgZUeUD � ch c]#  } | dD   j­                  «       j¯                  «       ’Œ% c} ZXeXj³                  dE«       eUD � ch c]  } | dF   ’Œ	 c} ZZda[dµdGe\dHe]dIe^fdJ„Z_d¶dGe\dIdfdK„Z`d·dL„Za e jÄ                  ea«       dMZcdNZdeejÍ                  dO«      Zgi ahee]ef   eKdP<   e7fdQe]dRe]dIdfdS„Zid·dT„Zj G dU„ dV«      Zk ekeB«      ZldIee]ef   fdW„ZmdXee]ef   dIdfdY„Znd·dZ„Zod·d[„Zpd\e]dIee]ef   fd]„Zqd\e]dIee^e\ee]ef   f   fd^„ZrddlsZsddltZtd¸d_e]d`e]daeee]e]f      dIee]ee]   f   fdb„Zud¹d\e]dcee]   ddee]   daeee]e]f      dIee]   f
de„Zvd¸dfee]ef   dgee]   dIe]fdh„ZwdiZxd¸daeee]e]f      dIefdj„Zyd¸daeee]e]f      dIefdk„Zzda{ee]   eKdl<   da|ee^   eKdm<   da}dIee]   fdn„Z~dIe^fdo„Zd¸dpe]dqe]dree]e]f   dseee   dIee\eef   f
dt„Z€due]dIe^fdv„Z�dwe]dIeee]   ee]   f   fdx„Z‚dyee]ef   dfee]ef   dze]dIe]fd{„Zƒd|e]d\e]dfee]ef   daeee]e]f      dIeeee]ef      ee]   f   f
d}„Z„d¹due]d~e]de]dfee]ef   d€ee]ef   d�ee]   daeee]e]f      d\ee]   dIeee]   ee]   ee]   f   fd‚„Z…dyee]ef   dIe^fdƒ„Z†dIe]fd„„Z‡dIee]e]f   fd…„Zˆd†e]d‡e]dIe]fdˆ„Z‰d‡e]dIee]   fd‰„ZŠdqe]dIeee]ef      fdŠ„Z‹dIeee]   eee]ef      ee]   f   fd‹„ZŒdyee]ef   dIee]ef   fdŒ„Z�d�ee]   dIe]fdŽ„ZŽd�ee]   dIe^fd�„Z�dºdyee]ef   dfee]ef   d\e]d€ee]ef   d�e\dIee]ef   fd‘„Z�d»dgee]   d’eeee]ef         d“e^dIee]ef   fd”„Z‘da’da“i Z”ee]ef   eKd•<   i Z•ee]e–f   eKd–<   d—edIee   fd˜„Z—d™edIe]fdš„Z˜d›ee]ef   dIe]fdœ„Z™d›ee]ef   dIe^fd�„ZšdIee]ef   fdž„Z›d’eee]ef      dIeee]ef      fdŸ„Zœd e]dIdfd¡„Z�dIe^fd¢„Zžd›ee]ef   dIe^fd£„ZŸd¤ee]ef   dIe^fd¥„Z d¦eee]ef      d§eee]ef      dIeee]ef      fd¨„Z¡d›ee]ef   dIeee]ef      fd©„Z¢dªedIeee]ef      fd«„Z£dqe]d¬e]dIeee]ef      fd­„Z¤dIeeee]ef         fd®„Z¥dIeee]ef      fd¯„Z¦dIeee]ef      fd°„Z§d¼d±e\dgee]   d“e^dIdfd²„Z¨d³„ Z©eªd´k(  r e©«        yy# e%$ r
 ddl"Z#dZ$Y �Œ‘w xY w# e.$ r Y �ŒEw xY wc c} w c c} w )½a&  
====================================================================
 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Útimezone)ÚDictÚListÚOptionalÚTupleÚAny)ÚurlparseÚparse_qsÚ	urlencodeÚ
urlunparseÚunquote)Ú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.pyzradio_tv_seriea.mpdÚ_eligibility_blocked_idsÚ1daica1elq2701s7zajjchy47sz$661803d9-7d20-4569-9870-b0add6708f1ezbhttps://legaseriea-live-prd.cdn.netrw.it/out/v1/s-prd/ch-01-prd-s-v2/dash-ch-01-prd-s-hd/index.mpdzShttps://product-services-cdn.deltatre.digital/seriea/entitlement/api/v2/main/videosúapplication/jsonz!application/json, text/plain, */*úhttps://www.legaseriea.itúhttps://www.legaseriea.it/zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36)úContent-TypeÚAcceptÚOriginÚRefererú
User-Agentz¡https://rail-router.discovery.indazn.com/eu/v11/Rail?platform=web&id=LiveAndNextNew&country=it&brand=dazn&languageCode=it&params=PageType:Home%3BContentType:Nonezyhttps://rail-router.discovery.indazn.com/eu/v11/Rail?platform=web&id=Livetvschedule&country=it&brand=dazn&languageCode=itúhttps://www.dazn.comúhttps://www.dazn.com/úoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36)ÚacceptÚoriginÚrefererú
user-agentz6https://image.discovery.indazn.com/eu/v2/eu/image/?id=Ú4hqcjx5zv91f1bdx71io4bnrlzDAZN 1z84hqcjx5zv91f1bdx71io4bnrl_image-header_pIt_1788259786000)ÚidÚnameÚlogoÚ1jdysh48i12eb1cdny7b2dgma5zInter TVz91jdysh48i12eb1cdny7b2dgma5_image-header_pIt_1750150731000Úxkl4tjojz1s7zrvhrly6sy2nzMilan TVz7xkl4tjojz1s7zrvhrly6sy2n_image-header_pIt_1661948656000Úvowt32ah7gwx1pz824i5ntrwzzRed Bull TVz8vowt32ah7gwx1pz824i5ntrwz_image-header_pIt_1712069226000Ú19oeo2wgzq1vj1rpi9oh86yhbhÚUnbeatenz919oeo2wgzq1vj1rpi9oh86yhbh_image-header_pIt_1711552796000r-   z
redbull tvr,   Ú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)r4   r5   Úss      ú6/var/www/addictedbytheproject.nl/esdrongo/dazn/dazn.pyÚis_port_openr@   •   sj   € ðÜ�]‰]œ6Ÿ>™>¬6×+=Ñ+=Ó>ð 	3À!Ø�L‰L˜ÔØ—<‘<  t Ó-°Ñ2÷	3÷ 	3ò 	3ûô ò Ùðú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)r4   Úes     r?   Úensure_proxy_runningrW   �   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)rS   ÚpollrF   rL   Ú	terminateÚwaitr=   Úkill© ó    r?   Ú
stop_proxyra   ±   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)rd   re   s     r?   rF   rF   Ê   s4   € Ü	ˆUˆG�1”X—\‘\“^×,Ñ,¨ZÓ8Ð9¸¸C¸5ÄÀÐ
HÐPTÖUr`   c                  ó‚   — t         › dt        › d› t        › dt        › dt        › dt        › d› t        › �} t	        | «       y )Nzž
  ____     _     ______  _   _ 
 |  _ \   / \   |__  / \| \ | |
 | | | | / _ \    / /|  \|  \| |
 | |_| |/ ___ \  / /_| |\ \  |
 |____//_/   \_\/____|_| \_|
õÒ   â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�ú
u=     â—† DAZN Auto-Manager Â· Widevine Extractor & Decryptor â—†)rL   ÚBLUErm   rM   rj   )Úbanners    r?   Úprint_bannerrs   Í   sO   € Ü�ð ô €€z€l”5�'ð Ü€ÐCÄEÀ7ð KÜ€€z€l”5�'ð€Fô 
ˆ&…Mr`   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   )rv   ÚproxiesÚconfig_proxyÚcurrent_idxÚload)Úselfrv   s     r?   Ú__init__zProxyManager.__init__Ü   s)   € Ø ˆŒØ"$ˆŒØ6:ˆÔØˆÔØ�	‰	�r`   Úliner6   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://úhttps://z	socks5://z
socks5h://ú:é   r�   ú@rY   r   é   )ÚstripÚ
startswithÚsplitÚlen)r|   r~   Úpartsr5   r4   Ú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Ð#Ð#àr`   Ú
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©r‘   r’   )Ú
isinstanceÚdictÚgetry   Ústrr‡   rŽ   )r|   r�   Ú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Õð .@Ð(r`   ry   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   )rx   r›   rH   rI   rJ   rv   ÚopenrŽ   Úappendr=   rz   )r|   ry   Úfr~   rš   s        r?   r{   zProxyManager.load   sË   € ØˆŒØÐ#Ø×!Ñ! ,Ô/ä�7‰7�>‰>˜$Ÿ-™-Ô(ðÜ˜$Ÿ-™-¨°wÀxÔPð 8ÐTUØ !ò 8˜Ø!%×!6Ñ!6°tÓ!<˜Ú! f°D·L±LÒ&@Ø ŸL™L×/Ñ/°Õ7ñ8÷8ð ˆÕ˜1ˆÕ÷8ð 8ûô
 ò ØàˆÕðú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 )Nr“   )rx   rz   rŠ   ry   )r|   Ú	proxy_urls     r?   Úget_dictzProxyManager.get_dict  sN   € Ø�<Š<ØŸ™ T×%5Ñ%5¼¸D¿L¹LÓ8IÑ%IÑJˆIØ%°	Ñ:Ð:Ø×ÒØ×$Ñ$Ð$Ør`   c                 óŽ   — | j                   r*| j                  dz   t        | j                   «      z  | _        | j                  «       S )Nr†   )rx   rz   rŠ   r¤   ©r|   s    r?   ÚrotatezProxyManager.rotate  s6   € Ø�<Š<Ø $× 0Ñ 0°1Ñ 4¼¸D¿L¹LÓ8IÑIˆDÔØ�}‰}‹Ðr`   c                 ód   — | j                   rt        | j                   «      S | j                  rdS dS )Nr†   r   )rx   rŠ   ry   r¦   s    r?   ÚcountzProxyManager.count  s*   € Ø$(§L¢LŒs�4—<‘<Ó ÐU¸D×<MÒ<M°qÐUÐSTÐUr`   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)Nr‘   r“   z!https://api.ipify.org?format=jsoné
   )rx   rZ   éè  r†   ÚipÚOKTFúHTTP é   )Úlistrx   ry   r    Útimer   r–   ÚroundÚokÚjsonÚstatus_coder=   r—   )
r|   ÚresultsÚlist_to_testÚpÚproxies_dictÚt0r�   Údurr­   rV   s
             r?   Útest_allzProxyManager.test_all!  s<  € ØˆÜ˜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—   r}   r   rŽ   r
   r›   r{   r   r¤   r§   Úintr©   r   r	   ÚboolÚfloatr½   r_   r`   r?   ru   ru   Ú   s³   „ ÙUØ'1ñ  ó ð Sð ¨X°c©]ó ð&B¨3ð B°4ó Bñ ð °ó ð"˜( 4¨¨S¨¡>Ñ2ó ð˜  c¨3 h¡Ñ0ó ð
V�só Vð˜$˜u S¨$°°UÐ%:Ñ;Ñ<ô r`   ru   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œt         D � cg c]  } t        | «      ‘Œ c} 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 c c} w # 1 sw Y   ŒvxY w# 1 sw Y   ŒNxY w# t        $ r |}Y ŒRw xY w)NÚ z$57b6a530-70a4-4d65-b412-46a1a5c22b38z$66125bf7-0b92-47fc-b618-93cfea67f55cú0.150.1-hotfix.f8b078689z@dazn/peng-html5-core/web/webÚitr“   r%   úB"Chromium";v="154", "Microsoft Edge";v="154", "Not A(Brand";v="99"ú?0ú	"Windows"ú}Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36 Edg/154.0.0.0ÚDAZN)r)   ú	sec-ch-uaúsec-ch-ua-mobileúsec-ch-ua-platformr*   úx-brandúapplication/octet-stream)úcontent-typer)   rÐ   rÑ   rÒ   r*   rÓ   )ÚtokenÚemailÚpasswordÚ	device_idÚdaznidÚapp_versionÚ	player_idÚlanguageÚproxyÚheadersÚlicense_headersÚchannelsÚrefresh_interval_hoursé   )ÚdaznÚloopÚwr   ©r   rY   F©ÚindentÚensure_asciir�   rä   rÞ   )ÚEXTRA_LINEAR_CHANNELSr•   rH   rI   rJ   ÚCONFIG_FILErŸ   rµ   Údumpr{   r=   Úproxy_managerr›   )ÚcÚdefault_configr¡   Úcfgs       r?   Úload_configrò   :  sx  € ð ØØØ?Ø<Ø5Ø8ØàØñð
 3ØaØ$(Ø&1ð ^Ø!ñð !;Ø2ØaØ$(Ø&1ð ^Ø!ñ ô +@Ö@ Qœ˜a�Ò@ñ=
ðB % að
ñC$€NôL �7‰7�>‰>œ+Ô&Ü”+˜s¨WÔ5ð 	G¸Ü�I‰I�n a°ÀÕF÷	Gà‰ð	!Ü”k 3°Ô9ð #¸QÜ—i‘i “l�÷#à˜SÑ Ø,¨VÑ4��F‘ð ��}˜ C¨¡KÑ/Ü×&Ñ& s¨6¡{°7Ñ';Ô<à€Jùò/ A÷	Gð 	Gú÷
#ð #ûô ò 	!Ø ŠCð	!ús;   ¦DÁ7DÂD Â/DÃD ÄDÄ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æ   rY   Frè   zErrore salvataggio config: )rH   rI   rJ   rì   rŸ   rµ   r{   Úupdaterí   r=   rF   rU   )rñ   Úcurrentr¡   rV   s       r?   Úsave_configrö   s  s»   € ð	4ØˆÜ�7‰7�>‰>œ+Ô&Ü”k 3°Ô9ð '¸QÜŸ)™) A›,�÷'à�‰�sÔÜ”+˜s¨WÔ5ð 	@¸Ü�I‰I�g˜q¨¸Õ?÷	@ð 	@÷'ð 'ú÷	@ð 	@ûäò 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ç   )	rH   rI   rJ   Ú
CACHE_FILErŸ   rµ   r{   rc   r=   ©r¡   s    r?   Ú
load_cacherú     sd   € ä	‡w�w‡~�~”jÔ!ð	Ü”j #°Ô8ð *¸AÜ!ŸY™Y q›\�
÷*ð *ð "÷*ð *ûäò 	ØŠ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ç   rY   Frè   )rŸ   rø   rµ   rí   rc   rù   s    r?   Ú
save_cacherü   ˆ  s7   € Ü	Œj˜#¨Ô	0ð ?°AÜ�	‰	”*˜a¨¸Õ>÷?÷ ?ñ ?ú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 esternerB   rã   r†   r„   r   ú=r   )	r‡   r‰   rŠ   Úbase64Úurlsafe_b64decoderµ   ÚloadsÚdecoder=   )rÖ   r‹   Úpayload_b64ÚremÚdecodeds        r?   Údecode_jwt_payloadr  �  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  r–   rÄ   r²   )rÖ   Úpayloadr  rk   Ú	remainingÚis_valids         r?   Úcheck_token_statusr  œ  sZ   € ä  Ó'€GÙØ�a˜ˆ|ÐØ
�+‰+�e˜QÓ
€CÜ
Œd�i‰i‹kÓ
€CØ�c‘	€IØ˜2‰~€HØ�Y Ð'Ð'r`   r×   rØ   Ú
proxy_dictc                 ó<  — d}ddl } |j                  | j                  «       «      j                  «       }|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œ}	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                  d/i «      j                  d.«      }|rd0|fS 	 |j                  d1k(  ry'|j                  rY	 |j                  «       j                  d.«      xs/ |j                  «       j                  d/i «      j                  d.«      }|rd0|fS 	 y*y*# t        $ r Y Œ�w 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   Nr„   é   ÚwebÚ0Úe5edÚ2bdz6s9kÚydg5ujkhink9)ÚEmailÚPasswordÚPlatformÚDeviceIdÚProfilingSessionIdú*/*zen-GB,en;q=0.9,it;q=0.8zno-cacher   r$   r%   zA"Google Chrome";v="143", "Chromium";v="143", "Not A(Brand";v="24"rÌ   rÍ   ÚemptyÚcorsz
cross-siter&   z£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))r'   zaccept-languagezcache-controlrÕ   r(   r)   rÐ   rÑ   rÒ   zsec-fetch-destzsec-fetch-modezsec-fetch-siter*   z	x-dazn-uau%   ðŸ”‘ Tentativo di Login in corso per rC   é   ©rµ   rß   rZ   u   ðŸ”� DEBUG Risposta Login per z: HTTP 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ÚSUCCESSéÊ   u    â�Œ Eccezione durante il Login: )ÚhashlibÚmd5ÚencodeÚ	hexdigestrF   rM   Úcreate_sessionÚpostÚtextr¶   ÚDIMrL   rµ   r–   r=   r´   rU   )r×   rØ   r  Úurlr,  ÚhÚs_valÚk_valr
  rß   r>   r�   r2  rÖ   rV   s                  r?   Ú
dazn_loginr8  ª  su  € à
?€CãØˆ�‰�E—L‘L“NÓ#×-Ñ-Ó/€AØˆbˆqˆE€EØˆa�ˆF€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Ð+Ð+ð ð �=‰=˜CÒØ à�4Š4ðØŸ™›Ÿ™ WÓ-Ò[°·±³·±¸kÈ2Ó1N×1RÑ1RÐSZÓ1[�Ù ¨EÐ!1Ð1�5ñ øô ò Ùðûô ò Øàðûô ò ÜÐ.¨q¨cÐ2´CÔ8Üûðúsu   Á5A9G5 Ã/G5 Ã8G5 ÄG5 Ä
AG Å G5 Å1G5 Å>AG& Ç	G#Ç G5 Ç"G#Ç#G5 Ç&	G2Ç/G5 Ç1G2Ç2G5 Ç5	HÇ>HÈHÚuser_idrÙ   c                 ó>  — t        | «      }|xs |r|j                  d«      nd}|xs |r|j                  d«      nd}d|v r$|j                  d«      d   j                  dd«      nd}d}d	| › �d
dddd|t	        t        j                  «       «      dœ}		 t        |«      }
|
j                  |d|i|	d¬«      }|j                  r3|j                  «       j                  di «      j                  d«      }|r|S y# t        $ r}t        d|› �t        «       Y d}~yd}~ww xY w)z`Registra il dispositivo ed ottiene un token autorizzato al playback chiamando RefreshAccessTokenrŒ   rÈ   ÚdeviceIdú-éÿÿÿÿz|daznÚ
000711a5aaz>https://ott-authz-bff-prod.ar.indazn.com/v5/RefreshAccessTokenúBearer r   r$   r%   rÎ   rä   )ÚAuthorizationr   r!   r"   r#   rÓ   úx-daznidzx-session-idr  r  r  r)  r(  u"   âš ï¸� Errore RefreshAccessToken: N)r  r–   r‰   r   r—   ÚuuidÚuuid4r0  r1  r´   rµ   r=   rF   rL   )rÖ   r9  rÙ   r  r
  ÚuidÚdev_strÚ	short_devr4  rß   r>   r�   Únew_tokrV   s                 r?   Údazn_refresh_tokenrH  ö  s%  € ä  Ó'€GØ
Ò
=©W�g—k‘k &Ô)¸"€CØÒG±w˜GŸK™K¨
Ô3ÀB€GØ?BÀg¹~�—‘˜cÓ" 2Ñ&×.Ñ.¨w¸Ô;ÐS_€Ià
J€Cà" 5 'Ð*Ø*Ø(Ø*ð VØØÜœDŸJ™J›LÓ)ñ	€Gð>Ü˜:Ó&ˆØ�F‰F�3˜j¨)Ð4¸gÈrˆFÓRˆØ�4Š4Ø—f‘f“h—l‘l ;°Ó3×7Ñ7¸Ó@ˆGÙØ�ð øô ò >ÜÐ0°°Ð4´f×=Ð=Øûð>ús   ÂA C6 Ã6	DÃ?DÄDÚconfigÚ	cli_tokenc                 óD
  — |}|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                  |	«      �rŠt        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(  r\|rZt+        ||¬«      xs |}|}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$        j1                  «        |dz  }t3        j4                  d«       nt        d|› d�t6        «       n|dkD  rŒî|s�Œ n |s·t        dt6        «       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«      t9        j:                  «       j=                  «       d0œ	}t        t        dd¬«      5 }
t	        j.                  ||
dd1¬2«       ddd«       |S t        d3t6        «       t        d4t>        › d5�t        «       |S # t        $ r Y �Œ!w xY wc c}w # 1 sw Y   �Œ7xY w# t        $ r g }Y �ŒHw 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)6z]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 rC   rƒ   r€   Nr†   rã   r   r*  ©r  uE   âœ… Login completato e dispositivo registrato! Nuovo token acquisito.ræ   rY   )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/ArE   rŒ   r;  ÚcountryrÊ   Ú
userstatusÚissuedr  )	rÖ   Ú	viewer_idrÚ   rÙ   rP  Úuser_statusrR  r  Ú
updated_atFrè   u<   âš ï¸� ATTENZIONE: Il token fornito Ã¨ SCADUTO o NON VALIDO!zAggiorna il token in z o usa --token <nuovo_token>) rH   rI   rJ   Ú
TOKEN_FILErµ   r{   rŸ   r–   r  rF   rL   r=   ÚjoinÚdirnameÚ__file__rˆ   r‡   r‰   rî   r¤   r8  rH  rG   rí   r§   r²   ÚsleeprU   r   rk   Ú	isoformatrì   )rI  rJ  rÖ   Út_dataÚt_candÚvalr  Ú_r
  Úaccounts_filer¡   ÚlÚlinesr~   r×   rØ   Úretriesr  ÚstatusÚ	new_tokenÚ	reg_tokenÚstÚtkÚminsÚhrsÚt_infos                             r?   Ú	get_tokenrl    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Ô?ð YÀ1Ø01ÖX¨1°S¸A²XÀaÇlÁlÐSVÕFW˜QŸW™W�YÐX�EÐX÷Yð
 ó �Ø"&§*¡*¨S°!Ó"4‘��xà�Ø ’kÜ!.×!7Ñ!7Ó!9�JÜ(2°5¸(ÀJÓ(OÑ%�F˜Ià Ò*©yÜ$6°yÈZÔ$XÒ$eÐ\e˜	Ø )˜ÜÐcÔejÔkð!Ü!%¤j°#ÀÔ!Hð IÈ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ó. Ùð9ñ< ÜÐ[Ô]`Õ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ð EÈÜ Ÿ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ð C¸AÜ—	‘	˜& !¨A¸EÕB÷Cð €Lô ÐNÔQTÔUÜÐ'¬ }Ð4PÐQÔSYÔZà€Løô{ ò 	Úð	üò$ Y÷Yñ Yûäò Ø“ðú÷ Iñ Iûä(ò !Ú ð!ú÷6Eñ Eûä$ò Úðú÷*Cð €Lúsº   ©A)R' ÅS	 ÅR<Å	R7Å!R7Å3R7ÆR<ÆS	 È S(ÈSÈ-S(Ì*T Ì<S8ÍT ÑTÒ'	R4Ò3R4Ò7R<Ò<SÓS	 Ó	SÓSÓS%	Ó S(Ó(	S5Ó4S5Ó8TÓ=T Ô	TÔTÔT)Úchrome99_androidÚchrome131_androidc                 óz   — t         rt        j                  d¬«      }nt        j                  «       }| r| |_        |S )z.Sessione Chrome desktop: login, EPG, manifest.Ú	chrome120©Úimpersonate)ÚHAS_CURL_CFFIÚcffi_requestsÚSessionr   rx   )r  r>   s     r?   r0  r0  …  s2   € åÜ×!Ñ!¨kÔ:‰ä×ÑÓˆÙØˆŒ	Ø€Hr`   c                 óà   — t         rFd}t        D ]%  }	 t        j                  |¬«      }| r| |_        |c S  |rt        d|› d�t        «       t        | «      S # t
        $ r}|}Y d}~ŒYd}~ww xY w)zBSessione TLS Android: playback + license. Non serve la Fire Stick.Nrq  u,   âš ï¸� Impersonate Android non disponibile (z), fallback Chrome)	rs  Ú_ANDROID_IMPERSONATErt  ru  rx   r=   rF   rL   r0  )r  Úlast_errÚimpr>   rV   s        r?   Úcreate_android_sessionrz  �  s}   € åØˆÜ'ò 	ˆCðÜ!×)Ñ)°cÔ:�ÙØ *�A”IØ’ð	ñ ÜÐ>¸x¸jÐHZÐ[Ô]cÔdÜ˜*Ó%Ð%øô ò Ø�Üûðús   “ AÁ	A-Á!A(Á(A-Ú_ADB_BINÚ_STICK_READYc                  ó  — t         j                  j                  d«      t         j                  j                  t        d«      g} | D ](  }|sŒt         j                  j                  |«      sŒ&|c S  t        j                  d«      S )Nz1%LOCALAPPDATA%\Android\Sdk\platform-tools\adb.exezadb.exeÚadb)rH   rI   Ú
expandvarsrW  rR   ÚisfileÚshutilÚwhich)Ú
candidatesr¹   s     r?   Ú	_find_adbr„  §  sg   € ä
�‰×ÑÐOÓPÜ
�‰�‰”Z Ó+ð€Jð ò ˆÚ”—‘—‘ Õ"ØŠHðô �<‰<˜ÓÐr`   c                  ó  — t         j                  j                  dd«      j                  «       j	                  «       dv rdayt
        �t
        S t        «       at        sday	 t        j                  t        dgdd¬	«      } | j                  xs d
j                  dd«      j                  «       }t        d„ |dd D «       «      at
        rt        st!        dt"        «       dat%        t
        «      S # t        $ r daY Œ:w xY w)u6   True se c'Ã¨ una Fire Stick/Android collegata via adb.ÚDAZN_NO_STICKrÈ   )Ú1ÚtrueÚyesFNÚdevicesTé   ©Úcapture_outputrZ   r`   r   r   c              3   óf   K  — | ])  }d |v xs |j                  «       j                  d«      –— Œ+ y­w)z	devicez deviceN)r‡   Úendswith)Ú.0Úlns     r?   ú	<genexpr>z"stick_available.<locals>.<genexpr>Á  s6   è ø€ ò 
àð ˜2ÐÒ@ "§(¡(£*×"5Ñ"5°iÓ"@Ó@ñ
ùs   ‚/1r†   uN   ðŸ“¡ Fire Stick collegata: playback e licenza passano dal device (TLS Android))rH   Úenvironr–   r‡   Úlowerr|  r„  r{  rN   ÚrunÚstdoutr  Ú
splitlinesÚanyr=   Ú_STICK_LOGGEDrF   rG   rÅ   )r�   rb  s     r?   Ústick_availablerš  ²  sé   € ô 
‡z�z‡~�~�o rÓ*×0Ñ0Ó2×8Ñ8Ó:Ð>RÑRØˆØÜÐÜÐÜ‹{€HÝØˆØðÜ�N‰NœH iÐ0ÀÈqÔQˆØ—‘’˜S×(Ñ(¨°)Ó<×GÑGÓIˆÜñ 
à˜A˜B�iô
ó 
ˆõ �MÜÐ\Ô^cÔdØˆÜ”ÓÐøô ò ØŠðús   Á"A!C0 Ã0C>Ã=C>Úmethodr4  rß   Úbodyc                 ó>  — t         syt        j                  j                  t        d«      }t        j                  j                  t        d«      }t        j                  j                  t        d«      }d}d}d}	d|› d	�d
| › d	�ddddd|	› d	�dg}
|j                  «       D ]H  \  }}t        |«      j                  dd«      j                  d	d«      }|
j                  d|› d|› d	�«       ŒJ |�;t        |d«      5 }|j                  |«       ddd«       |
j                  d|› d	�«       t        |ddd¬«      5 }|j                  dj                  |
«      dz   «       ddd«       	 t        j                  t         d||gdd¬ «       |� t        j                  t         d||gdd¬ «       t        j                  t         d!d"d#d$d%d&d'd(|g
dd)¬ «      }|j                  xs d*j                  dd+«      j                  «       }t        j                  t         d,|	|gdd¬ «       t        j                  j!                  |«      rt        |d-«      j#                  «       nd*}	 t%        |«      }||fS # 1 sw Y   �Œ\xY w# 1 sw Y   �ŒxY w# t&        $ r d.}Y Œ+w xY w# t(        $ r Y yw xY w)/zIGET/POST eseguiti da curl sulla stick (niente proxy mitm, cert insecure).)r   r`   z	_curl.cfgz
_curl.bodyz	_curl.outz/sdcard/dazn_curl.cfgz/sdcard/dazn_body.binz/sdcard/dazn_out.binzurl = "ú"zrequest = "ÚinsecureÚsilentz
show-errorznoproxy = "*"z
output = "zwrite-out = "%{http_code}"ú\z\\z\"z
header = "ú: NÚwbzdata-binary = "@ræ   r   rp   )r   ÚnewlineÚpushTé   rŒ  ÚshellÚenvzhttp_proxy=zhttps_proxy=zHTTP_PROXY=zHTTPS_PROXY=Úcurlz-Ké-   r`   r   ÚpullÚrbr   )r{  rH   rI   rW  rR   Úitemsr—   r   r    rŸ   ÚwriterN   r•  r–  r  r‡   rJ   ÚreadrÄ   Ú
ValueErrorr=   )r›  r4  rß   rœ  Ú	local_cfgÚ
local_bodyÚ	local_outÚ
remote_cfgÚremote_bodyÚ
remote_outrb  ÚkÚvÚvvÚfhr�   Úcode_sÚrawÚcodes                      r?   Ú
stick_httpr¾  Í  s‡  € åØÜ—‘—‘œZ¨Ó5€IÜ—‘—‘œj¨,Ó7€JÜ—‘—‘œZ¨Ó5€IØ(€JØ)€KØ'€Jà
�#��aÐØ
�f�X˜QÐØØØØØ
�Z�L Ð"Ø$ð	€Eð —‘“ò .‰ˆˆ1Ü�‹V�^‰^˜D &Ó)×1Ñ1°#°uÓ=ˆØ�‰�z !  B r d¨!Ð,Õ-ð.ð ÐÜ�*˜dÓ#ð 	 rØ�H‰H�TŒN÷	à�‰Ð'¨ }°AÐ6Ô7Ü	ˆi˜ w¸Ô	=ð *ÀØ
�‰�—‘˜5Ó! DÑ(Ô)÷*ðÜ�‰œ &¨)°ZÐ@ÐQUÐ_aÕbØÐÜ�N‰NœH f¨j¸+ÐFÐW[ÐegÕhÜ�N‰Nä˜'Ø�} n°mÀ^Ø˜˜jðð
  ¨ô
ˆð —(‘(’/˜c×)Ñ)¨'°9Ó=×CÑCÓEˆÜ�‰œ &¨*°iÐ@ÐQUÐ_aÕbÜ.0¯g©g¯n©n¸YÔ.GŒd�9˜dÓ#×(Ñ(Ô*ÈSˆð	Ü�v“;ˆDð �SˆyÐ÷1	ñ 	ú÷*ñ *ûô& ò 	ØŠDð	ûô ò ÙðúsO   Ã9I%Ä7$I2Å$C1J ÉI? É!J É%I/É2I<É?JÊ
J ÊJÊJ Ê	JÊJÚ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ÿ   Ú	b64decoderŠ   ÚWIDEVINE_SYSTEM_ID_BYTESr   r—   Ú	system_idr”  ÚWIDEVINE_SYSTEM_IDr=   )r¿  r¼  r¹   s      r?   Úis_widevine_psshrÇ    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 )NrÓ  rÔ  r_   ©rï   s    r?   ú<lambda>z'extract_widevine_pssh.<locals>.<lambda>=  s   €  1 Z¡=°!°NÑ2CÐ"D€ r`   )ÚkeyÚreverser   Úhexr<  )ÚETÚ
fromstringr=   rF   rU   ÚiterÚtagr�  Úattribr–   r”  rÆ  r2  r‡   rÇ  r    Úsortr   Úkey_idsÚhasattrÚcallableÚgetattrrÚ  r”   r—   Úbytesr   )rÈ  ÚrootrV   rƒ  ÚelemÚadaptation_setsÚasetÚmimerÓ  ÚcpsÚcpÚ	scheme_idrÔ  Ú
pssh_nodesÚnoder2  Ú	best_psshÚexpected_kidr¹   Ú	first_kids                       r?   Úextract_widevine_psshró    s  € ðÜ�}‰}˜[Ó)ˆð
 €JØ(,¯	©	«ÖZ °t·x±x×7HÑ7HÈÕ7Y’tÐZ€OÐZÙØ˜&ˆàó ˆØ—‘—‘ 
Ó+ÒS¨t¯{©{¯©¸}Ó/MÒSÐQS×ZÑZÓ\ˆØ˜d�?Ò3 e¨t mˆà $§	¡	£ÖV˜¨t¯x©x×/@Ñ/@ÐATÕ/UŠtÐVˆÐVØò 	ˆBØŸ	™	Ÿ™ m°RÓ8×>Ñ>Ó@ˆIÜ-°Ð:ˆLà+-¯7©7«9ÖR 4¸¿¹×8IÑ8IÈ&Õ8Qš$ÐRˆ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ÚchannelrS  c                 ó�  — |j                  di «      }| j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd	«      }|j                  d
d«      }|j                  dd«      }	|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t        |«      › �S ) z@Costruisce l'endpoint Playback con SessionId e timestamp freschirä   r,   r+   rÛ   rÉ   rÜ   z3@dazn/peng-html5-core/tv-legacy/exoplayer-androidtvrÝ   rÊ   ÚplatformÚ	androidtvÚmodelzFire TV StickÚsecurerˆ  ÚmanufacturerÚamznÚplayready_initiatorÚfalseÚcapabilitieszhevc,mtaÚunknownr¬   Né   r<  ÚWIDEVINEz	MPEG-DASHrÈ   )Ú
AppVersionÚDrmTypeÚFormatÚPlayerIdr  ÚModelÚSecureÚManufacturerÚPlayReadyInitiatorÚCapabilitiesÚAssetIdÚMtaLanguageCodeÚLanguageCodeÚ	SessionIdz,https://api.playback.indazn.com/v5/Playback?)r–   rÄ   r²   rB  rC  rÚ  Úupperr   )rô  rI  rS  Údazn_cfgÚasset_idrÛ   rÜ   Úlangrö  rø  rù  rú  Úplayready_initrþ  Úv_idÚtsÚrnd_hexÚ
session_idÚparamss                      r?   Úbuild_playback_urlr  R  s\  € à�z‰z˜& "Ó%€HØ�{‰{˜4Ð!<Ó=€HØ—,‘,˜}Ð.HÓI€KØ—‘˜[Ð*_Ó`€IØ�<‰<˜
 DÓ)€Dð  �|‰|˜J¨Ó4€HØ�L‰L˜ /Ó2€EØ�\‰\˜( FÓ+€FØ—<‘< °Ó7€LØ—\‘\Ð"7¸ÓA€NØ—<‘< °
Ó;€LØÒ!˜	€DÜ	ŒT�Y‰Y‹[˜4ÑÓ	 €BÜ�j‰j‹l×Ñ˜r Ð"×(Ñ(Ó*€GØ�4�q˜˜˜a ˜z¨¨7¨)Ð4€Jð "ØØØØØØØ$Ø,Ø$ØØØØñ€Fð  :¼)ÀFÓ:KÐ9LÐMÐMr`   Úplayback_urlc           	      óð  — |j                  di «      }t        |«      }|r|j                  d«      ndxs |j                  dd«      }|r|j                  d«      ndxs0 |j                  d«      xs t        t        j                  «       «      }|j                  di «      }d	|› �|j                  d
d«      |j                  dd«      |j                  dd«      dt        t        j                  «       «      ||dœ}	|j                  d«      r|d   |	d<   t        |«      }
	 |
j                  | |	d¬«      }|j                  sç|j                  j                  dd«      }	 |j                  «       }t        |t        «      r|j                  di «      ni }|j                  di «      xs i j                  d«      xs |j                  dd }|j                  dd«      }|rd|› d|› �}d|j                  «       v sd|j                  v sd |j                  v rd!}dd"|j                  › d#|› �fS |j                  «       dfS # t        $ r |j                  dd }Y Œpw 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ä   rŒ   NrÚ   ú$790f7b77-25f4-4cd8-bc68-15c600c9eb89r;  rÙ   rß   r?  r(   zhttps://tv.dazn.comr)   zhttps://tv.dazn.com/r*   ú¹Mozilla/5.0 (Linux; Android 11; Fire TV Stick Build/RQ3A.211001.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.79 Mobile Safari/537.36 DAZN_HTML_ANDROIDTVrÏ   )r@  r!   r"   r*   rÓ   zx-correlation-idzx-dazn-devicerA  zx-requested-withé   ©rß   rZ   r   rÈ   zodata.errorÚmessageÚvalueéÈ   r½  rg   rh   Úhtmlr!  r"  zQRequest blocked dall'edge CloudFront (probabile throttle IP: fai pausa 15-30 min)r¯   r¢  )r–   r  r—   rB  rC  rz  r´   rß   rµ   r”   r•   r2  r=   r”  r¶   )r  rÖ   rI  r  r  r
  r9  rÙ   Úhdr_cfgrß   r>   r�   ÚctypeÚerr_jsonÚoerrrd   r½  rV   s                     r?   Úrequest_playback_infor(  …  sX  € à�z‰z˜& "Ó%€HÜ  Ó'€GÙ&-ˆw�{‰{˜6Ô"°4Òz¸H¿L¹LÈÐSyÓ<z€GÙ,3�—‘˜ZÔ(¸ÒpÀ(Ç,Á,È{ÓB[ÒpÔ_bÔcg×cmÑcmÓcoÓ_p€Ià�l‰l˜9 bÓ)€Gà" 5 'Ð*Ø—+‘+˜hÐ(=Ó>Ø—;‘;˜yÐ*@ÓAØ—k‘kØð7ó
ð Ü¤§
¡
£Ó-Ø"Øñ€Gð ‡{�{Ð%Ô&Ø&-Ð.@Ñ&AˆÐ"Ñ#ä˜zÓ*€AðØ�E‰E�,¨¸ˆEÓ<ˆØ�tŠtØ—I‘I—M‘M .°"Ó5ˆEð#ØŸ6™6›8�Ü:DÀXÌtÔ:T�x—|‘| M°2Ô6ÐZ\�Ø—x‘x 	¨2Ó.Ò4°"×9Ñ9¸'ÓBÒRÀaÇfÁfÈTÈcÀl�Ø—x‘x ¨Ó+�ÙØ˜d˜V 2 c UÐ+�Cð ˜Ÿ™›Ñ&Ð*;¸q¿v¹vÑ*EÈÐYZ×Y_ÑY_ÑI_Øi�Ø˜5 §¡ ¨r°#°Ð7Ð7Ð7à�v‰v‹x˜ˆ~Ðøô ò #Ø—f‘f˜T˜c�l’ð#ûô ò Ø”S˜“Vˆ|ÕûðúsJ   Ä<I ÅBH7 Ç!AI È%I È7IÉI ÉIÉI É	I5ÉI0É*I5É0I5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«      dfS t        j                  j                  t        d«      }
d}g }t        j                  j                  |
«      rƒt        j                  j                  |
«      rdt        t        j                  |
«      «      D ]C  }|j                  d«      sŒ|j!                  t        j                  j                  |
|«      «       ŒE t        j                  j                  t"        «      r|j!                  t"        «       t%        «       }g }|D ]¦  }	 t'        |d	«      5 }t        j(                  |j+                  «       «      j	                  «       }ddd«       |v r7t/        d
t        j                  j1                  |t        «      › d�t2        «       Œ…|j5                  |«       |j!                  |«       Œ¨ |d| }|st/        d|
› dt"        › d�t6        «       y|j                  di «      }|j                  d«      xs |j                  dd«      }d}d|j                  di «      j                  d|«      ddœ}|rd|› �|d<   d}|D �]  }d}d}	 t9        j:                  |«      }	 t=        |j>                  dd«      }t=        |dd«      }t/        d t        j                  j1                  |t        «      › d!|› d"|› d#�t2        «       tA        jB                  |«      }|j'                  «       }tE        |«      }t/        d$|› �t2        «       |jG                  |tI        | «      d%¬&«      }t/        d'tK        |«      › d(d)|v › d#�t2        «       |jM                  |||d*¬+«      } | jN                  sÁd,| jP                  › d-| jR                  dd. › �Š,t/        d/‰,› d0t        j                  j1                  |t        «      › d1�t6        «       ‰,}tU        «       rDtW        ˆ,fd2„d3D «       «      r0tY        d4|||¬5«      \  }!}"|!d.k7  r>	 	 |�|�|j[                  |«       �ŒÊ	 	 |�|�|j[                  |«       �Œã| j\                  }"|j_                  ||"«       g }#|ja                  |«      D �]K  }$|$jb                  d6k7  sŒte        |$jf                  d7«      r:ti        |$jf                  jj                  tl        «      r|$jf                  jj                  nTte        |$jf                  d7«      r|$jf                  jk                  «       n$tm        |$jf                  «      jo                  d8d9«      }%tq        t=        |$jr                  d7d«      «      r|$jr                  jk                  «       n)t=        |$jr                  d7tm        |$jr                  «      «      }&|#j!                  |%j                  «       |&j                  «       f«       �ŒN |#s+t/        d:t6        «       d;}	 	 |�|�|j[                  |«       �Œ�d<\  }'}(|r#|#D ]  \  })}*|)|j                  «       k(  sŒ|)|*}(}' n |'s
|#r|#d=   \  }'}(|'r.|(r,|'|(d>œt
        |<   tu        «        t/        d?|'› d|(› �tv        «       |'|(df	 |�|�|j[                  |«       c S c S c S  dd|xs dBfS # 1 sw Y   �ŒxY w# t,        $ r |}Y �Œ-w xY w# t,        $ r	 d\  }}Y �Œw xY w# t,        $ r Y �Œcw xY w# t,        $ r Y �Œsw xY w# t,        $ r Y �Œƒw xY w# t,        $ r Y c S w xY w# t,        $ rt}+t/        d@t        j                  j1                  |t        «      › dA|+› �t6        «       tm        |+«      }Y d}+~+	 |�|�|j[                  |«       �Œ # t,        $ r Y �Œw xY wd}+~+ww xY w# 	 |�|�|j[                  |«       w w w # t,        $ r Y w w xY wxY w)CzSDecifra la chiave di contenuto Widevine usando WVD.wvd e l'endpoint di Licenza DAZNrƒ   Né   ÚkidrØ  Úwvdé   z.wvdr¬  u   â�­ï¸� CDM duplicato saltato: u    (identico a uno giÃ  in lista)z#ERRORE: Nessun file CDM trovato in z o ú!)NNzCDM missingrä   rŒ   rÚ   r  r  rÔ   rà   r*   Úgzip)r   r#   zAccept-Encodingr?  r@  Útypeú?Úsecurity_level)r3  r3  u   ðŸ”‘ CDM in uso: z (type=z, level=rE   u   ðŸ”� DEBUG License URL: F)Úprivacy_modeu   ðŸ”� DEBUG Challenge size: z bytes (plaintext=s   amznr°   )rß   ÚdatarZ   r¯   r¢  r"  zChiamata License fallita (z) [ú]c              3   óB   •K  — | ]  }|‰j                  «       v –— Œ y ­wr¾   ©r”  )r�  r·  Ú
error_texts     €r?   r’  zget_keys_wvd.<locals>.<genexpr>  s   øè ø€ Ò,rÈ¨Q°*×2BÑ2BÓ2DÔ-DÑ,rùs   ƒ)Ú10802znot allowed to receiveÚPOST)rœ  ÚSIGNINGrÚ  r<  rÈ   z5Nessuna chiave di contenuto trovata nella licenza DRMzNo keysrÊ  r   )r-  rØ  z"Chiave DRM estratta con successo: zErrore licenza DRM Widevine [z]: zLicense denied da tutti i CDM)<r”  r,  Úsha256r.  r/  rc   r–   rH   rI   rW  rR   rJ   ÚisdirÚsortedÚlistdirr�  r    ÚWVD_FILEÚsetrŸ   r-  r¯  r=   rF   Úrelpathr3  ÚaddrU   r   r{   rä  Ú	client_idr   Úfrom_devicerz  Úget_license_challenger   rŠ   r1  r´   r¶   r2  rš  r˜  r¾  ÚcloseÚcontentÚparse_licenseÚget_keysr2  râ  r-  r”   rÚ  r—   r   rã  rØ  rü   rG   )-r¿  r  r)  rI  r*  rñ  r  rÖ   Ú	cache_keyÚcachedÚ
wvd_folderÚ_MAX_CDM_ATTEMPTSrƒ  r¡   Úseen_hashesÚdedupedrï   rº  r5  r  r9  Ústick_uaÚlic_headersrx  Ú
target_wvdÚcdmÚsessionÚdeviceÚdev_typeÚ	dev_levelr>   Ú	challenger�   r½  Ú	lic_bytesÚcontent_keysr·  Úk_kidÚk_keyr-  rØ  Úc_kidÚc_keyrV   r:  s-                                               @r?   Úget_keys_wvdrb  ¶  sÜ  ø€ ñ Ø�j  ,×"4Ñ"4Ó"6Ð!7Ð8‰	à�j ¤'§.¡.°·±Ó1BÓ"C×"MÑ"MÓ"OÐPSÐQSÐ"TÐ!UÐVˆ	à”JÑÜ˜IÑ&ˆØ�z‰z˜%Ó  &§*¡*¨UÓ"3°TÐ9Ð9ä—‘—‘œj¨%Ó0€Jð ÐØ€JÜ	‡w�w‡~�~�jÔ!¤b§g¡g§m¡m°JÔ&?ÜœŸ
™
 :Ó.Ó/ò 	?ˆAØ�z‰z˜&Õ!Ø×!Ñ!¤"§'¡'§,¡,¨z¸1Ó"=Õ>ð	?ô 
‡w�w‡~�~”hÔØ×Ñœ(Ô#ô “u€KØ€GØò 
ˆð	Ü�a˜“ð 7 "Ü—K‘K §¡£	Ó*×4Ñ4Ó6�÷7ð �ÑÜÐ0´·±·±ÀÄJÓ1OÐ0PÐPoÐpÔruÔvØØ�‰˜ÔØ�‰�qÕð
ð Ð+Ð+Ð,€JáÜÐ1°*°¸SÄÀ
È!ÐLÌcÔRØ(à�z‰z˜& "Ó%€HØ× Ñ  Ó(Òj¨H¯L©L¸ÐCiÓ,j€Gð	3ð ð 3Ø—l‘lÐ#4°bÓ9×=Ñ=¸lÈHÓUØ!ñ€Kñ
 Ø)0°°Ð'8ˆ�OÑ$à"€HØ ó Qˆ
ØˆØˆðN	Ü—[‘[ Ó,ˆFð/Ü" 6×#3Ñ#3°V¸SÓA�Ü# FÐ,<¸cÓB�	ô Ð#¤B§G¡G§O¡O°JÄ
Ó$KÐ#LÈGÐT\ÐS]Ð]eÐfoÐepÐpqÐrÔtwÔxÜ—/‘/ &Ó)ˆCØ—h‘h“jˆGô ' zÓ2ˆAäÐ*¨6¨(Ð3´SÔ9Ø×1Ñ1°'¼4À»>ÐX]Ð1Ó^ˆIÜÐ-¬c°)«nÐ-=Ð=OÐPWÐ[dÐPdÐOeÐefÐgÔilÔmà—‘�v {¸ÈB�ÓOˆAØ—4’4Ø$ Q§]¡] O°2°a·f±f¸T¸c°l°^ÐD�
ÜÐ0°°¸CÄÇÁÇÁÐPZÔ\fÓ@gÐ?hÐhiÐjÔloÔpØ%�Ü"Ô$¬Ó,rÐNqÔ,rÔ)rÜ&0°¸ÀÐS\Ô&]‘O�D˜)Ø˜s’{Ø ðPØ�? wÐ':Ø—I‘I˜gÔ&ùðQ ðLØ�? wÐ':Ø—I‘I˜gÔ&ùðM ŸI™I�	à×Ñ˜g yÔ1à24ˆLØ—\‘\ 'Ó*ó H�Ø—6‘6˜YÓ&Ü)0°·±¸Ô)>Ä:ÈaÏeÉeÏiÉiÔY\ÔC]˜AŸE™EŸIšIÔszÐ{|÷  |Añ  |Að  CHô  tIÐde×diÑdi×dmÑdmÔdoô  ORð  ST÷  SXñ  SXó  OY÷  Oañ  Oað  beð  gió  Oj�EÜ+3´G¸A¿E¹EÀ5È$Ó4OÔ+P˜AŸE™EŸI™IœKÔV]Ð^_×^cÑ^cÐejÔloÐpq×puÑpuÓlvÓVw�EØ ×'Ñ'¨¯©«¸¿¹»Ð(FÖGð	Hñ  ÜÐKÌSÔQØ$�Øð,Ø�? wÐ':Ø—I‘I˜gÔ&ùð- "‰HˆC�ÙØ$0ò ‘L�E˜5Ø × 2Ñ 2Ó 4Ó4Ø#(¨%˜S˜Ùðñ
 ™<Ø'¨™?‘��Sá‘sØ03¸CÑ(@”
˜9Ñ%Ü”ÜÐ8¸¸¸Q¸s¸eÐDÄeÔLØ˜˜T�>ðØ�? wÐ':Ø—I‘I˜g×&ò (;’?ð]Qðf ��xÒBÐ#BÐBÐB÷o7ñ 7ûäò 	Ø‹Að	ûôb ò /Ø&.Ñ#�›)ð/ûôB ò Úðû”9ò Úðû”9ò Úðû”9ò Ûðûô ò 	ÜÐ/´·±·±À
ÌJÓ0WÐ/XÐX[Ð\]Ð[^Ð_ÔadÔeÜ˜1“vˆHÛðØ�? wÐ':Ø—I‘I˜gÔ&úÜò Úðþð	ûð
Ø�? wÐ':Ø—I‘I˜gÕ&ð (;�?øäò Ùðýs  Æ\ Æ'2[3Ç\ Ë](Ë/$\ÌE.](Ò\'Ò\7Ò3A](Ó8E](Ù	]Ù "](ÚA](Û]Û3[=	Û8\ Ü \Ü\Ü\$Ü ](Ü#\$Ü$](Ü'	\4Ü3\4Ü7	]Ý]Ý	]Ý]Ý	]%Ý$]%Ý(	_%Ý1A_ Þ4_(Þ9_ß	_ß_ß _%ß%_(ß(`ß*`ß?`à	`	à`à`	à`c           	      ó  — | sy| j                  d«      dk(  ry| j                  d«      t        k(  ryt        j                  ddt	        | j                  d«      xs d	«      j                  «       j                  «       «      }|d
k(  S )z9True solo per Radio TV Serie A Lega (mai un evento DAZN).FÚsourceÚseriea_radioTr,   ú\s+ú r-   rÈ   úradio tv serie a©r–   ÚSERIEA_RADIO_ASSET_IDÚreÚsubr—   r‡   r”  )rô  r-   s     r?   Úis_radio_tv_serie_arm  P  st   € áØØ‡{�{�8Ó Ò.ØØ‡{�{�4ÓÔ1Ò1ØÜ�6‰6�&˜#œs 7§;¡;¨vÓ#6Ò#<¸"Ó=×CÑCÓE×KÑKÓMÓN€DØÐ%Ñ%Ð%r`   c                  ó¤  — 	 t        «       xs i } | j                  d«      xs i j                  d«      xs | j                  d«      xs dj                  «       }|r|S 	 t        j                  dd«      j                  d«      }t        j                  d|«      }|r'd|j                  d«      › d|j                  d	«      › d
�S y# t        $ r Y Œpw xY w)z6Link HTTPS stabile all'MPD riscritto (niente file://).rä   Úseriea_mpd_urlrÈ   r¡  ú/z^/var/www/([^/]+)/(.+)$r‚   r†   rY   z/radio_tv_seriea.mpdzAhttps://addictedbytheproject.nl/esdrongo/dazn/radio_tv_seriea.mpd)
rò   r–   r‡   r=   rR   r   Úrstriprk  ÚmatchÚgroup)rñ   ÚoverrideÚscriptÚms       r?   Ú_seriea_public_mpd_urlrw  \  sÔ   € ð
Ü‹mÒ!˜rˆà�W‰W�V‹_Ò" ×'Ñ'Ð(8Ó9ò Ø�w‰wÐ'Ó(òàß
‰%‹'ð	 	ñ
 ØˆOð ô ×Ñ  cÓ*×1Ñ1°#Ó6€FÜ
�‰Ð+¨VÓ4€AÙØ˜!Ÿ'™' !›*˜ Q q§w¡w¨q£z lÐ2FÐGÐGØNøô ò Ùðús   ‚AC Ã	CÃCc                  ó   — dddt         d   dœS )Nr  r   r   r#   )r    r!   r"   r#   )ÚSERIEA_HEADERSr_   r`   r?   Ú_seriea_cdn_headersrz  p  s   € àØ-Ø/Ü$ \Ñ2ñ	ð r`   ÚxmlÚcontent_urlc                 ó  ‡— t        |«      }|j                  j                  dd«      }|j                  › d|› |j                  j                  dd«      d   › d�}|j                  j                  dd«      Št        j                  d	d| t        j                  ¬
«      } t        j                  dd|z   dz   | dt        j                  ¬«      } ‰s| S dt        j                  dt        fˆfd„}t        j                  d|| «      S )zEBaseURL = path Chrome (senza @syna-token / :443); hdnts sui segmenti.ú:443rÈ   ú://rp  r†   r   ú&ú&amp;z<BaseURL>[^<]*</BaseURL>)Úflagsz(<MPD\b[^>]*>)z\1\n  <BaseURL>z
</BaseURL>)r©   r‚  rr  r6   c                 óš   •— | j                  d«      | j                  d«      }}d|v r| j                  d«      S d|v rdnd}|› d|› |› ‰› d�S )	Nr†   rY   zhdnts=r   r3  r�  z="rž  )rs  )rr  rØ  r^  ÚsepÚqss       €r?   Ú_add_qsz(_rewrite_seriea_mpd_xml.<locals>._add_qsŠ  sY   ø€ Ø—;‘;˜q“> 5§;¡;¨q£>ˆSˆØ�s‰?Ø—;‘;˜q“>Ð!Ø ™‰g¨ˆØ��b˜˜˜c˜U 2 $ aÐ(Ð(r`   z"\b(initialization|media)="([^"]+)")r   Únetlocr   ÚschemerI   ÚrsplitÚqueryrk  rl  ÚIÚMatchr—   )r{  r|  rš   r‡  Údir_urlr†  r…  s         @r?   Ú_rewrite_seriea_mpd_xmlrŽ  y  så   ø€ ä�kÓ"€FØ�]‰]×"Ñ" 6¨2Ó.€FØ—‘�˜s 6 (¨6¯;©;×+=Ñ+=¸cÀ1Ó+EÀaÑ+HÐ*IÈÐK€GØ	�‰×	Ñ	˜c 7Ó	+€BÜ
�&‰&Ð,¨b°#¼R¿T¹TÔ
B€CÜ
�&‰&ØØ˜WÑ$ }Ñ4ØØÜ�d‰dô€Cñ Øˆ
ð)”r—x‘xð )¤Cõ )ô �6‰6Ð7¸À#ÓFÐFr`   c                 óè  — | syt        «       }	 t        j                  | |dd¬«      }|j                  dv r’|j                  j                  d«      xs dj                  dd	«      }|j                  d	«      r8t        | «      }|j                  › d
|j                  j                  dd«      › |› �}t        j                  ||dd¬«      }n%|j                  st        j                  | |dd¬«      }|j                  rd|j                  xs dvryt        |j                  | «      }t        t        dd¬«      5 }|j                  |«       ddd«       t        S # 1 sw Y   t        S xY w# t         $ r Y yw xY w)zNMPD locale per VLC: segmenti su path hdnts Chrome, senza 307 :443/@syna-token.Nr  F)rß   rZ   Úallow_redirects)i-  i.  i/  i3  i4  ÚLocationrÈ   ú:443/rp  r  r~  Tz<MPDræ   r   rç   )rz  r   r–   r¶   rß   r   rˆ   r   rˆ  r‡  r´   r2  rŽ  rŸ   ÚSERIEA_MPD_FILEr®  r=   )r|  Úhdrsr�   Úlocr¹   r{  r¡   s          r?   Úwrite_seriea_vlc_mpdr–  ”  s:  € áØÜÓ €DðÜ�L‰L˜¨d¸BÐPUÔVˆØ�=‰=Ð5Ñ5Ø—9‘9—=‘= Ó,Ò2°×;Ñ;¸GÀSÓIˆCØ�~‰~˜cÔ"Ü˜[Ó)�ØŸ™˜
 # a§h¡h×&6Ñ&6°v¸rÓ&BÐ%CÀCÀ5ÐI�Ü—‘˜S¨$¸ÈDÔQ‰AØ—’Ü—‘˜[°$ÀÐTXÔYˆAØ�tŠt�v a§f¡f¢l°Ñ3ØÜ% a§f¡f¨kÓ:ˆÜ”/ 3°Ô9ð 	¸QØ�G‰G�CŒL÷	äÐ÷	äÐûÜò Ùðús6   �C<E% Ä(E% Ä4EÅE% ÅE"ÅE% Å"E% Å%	E1Å0E1c                 ó  — | xs dj                  dd«      } | syt        | «      }d}t        j                  d|j                  «      }|r!t        |j                  d«      «      }d|dd	œ}n5t        |j                  «      j                  d
«      xs dgd   }|syd
|dd	œ}|j                  r|j                  j                  dd«      d   nd}| | |j                  r|j                  › d|j                  › |› d�nd||j                  dœS )z=Token Lega: @syna-token nel path (40s) oppure hdnts in query.rÈ   r’  rp  Nz/@syna-token=([^/]+)/r†   z
syna-tokené(   )ÚNameÚValueÚExpirySecondsÚhdntsr   r  )r|  Úbase_manifest_urlÚbase_cdn_urlÚ	cdn_tokenÚ
base_query)r   r   rk  ÚsearchrI   r   rs  r   rŠ  r–   r‰  r‡  rˆ  )r4  rš   Úsynarv  rÖ   rœ  Ú	base_paths          r?   Ú_pack_seriea_urlr¤  ­  sû   € àŠ9�"×
Ñ
˜g sÓ
+€CÙØÜ�c‹]€FØ€DÜ
�	‰	Ð*¨F¯K©KÓ8€AÙÜ�q—w‘w˜q“zÓ"ˆØ%°ÀrÑJ‰ä˜&Ÿ,™,Ó'×+Ñ+¨GÓ4Ò<¸¸¸aÑ@ˆÙØØ ¨5À2ÑFˆØ17·²�—‘×"Ñ" 3¨Ó*¨1Ò-À"€IàØ ØLRÏMÊM˜6Ÿ=™=˜/¨¨V¯]©]¨O¸I¸;ÀaÑHÐ_aØØ—l‘lñð r`   c                  óà  — t        t        j                  «       «      } t        t        j                  «       «      j                  «       }dt        t
        dddddddd| || › d	�dd
œ}	 t        j                  t        |t        d¬«      }|j                  s"ddd|j                  › d|j                  dd › �fS |j                  «       }|j                  d«      xs dj                  dd«      }|j                  d«      dk7  s|s*dd|j                  d«      xs d|j                  d«      › �fS t!        |«      }|sddd|dd › d�fS |d   |dfS # t"        $ r}ddt        |«      fcY d}~S d}~ww xY w)zLPOST Deltatre Open Auth. SessionId/PlaybackSessionId random a ogni chiamata.r†   ÚliveÚ2ÚHTML5ÚDASHzDesktop-DASHrÈ   ÚOpenz|web_browser)ÚTypeÚVideoIdÚVideoSourceÚ	VideoKindÚ
AssetStateÚ
PlayerTypeÚVideoSourceFormatÚVideoSourceNameÚDRMTypeÚAuthTypeÚContentKeyDatar  ÚPlaybackSessionIdÚOtherÚUserr  r  Nr¯   r¢  é´   Ú
ContentUrlr’  rp  ÚResponser®   ÚMessagezEntitlement zToken Lega mancante (got é    rE   r|  )r—   rB  rC  r  ÚSERIEA_RADIO_VIDEO_IDÚSERIEA_RADIO_VIDEO_SOURCEr   r1  ÚSERIEA_ENTITLEMENT_URLry  r´   r¶   r2  rµ   r–   r   r¤  r=   )ÚsidÚpsidr
  r�   r6  r|  ÚpackrV   s           r?   Úrequest_seriea_entitlementrÄ  Ç  s{  € ä
Œd�j‰j‹lÓ
€CÜŒt�z‰z‹|Ó×"Ñ"Ó$€DàÜ(Ü0ØØØØ#Ø)ØØØØØ!Ø�5˜Ð%Øñ€Gð""Ü�M‰MÔ0°wÌÐ`bÔcˆØ�tŠtØ˜  q§}¡} o°R¸¿¹¸tÀ¸°~ÐFÐFÐFØ�v‰v‹xˆØ—x‘x Ó-Ò3°×<Ñ<¸WÀcÓJˆØ�8‰8�JÓ 4Ò'©{Ø˜˜tŸx™x¨	Ó2Ò[¸ÀTÇXÁXÈjÓEYÐDZÐ6[Ð[Ð[ô   Ó,ˆÙØ˜Ð!:¸;ÀtÈÐ;LÐ:MÈQÐOÐOÐOØ�MÑ" D¨$Ð.Ð.øÜò "Ø�Tœ3˜q›6Ð!Õ!ûð"ús2   Á'AE Â6A4E Ä+E ÅE Å	E-ÅE(Å"E-Å(E-c                 ó$  — | j                  d«      xs d}t        d|› d�t        «       t        «       \  }}}|s|sbt        d|› d|› �t        «       | j                  d«      |d|xs d	| j                  d
d«      | j                  dd«      | j                  d«      dœS |d   }t        |«       t        «       }|d   }|d   }t        |«      }	|	j                  r|	j                  j                  dd«      d   nd}
|	j                  r|	j                  › d|	j                  › |
› d�nd}| j                  d«      xs t        }t        d|› d�t        «       t        d|› �t        «       | j                  d
d«      | j                  dd«      ||d| j                  d«      i 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*t        j                   «       j#                  «       “d+d,|› d-t$        d.   › d/�“d0d1t$        d.   › d2|› d3�i¥d4œS )5zBFlusso Radio TV Serie A da Deltatre (Clear, niente Widevine/DAZN).r-   úRadio TV Serie Au   ðŸ“» [z+] Flusso Lega Serie A (Deltatre, no DRM)...õ   â�Œ [z] Entitlement Lega fallito: r,   ÚERRORzEntitlement Lega fallitor.   rÈ   Úevent_idÚepg)r,   r-   rd  Úerrorr.   rÉ  rÊ  r|  r�  rŸ  rp  r†   r   r  õ   âœ… [z] Manifest Lega Chrome/hdnts OKz   VLC: Nrd  r®   rd  re  Úmanifest_urlÚchrome_manifestrž  Úcdn_namezlegaseriea-netrwÚ
resolutionÚhdÚactual_resolutionr-  rØ  Ú
key_stringÚlicense_urlÚextracted_atÚmpv_commandúmpv "ú" --user-agent="r#   z)" --referrer="https://www.legaseriea.it/"Úffplay_commandúffplay -user_agent "z2" -headers "Referer: https://www.legaseriea.it/" "rž  )r.   rÉ  Úproxy_manifestr-   Ú	clear_keyrÊ  Ú	_internal)r–   rF   rM   rÄ  rU   r–  rw  r   rI   r‰  r‡  rˆ  rj  rG   r3  r   rk   r[  ry  )rô  Úchannel_namer|  rÃ  ÚerrÚ
chrome_urlÚplay_urlÚbaserÖ   rš   r£  Úbase_cdnÚcids                r?   Úextract_seriea_radiorå  î  sÏ  € à—;‘;˜vÓ&Ò<Ð*<€LÜˆ&��ÐIÐJÌDÔQÜ7Ó9Ñ€K��sÙ
‘$Üˆe�L�>Ð!=¸c¸UÐCÄSÔIà—+‘+˜dÓ#Ø ØØÒ6Ð6Ø—K‘K ¨Ó+ØŸ™ J°Ó3Ø—;‘;˜uÓ%ñ
ð 	
ð �mÑ$€JÜ˜Ô$Ü%Ó'€HØÐ#Ñ$€DØ�Ñ€EÜ�d‹^€FØ17·²�—‘×"Ñ" 3¨Ó*¨1Ò-À"€IØCIÇ=Â=�&—-‘-�  F§M¡M ?°9°+¸QÑ?ÐVX€HØ
�+‰+�dÓ
Ò
4Ô4€CÜˆ%�ˆ~Ð<Ð=¼uÔEÜˆ(�8�*ÐœsÔ#à—‘˜F BÓ'Ø—K‘K 
¨BÓ/Ø"ØØØ�{‰{˜5Ó!ð
Ø�#ð
à�dð
ð �nð
ð ˜Hð	
ð
 ˜zð
ð   ð
ð ˜Hð
ð Ð*ð
ð ˜ð
ð ˜$ð
ð   ð
ð �4ð
ð �4ð
ð ˜$ð
ð ˜2ð
ð  œHŸL™L›N×4Ñ4Ó6ð!
ð" ˜U 8 *Ð,<¼^ÈLÑ=YÐ<Zð  [Dð  Eð#
ð$ Ð 4´^ÀLÑ5QÐ4Rð  SEð  FNð  EOð  OPð  Qñ%
ñð r`   rß  c                 ó‚   ‡— | xs dj                  «       Št        ˆfd„dD «       «      ryt        ˆfd„dD «       «      ryy)	aÎ  Classifica un errore Playback in 3 categorie:
    - 'throttle': blocco edge/IP (429, CloudFront, 10405...). Insistere peggiora
      il blocco: la run va fermata, non ritentata.
    - 'account': diniego legato a QUESTO account (Pin, geo/country, entitlement,
      concorrenza...). Inutile riprovare con lo stesso token, ma ha senso far
      provare la rotazione con un altro account.
    - 'transient': tutto il resto (errori rete, 5xx...). Ha senso riprovare.rÈ   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr¾   r_   ©r�  r·  rV   s     €r?   r’  z*classify_playback_error.<locals>.<genexpr>0  s   øè ø€ ò G�aˆ1�Œ6ñ Gùó   ƒ)	Ú429útoo many requestsú
rate limitú
rate-limitz!security policy has been breachedzrequest limitingzrequest blockedÚ
cloudfrontÚ10405Úthrottlec              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr¾   r_   rè  s     €r?   r’  z*classify_playback_error.<locals>.<genexpr>4  s   øè ø€ ò -�aˆ1�Œ6ñ -ùré  )Úpinz	not validzno articlesz	not foundÚ404ÚeligibilityÚentitlementÚgeoÚconcurrencyznot allowedÚ	forbiddenÚdeniedÚinactiveÚsignedinactiveÚ401Ú403Ú10400ú	trust 2faú2fa requiredÚaccountÚ	transient)r”  r˜  ©rß  rV   s    @r?   Úclassify_playback_errorr  '  sV   ø€ ð 
Š�×ÑÓ€AÜ
ó Gð Fô Gô Gð Ü
ó -ð ,ô -ô -ð
 Ør`   c                 óJ   — | xs dj                  «       }d|v xs
 d|v xs d|v S )uK   True se DAZN ha rifiutato il playback perchÃ© l'account richiede Trust 2FA.rÈ   rþ  rÿ  r   r9  r  s     r?   Úis_trust_2fa_errorr  =  s2   € à	Š�×ÑÓ€AØ�aˆ<ÒB˜;¨!Ð+ÒB¨~ÀÐ/BÐBr`   Úmax_retriesc                 óª  ‡S‡T‡U— t         j                  «       }|j                  dd«      }| j                  dd«      }d}d}	d}
d}d}i }d}d}d}d}i }d\  }}d}t        d	|d	z   «      D �	]Ê  }t	        | ||«      }|d	k(  rt        d
|› d�t        «       nt        d|› d|› d|› d�t        «       t        ||||«      \  }ŠT‰Ts|�s‰Tr«t        ˆTfd„dD «       «      r—t        d|› d�t        «       |j                  dd«      }|j                  dd«      }t        ||||¬«      }|rN|}t        |«      \  }}}|j                  d|«      }t        d|› d�t        «       t        j                  d«       �Œ‰Tr]dt        ‰T«      v rPt        d|› d�t        «       t         j#                  | j                  d«      «       | j                  d«      |d‰Tdœc S t%        ‰T«      }|dk(  r.t        d|› d ‰T› �t&        «       | j                  d«      |d!‰Tdœc S |d"k(  rYt)        ‰T«      rd#nd$}|d#k(  rt        d%|› d&‰T› �t        «       nt        d'|› d(‰T› �t        «       | j                  d«      ||‰Tdœc S ‰Trt        d)|› d*‰T› d+�t        «       ||k  rt        j                  d,«       �Œ8t        d-‰T› �t&        «       | j                  d«      |d$‰Tdœc S |j                  d.i «      }|j                  d/«      r|j                  d/«      }|j                  d0g «      } |}| sD||k  rt        j                  d,«       �ŒÉt        d1t&        «       | j                  d«      |d2d3dœc S g d4¢ŠUˆUfd5„}!t+        | |!¬6«      }"|d	k(  rÙt        d7t-        |"«      › d8�t.        «       t1        |"«      D ]®  \  }#}$|$j                  d9d:«      }%|$j                  d;d«      }&|$j                  d<i «      }'t3        |'t4        «      r|'j                  d=d«      d>d? nt        |'«      d>d? }(d@|&v })t7        |$j9                  «       «      }*t        dA|#› dB|%› dC|)rdDndE› dF|(› dG|*› �
t.        «       Œ° t;        |«      }+|j                  dHi «      j                  dIi «      },|,j                  dJdK«      }-|j                  dL«      xs i j                  dM«      }.|.�r\|�sY|"dN   }/|/j                  d;d«      }0|/j                  d<i «      }1t3        |1t4        «      r|1j                  dOdP«      ndP}2t3        |1t4        «      r|1j                  d=d«      nt3        |1t        «      r|1nd}3|0r|3r|0› d:|0v rdQnd:› |2› dR|3› �}0|0r¿t=        |.| j                  d|j                  dSd«      «      |0||d>||¬T«      \  }}ŠS|sB‰Sr@t        ˆSfdU„dVD «       «      r,t        dW|› dX�t        «       | j                  d«      |d$‰Sdœc S |sB‰Sr@t        ˆSfdY„dZD «       «      r,t        d|› d[�t        «       | j                  d«      |d$‰Sdœc S |"D �]ß  }4|4j                  d\d«      }5|4j                  d;d«      }6|4j                  d<i «      }7|4j                  d]d«      }8|4j                  d9d«      }9|7j                  dOdP«      }:|7j                  d=d«      };|:r+|;r)d:|5v rdQnd:}<|5› |<› |:› dR|;› �}=|6rd:|6v rdQnd:}>|6› |>› |:› dR|;› �}6n|5}=d^d_|-|,j                  d`da«      |,j                  dbdc«      |,j                  ddde«      dfœ}?|:r|;r
|:› dR|;› �|?dg<   	 |+j                  |=|?dh¬i«      }@|@j>                  r@j@                  nd}Ad}BdN}CA�rï	 tE        jF                  A«      }D|DjI                  dj«      D ]î  }E|Ej                  dk«      dlk(  sŒdN}Fdm}GEjI                  dn«      D ]«  }H|Hj                  do«      }I|Hj                  dp«      }J|Hj                  dq«      }K|IrFIjK                  «       r6tM        I«      Fk\  r(tM        I«      }FJrJjK                  «       rtM        J«      }GKsŒ�KjK                  «       sŒ’tM        K«      CkD  sŒ¡tM        K«      }CŒ­ FdNkD  rF› drGdmkD  rGnd› �}B n tO        A«      \  }L}M|LrÇ|6rÅ|sÃt=        L| j                  d|j                  dSd«      «      |6||M||¬T«      \  }}ŠS|sD‰SrBt        ˆSfds„dVD «       «      r.t        dW|› dX�t        «       | j                  d«      |d$‰Sdœc c S |sD‰SrBt        ˆSfdt„dZD «       «      r.t        d|› d[�t        «       | j                  d«      |d$‰Sdœc c S |=}|5}	|9}
|8}B}|7}|6}|:r	|;r|:› dR|;› �nd}N|N}du|=› dv|-› dw�}O|Nr	OdxN› dw�z  }O|r,|r*Ody|› dz|› dw�z  }Od{|-› dw�}PNr	Pd|N› dw�z  }PPd}|› d~|=› dw�z  }Pnd{|-› dw�}PNr	Pd|N› dw�z  }PPd~|=› dw�z  }PO}P}|s�Œž|s�Œ¢Cr	dCd€z  › d��nd}Qt        d‚B› |Q› dƒ|8jQ                  «       › d„�d…|Bv rt        nt        «        n |r|r n<||k  s�	Œ™t        d)|› d†|d	z   › d|› d‡�t        «       t        j                  dˆ«       �	ŒÍ |r|rd‰n|rdŠnd$}| j                  d‹d«      |j                  dŒd«      d�| j                  d|j                  dS«      «      › dŽ�||r	|r|› dz|› �nd>| j                  d�«      d�œ}Ri d| j                  d|j                  dS«      «      “d‘|“d’|“d“|	“d”|
“d•|“d–|“d—|“d˜|“d™|“dš|“d›|r	|r|› dz|› �nd>“dœ|rd�|› �nd>“dž|“dŸ|“d |“d¡tS        jT                  «       jW                  «       “Rd¢<   |RS # tB        $ r d}AY �Œ	w xY w# tB        $ r Y �Œúw 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.
    rN  rÈ   r-   zDAZN ChannelÚfhdrÿ  rÊ  Fr†   zRichiesta Playback per 'ú'...õ   ðŸ”� [z] Tentativo rp  z&: riprovo estrazione Playback & DRM...c              3   óT   •K  — | ]  }|t        ‰«      j                  «       v –— Œ! y ­wr¾   ©r—   r”  )r�  r·  rß  s     €r?   r’  z"extract_channel.<locals>.<genexpr>e  s!   øè ø€ Ò}°Q˜1¤ C£§¡Ó 0Ô0Ñ}ùó   ƒ%()Ú
registeredzdevice is notÚregisterznot allowed to playu.   ðŸ“± Registrazione dispositivo richiesta per 'z', chiamo RefreshAccessToken...rŒ   r;  )r9  rÙ   r  u2   âœ… Dispositivo registrato! Riprovo Playback per 'g      ð?ÚEligibilityu   â›” [u6   ] Eligibility not allowed â€” evento escluso dal JSON.r,   ÚELIGIBILITY_BLOCKED)r,   r-   rd  rË  rð  z"] Throttle edge/IP, niente retry: Ú	THROTTLEDr  ÚACCOUNT_2FArÈ  õ   ðŸ”’ [z/] Trust 2FA su questo account, provo un altro: u   ðŸš« [z7] Diniego per questo account, passo oltre senza retry: õ   âš ï¸� [z] Errore temporaneo: u    â€” riprovo...g      ø?zErrore Playback: ÚAssetÚTitleÚPlaybackDetailsz1Nessun PlaybackDetails disponibile nella rispostaÚ
NO_STREAMSzNessun PlaybackDetails trovato)zdca-de-livezdcb-de-liveÚdezdca-fs-livezdcb-fs-livezdcs-fs-livezdct-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ç  )r–   r”  Ú	enumerate)ÚdÚc_nameÚidxÚprefÚ
pref_orders       €r?   Ú	cdn_scorez"extract_channel.<locals>.cdn_score·  sE   ø€ Ø—U‘U˜9 bÓ)×/Ñ/Ó1ˆFÜ& zÓ2ò ‘	��TØ˜6’>Ø’Jðð r`   )rØ  u   ðŸ”� DEBUG PlaybackDetails: z CDN disponibilir   r3  ÚLaUrlÚCdnTokenrš  Nr	  ÚeyJú  [z] CDN=z | LaUrl_has_jwt=ÚYESÚNOz	 | Token=z... | Keys=rä   rß   r*   rÎ   ÚLicenseÚPsshr   r™  ú
dazn-tokenr€  rþ   ÚId)r¿  r  r)  rI  r*  rñ  r  rÖ   c              3   óT   •K  — | ]  }|t        ‰«      j                  «       v –— Œ! y ­wr¾   r  ©r�  r·  Údrm_errs     €r?   r’  z"extract_channel.<locals>.<genexpr>ä  s)   øè ø€ ò  /LÈQ¨q´C¸³L×4FÑ4FÓ4HÔ/Hñ  /Lùr  )rë  rê  rì  rí  õ   â�³ [zZ] Rate limit server licenze (429): mi fermo su questo canale per non peggiorare il blocco.c              3   óT   •K  — | ]  }|t        ‰«      j                  «       v –— Œ! y ­wr¾   r  r3  s     €r?   r’  z"extract_channel.<locals>.<genexpr>ç  s)   øè ø€ ò  /SÈQ¨q´C¸³L×4FÑ4FÓ4HÔ/Hñ  /Sùr  )z not allowed to receive a licenser;  zlicense deniedz/] 10802 su questo CDM: inutile altri CDN/retry.ÚManifestUrlÚ
Resolutionr$   r%   rÐ   rË   rÑ   rÌ   rÒ   rÍ   )r!   r"   r#   rÐ   rÑ   rÒ   ÚCookier  r  z/.//{urn:mpeg:dash:schema:mpd:2011}AdaptationSetrÍ  rÎ  r  z-{urn:mpeg:dash:schema:mpd:2011}RepresentationÚheightÚ	frameRateÚ	bandwidthr¹   c              3   óT   •K  — | ]  }|t        ‰«      j                  «       v –— Œ! y ­wr¾   r  r3  s     €r?   r’  z"extract_channel.<locals>.<genexpr>6  s*   øè ø€ ò  3PÐQR°1¼¸G»×8JÑ8JÓ8LÔ3Lñ  3Pùr  c              3   óT   •K  — | ]  }|t        ‰«      j                  «       v –— Œ! y ­wr¾   r  r3  s     €r?   r’  z"extract_channel.<locals>.<genexpr>>  s*   øè ø€ ò  3WÐQR°1¼¸G»×8JÑ8JÓ8LÔ3Lñ  3Wùr  r×  rØ  rž  z --http-header-fields="Cookie: z" --demuxer-lavf-o="decryption_key=rƒ   rÚ  z -headers "Cookie: z -cenc_decryption_key z "z @ r¬   z kbpszRisoluzione stream: z (Profilo API: rE   Ú1080z@] Solo Manifest (chiavi DRM non ancora pronte). Nuovo tentativo z
 tra 2s...rY   r®   ÚMANIFEST_ONLYr.   ÚEventIdz*https://addictedbytheproject.nl:8443/play/z/stream.mpdrÊ  ©r.   rÉ  rÛ  r-   rÜ  rÊ  rd  rÍ  r�  rÏ  rÐ  rÒ  rŸ  rÔ  r-  rØ  rÓ  Úcookie_headerzCookie: Úmpv_cmdrÖ  rÙ  rÕ  rÝ  ),rî   r¤   r–   Úranger  rF   rM   rL   r(  r˜  rH  r  rG   r²   rZ  r—   r   rE  r  rU   r  r@  rŠ   r3  r!  r”   r•   r±   Úkeysr0  rb  r´   r2  r=   rÛ  rÜ  ÚfindallÚisdigitrÄ   ró  r  r   rk   r[  )Vrô  rI  rÖ   r*  r  r  rS  rÞ  Ú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-  rØ  Úlicense_refreshedÚattemptr  Úplayback_datar9  rÙ   Úref_tokr_  Úerr_kindrd  ÚassetÚdetails_listr'  Úsorted_detailsr$  ÚdetÚcdn_nÚlaÚctÚct_valÚhas_jwtrF  r>   Údazn_headersÚuaÚ	json_psshÚd0Úla0Úct0Útn0Útv0r"  Úraw_manifest_urlr)  rŸ  rÐ  rÏ  Ú
token_nameÚ	token_valr„  Úcomposed_manifest_urlÚla_sepÚmpd_headersÚr_mpdÚmpd_textrÒ  Úmax_bandwidthræ  ré  Úmax_hÚmax_fpsÚrepr5  ÚfpsÚbwr¿  rñ  Ú
cookie_hdrrD  Ú
ffplay_cmdÚbw_strÚresult_entryr4  rß  r&  sV                                                                                      @@@r?   Úextract_channelr|  B  sí  ú€ ô ×'Ñ'Ó)€JØ×"Ñ" :¨rÓ2€IØ—;‘;˜v ~Ó6€Là!#ÐØÐØ€MØ€OØ&ÐØ€NØ€KØ€OØ€LØ€OØ€JØ�H€CˆØÐä˜˜K¨!™OÓ,ó RˆÜ)¨'°6¸9ÓEˆØ�aŠ<ÜÐ*¨<¨.¸Ð=¼tÕDä�&˜˜ l°7°)¸1¸[¸MÐIoÐpÔrxÔyä2°<ÀÈÐPZÓ[Ñˆ�sÙ’má”sÓ}Ð:|Ô}Ô}ÜÐDÀ\ÀNÐRqÐrÔtxÔyØ(×,Ñ,¨V°RÓ8�Ø*×.Ñ.¨z¸2Ó>�	Ü,¨U¸GÈyÐeoÔp�ÙØ#�EÜ+=¸gÓ+FÑ(�A�q˜.Ø .× 2Ñ 2°:¸yÓ I�IÜÐLÈ\ÈNÐZ^Ð_ÔafÔgÜ—J‘J˜s”OÙñ �}¬¨C«Ñ0Ü�e˜L˜>Ð)_Ð`ÔbhÔiÜ(×,Ñ,¨W¯[©[¸Ó->Ô?à!Ÿ+™+ dÓ+Ø(Ø3Ø ñ	ò ô /¨sÓ3ˆHØ˜:Ò%Ü�e˜L˜>Ð)KÈCÈ5ÐQÔSVÔWà!Ÿ+™+ dÓ+Ø(Ø)Ø ñ	ò ð ˜9Ò$Ü*<¸SÔ*A™Àw�Ø˜]Ò*Ü˜&  Ð.]Ð^aÐ]bÐcÔekÕlä˜&  Ð.eÐfiÐejÐkÔmsÔtà!Ÿ+™+ 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ñ	ò ò Sˆ
ô	ô   °)Ô<ˆð �aŠ<ÜÐ.¬s°>Ó/BÐ.CÐCSÐTÔVYÔZÜ% nÓ5ò B‘��SØŸ™ 	¨3Ó/�Ø—W‘W˜W bÓ)�Ø—W‘W˜Z¨Ó,�Ü5?ÀÄDÔ5I˜Ÿ™ ¨Ó,¨S¨bÑ1ÌsÐSUËwÐWZÐXZÈ|�Ø 2˜+�Ü˜CŸH™H›JÓ'�Ü�c˜#˜˜f U GÐ+<Ág¹UÐSWÐ<XÐXaÐbhÐaiÐitÐuyÐtzÐ{ô  ~Aõ  BðBô ˜:Ó&ˆØ—z‘z &¨"Ó-×1Ñ1°)¸RÓ@ˆØ×Ñ˜lð  -ló  mˆà"×&Ñ& yÓ1Ò7°R×<Ñ<¸VÓDˆ	ÚšSØ Ñ"ˆBØ—&‘&˜ "Ó%ˆCØ—&‘&˜ RÓ(ˆCÜ3=¸cÄ4Ô3H�#—'‘'˜& ,Ô/ÈlˆCÜ*4°S¼$Ô*?�#—'‘'˜' 2Ô&ÌZÐX[Ô]`ÔMaÁcÐgiˆCÙ‘sØ˜ S¨C¡Z™c°SÐ9¸#¸¸aÀ¸uÐE�ÙÜ$0Ø&Ø$Ÿ[™[¨¨u¯y©y¸¸rÓ/BÓCØØ!Ø#1Ø!%Ø)Øô	%Ñ!��S˜'ñ ™w¬3ó  /Lð  SKô  /Lô  ,LÜ˜% ˜~ð  .Hð  Iô  KQô  RØ")§+¡+¨dÓ"3¸\ÐU\ÐgnÑoÒoÙ™w¬3ó  /Sð  SRô  /Sô  ,SÜ˜% ˜~Ð-\Ð]Ô_eÔfØ")§+¡+¨dÓ"3¸\ÐU\ÐgnÑoÒoàó {	ˆ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Ð%áØ$'¨6¡M™S°s�FØ &˜x¨ x°
¨|¸1¸Y¸KÐH‘Fà(8Ð%ð 1Ø2Ø Ø)×-Ñ-¨kÐ;ó  AØ$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ð
<ð  % qšyØ7<°g¸QÈ'ÐTVÊ,¹wÐ\^Ð>_Ð4`Ð 1Ù!ð#"ô* *?¸xÓ)HÑ&�˜,Ù¡©sÜ(4Ø!)Ø!(§¡¨T°5·9±9¸TÀ2Ó3FÓ!GØ%Ø%Ø'5Ø%1Ø#-Ø#ô	)Ñ%�C˜˜gñ ¡7¬só  3Pð  WOô  3Pô  0PÜ˜e L >ð  2Lð  Mô  OUô  Và")§+¡+¨dÓ"3Ø$0Ø&-Ø%,ñ	 ô ñ ¡7¬só  3Wð  WVô  3Wô  0WÜ˜e L >Ð1`ÐaÔciÔjà")§+¡+¨dÓ"3Ø$0Ø&-Ø%,ñ	 ô ð *?Ð&Ø$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]ô  ^Ùðw{	ñz ‘3Ùà�[Ô Ü�(˜<˜.Ð(hÐipÐstÑitÐhuÐuvð  xCð  wDð  DNð  Oô  QWô  XÜ�J‰J�qŽMðeRñh ™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�Ñð& ÐøôA ò Ø“ðûô4 !ò Úðús=   Ü
.l3Ý =mÝ>Bmàmà%mà4#mì3mímí	mímrá   Úinclude_eventsc                 óP(  ‡Y— t        «       }t        «        t        j                  |j	                  di «      j	                  d«      ¬«       t        || «      }|st        dt        «       i S t        |«      \  }}}|€V|j	                  di «      j	                  dg «      j                  «       }|rt        «       }t        ||«      }n|}t        |«      }|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„ ŠYd·d„}t"        j$                  j'                  t"        j$                  j)                  t*        «      d«      }g }t"        j$                  j-                  |«      rL	 t/        |dd¬«      5 }|D �cg c])  }d|v sŒ|j1                  d«      rŒ|j3                  «       ‘Œ+ }}ddd«       d}i }t7        «       }d}d}t9        |d«      D �]q  \  }}	|	j	                  d|	j	                  dd|› �«      «      }t;        d|d›dt        |«      › d|d›�dd ¬!«       d}t=        |	«      r�t?        |	«      }|j	                  d"«      xs! |j	                  d#i «      j	                  d"«      }|d$k(  rt;        d%«       nt;        d&|j	                  d'd(«      › d)�«       |
jA                  |«       ŒÜ|rt        |«      nd}t7        «       }d}tC        |«      D �]ô  } |}!|}"d}|�r:d}#tC        t        |«      «      D ];  }$||t        |«      z     }%|dz  }|%jE                  dd«      \  }&}'|&|v s|&|v rŒ7|%}#|&} n |#s �n’|jG                  |«       ||v r-||   \  }!}"t;        d*|jE                  d+«      d   › d)�dd ¬!«       nŸt;        d,|jE                  d+«      d   › d-�dd ¬!«       t        jI                  «       }(tK        |'|(«      \  })}*|)d.k(  r,|*r*tM        |*|(¬/«      xs |*}+|+}!t        |!«      \  }}}"|!|"f||<   n&t;        d0dd ¬!«       |)d1k(  r|jG                  |«       �ŒGtO        |	||!|"«      } ‰Y|«      },|,d2k(  rZ|r|jE                  d+«      d   nd3}-|r#|jG                  |«       |jQ                  |d«       t        d4|› d5|-› d6�t        «       |r�Œº n<|,d7v r n6|r1|r|jE                  d+«      d   nd8}-t        d9|› d:|-› d;�t        «       �Œõ n |r ‰Y|«      nd}.|.d<v xs
 |.d2k(  xr | }/|/s*t        d9|› d=�t        «       tO        |	|||«      } ‰Y|«      },|s�ŒF|
jA                  |«        ‰Y|«      },|,d>k7  rd}|,d>k(  r;|dz  }t;        t        › d?|› d@tR        › �«       |dAk\  s�Œ’t        dBt        «       d } nÏ|,dCk(  rt;        t        › dDtR        › �«       �ŒÅ|,d2k(  rt;        t        › dEtR        › �«       �Œä|,d$k(  r? ||dFd«      }0 ||dGd«      }1t;        tT        › dH|0ddI › dJ|1ddI › dKtR        › �«       |dz  }�Œ(|,dLk(  rt;        t        › dMtR        › �«       �ŒGt;        t        › d&|j	                  d'dN«      › d)tR        › �«       �Œt t9        |
«      D �2�3cg c]  \  }2}3 ‰Y|3«      dLk(  sŒ|2‘Œ }4}2}3|rt        dOt        «       |4r©|s§t        dPt        |4«      › dQ�t         «       tW        jX                  dA«       |4D ]p  }2||2   }5|5j	                  ddR«      }6t        dS|6› dT�t        «       tO        |5|||dU¬V«      }7 ‰Y|7«      d$k(  sŒJ|7|
|2<   |dz  }t        dW|6› dX ||7dY«      › �tT        «       Œr t9        |
«      D �2�3cg c]5  \  }2}3|3j	                  d'«      rdZt[        |3j	                  d'd«      «      v r|2‘Œ7 }8}2}3|8�r |�s�t"        j$                  j'                  t"        j$                  j)                  t*        «      d«      }g }9t"        j$                  j-                  |«      rL	 t/        |dd¬«      5 }|D �cg c])  }d|v sŒ|j1                  d«      rŒ|j3                  «       ‘Œ+ }9}ddd«       |9st        d[t        |8«      › d\�t        «       �nÎt        d]t        |8«      › d^�t         «       i }t7        |«      }:d};|8D �]œ  }2||2   }5|5j	                  ddR«      }6d}<t]        d_t        |9«      «      }=tC        |=«      D �]D  }|9|;t        |9«      z     }#|;dz  };|#jE                  dd«      \  }&}'|&|:v rŒ4|&|v r	||&   \  }>}?n˜t        d`|6› da|&› db�t         «       t        jI                  «       }(tK        |&|'|(«      \  })}>|)d.k7  s|>s-t        dc|&› dd�t        «       di f||&<   |:jG                  |&«       Œ°t        |>«      \  }}}?|>|?f||&<   t        de|&› �tT        «       |>sŒÜt        df|6› dg|&› db�t        «       tO        |5||>|?d_¬V«      }7 ‰Y|7«      },|,d$k(  r/|7|
|2<   |dz  }t        dh|6› di|&› dj ||7dY«      › �tT        «       d }< �n	|,dLk(  r |7|
|2<   t        dk|6› dl|&› dm�t        «       d }< nä|,d2k(  st_        |7j	                  d'«      «      rMt        dn|6› d5|&› do�t        «       |:jG                  |&«       |jQ                  |&d«       |jG                  |&«       �ŒÐ|7j	                  d'«      r6dZt[        |7j	                  d'd«      «      v rt        dp|6› dq|&› dr�t`        «       �Œ|7|
|2<   t        ds|6› dt|&› dj|7j	                  d'dN«      › �t        «        n |<r�Œ‰t        dk|6› du�t        «       �ŒŸ tc        dv„ |
D «       «      }@|@rt        d[@› dw�t        «       dg}dg}A|j	                  di «      j	                  dxi «      j	                  dyd«      }Bte        ||
«      D �]ß  \  }	} ‰Y|«      },|,dzv sŒ ||dFd«      }0 ||dGd«      }1 ||d{d«      }C|j	                  d|d«      }D|j	                  d}«      xs |	j	                  d}d«      }E|Erd~E› d�nd}Ftg        |	j	                  d€«      «      }Gt=        |	«      xs  ||d�«      d‚k(  }H|Hrdƒ}Inti        |	«      rd„}InGrd…}Ind„}I|s|,d$k(  r ||d†«      } ||d‡«      }tk         ||dˆi «      tl        «      r ||dˆi «      j	                  d‰d«      nd}Jtk         ||dˆi «      tl        «      r ||dˆi «      j	                  dŠd‹«      nd‹}K|Kr
JrdŒK› d�J› �nd}L ||dd«      }M|jA                  dŽ|M› d�|j	                  d«      › dF› d�I› d‘|j	                  d«      › �
«       |jA                  d’«       |jA                  d“«       |jA                  d”«       |jA                  d•«       |jA                  d–«       |0r*|1r(|jA                  d—«       |jA                  d˜|0› d|1› �«       HrI|jA                  d™tn        dš   › d›�«       |jA                  dœtn        dš   › �«       |jA                  d�«       n>Br<|jA                  d™B› džL› �«       |jA                  dœ|B› �«       |jA                  dŸ«       |jA                  C«       Hr�AjA                  dŽM› d�|j	                  d«      › dF› d�I› d‘|j	                  d«      › �
«       |AjA                  d’«       |AjA                  d“«       |AjA                  d™tn        dš   › d›�«       |AjA                  C«       �ŒCAjA                  dŽM› d�|j	                  d«      › dF› d�I› d‘|j	                  d«      › �
«       |AjA                  d’«       |AjA                  d“«       |0r*|1r(AjA                  d «       |AjA                  d˜|0› d|1› �«       AjA                  D«       �Œâ g }Ng }O|
D �]7  }3 ‰Y|3«      },|,dzv sŒ|3j	                  d#i «      }PNjA                  |3j	                  d}d«      |3j	                  d¡d«      |3j	                  d|d«      |3j	                  dd«      |3j	                  d¢«      |3j	                  d€«      d£œ«       |3j	                  d}d«      |3j	                  d¡d«      |3j	                  d|d«      |3j	                  dd«      |3j	                  d¢«      |3j	                  d€«      d£œ}Q|Qjq                  |P«       |Pj	                  d�«      d‚k(  r�Œ'OjA                  Q«       �Œ: |
D �3cg c]  }3 ‰Y|3«      d¤vsŒ|3‘Œ }R}3tc        ˆYfd¥„|
D «       «      }S|Srt        d¦S› d§�t        «       ts        jt                  «       jw                  «       }T|Tt        |«      |Nd¨œ}Ut/        tx        d©d¬«      5 }t{        j|                  U|dAd¬ª«       ddd«       Tt        |«      |t        jI                  «       ORd«œ}Vt/        t~        d©d¬«      5 }t{        j|                  V|dAd¬ª«       ddd«       t/        t€        d©d¬«      5 }|jƒ                  d¬j'                  |«      d¬z   «       ddd«       t/        t„        d©d¬«      5 }|jƒ                  d¬j'                  A«      d¬z   «       ddd«       |rPt"        j$                  j'                  t†        d­«      }Wt/        |Wd©d¬«      5 }|jƒ                  d®|› d¯�«       ddd«       |rPt"        j$                  j'                  t†        d°«      }Xt/        |Xd©d¬«      5 }|jƒ                  d®|› d¯�«       ddd«       t        d±tˆ        › tx        › tR        › d²|› dt        |«      › d³�	tT        «       t        d´tˆ        › t€        › tR        › �tT        «       |r#t        dµt         «       t        d¶|› �t        «       US c c}	w c c}w # 1 sw Y   �ŒªxY w# t4        $ r Y �Œ¹w xY wc c}3}2w c c}3}2w c c}w # 1 sw Y   �Œ`xY w# t4        $ r Y �Œow xY wc c}3w # 1 sw Y   �ŒYx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   �ŒgxY w# 1 sw Y   �Œ"xY w)¸zUEstrae tutti i canali/eventi configurati, risolve le chiavi DRM e aggiorna JSON & M3Urä   rÞ   ©ry   zNERRORE CRITICO: Nessun token DAZN disponibile! Configuralo in dazn_config.jsonNrá   z"Nessun canale o evento da estrarrer,   u   ðŸš€ 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 )Nrd  rÝ  ©r–   )r�   s    r?   Ú_get_statusz)extract_and_save_all.<locals>._get_status¶  s+   € Ø�u‰u�X‹ÒF !§%¡%¨°RÓ"8×"<Ñ"<¸XÓ"FÐFr`   rÈ   c                 óF   — | j                  di «      j                  ||«      S )NrÝ  r�  )r�   rØ  Údefaults      r?   Ú_get_internalz+extract_and_save_all.<locals>._get_internal¸  s    € Ø�u‰u�[ "Ó%×)Ñ)¨#¨wÓ7Ð7r`   rL  r�   r   rç   rƒ   r€   Fr†   r-   zCanale r+  Ú2drp  rh   z<25rg  T)Úendri   rd  rÝ  r®   u   âœ… OK (Lega/Deltatre, no DRM)u   â�Œ Errore (rË  rõ  rE   ú(r…   z(login z)...r*  rM  z[fail]r&  r  ztoken principaleu   
ðŸ”’ [z] Trust 2FA su z(: account scartato, provo il prossimo...)r®   r  r  u
   
âš ï¸�  [z] Non riuscito con z., provo account alternativo da accounts.txt...)r®   r  r  z[] Tutti gli account hanno fallito (o fallito login). Tento fallback col token principale...r  u   â›” Throttle edge/IP (z/2)rY   ui   ðŸ›‘ Throttle IP confermato: fermo la run per non peggiorare il blocco. Fai pausa 15-30 minuti e riprova.r  u%   â›” Eligibility not allowed (escluso)u"   ðŸ”’ Trust 2FA (tutti gli account)r-  rØ  u   âœ… OK (r‹  z...:z...)r@  u2   âš ï¸�  Solo Manifest (in coda per sweep di retry)rO  uD   â�­ï¸� Sweep di retry saltati (throttle IP: niente altre richieste).u   ðŸ”„ Rilevati z= canali con 'Solo Manifest'. Avvio sweep di retry dedicato...ÚEventou1   ðŸ”� Secondo tentativo di estrazione chiavi per 'r
  r   )r  u(   âœ… Chiave recuperata con successo per 'z': rÓ  ÚConcurrencyu   âš ï¸� 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...rã   u   ðŸ”‘ [z ] Login con account alternativo rC   u   â�Œ Login fallito per z, provo il prossimo account...u   âœ… Login riuscito con r  z] Retry con account rÌ  z] Recuperato con successo via r¢  r  z] Solo Manifest via z (senza chiavi DRM)r  z(, account scartato, provo il prossimo...r5  z] Ancora Concurrency con z, provo un altro account...rÇ  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È   r†   N)r–   r—   )r�  r�   s     r?   r’  z'extract_and_save_all.<locals>.<genexpr>¬  s7   è ø€ Òn !°!·%±%¸µ.À]ÔVYÐZ[×Z_ÑZ_Ð`gÐikÓZlÓVmÒEmœAÑnù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Ê  rd  re  rÆ  zDAZN CanalizDAZN Eventi LiverÙ  rÖ  rŸ  rš  r™  r0  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=r#   z#&Referer=https://www.legaseriea.it/z#EXTVLCOPT:http-user-agent=z3#EXTVLCOPT:http-referrer=https://www.legaseriea.it/z&Referer=https://www.dazn.com/z.#EXTVLCOPT:http-referrer=https://www.dazn.com/z4#KODIPROP:inputstream.adaptive.license_type=clearkeyrÉ  rÜ  rB  )r®   r@  r  c              3   ó:   •K  — | ]  } ‰|«      d k(  sŒd–— Œ y­w)r  r†   Nr_   )r�  r�   r‚  s     €r?   r’  z'extract_and_save_all.<locals>.<genexpr>  s   øè ø€ ÒZ !±+¸a³.ÐDYÓ2YœAÑZùs   ƒ”u   â›” zD eventi esclusi per Eligibility not allowed (non saranno ritentati).)rU  Útotal_channelsÚ
keys_foundrá   ræ   rè   )rU  r�  rŽ  Ú
proxy_usedrá   Úfailed_channelsrp   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È   )Erò   rú   rî   r{   r–   rl  rF   rU   r  ÚcopyÚfetch_live_eventsÚ_merge_live_into_baseÚ_ensure_static_seriearL   r   rŠ   rM   rH   rI   rW  rX  rY  rJ   rŸ   rˆ   r‡   r=   rC  r!  rj   rm  rå  r    rE  r‰   rE  r¤   r8  rH  r|  Úpoprm   rG   r²   rZ  r—   Úminr  r3  ÚsumÚziprÅ   Ú_is_linear_channelr”   r•   ry  rô   r   rk   r[  ÚOUTPUT_JSON_FILErµ   rí   ÚPROXY_DATA_FILEÚPLAYLIST_FILEr®  ÚPLAYLIST_PROXY_FILErR   ÚBOLD)ZrJ  rá   r}  rI  rÖ   r_  r*  Úbase_channelsÚlive_eventsÚchr·   Ú	m3u_linesÚfoundÚfirst_ffplay_cmdÚfirst_mpv_cmdr…  r`  Úrotation_accountsr¡   ra  Úrotation_idxÚalt_token_cacheÚfailed_accountsÚthrottle_streakÚthrottled_abortÚir-   ÚresÚst0Úattempts_allowedÚtried_emailsÚcurrent_emailÚ_acc_tryÚcurrent_tokenÚcurrent_payloadÚ	acct_lineÚ_skipÚcandr×   rØ   r  rd  Úlogin_tokenrf  rg  ÚwhoÚst_nowÚskip_fallbackr-  rØ  r$  r�   Úmanifest_only_indicesÚ	target_chÚch_titleÚ	retry_resÚconcurrency_indicesÚalt_accountsÚskip_accountsÚaccount_idxÚresolvedÚattempts_per_channelÚ	alt_tokenÚalt_payloadÚstill_concurrencyÚproxy_m3u_linesrc  ÚmanifestrÛ  r.   Ú	logo_attrÚis_live_eventÚis_radioÚ
group_namerl  rk  rx  Úch_idÚclean_channelsÚproxy_channelsÚinternalÚproxy_entryr�  Úeligibility_countÚnow_tsÚoutput_dataÚproxy_outputÚ
ffplay_batÚmpv_batr‚  sZ                                                                                            @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ˆÙÜ+Ó-ˆKÜ,¨]¸KÓH‰Hà$ˆHÜ(¨Ó2ˆáÜÐ0´&Ô9Øˆ	ð &ÖV�r¨¯©°«Ô=UÒ)U’ÐV€HÐVäÐ
#¤C¨£M ?Ð2HÐIÌ4ÔPØ€GØ)Ð*€IØ€EàÐØ€MòGó8ô —G‘G—L‘L¤§¡§¡´Ó!:¸NÓK€MØÐÜ	‡w�w‡~�~�mÔ$ð	Ü�m S°7Ô;ð a¸qØ89Ö$`°1¸SÀAºXÈaÏlÉlÐ[^ÕN_ Q§W¡W¥YÐ$`Ð!Ð$`÷að
 €LØ€OÜ“e€OØ€OØ€Oä˜8 QÓ'ó sM‰ˆˆ2Ø�v‰v�f˜bŸf™f T¨W°Q°C¨=Ó9Ó:ˆÜ��A�b�6˜œ3˜x›=˜/¨¨D°¨:Ð6¸CÀtÕLàˆÜ˜rÔ"Ü& rÓ*ˆCØ—'‘'˜(Ó#ÒM s§w¡w¨{¸BÓ'?×'CÑ'CÀHÓ'MˆCØ�dŠ{ÜÐ6Õ8ä˜ S§W¡W¨W°mÓ%DÐ$EÀQÐGÔHØ�N‰N˜3ÔØá5Fœ3Ð0Ô1ÈAÐÜ“uˆØˆäÐ.Ó/ó ;	ˆHØ!ˆMØ,ˆOØˆMâ Ø �	Ü"¤3Ð'8Ó#9Ó:ò �EØ,¨\¼CÐ@QÓ<RÑ-RÑS�DØ  AÑ%�LØ&*§j¡j°°aÓ&8‘O�E˜8Ø Ñ/°5¸LÑ3HØ Ø $�IØ$)�MÙðñ !Úà× Ñ  Ô/Ø  OÑ3Ø5DÀ]Ñ5SÑ2�M ?Ü˜A˜m×1Ñ1°#Ó6°qÑ9Ð:¸!Ð<À#ÈTÖRä˜G M×$7Ñ$7¸Ó$<¸QÑ$?Ð#@ÀÐEÈ3ÐVZÕ[Ü!.×!7Ñ!7Ó!9�JÜ*4°]ÀHÈjÓ*YÑ'�F˜KØ Ò*©{Ü$6°{ÈzÔ$ZÒ$iÐ^i˜	Ø(1˜Ü0BÀ=Ó0QÑ-˜˜1˜oØ:GÈÐ9Y˜¨Ò6ä ¨S¸Õ=Ø! VÒ+Ø+×/Ñ/°Ô>Ù ä! " f¨m¸_ÓMˆCÙ˜SÓ!ˆBà�]Ò"Ù5B�m×)Ñ)¨#Ó.¨qÒ1ÐHZ�Ù Ø#×'Ñ'¨Ô6Ø#×'Ñ'¨°tÔ<Ü�h˜t˜f O°C°5Ð8`ÐaÔciÔjÙ$ÙÙàÐ2Ñ2Ùñ !Ù5B�m×)Ñ)¨#Ó.¨qÒ1È	�Ü�k $ Ð':¸3¸%Ð?mÐnÔpvÔwÙÙðw;	ñ~ &)‘˜SÔ!¨dˆØÐ"LÐLò 
Ø�mÑ#Ò=Ð,=Ð(=ð 	ñ Ü�+˜d˜VÐ#~Ðô  BHô  IÜ! " f¨e°^ÓDˆCÙ˜SÓ!ˆBãØ�N‰N˜3ÔÙ˜SÓ!ˆBØ�[Ò Ø"#�Ø�[Ò Ø 1Ñ$�Üœ˜Ð3°OÐ3DÀCÌÀwÐOÔPØ" aÔ'Üð  Dô  FIô  JØ&*�OÙØÐ,Ò,Üœ˜Ð EÄeÀWÐMÖNØ�}Ò$Üœ˜Ð BÄ5À'ÐJÖKØ�t’Ù# C¨°Ó3�Ù# C¨°Ó3�Üœ˜˜x¨¨B¨Q¨ y°°S¸¸!°W°I¸TÄ%ÀÐIÔJØ˜‘
’Ø�Ò&Üœ˜Ð RÔSXÐRYÐZÖ[äœ˜˜\¨#¯'©'°'¸5Ó*AÐ)BÀ!ÄEÀ7ÐKÖLðgsMôl 09¸Ó/A×g¡V S¨!Á[ÐQRÃ^ÐWfÓEfšSÐgÐÑgÙÜÐRÔTZÔ[Ù¡_Üˆ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Ö#_°!¸CÀ1ºHÈQÏ\É\ÐZ]ÕM^ A§G¡G¥IÐ#_�LÐ#_÷`ñ
 Ü�'œ#Ð1Ó2Ð3ð  4Cð  Dô  FLö  MäÐ*¬3Ð/BÓ+CÐ*Dð  EGð  Hô  JNô  Oð !ˆOÜ Ó0ˆMØˆKà*ó ?i�Ø$ S™M�	Ø$Ÿ=™=¨°Ó:�ð !�Ü'*¨1¬c°,Ó.?Ó'@Ð$äÐ3Ó4ó 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Ø)×-Ñ-¨eÔ4Ø$Ü,>¸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Ø#'˜ÙØ˜}Ò,Ô0BÀ9Ç=Á=ÐQXÓCYÔ0ZÜ˜f X J¨o¸e¸WÐDlÐmÔouÔvØ%×)Ñ)¨%Ô0Ø'×+Ñ+¨E°4Ô8Ø'×+Ñ+¨EÖ2Ø"Ÿ™ 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Ùði4ól  Ü˜( 8 *Ð,^Ð_ÔagÖhð?iôD Ñn wÔnÓnÐÙÜˆgÐ'Ð(Ð(tÐuÔw}Ô~ð *Ð*€IØ/Ð0€OØ	�‰�F˜BÓ	×	#Ñ	# I¨rÓ	2×	6Ñ	6°|ÀRÓ	H€Bä�x Ó)ó ?7‰ˆˆ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Ü*¨2Ó.Ò`±-ÀÀXÓ2NÐR`Ñ2`ˆHÙØ/‘
Ü# BÔ'Ø*‘
ÙØ/‘
à*�
á#¨¨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Ô[ÙØ× Ñ Ð#\Ô]kÐlxÑ]yÐ\zð  {^ð  "_ô  `Ø× Ñ Ð#>¼~ÈlÑ?[Ð>\Ð!]Ô^Ø× Ñ Ð!VÕWÙØ× Ñ Ð#\Ð]_Ð\`Ð`~ð  @Jð  Kð  "Lô  MØ× Ñ Ð#>¸r¸dÐ!CÔDØ× Ñ Ð!QÔRØ×Ñ˜XÔ&ñ Ø×&Ñ&Ð)<¸U¸GÀ<ÐPS×PWÑPWÐX^ÓP_ÐO`Ð`aÐbkÐalÐlzð  |Fð  {Gð  GIð  JM÷  JQñ  JQð  RXó  JYð  IZð  ([ô  \Ø×&Ñ&Ð'SÔTØ×&Ñ&Ð'YÔZØ×&Ñ&Ð)bÔcqÐr~Ñcð  cAð  Adð  (eô  fØ×&Ñ& xÖ0à×&Ñ&Ð)<¸U¸GÀ<ÐPS×PWÑPWÐX^ÓP_ÐO`Ð`aÐbkÐalÐlzð  |Fð  {Gð  GIð  JM÷  JQñ  JQð  RXó  JYð  IZð  ([ô  \Ø×&Ñ&Ð'SÔTØ×&Ñ&Ð'YÔZÙ™3Ø#×*Ñ*Ð+aÔbØ#×*Ñ*Ð-XÐY\ÐX]Ð]^Ð_bÐ^cÐ+dÔeØ×&Ñ& ~Ö6ð?7ðD €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Ô(Ø�|‰|˜HÓ%¨Ò7ÙØ×!Ñ! +Ö.ð3/ð8 #*Ör˜Q©[¸«^ÐCqÒ-q’qÐr€OÐräÓZ wÔZÓZÐÙÜˆdÐ$Ð%Ð%iÐjÔlrÔsä�\‰\‹^×%Ñ%Ó'€Fð Ü˜h›-ØØ"ñ	€Kô 
Ô ¨gÔ	6ð @¸!Ü�	‰	�+˜q¨¸Õ?÷@ð
 Ü˜h›-ØÜ#×,Ñ,Ó.Ø"Ø*ñ€Lô 
Œo˜s¨WÔ	5ð A¸Ü�	‰	�, ¨!¸%Õ@÷Aô 
Œm˜S¨7Ô	3ð -°qØ	�‰�—	‘	˜)Ó$ tÑ+Ô,÷-ô 
Ô! 3°Ô	9ð 3¸QØ	�‰�—	‘	˜/Ó*¨TÑ1Ô2÷3ñ Ü—W‘W—\‘\¤*Ð.?Ó@ˆ
Ü�*˜c¨GÔ4ð 	?¸Ø�G‰G�kÐ"2Ð!3°9Ð=Ô>÷	?ñ Ü—'‘'—,‘,œz¨>Ó:ˆÜ�'˜3¨Ô1ð 	<°QØ�G‰G�k - °	Ð:Ô;÷	<ô Ð
(¬¨Ô/?Ð.@ÄÀÀrÈ%ÈÐPQÔRUÐV^ÓR_ÐQ`Ð`oÐpÔrwÔxÜÐ
+¬D¨6´-°ÄÀÐHÌ%ÔPÙÜÐDÄtÔLÜÐ'Ð(8Ð'9Ð:¼FÔCØÐùòA Wùò* %a÷añ aûäò 	Úð	üó~ hùó"ùò $`÷`ñ `ûäò Úðüòp s÷@ñ @ú÷Añ Aú÷-ñ -ú÷3ñ 3ú÷	?ñ 	?ú÷
	<ñ 	<úsE  Ã*AN ÄAN ÆAN Æ-AN
Æ2	ANÆ<ANÇANÇ AN
Ç"AN ÚAN'ÚAN'Ý1:AN-àAO à%AN8à*	AN3à4AN3áAN3áAN8áAO ÁC%AOÁC5AOÁE)AOÁGAO'ÁG5$AO4ÁH3$APÁJAPÁK%APÁNAN
ÁN
ANÁNAN ÁN	AN$ÁN#AN$ÁN3AN8ÁN8AOÁN=AO ÁO	AOÁOAOÁOAO$ÁO'AO1ÁO4AO>ÁPAPÁPAPÁPAP%Ú_rail_cache_dataÚ_rail_cache_timer!  c                 ó¸   — | rt        | t        «      sy 	 t        j                  | j	                  dd«      j                  d«      d   d«      S # t        $ r Y y w xY w)NÚZrÈ   rB   r   z%Y-%m-%dT%H:%M:%S)r”   r—   r   Ústrptimer   r‰   r=   )r!  s    r?   Ú_parse_dazn_dtrá  T  sW   € Ùœ
 5¬#Ô.ØðÜ× Ñ  §¡¨s°BÓ!7×!=Ñ!=¸cÓ!BÀ1Ñ!EÐGZÓ[Ð[øÜò Ùðús   •7A Á	AÁAÚobjc                 ó�   — t        | t        «      r(| j                  d«      xs | j                  d«      xs dS t        | xs d«      S )Nr  r™  rÈ   )r”   r•   r–   r—   )râ  s    r?   Ú_nested_titlerä  ]  s;   € Ü�#”tÔØ�w‰w�wÓÒ8 3§7¡7¨6£?Ò8°bÐ8ÜˆsŠy�b‹>Ðr`   Útilec                 óÄ   — dD ][  }| j                  |«      }t        |t        «      r!|j                  d«      rt        |d   «      c S t        |t        «      sŒV|sŒY|c S  y)N)ÚImageÚ	LogoImageÚ	HeroImageÚBackgroundImager1  rÈ   )r–   r”   r•   r—   )rå  rØ  Úimgs      r?   Ú_tile_image_idrì  c  sV   € ØEò ˆØ�h‰h�s‹mˆÜ�cœ4Ô  S§W¡W¨T¤]Ü�s˜4‘y“>Ò!Ü�cœ3Õ¢CØŠJðð r`   c           	      óÜ   — | j                  d«      t        k(  ryt        j                  ddt	        | j                  d«      xs d«      j                  «       j                  «       «      }|dk(  S )Nr  Trf  rg  r  rÈ   rh  ri  ©rå  Útitles     r?   Ú_is_radio_tv_tilerð  m  sZ   € Ø‡x�x�	ÓÔ3Ò3ØÜ�F‰F�6˜3¤ D§H¡H¨WÓ$5Ò$;¸Ó <× BÑ BÓ D× JÑ JÓ LÓM€EØÐ&Ñ&Ð&r`   c                  ó(   — t         dt        dz   dddœS )NrÆ  z91daica1elq2701s7zajjchy47s_image-header_pIt_1786353830000re  rÈ   )r,   r-   r.   rd  r  )rj  ÚDAZN_IMAGE_URLr_   r`   r?   Ú_static_seriea_channelró  t  s!   € ä#Ø"ÜÐ!\Ñ\Ø Øñð r`   c                 óx   — | D �cg c]  }t        |«      rŒ|‘Œ }}|j                  t        «       «       |S c c}w r¾   )rm  r    ró  )rá   r¢  Úouts      r?   r•  r•  ~  s8   € Ø Ö
@�"Ô(;¸BÕ(?Š2Ð
@€CÐ
@Ø‡J�JÔ%Ó'Ô(Ø€Jùò As   …7–7rË  c                 ó  — | syt        j                  dt         j                  «      }t        t        fD ]Ž  }t
        j                  j                  |«      sŒ#	 t        |dd¬«      5 }|j                  «       }ddd«       |j                  d| z   d¬«      \  }}|r(t        |d	d¬«      5 }|j                  |«       ddd«       Œ� y# 1 sw Y   ŒPxY w# 1 sw Y   ŒxY w# t        $ r}t        d
|› �t        «       Y d}~ŒËd}~ww xY w)zDSostituisce solo l'URL diretto di Radio TV nelle M3U (niente proxy).Nz_(#EXTINF:-1[^\n]*tvg-name="Radio TV Serie A"[^\n]*\n(?:#.*\n)*)(?:https://[^\s]+|file://[^\s]+)r�   r   rç   z\1r†   )r©   ræ   zAvviso rewrite Radio TV M3U: )rk  ÚcompileÚ
IGNORECASEr�  rž  rH   rI   r€  rŸ   r¯  Úsubnr®  r=   rF   rL   )rË  ÚpatrI   r¡   r2  ÚnewÚnrV   s           r?   Úrewrite_seriea_direct_urlrý  „  sð   € áØÜ
�*‰*ØjÜ
�‰ó€Cô Ô 3Ð4ò =ˆÜ�w‰w�~‰~˜dÔ#Øð	=Ü�d˜C¨'Ô2ð  °aØ—v‘v“x�÷ à—X‘X˜e hÑ.°¸A�XÓ>‰FˆC�ÙÜ˜$ ¨gÔ6ð !¸!Ø—G‘G˜C”L÷!øñ=÷ ð  ú÷!ð !ûäò 	=ÜÐ/°¨sÐ3´V×<Ñ<ûð	=úsH   ÁCÁ&CÁ72CÂ)CÂ;CÃC	ÃCÃC	ÃCÃ	DÃ'C?Ã?Dc                  óH  — t        «       \  } }}|s| st        d|› �t        «       yt        | «       t	        «       }t        |«       	 t        j                  j                  t        «      r�t        t        dd¬«      5 }t        j                  |«      }d d d «       j                  d«      xs g D ]  }t        |«      sŒ||d<   Œ t        t        dd¬«      5 }t        j                  ||d	d¬
«       d d d «       y	 y# 1 sw Y   ŒkxY w# 1 sw Y   yxY w# t         $ r Y yw xY w)NzRadio TV Lega: Fr�   r   rç   rá   rÛ  ræ   rY   rè   T)rÄ  rF   rL   r–  rw  rý  rH   rI   r€  r›  rŸ   rµ   r{   r–   rm  rí   r=   )r4  rÃ  rß  rá  r¡   r6  r¢  s          r?   Úrefresh_seriea_direct_playlistsrÿ  š  s  € Ü/Ó1�N€CˆˆsÙ
‘#Üˆo˜c˜UÐ#¤VÔ,ØÜ˜ÔÜ%Ó'€HÜ˜hÔ'ð
Ü�7‰7�>‰>Ô*Ô+ÜÔ&¨°gÔ>ð $À!Ü—y‘y “|�÷$à—h‘h˜zÓ*Ò0¨bò 4�Ü& rÕ*Ø+3�BÐ'Ò(ð4ô Ô&¨°gÔ>ð AÀ!Ü—	‘	˜$ ¨!¸%Õ@÷Að ð ,ð ÷$ð $ú÷
Að ûô ò ØØðúsN   Á5D Á=C=Â+D Â?D ÃD	Ã2D Ã=DÄD Ä	DÄD ÄD Ä	D!Ä D!c           	      óø   — t        | «      ry| j                  d«      t        v ryt        j                  ddt        | j                  d«      xs d«      j                  «       j                  «       «      }|t        v S )NTr  rf  rg  r  rÈ   )	rð  r–   ÚEXTRA_LINEAR_IDSrk  rl  r—   r‡   r”  ÚEXTRA_LINEAR_TITLESrî  s     r?   Ú_is_keep_linear_tiler  °  se   € Ü˜ÔØØ‡x�x�	ÓÔ.Ñ.ØÜ�F‰F�6˜3¤ D§H¡H¨WÓ$5Ò$;¸Ó <× BÑ BÓ D× JÑ JÓ LÓM€EØÔ'Ð'Ð'r`   r¢  c           	      ó¨  — | j                  d«      s| j                  d«      t        v ryt        j                  ddt	        | j                  d«      xs d«      j                  «       j                  «       «      }|t        v ryt	        | j                  d«      xs i j                  d	«      xs d«      }	 t        |d d
 «      dk\  S # t        $ r Y yw xY w)NÚlinear_channelr,   Trf  rg  r-   rÈ   rÊ  r‡  r„   é4  F)
r–   r  rk  rl  r—   r‡   r”  r  rÄ   r=   )r¢  r-   r‡  s      r?   rš  rš  ¹  s·   € Ø	‡v�vÐÔ 2§6¡6¨$£<Ô3CÑ#CØÜ�6‰6�&˜#œs 2§6¡6¨&£>Ò#7°RÓ8×>Ñ>Ó@×FÑFÓHÓI€DØÔ"Ñ"ØÜ
ˆr�v‰v�e‹}Ò" ×'Ñ'¨Ó.Ò4°"Ó
5€CðÜ�3�r˜�7‹|˜tÑ#Ð#øÜò Ùðús   Â4C Ã	CÃCr   r¡  c                 ó¦  — |D �ci c]&  }|j                  d«      sŒ|j                  d«      |“Œ( }}g }t        «       }| D ]Ã  }t        |«      }|j                  |j                  d«      «      }|r]|j                  d«      s|j                  d«      r|d   |d<   dD ].  }|j                  |«      sŒ|j                  |«      rŒ'||   ||<   Œ0 |j                  |«       |j                  d«      sŒ°|j	                  |d   «       ŒÅ |D ]A  }|j                  d«      sŒ|d   |vsŒ|j                  |«       |j	                  |d   «       ŒC |S c c}w )Nr,   r.   )rÊ  r  Únow_programrÉ  ÚcompetitionÚlabel)r–   rC  r•   r    rE  )	r   r¡  ÚevÚ
live_by_idrõ  Úseenr¢  Úmergedr·  s	            r?   r”  r”  Æ  s9  € ð .9ÖI r¸B¿F¹FÀ4½L�"—&‘&˜“, Ñ"ÐI€JÐIØ "€CÜ‹5€DØò #ˆÜ�b“ˆØ�^‰^˜FŸJ™J tÓ,Ó-ˆÙØ—:‘:˜fÔ%¨"¯&©&°¬.Ø!# F¡��v‘Øaò &�Ø—6‘6˜!•9 V§Z¡Z°¥]Ø " 1¡�F˜1’Ið&ð 	�
‰
�6ÔØ�:‰:�dÕØ�H‰H�V˜D‘\Õ"ð#ð ò ˆØ�6‰6�$�<˜B˜t™H¨DÒ0Ø�J‰J�rŒNØ�H‰H�R˜‘XÕðð €Jùò' Js
   …EœEc                 ó(  — t        | t        «      syt        | «      ry| j                  d«      xs d}| j                  d«      xs d}|dv s|dv ry|dk7  r|dk7  ry| j                  d«      }|syt	        | j                  d	«      xs$ | j                  d
«      xs | j                  d«      «      }t	        | j                  d«      «      }|r|s|t        d¬«      z   }|r|syt        | «      }|j                  dk\  rt        | «      syt        j                  t        j                  «      j                  d¬«      }|t        d¬«      z
  |cxk  r|t        d¬«      z   k  sy yt        | j                  d«      «      }| j                  d«      xs d}	| j                  d«      xs d|› �}
t        | «      }d}t        | j                  d«      t        «      r| j                  d«      ni }t        |t        «      r|j                  d«      nd}t        |t        «      r|j                  d«      xs d}||
|r
t        › |› �ndd||	|rdnd| j                  d«      xs d| j                  d«      r|
nd||j!                  «       |j!                  «       dœdœS )uP   Converte un tile Rail/EPG in canale estraibile, o None se non Ã¨ un live attivo.Nr«  rÈ   ÚDisplayType)ÚCatchUpÚ
HighlightsÚ
Navigation)r  r  ÚLiver  ÚStartÚEventStartTimeÚMediaStartTimeÚEndrã   )Úhoursr  ©Útzinfor  )ÚminutesÚCompetitionÚLabelr  zEvent ÚLinearScheduleÚNowre  rA  ÚIsLinear)Ústartr‡  )r,   r-   r.   r  r	  r
  rd  rÉ  r  r  rÊ  )r”   r•   rð  r–   rá  r   Úyearr  r   rk   r   Úutcr   rä  rì  rò  r[  )rå  ÚtypÚdisplayr  Ústart_dtÚend_dtrÎ  Únow_utcr	  r
  rï  Úimg_idr  ÚlsÚnowps                  r?   Ú_tile_to_channelr-  ß  sg  € ä�dœDÔ!ØÜ˜ÔØØ
�(‰(�6Ó
Ò
 ˜b€CØ�h‰h�}Ó%Ò+¨€GØ
Ð5Ñ5¸ÐD]Ñ9]ØØ
ˆf‚}˜ FÒ*Øà�x‰x˜	Ó"€HÙØä˜dŸh™h wÓ/Òk°4·8±8Ð<LÓ3MÒkÐQU×QYÑQYÐZjÓQkÓl€HÜ˜DŸH™H U›OÓ,€FÙ™ØœI¨AÔ.Ñ.ˆÙ™6Øä  Ó&€Hà‡{�{�dÒÔ#7¸Ô#=Øä�l‰lœ8Ÿ<™<Ó(×0Ñ0¸Ð0Ó=€GØœ	¨"Ô-Ñ-°'Ô]¸fÄyÐY[ÔG\Ñ>\Ò]Øð ^Øä §¡¨Ó 7Ó8€KØ�H‰H�WÓÒ# €EØ�H‰H�WÓÒ4 6¨(¨Ð!4€EÜ˜DÓ!€FØ€KÜ'1°$·(±(Ð;KÓ2LÌdÔ'Sˆ�‰Ð"Ô	#ÐY[€BÜ& r¬4Ô0ˆ2�6‰6�%Œ=°d€DÜ�$œÔØ—h‘h˜wÓ'Ò-¨2ˆð ØÙ/5”>Ð" 6 (Ñ+¸2ØØ"ØÙ$,‘.°"Ø—H‘H˜YÓ'Ò-¨2Ø#'§8¡8¨JÔ#7™%¸RØ"à×'Ñ'Ó)Ø×#Ñ#Ó%ñ
ñð r`   Útilesc                 óÄ   — g }t        «       }t        | t        «      s|S | D ]<  }t        |«      }|r|d   |v rŒ|j	                  |d   «       |j                  |«       Œ> |S )Nr,   )rC  r”   r±   r-  rE  r    )r.  rõ  r  rå  r¢  s        r?   Ú_tiles_to_channelsr0  	  si   € Ø "€CÜ‹5€DÜ�eœTÔ"Øˆ
Øò ˆÜ˜dÓ#ˆÙ�R˜‘X Ñ%ØØ�‰��D‘ÔØ�
‰
�2�ðð €Jr`   rM  c                 ó  — t         j                  |«      }t        j                  |d«      }|rt        j                  «       |z
  dk  r|S t        j                  «       }	 t        j                  | t        |d¬«      }|j                  s!t        d|› d|j                  › �t        «       y |j                  «       }|t         |<   t        j                  «       t        |<   |S # t        $ r }t        d|› d|› �t        «       Y d }~y d }~ww xY w)Nr   r   r  )rß   rx   rZ   zErrore Rail Router (z): HTTP z): )rÜ  r–   rÝ  r²   rî   r¤   r   ÚRAIL_HEADERSr´   rF   r¶   rU   rµ   r=   )r4  rM  rN  Ú	cached_atr  r�   r6  rV   s           r?   Ú_fetch_rail_jsonr4  *	  sã   € Ü×!Ñ! )Ó,€FÜ ×$Ñ$ Y°Ó2€IÙ”4—9‘9“; Ñ*¨cÒ1ØˆÜ×'Ñ'Ó)€JðÜ�L‰L˜¤l¸JÐPRÔSˆØ�tŠtÜÐ& y k°¸!¿-¹-¸ÐIÌ3ÔOØØ�v‰v‹xˆØ&*Ô˜Ñ#Ü&*§i¡i£kÔ˜Ñ#ØˆøÜò ÜÐ" 9 +¨S°°Ð4´cÔ:Üûðús   ÁA	C Â)5C Ã	DÃ(DÄDc            
      ó   — t        t        d«      } t        t        d«      }| €|€y| xs i j                  d«      xs g }|xs i j                  d«      xs g }t	        |«      }|D �ch c]  }|d   ’Œ	 }}d}t	        |«      D ]4  }|d   |v rŒ|j                  |d   «       |j                  |«       |dz  }Œ6 t        dt        |«      › d	t        |«      › d
t        |«      › d�|rd|› d�ndz   t        «       |S c c}w )zdDiscovery primaria: LiveAndNextNew (eventi) + Livetvschedule (lineari). None se entrambe falliscono.ÚLiveAndNextNewÚLivetvscheduleNÚTilesr,   r   r†   u    ðŸ”Ž Rail Check: LiveAndNextNew z tile, Livetvschedule z tile. Trovati z eventi/canali LIVE attiviz (+z da palinsesto lineare).rB   )
r4  ÚRAIL_LIVE_URLÚRAIL_LINEAR_URLr–   r0  rE  r    rF   rŠ   r3  )Ú	live_dataÚlinear_dataÚ
live_tilesÚlinear_tilesrá   r¢  r  Úextras           r?   Úfetch_live_events_from_railsr@  >	  s1  € ä ¤Ð0@ÓA€IÜ"¤?Ð4DÓE€KØÐ˜[Ð0Øà’/˜r×&Ñ& wÓ/Ò5°2€JØÒ% 2×*Ñ*¨7Ó3Ò9°r€LÜ! *Ó-€HØ'Ö(˜ˆBˆt‹HÐ(€DÐ(Ø€EÜ  Ó.ò ˆØˆd‰8�tÑØØ�‰��D‘ÔØ�‰˜ÔØ�‰
‰ðô Ø
*¬3¨z«?Ð*;ð <Ü˜lÓ+Ð,ð -Ü�x“=�/Ð!;ð	=ñ 5:ˆS��Ð/Ñ0¸sñ	Dô 	ôð €Oùò! )s   Á'C;c                  ó"  — d} t        j                  t        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œ}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 «      }t5        |«      }t+        dt7        |«      › dt7        |«      › d�t8        «       |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)z1Fallback: EPG ufficiale DAZN (epgWithDatesRange).z8https://epg.discovery.indazn.com/eu/v5/epgWithDatesRangeNr  r†   )Údaysz%Y-%m-%dr	  Ú120rÊ   rˆ  rä   )rP  ÚlanguageCodeÚ
openBrowseÚtimeZoneOffsetÚbrandÚ	startDateÚendDater   r  )r  rx   rZ   zErrore download EPG DAZN: HTTP uH   ðŸ“¥ EPG scaricato con successo dal server DAZN (aggiornato ogni 5 min).zErrore eccezione EPG: r8  u   ðŸ”Ž EPG Check: z" programmi in palinsesto. Trovati z eventi speciali LIVE attivi.)r   rk   r   r$  r   r   rl   Ú
astimezoneÚ	utcoffsetÚtotal_secondsr—   rÄ   r=   Ú_epg_cache_datar²   Ú_epg_cache_timerî   r¤   r   r–   r´   rF   r¶   rU   rµ   rG   r0  rŠ   r3  )r4  r)  Ústart_date_strÚend_date_strÚ
offset_secÚ	tz_offsetr  r6  r  r�   rV   r.  Úlive_channelss                r?   Úfetch_live_events_from_epgrT  [	  sÒ  € ð E€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õ œ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Ô\aÔbð
 �H‰H�W˜bÓ!€EÜ& uÓ-€MÜÐ
œ3˜u›:˜,Ð&HÌÈ]ÓI[ÐH\Ð\yÐzÔ|ô  AØÐøôC ò Ø‹	ðûô4 ò 	ÜÐ(¨¨Ð,¬cÔ2Ø�Iûð	ús8   Á3AG ÄAG& Å6G& ÇG#Ç"G#Ç&	HÇ/H	ÈHÈ	Hc                  óR   — t        «       } | �| S t        dt        «       t        «       S )zREventi/canali live attivi: Rail Router principale, EPG solo se le rail falliscono.uF   âš ï¸� Rail Router non disponibile, fallback su EPG epgWithDatesRange.)r@  rF   rL   rT  )Úrail_eventss    r?   r“  r“  ‹	  s+   € ä.Ó0€KØÐØÐÜÐPÔRXÔYÜ%Ó'Ð'r`   Úinterval_hoursc                 óN  — 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	}
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        «       t        t        ||«      «      |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        «       ||
z
  dk\  rt-        «       rt        j                  «       }
t/        d«      st        d¬«       t        j0                  |«       �Œöc c}w # t2        $ r' t#        dt4        › dt&        › d�«       t7        «        Y y"t8        $ r2}t        d |› �t:        «       t        j0                  d!«       Y d"}~Œkd"}~ww xY w)#zSEsegue l'estrazione all'avvio e ripete periodicamente monitorando Rail/EPG e canalirä   rÞ   r  rå   râ   i  r¦  rá   g        Téû   )r4   r,   u   ðŸš¨ Trovati z# NUOVI EVENTI LIVE nella discovery!u   â„¹ï¸�  z eventi live sono terminati.r   u   â�° Intervallo programmato (z(h) trascorso. Rinnovo generale canali...rp   ro   u;   ðŸ”„ CICLO DI ESTRAZIONE CHIAVI & MANIFEST (Live + Lineari)F)rJ  rá   r}  uP   âœ¨ Estrazione completata! Monitoraggio Rail/EPG attivo (prossimo controllo tra zs).uQ   ðŸ’¤ Nessun nuovo evento live nella discovery. In attesa (prossimo controllo tra zs)...z

u   ðŸ›‘ Bot arrestato dall'utente.zErrore durante il ciclo: r°   N)rs   rò   rî   r{   r–   r’  rC  rW   r²   r“  rŠ   rF   ÚMAGENTAr3  r•  r”  rM   rj   rq   rm   rÛ  rG   rÿ  r@   rZ  ÚKeyboardInterruptrL   ra   r=   rU   )rW  rJ  r}  rI  Úrefresh_hoursÚrefresh_secondsÚcheck_intervalr   Úlast_known_live_idsÚlast_full_extraction_timeÚlast_seriea_refreshÚforce_extractionrk   r¡  r  Úcurrent_live_idsÚtarget_channelsr×  rV   s                      r?   Úrun_auto_loopre  ”	  s2  € ä„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ñ Ü/Ó1�Ø7BÖ#C° B t£HÐ#CÐ Ñ#Cà �Ü#&£5Ð ð  Ð#6Ò6ÜÐ'Ó(¬3Ð/BÓ+CÒCÜ˜-¬Ð,<Ó(=ÄÐDWÓ@XÑ(XÐ'YÐY|Ð}ô  @Gõ  HÜÐ)Ó*¬SÐ1DÓ-EÒEÜ˜(¤3Ð':Ó#;¼cÐBRÓ>SÑ#SÐ"TÐTpÐqÔsvÔwä-BÜ)¨-¸ÓEó.��v‘˜zÑ*ð '7Ð#Ø#'Ð ð Ð/Ñ/°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Ð)Ø#(Ð ÜÐfÐguÐfvÐvyÐzô  }Bõ  CäÐgÐhvÐgwÐw|Ð}ô  @Cô  Dð Ð)Ñ)¨bÒ0Ü2Ô4Ü*.¯)©)«+Ð'ô   Ô%Ü$¨$Õ/ô �J‰J�~Ô&ñy ùò $Døôn !ò 	Ü�Dœ˜Ð ?Ä¸wÀbÐIÔJÜŒLÙÜò 	ÜÐ+¨A¨3Ð/´Ô5Ü�J‰J�r�N‰Nûð	ús1   Ã$J; Ã%J6Ã1GJ; Ê6J; Ê;-L$Ë*L$Ë2(LÌL$c                  óº  — t        j                  d¬«      } | j                  ddd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(œ}|j.                  r@t;        «       D ]3  }|j#                  d)«      |j.                  k(  sŒ"|j=                  |«        n t?        |«      rtA        |«      }ntC        |||	|«      }tE        d*tG        jH                  |d+d,¬-«      z   «       y |jJ                   }|jL                  r"t3        «        tO        |j6                  |¬.«       y tQ        |j6                  |¬.«       y )/Nz*DAZN - DRM Widevine Stream & Key Extractor)Údescriptionz-cz--oncez
--channelsÚonceÚ
store_truezEsegui una sola volta ed esci)ÚdestÚactionÚhelpz--loopz2Esegui in loop continuo con intervallo programmato)rk  rl  z--tokenz(Specifica o aggiorna il JWT Bearer Token)r2  r„  rl  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-eventszHNon includere eventi live dalla discovery Rail/EPG (solo canali statici)z-Cache pssh_cache.json eliminata con successo!rä   rÞ   r  zTest di z proxy in corso...z  z -> r‘  zms)Úcustom_assetzAsset ÚCustomrÈ   )r,   r-   r  r,   rp   rY   Frè   )rJ  r}  ))ÚargparseÚArgumentParserÚadd_argumentr—   Ú
parse_argsÚclear_cacherH   rI   rJ   rø   ÚremoverF   rG   Ú
test_proxyrò   rî   r{   r–   r©   rM   r½   rU   rm   rY  r4  rs   rl  rÖ   r  r“  rô   rm  rå  r|  rj   rµ   ÚdumpsÚ	no_eventsrh  rÛ  re  )ÚparserÚargsrñ   r·   r¹   r´   Úip_msgr¼   ÚcolrÖ   r_  r*  r¾  r  r®  r}  s                   r?   Úmainr|  ò	  sé  € Ü×$Ñ$Ð1]Ô^€FØ
×Ñ˜˜h¨¸6È,Ð]|ÐÔ}Ø
×Ñ˜¨Ð<pÐÔqØ
×Ñ˜	¬°TÐ@jÐÔkØ
×Ñ˜	¬°TÐ@cÐÔdØ
×Ñ˜¤c°4Ð>mÐÔnØ
×Ñ˜¨|ÐBkÐÔlØ
×Ñ˜°ÐCsÐÔtØ
×Ñ˜¨lð  BLÐô  MØ×ÑÓ€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¨ñ
ˆ	ð
 �:Š:Ü'Ó)ò �Ø—6‘6˜$“< 4§:¡:Ó-Ø×$Ñ$ RÔ(Ùðô ˜yÔ)Ü& yÓ1‰Cä! )¨S°%¸ÓHˆCÜˆd”T—Z‘Z ¨A¸EÔBÑBÔCØàŸ™Ð'€Nà‡y‚yÜŒÜ t§z¡zÀ.ÕQØô ˜DŸJ™J°~ÖFr`   Ú__main__)z	127.0.0.1)rY  )r6   Nr¾   )NNN)r‹  )NNT)rã   NT)«rÂ   rH   rP   rk  rµ   r²   rÿ   rB  r,  ro  Úxml.etree.ElementTreeÚetreeÚElementTreerÛ  r   r   r   Útypingr   r   r   r	   r
   Úurllib.parser   r   r   r   r   r8   rN   r�  ÚatexitÚ	curl_cffir   rt  rs  ÚImportErrorÚ
pywideviner   r   r   rö  r–  ÚreconfigureÚstderrr=   rG   rL   rU   rM   rq   rZ  rŸ  r3  rm   rI   rX  ÚabspathrY  rR   rW  rì   rV  rø   rB  rÃ   r›  rœ  r�  rž  rK   r“  rC  r   Ú__annotations__rj  r¾  r¿  rÀ  ry  r9  r:  r2  rò  rë   r‡   r”  r  rE  r  rS   rÄ   r—   rÅ   r@   rW   ra   r  ÚDEFAULT_REFRESH_SECONDSrÆ  rå  ÚfromhexrÄ  rc   rF   rs   ru   rî   rò   rö   rú   rü   r  r  ÚrandomÚstringr8  rH  rl  rw  r0  rz  r{  r|  r™  r„  rš  r¾  rÇ  ró  r  r(  rb  rm  rw  rz  rŽ  r–  r¤  rÄ  rå  r  r  r|  rÛ  rM  rN  rÜ  rÝ  rÆ   rá  rä  rì  rð  ró  r•  rý  rÿ  r  rš  r”  r-  r0  r4  r@  rT  r“  re  r|  r¿   rÖ  s   0r?   ú<module>r�     sÉ  ðòó 
Û 
Û 	Û Û Û Û Û Û ß "Ð "ß 2Ñ 2ß 3Õ 3ß KÕ KÛ Û Û Û ðÝ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Ó<Ð Ø—7‘7—<‘< 
Ð,AÓB€ñ !$£Ð ˜#Ó %ð 5Ð Ø>Ð ð$ð ð oÐ à&Ø1Ø)Ø+ð	=ñ	€ð/ð ðLð ð
 2Ø$Ø&ð	=ñ€ð J€ð
 *ØØÐ![Ñ[ñð +ØØÐ!\Ñ\ñð )ØØÐ!ZÑZñð *ØØÐ![Ñ[ñð +ØØÐ!\Ñ\ñð+Ð ð6 ;PÖP°Q�q˜‘y—‘Ó(×.Ñ.Õ0ÒPÐ Ø × Ñ ˜Ô %Ø%:Ö; �A�d“GÒ;Ð ð €ñ�sð  #ð ¸ó ñ@˜sð @¨dó @ó(ð €‡��
Ô ð #Ð ð <Ð Ø Ÿ=™=Ð)KÓLÐ à€
ˆD��c�‰NÓ ð  %ñ VˆSð V˜ð V¨ó Vó
÷[ñ [ñz ˜ZÓ(€ð7�T˜#˜s˜(‘^ó 7ðr
4�T˜#˜s˜(‘^ð 
4¨ó 
4óó?ð
˜cð  d¨3°¨8¡nó ð	(˜cð 	( e¨D°#°t¸CÀ¸H±~Ð,EÑ&Fó 	(ó Û ñJ�cð J Sð J°h¸tÀCÈÀH¹~Ñ6Nð JÐZ_Ð`cÐemÐnqÑerÐ`rÑZsó JñX˜cð ¨H°S©Mð ÈXÐVYÉ]ð ÐowÐx|ð  ~Að  CFð  ~Fñ  yGñ  pHð ð  T\ð  ]`ñ  Taó ñ:j�d˜3 ˜8‘nð j°¸#±ð jÈ#ó jð^ AÐ ñ˜x¨¨S°#¨X©Ñ7ð À3ó ñ& x°°S¸#°X±Ñ'?ð &È3ó &ð$ €ˆ(�3‰-Ó Ø#€ˆh�t‰nÓ #Ø€ð�8˜C‘=ó ð˜ó ñ62�sð 2 ð 2¨t°C¸°H©~ð 2ÀXÈeÁ_ð 2Ð`eÐfiÐkpÐfpÑ`qó 2ðj	˜sð 	 tó 	ðC# sð C#¨u°X¸c±]ÀHÈSÁMÐ5QÑ/Ró C#ðJ1N  S¨# X¡ð 1N¸¸SÀ#¸X¹ð 1NÐSVð 1NÐ[^ó 1Nðf/¨ð /°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ó /ñbWC˜3ð WC¨#ð WC°sð WCÀDÈÈcÈÁNð WCÐdhÐilÐnqÐiqÑdrð WCð  CKð  LOñ  CPð WCð  emð  nrð  svð  x{ð  s{ñ  n|ñ  e}ð WCð  MUð  VYñ  MZð WCð  fkð  ltð  uxñ  lyð  {Cð  DGñ  {Hð  JRð  SVñ  JWð  lWñ  fXó WCðt	&  c¨3 h¡ð 	&°Dó 	&ðO ó Oð(˜T # s (™^ó ðG ð G°3ð G¸3ó Gð6 cð ¨h°s©mó ð2˜#ð  (¨4°°S°©>Ñ":ó ð4$" E¨(°3©-¸À$ÀsÈCÀxÁ.Ñ9QÐS[Ð\_ÑS`Ð*`Ñ$aó $"ðN6 $ s¨C x¡.ð 6°T¸#¸s¸(±^ó 6ðr ¨#¡ð °3ó ð,C˜H S™Mð C¨dó Cñ
J˜T # s (™^ð J°T¸#¸s¸(±^ð JÈCð JÐaeÐfiÐknÐfnÑaoð Jð  Bð Jð  KOð  PSð  UXð  PXñ  KYó JñZ
| H¨S¡Mð |ÀHÈTÐRVÐWZÐ\_ÐW_ÑR`ÑMaÑDbð |Ð{ð |ð  LPð  QTð  VYð  QYñ  LZó |ð~ €Ø€Ø#%Ð �$�s˜C�x‘.Ó %Ø%'Ð �$�s˜E�zÑ"Ó 'ð˜#ð  (¨8Ñ"4ó ð�sð ˜só ð˜˜c 3˜h™ð ¨Có ð'˜D  c ™Nð '¨tó 'ð  S¨# X¡ó ð D¨¨c°3¨h©Ñ$8ð ¸TÀ$ÀsÈCÀxÁ.Ñ=Qó ð=¨ð =°ó =ð,¨ó ð,(˜t C¨ H™~ð (°$ó (ð
˜4  S ™>ð 
¨dó 
ðØ˜˜S #˜X™Ñ'ðØ6:¸4ÀÀSÀ¹>Ñ6Jðà	ˆ$ˆs�Cˆx‰.Ñóð2:˜4  S ™>ð :¨h°t¸CÀ¸H±~Ñ.Fó :ðz˜cð  d¨4°°S°©>Ñ&:ó ð˜#ð ¨#ð °(¸4ÀÀSÀ¹>Ñ2Jó ð( h¨t°D¸¸c¸±NÑ/CÑ&Dó ð:- D¨¨c°3¨h©Ñ$8ó -ð`(˜4  S¨# X¡Ñ/ó (ñ[ #ð [°h¸s±mð [Ð\`ð [Ðlpó [ò|:Gðx ˆzÒÙ…Fð øð_P ò Û$ØƒMðûð ò ÚðüòF Qùâ;s0   Á([3 Â:\ Ê(\Ë\Û3\Ü\Ü\Ü\