Ë
    š„jÁ,  ã                   ó”   — d dl Z d dlZddlm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 ddlmZ  G d„ d	e«      Z G d
„ de«      Zy)é    Né   )ÚInfoExtractoré   )Ú	HTTPError)
ÚExtractorErrorÚ
clean_htmlÚfilter_dictÚfloat_or_noneÚint_or_noneÚjoin_nonemptyÚmimetype2extÚparse_iso8601Úupdate_url_queryÚurl_or_none)Útraverse_objc                   ó0   — e Zd ZdZdZdgZd„ Zdd„Zd	d„Zy)
ÚStreaksBaseIEz4https://{}.api.streaks.jp/v1/projects/{}/medias/{}{}FÚJPc                 ó>   — | j                   j                  d||d«      S )NÚplaybackÚ )Ú_API_URL_TEMPLATEÚformat)ÚselfÚ
project_idÚmedia_ids      úO/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/streaks.pyÚ_streaks_playback_api_urlz'StreaksBaseIE._streaks_playback_api_url   s   € Ø×%Ñ%×,Ñ,¨Z¸ÀXÈrÓRÐRó    Nc                 ó~   — | j                  | j                  ||«      |ddddœ| j                  «       ¥|xs i ¥¬«      S )Nz%Downloading STREAKS playback API JSONúapplication/jsonzhttps://players.streaks.jp)ÚAcceptÚOrigin©Úheaders)Ú_download_jsonr   Úgeo_verification_headers)r   r   r   r%   s       r   Ú_download_streaks_playback_jsonz-StreaksBaseIE._download_streaks_playback_json   s_   € Ø×"Ñ"Ø×*Ñ*¨:°xÓ@ØÐ=Ø,Ø6ñHð ×/Ñ/Ó1ðHð ’=˜bð	Hð #ó ð 	r   c                 óø  — 	 | j                  |||¬«      }|d   }dddddœj#                  |j#                  d«      «      }g i }}d}|d   }t        |ddt$        ht&        f«      }t        |d„ f«      D �]Y  }|j#                  d«      rd}Œ|d   }|dk(  }t)        |j#                  d«      «      }|dk7  r| j+                  d|› �«       ŒV|r�|r�t        | j-                  | j.                  j1                  d||d«      |d d!d!d"œt3        j4                  d|d   i«      j7                  «       ¬#«      d$d%t8        j:                  j<                  hf«      }t?        ||«      }| jA                  ||d&d'd||¬(«      \  }}|D ]/  }|sŒ|jC                  d)i «      jE                  d*d+d,gi«       d|d-<   Œ1 |jG                  |«       | jI                  ||¬.«       �Œ\ |s|r| jK                  |«       | jM                  |«       t        |d/d0„ f«      D ]I  }t        |d1tN        jP                  hf«      xs d2}|jC                  |g «      jS                  d3|d   i«       ŒK ||||||d4œt        |d5t        ht        fd6t        ht        fd7tT        hfd8tV        hfd9dt        ht        tX        t        fd:dtZ        ht&        fd;tV        hfd<œ«      ¥S # t        $ �r1}t        |j                  t        «      �r|j                  j
                  dv rø| j                  |j                  j                  j                  «       j                  «       |d¬«      }t        |dt        ht        f«      }	t        |dt        ht        f«      }
