Ë
    š„jé$  ã                   ó‚   — d dl Zd dlZd dlZddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZ ddlmZmZ  G d„ de«      Zy)	é    Né   )ÚInfoExtractoré   )ÚExtractorErrorÚ
clean_htmlÚextract_attributesÚfloat_or_noneÚint_or_noneÚmerge_dictsÚparse_iso8601Úparse_m3u8_attributesÚparse_resolutionÚurlencode_postdataÚurljoin)Úfind_elementÚtraverse_objc                   óš   — e Zd ZdZdZdZdZdgZdZddd	d
ddddddœdœddd	dddddddœdœgZ	e
d„ «       Ze
d„ «       Ze
d„ «       Zd„ Zd„ Zy)ÚZanIEÚzanzZ-aNzhttps://www.zan-live.comFÚJPz@https?://(www\.)?zan-live\.com/[^/?#]+/live/play/\d+/(?P<id>\d+)z.https://www.zan-live.com/en/live/play/1797/663Ú663Úmp4zThe sample video pageuK   ã�“ã�¡ã‚‰ã�¯ã‚µãƒ³ãƒ—ãƒ«å‹•ç”»ã�®å†�ç”Ÿãƒ†ã‚¹ãƒˆãƒšãƒ¼ã‚¸ã�¨ã�ªã‚Šã�¾ã�™ã€‚z$md5:12ba331396215fe345b9362c56f3da86Ú20220228ipãbz:re:https?://storage\.zan-live\.com/image/.+\.(?:jpe?g|png))ÚidÚextÚtitleÚ	alt_titleÚdescriptionÚrelease_dateÚrelease_timestampÚ	thumbnail)ÚurlÚ	info_dictz/https://www.zan-live.com/ja/live/play/6910/4268Ú4268uR   ç¸�çµ�ã�²ã‚™ã�®ã‚†ã�‹ã‚Šæ§˜1stã‚¤ãƒ˜ã‚™ãƒ³ãƒˆ çµ�ã�²ã‚™ã€�çµ�ã�¯ã‚™ã‚Œã€�æ¡ƒæº�éƒ·ua   ç¸�çµ�ã�³ã�®ã‚†ã�‹ã‚Šæ§˜1stã‚¤ãƒ™ãƒ³ãƒˆ çµ�ã�³ã€�çµ�ã�°ã‚Œã€�æ¡ƒæº�éƒ· æ˜¼å…¬æ¼”[ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–]z$md5:f53156a49ce5b45265d07966679ab494Ú20260614iìM.jc                 ód  ‡— t        j                  t        t        j                  |j                  «       «      «      D ]q  \  }}|j                  d«      r|sŒt        |t        hdt        hf«      }|sŒ6t        ||«      Št        | ˆfd„f«      D ]  }|j                  t        ||«      «       Œ Œs y )Nz#EXT-X-STREAM-INF:zDISPLAY-NAMEc                 ó,   •— |j                  d«      ‰k(  S )Nr"   )Úget)Ú_ÚvÚ
format_urls     €úK/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/zan.pyú<lambda>z+ZanIE._fixup_m3u8_formats.<locals>.<lambda>G   s   ø€ ˜QŸU™U 5›\¨ZÑ7€ ó    )Ú	itertoolsÚpairwiseÚmapÚstrÚstripÚ
splitlinesÚ
startswithr   r   r   r   Úupdater   )ÚformatsÚm3u8_docÚm3u8_urlÚ
stream_infÚ	media_urlÚresÚfmtr+   s          @r,   Ú_fixup_m3u8_formatszZanIE._fixup_m3u8_formats8   sµ   ø€ ä%.×%7Ñ%7Ü”—	‘	˜8×.Ñ.Ó0Ó1ó&
ò 	2Ñ!ˆJ˜	ð ×(Ñ(Ð)=Ô>ÁiØä˜zÜ&Ð'¨Ô:JÐ9Kð,Mó NˆCáØä  ¨9Ó5ˆJÜ# GÛ7ð.ó ò 2�ð —
‘
œ; s¨CÓ0Õ1ñ2ñ	2r.   c                 óÎ  — t        | j                  d«      d   «      xs d}|dk  ryt        j                  |«      }|dz  |k(  r#t	        |«      D �cg c]  }||z  ||z  ddf‘Œ }}nF|dk(  r@d}dgt	        d«      D �cg c]  }d|ddf‘Œ
 c}¢t	        d«      D �cg c]  }|dddf‘Œ
 c}¢}ny|rd|cxk  rt        |«      k  sn t        |«      }||d | fS c c}w c c}w c c}w )	Nr)   r   )NNr   r   é   é   )r   r   r   r   )r
   Ú	partitionÚmathÚisqrtÚrangeÚlen)Úma_typeÚ	ma_numberÚ	divisionsÚunitÚiÚareass         r,   Ú_get_multiangle_layoutzZanIE._get_multiangle_layoutK   s  € ô   × 1Ñ 1°#Ó 6°qÑ 9Ó:Ò?¸aˆ	Ø˜Š>Øä�z‰z˜)Ó$ˆØ�1‰9˜	Ò!Ü:?À	Ó:JÖK°Q�a˜$‘h  T¡	¨1¨aÒ0ÐKˆEÑKØ˜!Š^ØˆDàðä(-¨a«Ö1 1�1�a˜˜A’,Ò1ðô ).¨a«Ö1 1�1�a˜˜A’,Ò1ð‰Eð á˜a 9Ô:´°E³
