Ë
    š„jr5  ã                   ó¬   — 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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 ddlmZ  G d„ d	e«      Z G d
„ de«      Zy)é    Né   )ÚInfoExtractoré   )Ú	HTTPError)ÚExtractorErrorÚencode_data_uriÚfilter_dictÚint_or_noneÚjwt_decode_hs256Úurl_or_noneÚurlencode_postdataÚurljoin)Útraverse_objc                   ó¶  — e Zd ZdZdZdZdddddddd	d
ddddddddœddidœ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-d
“d.d/“d0d1“d2d“d3d	“ddidœd4i dd5“dd“d2d“d3d	“d d6“dd7“dd8“dd9“d-d:“d*d;“d(d<“d$d=“d.d>“d,d“d0d?“d&d@“d"dA“ddidBgdCdDœdEdFdGœgZdHZdIgZd:d
d
d
d
dJdJdKœZ	dLZ
dMZdNZdNZedO„ «       ZedP„ «       ZedQ„ «       ZdR„ ZdS„ ZdT„ ZdU„ ZyN)VÚ	TenPlayIEÚ10playzMhttps?://(?:www\.)?10(?:play)?\.com\.au/(?:[^/?#]+/)+(?P<id>tpv\d{6}[a-z]{5})zjhttps://10.com.au/australian-survivor/web-extras/season-10-brains-v-brawn-ii/myless-journey/tpv250414jdmtfÚ7440980000013868Úmp4zMyles's JourneyzKRelive Myles's epic Brains V Brawn II journey to reach the game's final twoú
Channel 10Ú2199827728001é   éù   zre:https://.+/.+\.jpgzAustralian Survivorz	Season 10é
   i¬îügÚ20250414)ÚidÚextÚtitleÚ	alt_titleÚdescriptionÚuploaderÚuploader_idÚ	age_limitÚdurationÚ	thumbnailÚseriesÚseasonÚseason_numberÚ	timestampÚupload_dateÚskip_downloadÚm3u8)ÚurlÚ	info_dictÚparamszKhttps://10.com.au/neighbours/episodes/season-42/episode-9107/tpv240902nzqypr   Ú9000000000091177r   r   zNeighbours - S42 Ep. 9107r   z