t        |dt        hf«      }|
dk(  r2|d	k(  r| j                  | j                  ¬
«       n|dk(  rt        d«      ‚|
dk(  rt        t!        |
|	d¬«      d¬«      ‚|
s|	rt        t!        |
||	d¬«      «      ‚‚ d }~ww xY w)=Nr$   )i“  i”  F)ÚfatalÚmessageÚcodeÚidÚREQUEST_FAILEDé|   )Ú	countriesé~   z:Access is denied (possibly due to invalid/missing API key)ÚMEDIA_NOT_FOUNDz: )ÚdelimT)ÚexpectedÚwas_liveÚnot_liveÚis_live)ÚclipÚfileÚlinearÚliveÚtypeÚsources.Ússaic                 ó   — t        |d   «      S )NÚsrc©r   ©Ú_Úvs     r   ú<lambda>z9StreaksBaseIE._extract_from_streaks_api.<locals>.<lambda>I   s   € œ Q u¡XÓ.€ r   Úkey_systemsr@   Úm3u8zUnsupported stream type: z/ssai/sessionzDownloading session parametersr!   )zContent-Typer"   )r%   Údatar   ÚqueryÚmp4Úhls)Úm3u8_idr*   r;   rI   Údownloader_optionsÚffmpeg_argsz-live_start_indexÚ0Úis_from_start)ÚtargetÚtracksc                 ó0   — |d   dv xr t        |d   «      S )NÚkind)ÚcaptionsÚ	subtitlesr@   rA   rB   s     r   rE   z9StreaksBaseIE._extract_from_streaks_api.<locals>.<lambda>m   s!   €  1 V¡9Ð0IÐ#IÒ#cÌkÐZ[Ð\aÑZbÓNc€ r   ÚsrclangÚjaÚurl)r-   Ú
display_idÚformatsÚlive_statusrV   Úuploader_idÚnameÚdescriptionÚdurationÚ
updated_atÚtags)Ú	thumbnailÚposterÚ
created_at)Útitler_   r`   Úmodified_timestamprb   rc   Ú	timestamp).r(   r   Ú
isinstanceÚcauser   ÚstatusÚ_parse_jsonÚresponseÚreadÚdecoder   r   Úfilterr   Úraise_geo_restrictedÚ_GEO_COUNTRIESr   ÚgetÚdictÚanyr   Úreport_warningr&   r   r   ÚjsonÚdumpsÚencodeÚurllibÚparseÚparse_qsr   Ú#_extract_m3u8_formats_and_subtitlesÚ
setdefaultÚupdateÚextendÚ_merge_subtitlesÚ
report_drmÚ_remove_duplicate_formatsÚstrÚlowerÚappendr
   r   Úallr   )r   r   r   r%   rI   Úlive_from_startrm   ÚeÚerrorr+   r,   Úerror_idÚ
streaks_idr\   r[   rV   Údrm_formatsr=   r>   ÚsourceÚsrc_urlr7   ÚextÚsession_paramsÚfmtsÚsubsÚfmtÚlangs                               r   Ú_extract_from_streaks_apiz'StreaksBaseIE._extract_from_streaks_api'   sJ  € ð	Ø×;Ñ;¸JÈÐZaÐ;ÓbˆHð$ ˜d‘^ˆ
àØØØñ	
÷
 ‰#ˆh�l‰l˜6Ó"Ó
#ð 	ð   �ˆØˆØ˜9Ñ%ˆÜ˜G c¨6´D°6¼3Ð%?Ó@ˆä" 7Ù.ð-
ó ó 	:ˆFð �z‰z˜-Ô(Ø"�Øà˜U‘mˆGØ! YÑ.ˆGÜ˜vŸz™z¨&Ó1Ó2ˆCØ�fŠ}Ø×#Ñ#Ð&?À¸uÐ$EÔFØá™4Ü!-¨d×.AÑ.AØ×*Ñ*×1Ñ1°&¸*ÀjÐRaÓbØÐ>Ø-?ÐK]Ñ^ÜŸ™ T¨6°$©<Ð$8Ó9×@Ñ@ÓBð	 /Bó /ð
 �w¤§¡×!6Ñ!6Ð 7Ð8ó":�ô +¨7°NÓC�à×AÑAØ˜ 5°%¸uÈ7ÐZ_ð Bó a‰JˆD�$àò 0�Ú"Ø—N‘NÐ#7¸Ó<×CÑCÀ]ÐUhÐjmÐTnÐDoÔpØ+/�C˜Ò(ð0ð �N‰N˜4Ô Ø×!Ñ! $¨yÐ!Ö9ð=	:ñ@ ™;Ø�O‰O˜HÔ%Ø×&Ñ& wÔ/ä  ØÑcð,
ó ò 	HˆDô    y´3·9±9°+Ð&>Ó?ÒGÀ4ˆDØ× Ñ   rÓ*×1Ñ1°5¸$¸u¹+Ð2FÕGð		Hð Ø"ØØ&Ø"Ø%ñ
ô ˜8Ø ¤: ,´Ð7Ø -´
¨|¼VÐDØ'¬-¨Ð9Ø'3´m°_Ð&EØ ¤z l´F¼CÄÐHØ5°u¼{¸mÌSÐQØ*¬]¨OÐ<ñ&ó ð
ð 	
øôQ ó 	Ü˜!Ÿ'™'¤9Õ-°!·'±'·.±.ÀJÑ2NØ×(Ñ(¨¯©×)9Ñ)9×)>Ñ)>Ó)@×)GÑ)GÓ)IÈ8Ð[`Ð(Óa�Ü& u¨y¼:¸,ÌÐ.OÓP�Ü# E¨F´Z°LÄ&Ð+IÓJ�Ü'¨°´{°mÐ/DÓE�ØÐ+Ò+Ø 3’Ø×1Ñ1¸D×<OÑ<OÐ1ÕPØ! SšÜ,Ð-iÓjÐjØÐ,Ò,Ü(¬°t¸WÈDÔ)QÐ\`ÔaÐaÙ™7Ü(¬°t¸XÀwÐVZÔ)[Ó\Ð\Øûð	ús   ‚J> Ê>
O9ËD,O4Ï4O9)N)NNF)	Ú__name__Ú
__module__Ú__qualname__r   Ú_GEO_BYPASSrr   r   r(   r–   © r   r   r   r      s%   „ ØNÐØ€KØ�V€NòSóô[
r   r   c                   ó>  — e Zd ZddgZded   › d�gZdddd	d
dddddddœ
dœddddddddddddddœdœddddd dd!d"dd#d!d$d%œd&d'd(d)giiid*œd+d,dd-d.d/d0d1d2d3d4d5d6œd&d'd(d7giiid8d9œd:d;ded<d=d>d?d@dAdBdCœ
d8dDœdEdFdGœgZdHdIddJdKdLddMdNdOdPddQœdRdFid*œdSdTdUdVdWddXdYœd8dZœgZd[„ Zy\)]Ú	StreaksIEz|https?://players\.streaks\.jp/(?P<project_id>[\w-]+)/(?P<api_key>[\da-f]+)/index\.html\?(?:[^#]+&)?m=(?P<id>(?:ref:)?[\w-]+)zehttps?://playback\.api\.streaks\.jp/v1/projects/(?P<project_id>[\w-]+)/medias/(?P<id>(?:ref:)?[\w-]+)z(<iframe\s+[^>]*\bsrc\s*=\s*["\'](?P<url>r   ú)zqhttps://players.streaks.jp/tipness/08155cd19dc14c12bebefb69b92eafcc/index.html?m=ba2c253508914d9ea061a5f26bc58b20Ú ba2c253508914d9ea061a5f26bc58b20rJ   ztarun_suimin.mp4g/Ý$�•p@r6   Ú20230908i¡údiH›údÚtipness)
r-   r�   rf   r`   r\   Úmodified_daterg   rh   Úupload_dater]   )rY   Ú	info_dictzhhttps://players.streaks.jp/ktv-web/0298e8964c164ab384c07ef6e08c444b/index.html?m=ref:mycoffeetime_250317Ú dccdc079e3fd41f88b0c8435e2d453abu   ã‚�ã�Ÿã�—ã�®ç�ˆç�²æ™‚é–“_250317zref:mycoffeetime_250317g�Âõ(\¿^@Ú20250310i~Îgzre:https?://.+\.jpgi¯}Îgzktv-web)r-   r�   rf   rZ   r`   r\   r¢   rg   rc   rh   r£   r]   z\https://playback.api.streaks.jp/v1/projects/ktv-news/medias/714171c4c53c409bb41e1572997ebfcfÚ 714171c4c53c409bb41e1572997ebfcfz	28105.mp4gË¡E¶óýH@Ú20260702iOÛFji·ÚFjzktv-news)r-   r�   rf   r`   r\   r¢   rg   rc   rh   r£   r]   Úextractor_argsÚstreaksÚapi_keyÚ 0ff2ccfb6381401582d6ee60e3cb66a1)rY   r¤   ÚparamszVhttps://playback.api.streaks.jp/v1/projects/tver-olympic/medias/ref:sp_240806_1748_dvrÚ c10f7345adb648cf804d7578ab93b2e3u!   ã‚µãƒƒã‚«ãƒ¼ ç”·å­� æº–æ±ºå‹�_dvrzref:sp_240806_1748_dvrg     PÉ@r5   Ú20240805i‡O±fi€¯fÚ20240804ztver-olympic)r-   r�   rf   rZ   r`   r\   r¢   rg   rh   r£   r]   Ú e09168c4383d4b18949067022558f071zInvalid URL)rY   r¤   r­   ÚskipzChttps://playback.api.streaks.jp/v1/projects/tbs/medias/ref:simul-02Ú c4e83a7b48f4409a96adacec674b4e22zref:simul-02r7   Ú20241031iä"giØ[§eÚ20240117Útbs)
r-   r�   rf   rZ   r\   r¢   rg   rh   r£   r]   )rY   r¤   r²   zphttps://players.streaks.jp/sp-jbc/a12d7ee0f40c49d6a0a2bff520639677/index.html?m=5f89c62f37ee4a68be8e6e3b1396c7d8T)rY   Úonly_matchingz#https://event.play.jp/playnext2023/Ú 2d975178293140dc8074a7fc536a7604u'   PLAY NEXTã‚­ãƒ¼ãƒ ãƒ¼ãƒ“ãƒ¼ï¼ˆæœ¬ç•ªï¼‰ÚplaygÍÌÌÌÌ1@i½’qcÚ20221114iCP­gÚ20250213)r-   r�   rf   r]   r`   rc   rh   r£   rg   r¢   r\   Únocheckcertificatez{https://wowshop.jp/Page/special/cooking_goods/?bid=wowshop&srsltid=AfmBOor_phUNoPEE_UCPiGGSCMrJE5T2US397smvsbrSdLqUxwON0el4r   zM?bid=wowshop&srsltid=AfmBOor_phUNoPEE_UCPiGGSCMrJE5T2US397smvsbrSdLqUxwON0el4u[   ãƒ¯ãƒ³ãƒ©ãƒ³ã‚¯ä¸Šã�®æ–™ç�†é�“å…·ã�§ã�¨ã�³ã��ã‚Šã�®â€œã�Šã�„ã�—ã�„â€�ã‚’é£Ÿå�“ã�¸ï½œwowshopz$md5:914b5cb8624fc69274c7fb7b2342958fz<https://wowshop.jp/Page/special/cooking_goods/images/ogp.jpg)r-   rf   r_   Ú	age_limitrc   )rY   Úplaylist_mincountr¤   r²   c                 óä   — | j                  |«      j                  «       }|d   |d   }}|j                  d«      xs | j                  dd g«      d   }| j	                  ||t        d|i«      ¬«      S )Nr   r-   r«   r   zX-Streaks-Api-Keyr$   )Ú_match_valid_urlÚ	groupdictrs   Ú_configuration_argr–   r	   )r   rY   Úmobjr   r   r«   s         r   Ú_real_extractzStreaksIE._real_extract  sƒ   € Ø×$Ñ$ SÓ)×3Ñ3Ó5ˆØ# LÑ1°4¸±:�Hˆ
Ø—(‘(˜9Ó%ÒV¨×)@Ñ)@ÀÈTÈFÓ)SÐTUÑ)Vˆà×-Ñ-Ø˜¬+Ø# Wð7ó +ð .ó ð 	r   N)	r—   r˜   r™   Ú
_VALID_URLÚ_EMBED_REGEXr„   Ú_TESTSÚ_WEBPAGE_TESTSrÄ   r›   r   r   r�   r�   …   sÙ  „ ð 	HØpð€Jð @À
È1Á¸ÈaÐPÐQ€Lð Cà4ØØ'ØØ%Ø'Ø",Ø#Ø%Ø$ñ
ñð" zà4ØØ6Ø3ØØ%Ø'Ø",Ø/Ø#Ø%Ø$ñ
ñð& nà4ØØ ØØ%Ø'Ø",Ø/Ø#Ø%Ø%ñ
ð $ i°)Ð>`Ð=aÐ1bÐ%cÐdñ!ð& hà4ØØ8Ø2ØØ%Ø'Ø",Ø#Ø%Ø)ñ
ð $ i°)Ð>`Ð=aÐ1bÐ%cÐdØñ#ð( Uà4ØØØ(Ø$Ø'Ø",Ø#Ø%Ø ñ
ð ñð$ BØñðgW€Fðt 5à4ØØ>Ø!ØØ/Ø#Ø%Ø",Ø'Ø%ñ
ð (¨Ð.ñ!ð$ MØàaØrØAØØWñ
ð ñð#€Nó<r   r�   )rw   Úurllib.parserz   Úcommonr   Únetworking.exceptionsr   Úutilsr   r   r	   r
   r   r   r   r   r   r   Úutils.traversalr   r   r�   r›   r   r   ú<module>rÎ      sB   ðÛ Û å !Ý -÷÷ ÷ õ +ôm
�Mô m
ô`D�õ Dr   