Ô:Ü˜E›
ˆIà�U˜:˜IÐ&Ð&Ð&ùò Lùò
 2ùÚ1s   ÁCÁ>CÂC"c                 ót   — |dz  dz  }d|› d|› d|dz  d›d|› d|› d|dz  d›d	| › d|› d
|d›d|› d|› d
|d›d�S )Né	   é   zcrop=trunc((iw*ú/ú-r   Úgz)/2)*2:trunc((ih*z)/2)*2:trunc(iw*ú+z):trunc(ih*ú)© )ÚxÚyÚwÚhrJ   Úmargin_yÚmargin_xs          r,   Ú_multiangle_cropzZanIE._multiangle_croph   s†   € à˜a‘< "Ñ$ˆðØ˜˜1˜T˜F ! H¨q¡L°Ð#3ð 4Ø˜˜1˜T˜F ! H¨q¡L°Ð#3ð 4Ø�s˜!˜D˜6  8¨A ,ð /Ø�s˜!˜D˜6  8¨A ,¨að	1ð	
r.   c                 ó
  — | j                  ddg«      d   dk(  r| j                  d«       |S | j                  ||«      \  }}|€| j                  d|› �«       |S g }|D ]¢  }|j	                  d«      dk(  rŒt        |dt        hf«      }	t        |d	«      D ]i  \  }
\  }}}}|j                  i |¥d
d| j                  ||||||«      ddddgi|d   › d|
› �|	rt        |	|z  |z  |dz  z
  dz  dz  «      nd d|
 dœ¥«       Œk Œ¤ |S )NÚsplit_anglesÚfalser   zqMulti-angle formats are available. Use --extractor-args "zan:split_angles=true" to extract separate angle formatszUnsupported multiangle type: ÚvcodecÚnoneÚheightr   Úffmpeg_args_outz-vfz-c:vÚlibx264z-c:aÚcopyÚ	format_idz-angler   Úm3u8)Údownloader_optionsrg   rc   ÚprotocolÚsource_preference)