Thu 05 Sepr   z$md5:37a1f4271be34b9ee2b533426a5fbaefr#   il  ÚepisodezEpisode 9107Úepisode_numberi“#  r&   z	Season 42r'   é*   r%   Ú
Neighboursr$   r"   r(   i$PÙfr)   Ú20240905r    r!   zKhttps://10.com.au/tiny-chef-show/episodes/season-1/episode-2/tpv240228pofvtÚ9000000000084116i  zThe Tiny Chef Show - S1 Ep. 2zS1 Ep. 2 - Popcorn/bananaz$md5:d4758b52b5375dfaa67a78261dcb5763r   zThe Tiny Chef Showr   r   iì·/hÚ20250522zSeason 1z	Episode 2z3Failed to download m3u8 information: HTTP Error 502zvideo unavailable)r,   r-   r.   Úexpected_warningsÚskipzohttps://10play.com.au/how-to-stay-married/web-extras/season-1/terrys-talks-ep-1-embracing-change/tpv190915ylupcT©r,   Úonly_matchingFÚAUé   )ÚGÚPGÚMÚMAzMA15+ÚRÚXÚ
token_dataz3(?m)-(?:300|150|75|55)0000-(\d+(?:-[\da-f]+)?)\.ts$Nc                 ó¸   — g }| j                  «       D ]5  }|j                  d«      r|j                  «        Œ%|j                  |«       Œ7 dj	                  |«      S )Nz#https://redirector.googlevideo.com/ú
)Ú
splitlinesÚ
startswithÚpopÚappendÚjoin)Úm3u8_docÚoutÚlines      úO/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/tenplay.pyÚ_filter_ads_from_m3u8zTenPlayIE._filter_ads_from_m3u8u   sT   € àˆØ×'Ñ'Ó)ò 	ˆDØ�‰ÐDÔEØ—‘”	ØØ�J‰J�tÕð		ð �y‰y˜‹~Ðó    c                  óð   — t         j                  j                  t         j                  j                  «      j                  d«      } t        j                  | j                  «       «      j                  «       S )Nz%Y%m%d%H%M%S)
ÚdtÚdatetimeÚnowÚtimezoneÚutcÚstrftimeÚbase64Ú	b64encodeÚencodeÚdecode)Útss    rN   Ú!_generate_xnetwork_ten_auth_tokenz+TenPlayIE._generate_xnetwork_ten_auth_token€   sG   € ä�[‰[�_‰_œRŸ[™[Ÿ_™_Ó-×6Ñ6°~ÓFˆÜ×Ñ §	¡	£Ó,×3Ñ3Ó5Ð5rP   c                 óN   — t        | «      d   t        j                  «       z
  dk  S )NÚexpi,  )r   Útime)Útokens    rN   Ú_is_jwt_expiredzTenPlayIE._is_jwt_expired…   s"   € ä Ó& uÑ-´·	±	³Ñ;¸cÑAÐArP   c                 óÎ  — 	 | j                  dd dddit        j                  | j                  | j                  dœ«      j                  «       ¬«      }|d	   | _        |d
   | _        | j                  j                  | j                  | j                  | j                  | j                  g«       y # t        $ r­}t        |j                  t        «      r�|j                  j                  dk(  rtd x| _        | _        | j                  j                  | j                  | j                  d d g«       | j                  d«        | j                   | j#                  «       Ž  Y d }~y ‚ d }~ww xY w)Nz#https://10.com.au/api/token/refreshzRefreshing access tokenúContent-Typeúapplication/json)ÚaccessTokenÚrefreshToken©ÚheadersÚdataé�  z=Refresh token has been invalidated; retrying with credentialsrf   rg   )Ú_download_jsonÚjsonÚdumpsÚ_access_tokenÚ_refresh_tokenrZ   r   Ú
isinstanceÚcauser   ÚstatusÚcacheÚstoreÚ_NETRC_MACHINEÚ_TOKEN_CACHE_KEYÚreport_warningÚ_perform_loginÚ_get_login_info)ÚselfÚrefresh_dataÚes      rN   Ú_refresh_access_tokenzTenPlayIE._refresh_access_token‰   s?  € ð	Ø×.Ñ.Ø5°tÐ=Và"Ð$6ðäŸ
™
Ø#'×#5Ñ#5Ø$(×$7Ñ$7ñ$ó ÷ ‘6“8ð /ó ˆLð  *¨-Ñ8ˆÔØ*¨>Ñ:ˆÔØ�
‰
×Ñ˜×,Ñ,¨d×.CÑ.CÀd×FYÑFYÐ[_×[mÑ[mÐEnÕoøô ò 	Ü˜!Ÿ'™'¤9Ô-°!·'±'·.±.ÀCÒ2GØ;?Ð?�Ô# dÔ&8Ø—
‘
× Ñ  ×!4Ñ!4°d×6KÑ6KÈdÐTXÈ\ÔZØ×#Ñ#Ð$cÔdØ#�×#Ñ# T×%9Ñ%9Ó%;Ñ<ÜØûð	ús   ‚AB. Â.	E$Â7B"EÅEÅE$c                 óò  — | j                   sA| j                  j                  | j                  | j                  d d g¬«      \  | _         | _        | j                   r| j
                  r| j                  d«       y 	 | j                  dd dd| j                  «       ddœt        j                  ||dœ«      j                  «       ¬	«      }|d   d   | _         |d   d   | _        | j                  j#                  | j                  | j                  | j                   | j
                  g«       y # t        $ rF}t        |j                  t        «      r&|j                  j                   d
k(  rt        dd¬«      ‚‚ d }~ww xY w)N)ÚdefaultzUsing cached refresh tokenzhttps://10.com.au/api/user/authz
Logging inre   zhttps://10.com.au/)rd   zX-Network-Ten-AuthÚReferer)ÚemailÚpasswordrh   rk   zInvalid username/passwordT)ÚexpectedÚjwtrg   rf   )rp   rt   Úloadrv   rw   ro   Úwrite_debugrl   r]   rm   rn   rZ   r   rq   rr   r   rs   ru   )r{   Úusernamerƒ   Ú	auth_datar}   s        rN   ry   zTenPlayIE._perform_loginŸ   s]  € Ø×"Ò"Ø6:·j±j·o±oØ×#Ñ# T×%:Ñ%:ÀTÈ4ÀLð 7Fó 7RÑ3ˆDÔ Ô!3à×Ò 4×#5Ò#5Ø×ÑÐ9Ô:Øð	Ø×+Ñ+Ø1°4¸à$6Ø*.×*PÑ*PÓ*RØ3ñô Ÿ
™
Ø%Ø (ñ$ó ÷ ‘6“8ð ,ó 	ˆIð (¨Ñ.¨~Ñ>ˆÔØ& uÑ-¨mÑ<ˆÔØ�
‰
×Ñ˜×,Ñ,¨d×.CÑ.CÀd×FYÑFYÐ[_×[mÑ[mÐEnÕoøô ò 	Ü˜!Ÿ'™'¤9Ô-°!·'±'·.±.ÀCÒ2GÜ$Ð%@È4ÔPÐPØûð	ús   Á9AD' Ä'	E6Ä0AE1Å1E6c                 óH  — | j                   r+| j                  | j                   «      r| j                  «        dD ]G  }	 | j                  d|› d�|dddit	        d| j                   rd| j                   › �nd d	œ«      ¬
«      c S  y # t
        $ r“}|s‹t        |j                  t        «      rq|j                  j                  dk(  rX| j                   r&| j                  d«       | j                  «        Y d }~Œ»| j                  «       d   s| j                  dd¬«       ‚ d }~ww xY w)N)FTz)https://10.com.au/api/v1/videos/playback/ú/zDownloading video JSONÚplatformÚsamsungzv1/fw;v1/drmzBearer )zTP-AcceptFeatureÚAuthorization)ÚnoteÚqueryri   é“  z$Access token has expired; refreshingr   z#Login required to access this videorƒ   )Úmethod)ro   rb   r~   Ú_download_json_handler	   r   rq   rr   r   rs   Ú	to_screenrz   Úraise_login_required)r{   Ú