Ú_configuration_argÚ	to_screenrM   Úreport_warningr(   r   r
   Ú	enumerateÚappendr]   )Úselfr7   rG   rH   Ú	ma_marginrJ   rL   Úangle_formatsr=   rc   rK   rW   rX   rY   rZ   s                  r,   Ú_multiangle_formatszZanIE._multiangle_formatst   st  € Ø×"Ñ" >°G°9Ó=¸aÑ@ÀGÒKØ�N‰NðLôMð ˆNà×1Ñ1°'¸9ÓE‰ˆˆeØˆ=Ø×ÑÐ"?À¸yÐ IÔJØˆNàˆØò 	ˆCØ�w‰w�xÓ  FÒ*Øä! #¨´;°-Ð'@ÓAˆFÜ#,¨U°AÓ#6ò ‘�‘<�A�q˜!˜QØ×$Ñ$ð &Øð&ð *Ø! 4×#8Ñ#8¸¸A¸qÀ!ÀTÈ9Ó#UØ" IØ" Fð,ð+ð %(¨Ñ$4Ð#5°V¸A¸3Ð!?áIOô *Ø !™ dÑ*¨Y¸©]Ñ:¸qÑ@À1ÑDôFØUYØ &Ø*+¨ò&õ ñð	ð, Ðr.   c                 ór  — | j                  |«      }| j                  ||«      }t        |t        d¬«      ht        ht
        f«      x}r| j                  || j                  ¬«       | j                  d|d ¬«      }| j                  d|d ¬«      }| j                  d|d ¬«      }t        |||f«      s| j                  «        | j                  | j                  › d|› d	�|d
|it        ||dœ«      ¬«      }t        |dt        hf«      st        d«      ‚t        |dt         hf«      }	dD ](  \  }
}}t        |	|
t        hf«      |usŒt        |d¬«      ‚ t        |	dt        hf«       }t#        | j                  d|«      «      }t        |dt$        hfd¬«      }|rx|rv||k  rqt&        j(                  j+                  |t&        j,                  j.                  «      j1                  «       j3                  d«      }| j5                  d|› �d¬«       |d|dœS | j                  d|d¬«      }| j7                  ||d¬«      \  }}|j8                  }| j;                  ||d«      \  }}| j=                  |||«       | j                  d |d ¬«      x}rPt%        | j                  d!|d ¬«      «      }t?        | j                  d"|d ¬«      d¬«      }| jA                  ||||«      }t        |t        d#¬«      ht        d$d¬%«      htB        hd&tE        | j                  › d'�«      hf«      }| j                  ||d(¬«      xs d)}|t        || jF                  ht        ht
        f«      |||| jI                  |«      d*œt        || jF                  ht        ht
        ft        d+¬«      ht        d,¬«      hft        ht
        tJ        fd-œ«      ¥S ).Nz!p-common_message__headline--error)Úcls)Ú	countriesz
csrf-token)Údefaultzvod-pctzlive-player-tokenz
/api/live/z/getLiveStatuszX-Csrf-Token)ÚpctÚtoken)ÚheadersÚdataÚ	isSuccesszUnexpected errorÚresult))Ú
isFinishedFz!This video is no longer available)ÚcanPlayTzTicket has expiredT)ÚexpectedÚisVodzopen-live-dateÚsrvTimer   z%Y-%m-%d %H:%M:%S %Zz)This livestream is scheduled to start at Úis_upcoming)r   Úlive_statusr    zlive-url)ÚfatalzDownloading m3u8 information)Únoter   zmultiangle-typezmultiangle-numberzmultiangle-marginÚlinkTxtzd-flex align-items-center)rv   ÚhtmlÚhrefrQ   FÚ )r   r   r7   Úis_liver    r!   zp-eventinfo__detailÚgroupDetail)r   r   )&Ú	_match_idÚ_download_webpager   r   r   ÚfilterÚraise_geo_restrictedÚ_GEO_COUNTRIESÚ_html_search_metaÚallÚraise_login_requiredÚ_download_jsonÚ	_BASE_URLr   Úboolr   Údictr   r
   ÚdtÚdatetimeÚfromtimestampÚtimezoneÚutcÚ
astimezoneÚstrftimeÚraise_no_formatsÚ_download_webpage_handler"   Ú!_parse_m3u8_formats_and_subtitlesr>   r	   rt   r   r   Ú_og_search_titleÚ_og_search_thumbnailÚany)rq   r"   Úvideo_idÚwebpageÚ	error_msgÚ
csrf_tokenry   rz   Ústatusr~   ÚkeyÚrequiredÚerror_messagerŒ   r    Úsrv_timeÚ
start_timer9   r8   Úurlhr7   r)   rG   rH   rr   Ú
detail_urlÚdetails                              r,   Ú_real_extractzZanIE._real_extract™   s=  € Ø—>‘> #Ó&ˆØ×(Ñ(¨¨hÓ7ˆÜ$ WÜÐAÔBÐCÄjÀ\ÔSYð/
ó ð ˆ9ð ð ×%Ñ% i¸4×;NÑ;NÐ%ÔOà×+Ñ+¨L¸'È4Ð+ÓPˆ
Ø×$Ñ$ Y°ÀÐ$ÓFˆØ×&Ñ&Ð':¸GÈTÐ&ÓRˆÜ�J  UÐ+Ô,Ø×%Ñ%Ô'à×$Ñ$Ø�~‰~Ð˜j¨¨
°.ÐAÀ8Ø 
ðVä&ØØñ(ó ð %ó ˆô ˜F [´4°&Ð$9Ô:Ü Ð!3Ó4Ð4ä˜f x´$°Ð&8Ó9ˆð-
ò 	CÑ(ˆC�˜=ô ˜F S¬4¨& MÓ2¸(ÒBÜ$ ]¸TÔBÐBð	Cô # 6¨G´d°VÐ+<Ó=Ð=ˆÜ)¨$×*@Ñ*@ÐAQÐSZÓ*[Ó\ÐÜ ¨´[°MÐ(BÈAÔNˆáÑ(¨XÐ8IÒ-IÜŸ™×2Ñ2Ø!¤2§;¡;§?¡?óç‰j‹lŸ8™8Ð$:Ó;ð ð ×!Ñ!Ø;¸J¸<ÐHÐSWð "ô Yð Ø,Ø%6ñð ð ×)Ñ)¨*°gÀTÐ)ÓJˆØ×6Ñ6Ø�hÐ%Cð 7ó E‰ˆ�$à—8‘8ˆà×;Ñ;¸HÀhÐPUÓV‰
ˆ�Ø× Ñ  ¨(°HÔ=à×,Ñ,Ð->ÀÐQUÐ,ÓVÐVˆ7ÐVÜ# D×$:Ñ$:Ø# W°dð %;ó %<ó =ˆIä% d×&<Ñ&<Ø# W°dð '=ó '<ØEFôHˆIà×.Ñ.¨w¸ÀÈIÓVˆGä! 'Ü˜iÔ(Ð)ÜÐ9ÀÔEÐFÜÐ  &¬7°d·n±nÐ5EÀQÐ3GÓ+HÐ*Ið,Kó Lˆ
ð ×'Ñ'¨
°HÀEÐ'ÓJÒPÈbˆð Ü% gØ×&Ñ&Ð'¬*¨´vð0?ó @àØØ!2Ø×2Ñ2°6Ó:ñ
ô ˜6Ø×0Ñ0Ð1´J°<ÄÐHä!Ð&;Ô<Ð=Ü! mÔ4Ð5ð!ô �<¤¬ð .ñ$ó ð
ð 	
r.   N)Ú__name__Ú
__module__Ú__qualname__ÚIE_NAMEÚIE_DESCr—   Ú_GEO_BYPASSr’   Ú
_VALID_URLÚ_TESTSÚstaticmethodr>   rM   r]   rt   r´   rV   r.   r,   r   r      s¾   „ Ø€GØ€Gà*€IØ€KØ�V€NØT€Jà?àØØ,ØfØAØ&Ø!+ØVñ	
ñð AàØØiØ|ØAØ&Ø!+ØVñ	
ñð€Fð4 ñ2ó ð2ð$ ñ'ó ð'ð8 ñ	
ó ð	
ò#óJU
r.   r   )r›   rš   r/   rC   Úcommonr   Úutilsr   r   r   r	   r
   r   r   r   r   r   r   Úutils.traversalr   r   r   rV   r.   r,   ú<module>rÁ      s8   ðÛ Û Û å !÷÷ ÷ ñ ÷ 9ôX
ˆMõ X
r.   