content_idÚis_retryr}   s       rN   Ú_call_playback_apizTenPlayIE._call_playback_api»   s  € Ø×Ò $×"6Ñ"6°t×7IÑ7IÔ"JØ×&Ñ&Ô(Ø%ò 	ˆHðØ×1Ñ1Ø?À
¸|È1ÐMÈzØ1¸*ÀiÐ9PÜ'Ø,:ØKO×K]ÒK]¨7°4×3EÑ3EÐ2FÑ)GÐcgñ)ó ð 2ó ò ñ	øô "ò Ù¤J¨q¯w©w¼	Ô$BÀqÇwÁwÇ~Á~ÐY\ÒG\Ø×)Ò)ØŸ™Ð'MÔNØ×2Ñ2Ô4Ü Ø!×1Ñ1Ó3°AÒ6Ø×1Ñ1Ð2WÐ`jÐ1ÔkØûðús   ¾ABÂ	D!ÂA"DÃ5'DÄD!c                 óv  — | j                  |«      }	 | j                  d|› �|«      }| j                  |«      \  }}|d   d   }|d   d   }|j                  d«      }	|	st        d	«      ‚| j                  d
|› d|› d�|dt        d|	i«      ¬«      }
| j                  |
d   |d«      \  }}d}|D ]F  }| j!                  |d   |d¬«      }| j#                  |«      }||d<   |j%                  d«      dk(  sŒEd}ŒH |sŒrŠt'        j(                  | j*                  |«      rjt'        j,                  | j*                  d|«      }t'        j,                  dd|«      }|j/                  dt1        |j3                  «       d«      |dddd dd!œ«       ||t5        |j%                  d"«      «      r
d#d|d"   igind d$d%d&œt7        |d't8        hfd(t:        hfd)t8        hfd*t8        hfd+t8        hfd,| j<                  j$                  hfd-t8        hfd.t:        hfd/t:        hfd0t:        hfd1t4        hfd2œ«      ¥S # t        $ r‰}t        |j                  t
        «      ri|j                  j                  dk(  rPd|j                  j                  j                  «       j                  «       v r| j                  | j                  ¬«       ‚ d }~ww xY w)3Nz https://10.com.au/api/v1/videos/r‘   zError 54113)Ú	countriesÚdaiÚcontentSourceIdÚvideoIdz
x-dai-authzFailed to get DAI auth tokenz6https://pubads.g.doubleclick.net/ondemand/hls/content/z/vid/z/streamszDownloading DAI JSONz
auth-token)r�   rj   Ústream_manifestr   Fr,   zDownloading m3u8 information)r�   Úhls_media_playlist_dataÚheighti8  Tz-5000000-\1.tsz-(?:300|150|75|55)0000\.key"z-5000000.key"zupgrade-attempt-1080pzapplication/x-mpegurli€  Úm3u8_native)Ú	format_idr,   rŸ   Úwidthr    r   ÚprotocolÚ__needs_testingÚ
captionUrlÚenr   r   )r   ÚformatsÚ	subtitlesr    r!   ÚaltIdr#   Úsubtitler   r   ÚclassificationÚtvShowr&   r0   Ú	publishedÚimageUrl)r   r#   r   r   r   r"   r%   r'   r1   r(   r$   )Ú	_match_idrl   r   rq   rr   r   rs   ÚresponseÚreadr[   Úraise_geo_restrictedÚ_GEO_COUNTRIESr˜   Ú
get_headerr   Ú#_extract_m3u8_formats_and_subtitlesÚ_download_webpagerO   ÚgetÚreÚsearchÚ_SEGMENT_BITRATE_REÚsubrI   r   rZ   r   r   Ústrr
   Ú	_AUS_AGES)r{   r,   r–   rj   r}   Ú
video_dataÚurlhÚcontent_source_idÚvideo_idÚ
auth_tokenÚdai_datar¨   Ú_Úalready_have_1080pÚfmtrK   s                   rN   Ú_real_extractzTenPlayIE._real_extractÑ   s  € Ø—^‘^ CÓ(ˆ
ð	Ø×&Ñ&Ð)IÈ*ÈÐ'VÐXbÓcˆDð  ×2Ñ2°:Ó>Ñˆ
�DØ& uÑ-Ð.?Ñ@ÐØ˜eÑ$ YÑ/ˆØ—_‘_ \Ó2ˆ
ÙÜ Ð!?Ó@Ð@à×&Ñ&ØDÐEVÐDWÐW\Ð]eÐ\fÐfnÐoØÐ3Ü# \°:Ð$>Ó?ð 'ó Aˆð ×=Ñ=ØÐ&Ñ'¨°Uó<‰
ˆ�ð #ÐØò 	*ˆCØ×-Ñ-Ø�E‘
˜JÐ-Kð .ó MˆHà×1Ñ1°(Ó;ˆHØ-5ˆCÐ)Ñ*Ø�w‰w�xÓ  DÓ(Ø%)Ñ"ð	*ñ "¡h´2·9±9¸T×=UÑ=UÐW_Ô3`Ü—v‘v˜d×6Ñ6Ð8IÈ8ÓTˆHÜ—v‘vÐ=Ð?OÐQYÓZˆHØ�N‰NØ4Ü& x§¡Ó'8Ð:QÓRØ+3ØØØØ)Ø#'ñ	ô 	ð ØÜBMÈdÏhÉhÐWcÓNdÔBe˜$ %¨¨lÑ);Ð!<Ð =Ñ>ÐkoØ$Ø*ñ
ô ˜4Ø¤ Ð&Ø'¬+¨Ð7Ø$¤s eÐ,Ø%¬ uÐ-Ø -´¨uÐ5Ø.°·±×1CÑ1CÐ0DÐEØ#¤c UÐ+Ø"*¬[¨MÐ!:Ø#,¬{¨mÐ"<Ø)¬K¨=Ð9Ø(¬;¨-Ð8ñ"ó ð
ð 	
øôa ò 	ä˜1Ÿ7™7¤IÔ.°1·7±7·>±>ÀSÒ3HØ! Q§W¡W×%5Ñ%5×%:Ñ%:Ó%<×%CÑ%CÓ%EÑEà×)Ñ)°D×4GÑ4GÐ)ÔHØûð	ús   “H& È&	J8È/BJ3Ê3J8)Ú__name__Ú
__module__Ú__qualname__ÚIE_NAMEÚ
_VALID_URLrv   Ú_TESTSÚ_GEO_BYPASSr´   r¾   rw   r»   rp   ro   ÚstaticmethodrO   r]   rb   r~   ry   r˜   rÈ   © rP   rN   r   r      sÜ  „ Ø€GØa€JØ€Nð |à$ØØ'Ø+ØjØ$Ø*ØØØ1Ø+Ø!ØØ#Ø%ñ
ð" # FÐ+ñ)ð. ]ð
ØÐ$ð
à�5ð
ð Ð0ð
ð ˜ð	
ð
 ÐAð
ð ˜ð
ð �~ð
ð ˜dð
ð �kð
ð ˜Rð
ð �lð
ð Ð1ð
ð ˜ð
ð ˜ð
ð ˜:ð
ð  ˜ð!
ð" ˜?ð#
ð& # FÐ+ñ-ð2 ]ð
ØÐ$ð
à�5ð
ð ˜ð
ð ˜?ð	
ð
 ˜ð
ð Ð4ð
ð Ð4ð
ð ÐAð
ð ˜ð
ð Ð*ð
ð ˜Qð
ð ˜að
ð ˜ð
ð Ð1ð
ð ˜:ð
ð  �jð!
ð" �{ð#
ð& # FÐ+ØSÐTØ#ñ1ð4 AØñðKH€FðR €KØ�V€NàØØØØØØñ€Ið $ÐØPÐà€NØ€Màñó ðð ñ6ó ð6ð ñBó ðBòpò,pò8ó,G
rP   r   c                   óN   — e Zd ZdZdZddddœddœd	d
ddœddœdddœgZdd„Zd„ Zy)ÚTenPlaySeasonIEz10play:seasonzbhttps?://(?:www\.)?10(?:play)?\.com\.au/(?P<show>[^/?#]+)/episodes/(?P<season>[^/?#]+)/?(?:$|[?#])z/https://10.com.au/masterchef/episodes/season-15z	Season 15zMTQ2NjMxOQ==)r   r   é2   )r,   r-   Úplaylist_mincountzNhttps://10.com.au/the-bold-and-the-beautiful-fast-tracked/episodes/season-2024zSeason 2024ÚMjc0OTIwéŸ   zRhttps://10play.com.au/the-bold-and-the-beautiful-fast-tracked/episodes/season-2024Tr9   Nc              #   óÜ   K  — g }t        j                  d«      D ]N  }| j                  ||d|id|› �¬«      }|d   }|j                  d„ |D «       «       |D ]	  }|d   –— Œ |d   rŒN y  y ­w)	Nr   z	skipIds[]zFetching episodes page )r�   r�   Úitemsc              3   ó&   K  — | ]	  }|d    –— Œ y­w)r   NrÑ   )Ú.0Úeps     rN   ú	<genexpr>z+TenPlaySeasonIE._entries.<locals>.<genexpr>9  s   è ø€ Ò>¨˜B˜t�HÑ>ùs   ‚ÚcardLinkÚhasMore)Ú	itertoolsÚcountrl   Úextend)r{   Úload_more_urlÚ
display_idÚskip_idsÚpageÚepisodes_carouselÚepisodes_chunkrÜ   s           rN   Ú_entrieszTenPlaySeasonIE._entries1  s‘   è ø€ ØˆÜ—O‘O AÓ&ò 	ˆDØ $× 3Ñ 3Ø˜z°+¸xÐ1HØ.¨t¨fÐ5ð !4ó !7Ðð /¨wÑ7ˆNØ�O‰OÑ>¨~Ô>Ô>à$ò %�Ø˜‘nÓ$ð%à$ YÓ/Ùñ	ùs   ‚A%A,Á(A,c                 ój  — | j                  |«      j                  dd«      \  }}| j                  d|› d|› �|› d|› �«      }t        |dddd	„ d
t        hfffd¬«      xs i }|d   }| j                  | j                  t        ||d   «      |«      |t        |dddt        hf«      t        |«      ¬«      S )NÚshowr&   zhttps://10.com.au/api/shows/z
/episodes/r‹   Úcontentr   Ú
componentsc                 ó.   — |d   j                  «       dk(  S )Nr   Úepisodes)Úlower)rÅ   Úvs     rN   ú<lambda>z/TenPlaySeasonIE._real_extract.<locals>.<lambda>G  s   € ˜Q˜w™Z×-Ñ-Ó/°:Ñ=€ rP   .F)Úget_allÚtpIdÚloadMoreUrlr   )Úgetter)	Ú_match_valid_urlÚgrouprl   r   ÚdictÚplaylist_from_matchesré   r   r½   )r{   r,   rë   r&   Úseason_inforç   Úplaylist_ids          rN   rÈ   zTenPlaySeasonIE._real_extract@  së   € Ø×,Ñ,¨SÓ1×7Ñ7¸ÀÓI‰ˆˆfØ×)Ñ)Ø*¨4¨&°
¸6¸(ÐCÈÀvÈQÈvÈhÐEWóYˆô )¨Ø�q˜,Ù=Ø”t�f�ð)ð7ð ô	ò %ð #%ð	 	ð (¨Ñ/ˆà×)Ñ)Ø�M‰Mœ' #Ð'8¸Ñ'GÓHÈ+ÓVØœ k°I¸qÀ'ÌCÈ5Ð3QÓRÜ˜3“<ð *ó !ð 	!rP   )N)rÉ   rÊ   rË   rÌ   rÍ   rÎ   ré   rÈ   rÑ   rP   rN   rÓ   rÓ     s^   „ Ø€GØv€Jà@à Ø ñ
ð  ñð `à"Øñ
ð !ñð dØñð€Fó&ó!rP   rÓ   )rX   rS   rR   rà   rm   r¹   r`   Úcommonr   Únetworking.exceptionsr   Úutilsr   r   r	   r
   r   r   r   r   Úutils.traversalr   r   rÓ   rÑ   rP   rN   ú<module>r     sL   ðÛ Û Û Û Û 	Û å !Ý -÷	÷ 	ó 	õ +ôA
�ô A
ôH5!�mõ 5!rP   