
    V|h                        S SK r S SKrS SKrS SKrS SKrSSKJr  SSK	J
r
  SSKJrJrJr  SSKJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'  SS	K(J)r)J*r*   " S
 S\5      r+ " S S\+5      r, " S S\
5      r- " S S\
5      r. " S S\5      r/ " S S\5      r0 " S S\
5      r1 " S S\5      r2 " S S\
5      r3 " S S\+5      r4 " S S\+5      r5g)     N   )AdobePassIE)InfoExtractor)ThePlatformBaseIEThePlatformIE
default_ns   )HEADRequest)ExtractorErrorRegexNotFoundErrorUserNotLive
clean_htmldetermine_extextract_attributesfloat_or_noneget_element_html_by_classint_or_nonejoin_nonemptymake_archive_idmimetype2extparse_age_limitparse_durationparse_iso8601
remove_endtry_getunescapeHTMLunified_timestampupdate_url_queryurl_basenameurl_or_none)requiretraverse_objc                   8    \ rS rSrS/rSrSrS rS rS
S jr	S	r
g)NBCUniversalBaseIE&   USFz`https?://[^/?#]+/prod/[\w-]+/(?P<folders>[^?#]+/)cmaf/mpeg_(?:cbcs|cenc)\w*/master_cmaf\w*\.m3u8c                 Z   U R                  SU 3USS0 UESSSS.EU R                  5       S9nS	[         S
3n[        XE S3S [        45      =n(       a  U$ [        XE S3S S[        45      nUS:X  a  U R                  U R                  S9  [        [        XE S3S[        45      US:H  S9e)Nhttps://link.theplatform.com/s/zDownloading SMIL manifestz Failed to download SMIL manifestSMILm3uHLSServiceSecure)formatmanifestswitch)queryheadersz//{}z
video/@srcc                     [        U5      S:H  $ )Nm3u8)r   _vs     N/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/nbc.py<lambda>MNBCUniversalBaseIE._download_nbcu_smil_and_extract_m3u8_url.<locals>.<lambda>6   s    mTUFVZ`F`    paramc                 *    UR                  S5      S:H  $ )Nname	exception)getr4   s     r7   r8   r9   9   s    QUU6]k=Yr:   z@valueGeoLocationBlocked)	countrieszref/@abstract.Expiredexpected)_download_xmlgeo_verification_headersr   r"   anyraise_geo_restricted_GEO_COUNTRIESr   )selftp_pathvideo_idr/   smilnsurlexcs           r7   (_download_nbcu_smil_and_extract_m3u8_url;NBCUniversalBaseIE._download_nbcu_smil_and_extract_m3u8_url+   s    !!-gY7')K TT !,	T
 446 " 8 J<r"tJ&79`be%fgg3gJ4D,0Y[ceh!ij&&%%0C0C%D\$4}1EsC0PQ\_cl\lmmr:   c                 t   SUS'   U R                  XU5      n[        R                  " U R                  U5      =n(       aL  SUS'   U R                  XU5      nSU;   a  U R	                  S5        UR                  UR                  S5      S9nSU;   d  S	U;   a  U R                  U5        U R                  XBS
SS9$ )Nzm3u+none,mpeg4formatsmpeg4z	{folders}z,Found m3u8 URL template, formatting URL pathfolders)rV   z
/mpeg_cencz
/mpeg_cbcsmp4hls)m3u8_id)	rQ   re	fullmatch_M3U8_REwrite_debugr,   group
report_drm#_extract_m3u8_formats_and_subtitles)rJ   rK   rL   r/   m3u8_urlmobj	m3u8_tmpls          r7   #_extract_nbcu_formats_and_subtitles6NBCUniversalBaseIE._extract_nbcu_formats_and_subtitles>   s     ,i@@TYZ<<x8848&E)EEgY^_Ii'  !OP ''

90E'FH8#|x'?OOH%77E[`7aar:   Nc                   ^ U R                  X5      nU R                  SUSU5      n0 n[        [        SU5      =(       d    S5      nU(       a  UR	                  S5      =(       d    US   nUS   n	U R                  UR	                  S5      =(       d    SUS	[        S
9n
UR	                  S5      =(       d    U
S   mUR	                  S5      S:X  af  US   nUS   nU R                  UR	                  S5      =(       d    US   US   XR	                  S5      5      nU R                  XUS   XS   5      US'   Of[        USS [        [        S5      145      nUS   mUR	                  S5      =(       d    US   nUS   n	[        USU4S j[        45      =(       d    0 n
U S U	 S!T 3nU R                  UTU5      u  nnU R                  UTS	S"9nU R                  U5      nU R                  US#   US$9  0 UE[        U
S%[         14S&[         14S'["        14S([$        14S)[&        14S*["        14S+["        14S,[         14S-[         14S..	5      ETUUUU(       a  [)        UT5      /S/.E$ S S/.E$ )0Nz=<script[^>]+data-drupal-selector="drupal-settings-json"[^>]*>settingsztve-video-deck-app zdata-mpx-media-account-pidzdata-mpx-account-pidzdata-mpx-media-account-idzdata-normalized-videoF)fataltransform_sourcez	data-guidguidzdata-entitlementauthtve_adobe_authzdata-release-pidzdata-adobe-pass-resource-idadobePassResourceIdz
data-titlezdata-ratingadobePassRequestorIdadobePassSoftwareStatementls_playlistc                     US   $ )NdefaultGuid r4   s     r7   r8   8NBCUniversalBaseIE._extract_nbcu_video.<locals>.<lambda>j   s	    Am,<r:   zLS playlistrs   mpxMediaAccountPidmpxAccountPidmpxMediaAccountIdvideosc                    > US   T:H  $ )Nrk   rt   )r5   r6   rL   s     r7   r8   ru   n   s    6V^I^r:   z/media/guid//ri   	subtitlestargettitledescriptiondurationInSecondsairDatethumbnailUrlseasonNumberepisodeNumberepisodeTitleshow)	r   r   duration	timestamp	thumbnailseason_numberepisode_numberepisodeseries)id
display_idrT   r}   _old_archive_ids)_download_webpage_search_jsonr   r   r?   _parse_jsonr   _get_mvpd_resource_extract_mvpd_authr"   rG   r!   rd   _download_theplatform_metadata_parse_theplatform_metadata_merge_subtitlesstrr   r   r    r   )rJ   rO   r   
old_ie_keywebpagerg   r/   tveaccount_pid
account_idmetadatarl   release_pidresourcerq   rK   rT   r}   tp_metadataparsed_inforL   s                       @r7   _extract_nbcu_video&NBCUniversalBaseIE._extract_nbcu_videoQ   s   ((9$$LZ-  !:;OQX!Y!_]_`''">?^3G]C^K89J''/06B
%bn ( pHww{+?x/?Hww)*f4 01!"4522GG9:YdCX>Y%{GGM4JL !% 7 7d+A&B#?@!Bf 'x<cGMDZC[2] ^K"=1H%//*>?_;C_K$%89J#K(<^`c1dekikH Mj\8*E!EEgxY^_99'8SX9Y66{Ck+6yI

8!C5) -u50;-@'-9,{m<"0;-!@#2[M"B*SE2!C5/
& 

 $"KUX!F G#
 	
" \`#
 	
r:   rt   N)__name__
__module____qualname____firstlineno__rI   _GEO_BYPASSr\   rQ   rd   r   __static_attributes__rt   r:   r7   r$   r$   &   s$    VNKrHn&b&7
r:   r$   c                   j   \ rS rSrSrS0 SS_SS_SS	_S
S_SS_SS_SS_SS	_SS_SS_SS_SS_SS_SS_SS _S!S"/_S#S$_S%S&/S'.ES(S)0S*.S+0 SS,_SS_SS-_SS-_SS._SS/_SS0_SS1_S
S2_SS_SS3_SS4_SS5_SS6_SS _S#S7_S8S9_S:/S;/S<.ES(S)0S*.S=S>SS?S@SASBS S?SCSDSE/SF.S(S)0S*.SGSHSI.SJSHSI.SKSHSI./rSLrSM rSNrgO)PNBCIE   z\https?(?P<permalink>://(?:www\.)?nbc\.com/(?:classic-tv/)?[^/?#]+/video/[^/?#]+/(?P<id>\w+))z[http://www.nbc.com/the-tonight-show/video/jimmy-fallon-surprises-fans-at-ben-jerrys/2848237r   2848237extrW   r   z,Jimmy Fallon Surprises Fans at Ben & Jerry'sr   zJimmy gives out free scoops of his new "Tonight Dough" ice cream flavor by surprising customers at the Ben & Jerry's scoop shop.r   iFTupload_date20150218uploaderzNBCU-COMr   r   V   seasonSeason 2r   r	   r   Tonightr   g㥛 m@tagszcount:2r   re:https?://.+\.jpg
categoriesz-Series/The Tonight Show Starring Jimmy Fallon
media_typeFull Episode   ztheplatform 2848237)	age_limitr   skip_downloadr3   rO   	info_dictparamszhttps://www.nbc.com/the-golden-globe-awards/video/oprah-winfrey-receives-cecil-b-de-mille-award-at-the-2018-golden-globes/36464393646439zHOprah Winfrey Receives Cecil B. de Mille Award at the 2018 Golden Globesr   z	Season 75K   zGolden GlobeszZOprah Winfrey receives the Cecil B. de Mille Award at the 75th Annual Golden Globe Awards.20180107iQZgv́@zcount:8	Highlightr   r   zSeries/The Golden Globe Awardsztheplatform 3646439)r   r   z}https://www.nbc.com/paris2024/video/ali-truwit-found-purpose-pool-after-her-life-changed/para24_sww_alitruwittodayshow_240823$para24_sww_alitruwittodayshow_240823z;Ali Truwit found purpose in the pool after her life changedz$md5:c16d7489e1516593de1cc5d3f39b9bdbNBCU-SPORTSgZd;qs@g  o3A20240823z0theplatform para24_sww_alitruwittodayshow_240823)r   r   r   r   r   r   r   r   r   r   r   zVhttps://www.nbc.com/quantum-leap/video/bens-first-leap-nbcs-quantum-leap/NBCE125189978TrO   only_matchingzThttps://www.nbc.com/classic-tv/charles-in-charge/video/charles-in-charge-pilot/n3310zHhttps://www.nbc.com/up-all-night/video/day-after-valentine%27s-day/n2189a  eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1Yzg2YjdkYy04NDI3LTRjNDUtOGQwZi1iNDkzYmE3MmQwYjQiLCJuYmYiOjE1Nzg3MDM2MzEsImlzcyI6ImF1dGguYWRvYmUuY29tIiwiaWF0IjoxNTc4NzAzNjMxfQ.QQKIsBhAjGQTMdAqRTqhcz2Cddr4Y2hEjnSiOeKKki4nLrkDOsjQMmqeTR0hSRarraxH54wBgLvsxI7LHwKMvr7G8QpynNAxylHlQD3yhN9tFhxt4KR5wW3as02B-W2TznK9bhNWPKIyHND95Uo2Mi6rEQoq8tM9O09WPWaanE5BX_-r6Llr6dPq5F0Lpx2QOn2xYRb1T4nFxdFTNoss8GBds8OvChTiKpXMLHegLTc1OS4H_1a8tO_37jDwSdJuZ8iTyRLV4kZ2cpL6OL5JPMObD4-HQiec_dfcYgMKPiIfP9ZqdXpec2SVaCLsWEk86ZYvD97hLIQrK5rrKd1y-Ac                 \   U R                  U5      R                  5       u  p#S[        R                  R	                  U5      -   nU R                  SUS[        R                  " USSS.5      S.S9S	   S
   S   nU(       dX  U R                  X5      nU R                  SUSU5      S   [        R                  R                  U5      R                     S   S   nUS   nSUS    SU 3nU R                  XcSS9n[        US[        145      =(       d    UR                  S5      n0 n	UR                  S5      (       aE  U R!                  US   XUR                  S5      5      n
U R#                  XSXR$                  5      U	S'   U R'                  XcU	5      u  pU R)                  U5      nU R+                  US   US9  0 [        US[        1[,        4S[        1[,        4S [.        14S![.        14S[0        14S"S#[        1[,        [2        [,        4S$[        14S%.5      EUEUUUU[5        S&U5      /S'.E$ )(Nhttpz$https://friendship.nbc.co/v2/graphqlaH  query bonanzaPage(
  $app: NBCUBrands! = nbc
  $name: String!
  $oneApp: Boolean
  $platform: SupportedPlatforms! = web
  $type: EntityPageType! = VIDEO
  $userId: String!
) {
  bonanzaPage(
    app: $app
    name: $name
    oneApp: $oneApp
    platform: $platform
    type: $type
    userId: $userId
  ) {
    metadata {
      ... on VideoPageData {
        description
        episodeNumber
        keywords
        locked
        mpxAccountId
        mpxGuid
        rating
        resourceId
        seasonNumber
        secondaryTitle
        seriesShortTitle
      }
    }
  }
}T0)r=   oneAppuserId)r/   	variables)r/   databonanzaPager   z<script>\s*PRELOAD\s*=
video datapagesbasempxGuidzNnzsPC/media/guid/mpxAccountIdr{   Fr|   r   secondaryTitlelocked
resourceIdratingnbcentertainmentrl   r}   r~   r   r   r   keywords.seriesShortTitle)r   r   r   r   r   r   r   ThePlatform)r   r   rT   r}   r   )_match_valid_urlgroupsurllibparseunquote_download_jsonjsondumpsr   r   urlparsepathr   r"   r   r?   r   r   _SOFTWARE_STATEMENTrd   r   r   filterr   r   allr   )rJ   rO   	permalinkrL   
video_datar   rK   tpmr   r/   r   rT   r}   r   s                 r7   _real_extractNBCIE._real_extract   s   "33C8??A	V\\11)<<	((2H B "ZZ%"!) E'E ) (P Q(P %Q(&P '1Q(2
T ,,S;G**)7L!##)<<#8#8#=#B#BDDJLLVXJ i(&z.'A&B!H:N11'51QS7SE"23Wz~~FV7W>>(##..<(%:>>(;SUH 3318=U=UWE&M "EEgY^_66s;k+6yI
: -uf=,seV<#2[M"B"0;-!@&(9:#S3%fE-u5( 
 
 "!0!I J
 	
r:   rt   N)	r   r   r   r   
_VALID_URL_TESTSr   r   r   rt   r:   r7   r   r      s   pJl
)
5
 D
   _	

 
 :
 

 F
 b
 j
 Q
 i
 
 I
 /
  JK!
" .#
$ !6 7'
, V
/6 S
)
5
 _
 a	

 a
 k
 R
 o
 w
 

 :
 
 
 I
 /
  +!
" #
$ <<!6 7'
, V
/8 O8RA%/T%%!S T
 V
!( h f
 Z[QFd SS
r:   r   c                   l    \ rS rSrSrSr\S-   rS\ S3/rSSS	S
SSSSS/ SS.
S.SSS.SSS./rS r	Sr
g)NBCSportsVPlayerIEi7  FzFhttps?://(?:vplayer\.nbcsports\.com|(?:www\.)?nbcsports\.com/vplayer)/z (?:[^/]+/)+(?P<id>[0-9a-zA-Z_]+)zF(?:iframe[^>]+|var video|div[^>]+data-(?:mpx-)?)[sS]rc\s?=\s?"(?P<url>z[^\"]+)zJhttps://vplayer.nbcsports.com/p/BxmELC/nbcsports_embed/select/9CsDKds0kvHI9CsDKds0kvHIrW   z$md5:df390f70a9ba7c95ff1daace988f0d8dz3Tyler Kalinoski hits buzzer-beater to lift Davidsoni(U20150313r   g1Z4R@zre:^https?://.*\.jpg$)
r   r   r   r   r   r   r   r   chaptersr   rO   r   zPhttps://vplayer.nbcsports.com/p/BxmELC/nbcsports_embed/select/media/PEgOtlNcC_y2Tr   z`https://www.nbcsports.com/vplayer/p/BxmELC/nbcsports/select/PHJSaFWbrTY9?form=html&autoPlay=truec                     U R                  U5      nU R                  X5      nU R                  SUS5      nU R                  US5      $ )Nztp:releaseUrl="(.+?)"rO   r   )	_match_idr   _html_search_regex
url_result)rJ   rO   rL   r   theplatform_urls        r7   r    NBCSportsVPlayerIE._real_extractS  sG    >>#&((7112JGUZ[>>r:   rt   N)r   r   r   r   _WORKING_VALID_URL_BASEr   _EMBED_REGEXr   r   r   rt   r:   r7   r   r   7  s    H_O #FFJ]^m]nnuvwL \ AJ#%%1
 b r#F,?r:   r   c                   j    \ rS rSrSrSrSSSSSS	S
S/ SSS.
S.SSS.SSS./rSSSSS.SS./rS rSr	g)NBCSportsIEiZ  FzMhttps?://(?:www\.)?nbcsports\.com//?(?!vplayer/)(?:[^/]+/)+(?P<id>[0-9a-z-]+)zghttps://www.nbcsports.com/watch/nfl/profootballtalk/pft-pm/unpacking-addisons-reckless-driving-citationPHJSaFWbrTY9rW   z5Tom Izzo, Michigan St. has 'so much respect' for Dukez$md5:ecb459c9d59e0766ac9c7d5d0eda8113r   20150330i`Uzdhttps://hdliveextra-a.akamaihd.net/HD/image_sports/NBCU_Sports_Group_-_nbcsports/253/303/izzodps.jpgg\(@)
r   r   r   r   r   r   r   r   r   r   r   z_https://www.nbcsports.com/philadelphia/philadelphia-phillies/bruce-bochy-hector-neris-hes-idiotTr   zUhttps://www.nbcsports.com/boston/video/report-card-pats-secondary-no-match-josh-allenz_http://www.riderfans.com/forum/showthread.php?121827-Freeman&s=e98fa1ea6dc08e886b1678d35212494aln7x1qSThw4kflvz.PFT Live: New leader in the 'new-look' defenser   r   r   Invalid URLrO   r   skipc                     U R                  U5      nU R                  X5      nU R                  [        R	                  U5      S5      $ )NNBCSportsVPlayer)r   r   r  r   _extract_url)rJ   rO   rL   r   s       r7   r   NBCSportsIE._real_extract  sD    >>#&((7++G46HJ 	Jr:   rt   N)
r   r   r   r   r  r   r   _WEBPAGE_TESTSr   r   rt   r:   r7   r  r  Z  s    HaJ y NA%%#
" q g'F2 q E

  NJr:   r  c                   @    \ rS rSrSrSrSSSSSS	.S
S0SS./rS rSrg)NBCSportsStreamIEi  Fz4https?://stream\.nbcsports\.com/.+?\bpid=(?P<id>\d+)z4http://stream.nbcsports.com/nbcsn/generic?pid=206559206559rW   z&Amgen Tour of California Women's Recapz$md5:66520066b3b5281ada7698d0ea2aa894r   r   r   r   r   Tz"Requires Adobe Pass AuthenticationrO   r   r   r  c                 B   U R                  U5      nU R                  SU S3U5      nUS   S   nUS   nS nS H=  nUS-   nUR                  U5      =(       d    UR                  US-   5      nU(       d  M=    O   US	   nUR                  S
5      S:H  =(       d    UR                  S5      S:H  n	U R                  SXRS5      n
U R	                  XSU
S 5      nU R                  SU[
        R                  " SUSSSSUS   [        R                  " UR                  5       5      R                  5       [        R                  " U
R                  5       5      R                  5       S.	5      R                  5       S9S   nU R                  XS5      nUUUR                  S5      UU	S.$ )Nz.http://stream.nbcsports.com/data/live_sources_.jsonvideoSourcesr   r   )source
msl4source	iossourcehlsv4UrlAltottStreamUrltypelivestatusLive	nbcsportsrh   z'https://token.playmakerservices.com/cdn	NBCSportsv1desktopakamai	sourceUrl)	requestorIdpidapplicationversionplatformcdnrO   tokenr   r   tokenizedUrlrW   r   )r   r   r   rT   is_live)r   r   r?   r   r   r   r   base64	b64encodeencodedecode_extract_m3u8_formats)rJ   rO   rL   live_sourcevideo_sourcer   
source_urlkskr8  r   r5  tokenized_urlrT   s                 r7   r   NBCSportsStreamIE._real_extract  s   >>#&))<XJeL #>215W%
?AUB%))"-M1A1A"u*1MJz	 @ &n5J""6*f4\8H8H8RV\8\**;L''{HdS++54::**%#K0))%,,.9@@B$..x/@AHHJ
' 
 vx ,  () ,,]eL&??=9
 	
r:   rt   N)	r   r   r   r   r  r   r   r   r   rt   r:   r7   r  r    sB    HHJE>A	
 T
 5 F&
r:   r  c                       \ rS rSrSrS/rSSSSSS	S
SSSS.S.SSSSSSS.SS.SSSSSSSSSS S.S.S!S"S#SS$S%S&S'S(S)S*.S.S+S,S-SS.S/S0S1S2S3S*.S4S.S5S6S7SS8S9S:S;S<S=S>.S4S.S?S@SA.SBS@SA./rSCSDSSESF.S4SG./rSH rSIr	gJ)K	NBCNewsIEi  zS(?x)https?://(?:www\.)?(?:nbcnews|today|msnbc)\.com/([^/]+/)*(?:.*-)?(?P<id>[^/?]+)z\<iframe[^>]+src=(["\'])(?P<url>(?:https?:)?//www\.nbcnews\.com/widget/video-embed/[^"\']+)\1zbhttp://www.nbcnews.com/watch/nbcnews-com/how-twitter-reacted-to-the-snowden-interview-269389891880 fb3dcd2d7b1dd9804305fa2fc95ab610269389891880rW   z,How Twitter Reacted To The Snowden Interviewz$md5:65a0bd5d76fe114f3c2727aa3a81fe64itS20140529g      G@zehttps://media-cldnry.s-nbcnews.com/image/upload/MSNBC/Components/Video/140529/p_tweet_snow_140529.jpg)r   r   r   r   r   r   r   r   rO   md5r   zZhttp://www.nbcnews.com/feature/dateline-full-episodes/full-episode-family-business-n285156 fdbf39ab73a72df5896b6234ff98518a529953347624zFULL EPISODE: Family Businessz$md5:757988edbaae9d7be1d585eb5d55cc04r  zThis page is unavailable.)rO   rK  r   r  zqhttp://www.nbcnews.com/nightly-news/video/nightly-news-with-brian-williams-full-broadcast-february-4-394064451844 40d0e48c68896359c80372306ece0fc3394064451844z<Nightly News with Brian Williams Full Broadcast (February 4)z$md5:1c10c1eccbe84a26e5debb4381e2d3c5iT20150205g     P@zbhttps://media-cldnry.s-nbcnews.com/image/upload/MSNBC/Components/Video/__NEW/nn_netcast_150204.jpgzzhttp://www.nbcnews.com/business/autos/volkswagen-11-million-vehicles-could-have-suspect-software-emissions-scandal-n431456 ffb59bcf0733dc3c7f0ace907f5e3939n431456z/Volkswagen U.S. Chief:  We 'Totally Screwed Up'z$md5:d22d1281a24f22ea0880741bb4dd630120150922i-Vg     B@zdhttps://media-cldnry.s-nbcnews.com/image/upload/MSNBC/Components/Video/__NEW/x_lon_vwhorn_150922.jpg)r   r   r   r   r   r   r   r   zehttp://www.today.com/video/see-the-aurora-borealis-from-space-in-stunning-new-nasa-video-669831235788 693d1fa21d23afcc9b04c66b227ed9ff669831235788z=See the aurora borealis from space in stunning new NASA videoz$md5:74752b7358afb99939c5f8bb2d1d04b120160420i]iWg     @Q@zthttps://media-cldnry.s-nbcnews.com/image/upload/MSNBC/Components/Video/201604/2016-04-20T11-35-09-133Z--1280x720.jpgr  z`http://www.msnbc.com/all-in-with-chris-hayes/watch/the-chaotic-gop-immigration-vote-314487875924 6d236bf4f3dddc226633ce6e2c3f814d314487875924z The chaotic GOP immigration votezThe Republican House votes on a border bill that has no chance of getting through the Senate or signed by the President and is drawing criticism from all sides.r   i*S20140802g     `@)r   r   r   r   r   r   r   r   zPhttp://www.nbcnews.com/watch/dateline/full-episode--deadly-betrayal-386250819952Tr   z6http://www.nbcnews.com/widget/video-embed/701714499682zPhttp://www.vulture.com/2016/06/letterman-couldnt-care-less-about-late-night.htmlx_dtl_oa_LettermanliftPR_160608zDavid Letterman: A Previewr  r  c                    U R                  U5      nU R                  X5      nU R                  X25      S   S   n[        US [        5      nU(       d  US   S   S   S   S   nUS	   S
   n/ nUR                  S/ 5       H  nUR                  S5      n	U	(       d  M  SU	;   a  [        U	SS05      n	UR                  S5      n
U
S:X  a$  UR                  U R                  XSSU
SS95        Ml  [        UR                  S5      S5      nUR                  [        X5      U	[        UR                  S5      5      [        UR                  S5      5      USS.5        M     0 nUR                  S5      nU(       aC  UR                  5        H/  nU(       d  M  UR                  S/ 5      R                  SU05        M1     UU[        US 5      [        US 5      [        UR                  S5      5      [        UR                  S 5      5      UUS!.$ )"NpropsinitialStatec                     U S   S   $ )Nvideocurrentrt   xs    r7   r8   )NBCNewsIE._real_extract.<locals>.<lambda>*  s    QwZ	-Br:   articlecontentr   primaryMediar_  headlineprimaryvideoAssets	publicUrlz://link.theplatform.com/r,   redirectM3UrW   m3u8_nativeF)rY   ri   bitrate  widthheight)	format_idrO   rp  rq  tbrr   closedCaptioningenrO   c                     U S   S   $ )Nr   rh  rt   ra  s    r7   r8   rc  S  s    =9I)9Tr:   c                     U S   S   S   $ )NprimaryImagerO   rh  rt   ra  s    r7   r8   rc  T  s    q7H7OPY7Zr:   r   datePublished)r   r   r   r   r   r   rT   r}   )r   r   _search_nextjs_datar   dictr?   r   extendr=  r   appendr   values
setdefaultr   r   )rJ   rO   rL   r   r   r   r   rT   va
public_urlrr  rs  r}   closed_captioningcc_urls                  r7   r   NBCNewsIE._real_extract%  s   >>#&((7'':7CNST#BDI
i3A6~FwOJ:&y1..3B,J)Z7-j8Z:PQ
x(IE!t99%%U  :  4 5 bffY/6CNN*9:!$RVVG_5%bffX&67  4, 	&NN+=>+224$$T2.5567  5 ":/TU -Z[&z~~j'AB*:>>/+JK"	
 		
r:   rt   N)
r   r   r   r   r   r  r   r  r   r   rt   r:   r7   rF  rF    sm   gJstL t1 CA#% A	
 l1 4A	
 ,
 C1 SA#%}	
 L1FA%#	
 w1 TA%# P	
  r1 7 ~/#%	
  b
 HaTFl b31

  N4
r:   rF  c                   N    \ rS rSrSrSrSSSSSS	SS
SSSSS.S.SSS./rS rSrg)NBCOlympicsIEi\  nbcolympicsz9https?://www\.nbcolympics\.com/videos?/(?P<id>[0-9a-z-]+)zUhttps://www.nbcolympics.com/videos/watch-final-minutes-team-usas-mens-basketball-goldSAwGfPlQ1q01rW   z2watch-final-minutes-team-usas-mens-basketball-goldz;Watch the final minutes of Team USA's men's basketball goldz$md5:f704f591217305c9559b23b877aa8d31r   g+0x@r   i(0f20240811)r   r   r   r   r   r   r   r   r   r   r   r   zVhttp://www.nbcolympics.com/video/justin-roses-son-leo-was-tears-after-his-dad-won-goldTr   c                 :   U R                  U5      nU R                  X5      n U R                  U R                  SUS5      U5      nUS   S   nUR	                  SS5      nSU[        R                  " 5       US.$ ! [
         a    U R                  SUSS	S
9n N8f = f)Nz1jQuery\.extend\(Drupal\.settings\s*,\s*({.+?})\);zdrupal settingsvod
iframe_urlzvplayer.nbcolympics.comzplayer.theplatform.comz-([\"'])embedUrl\1: *([\"'])(?P<embedUrl>.+)\2zembedding URLembedUrl)r^   url_transparent)_typerO   ie_keyr   )r   r   r   _search_regexreplacer   r   r  )rJ   rO   r   r   drupal_settingsr  r  s          r7   r   NBCOlympicsIE._real_extractu  s    ^^C(
((9	<"..t/A/AD*0,-79O )/=J(00)+CEO '"#**,$	
 	
 " 	<"00@
 1 <O	<s   =A; ;BBrt   N)	r   r   r   r   IE_NAMEr   r   r   r   rt   r:   r7   r  r  \  sW    GMJ g NTAV%/#%
" h!F*
r:   r  c                   ^    \ rS rSrSrSrSrSSSSS	S
.SS0SS.SSSSSS
.SS0SS./rS rSr	g)NBCOlympicsStreamIEi  Fznbcolympics:streamz4https?://stream\.nbcolympics\.com/(?P<id>[0-9a-z-]+)zTokenized m3u8 source URLz;https://stream.nbcolympics.com/womens-soccer-group-round-112019740rW   z^re:Women's Group Stage - Netherlands vs\. Brazil [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$r  r   r3   
Livestream)noterO   r   r   r  zPlain m3u8 source URLz`https://stream.nbcolympics.com/gymnastics-event-finals-mens-floor-pommel-horse-womens-vault-bars2021729zhre:Event Finals: M Floor, W Vault, M Pommel, W Uneven Bars [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$c                    U R                  U5      nU R                  X5      nU R                  SUS5      nU R                  SU S3US5      S   nUS   nSS	S
.R	                  UR	                  S5      5      nU R                  SU S3US5      S   S   S   S   S   S   nUR	                  S5      (       Ga  U R                  UR	                  SS5      [        R                  " SSUS   5      UUR	                  SS5      5      n	U R                  XUR	                  SS5      U	S 5      n
U R                  SUS[        R                  " SSS US!S[        R                  " U	R                  5       5      R                  5       [        R                  " U
R                  5       5      R                  5       US"S#.
5      R                  5       S$9S    S   S%   nU R                  XS&US'9nU H  nS(/ S)Q0US*'   M     UUUUUS+.$ ),Nzpid\s*=\s*(\d+);r0  z0http://stream.nbcolympics.com/data/event_config_r  zDownloading event configeventConfig
eventTitleTF)r&  replayeventStatusz,https://api-leap.nbcsports.com/feeds/assets/zG?application=NBCOlympics&platform=desktop&format=nbc-player&env=stagingzDownloading leap configr  r   
cdnSourcesrh  r.  cdnTokenr   NBCOlympicsz	[^\w\d ]+rh   ratingIdzNO VALUEr/  z%https://tokens.playmakerservices.com/zRetrieving tokenized URLr*  z
adobe-passr-  r,  r+  )
r1  zauthentication-typer4  r0  r3  r/  r   r5  rO   r2  r6  r7  rW   )r&  ffmpeg_args)z	-seekabler   z-http_seekabler   z-icyr   downloader_options)r   r   r   rT   r8  )r   r   r  r   r?   r   rZ   subr   r   r   r9  r:  r;  r<  r=  )rJ   rO   r   r   r0  event_configr   r8  r@  ap_resourcemedia_tokenrT   fs                r7   r   !NBCOlympicsStreamIE._real_extract  ss   ^^C(
((9  !4guE**>se5I+--:< \*5155l6F6F}6UV((:3%  @G  H*
   *+ ,56 789 :EF

 J''11  }=|Rl)CDc  Z8:K
 11#L<L<L]\i<jlwy}~K,,7>XZZ#.+7# )#0"("2"2;3E3E3G"H"O"O"Q#--k.@.@.BCJJL%#!  68 -    *+J  ,,Ze',RA (56l&mA"#  $
 	
r:   rt   N)
r   r   r   r   r  r  r   r   r   r   rt   r:   r7   r  r    sv    H"GHJ+Lv
 V
  (q A
 V
 F45
r:   r  c                       \ rS rSrSR	                  \" \R                  S5      5      rS\ S3r	SSSS	S
SSSSSSS.
SS.SSSSSSSSSSSS.
SS0S .S!S"S#SS$S%S&S'S(S)S*S+S.
S,./r
S-S.S/S0S1S2.rS3 rS4rg5)6NBCStationsIEi  |)
nbcbayarea	nbcboston
nbcchicagonbcconnecticutnbcdfwnbclosangelesnbcmiami
nbcnewyorknbcphiladelphianbcsandiegonbcwashingtonnecntelemundo52telemundoarizonatelemundochicagotelemundonuevainglaterrazhttps?://(?:www\.)?(?P<site>z/)\.com/(?:[^/?#]+/)*(?P<id>[^/?#]+)/?(?:$|[#?])zqhttps://www.nbclosangeles.com/news/local/large-structure-fire-in-downtown-la-prompts-smoke-odor-advisory/2968618/2968618rW   z?Large Structure Fire in Downtown LA Prompts Smoke Odor Advisoryz$md5:417ed3c2d91fe9d301e6db7b0942f182gF \@ic20220822zNBC 4KNBCr  )
r   r   r   r   r   r   r   r   
channel_idchannelzSite changedr  zhhttps://www.telemundoarizona.com/responde/huracan-complica-reembolso-para-televidente-de-tucson/2247002/2247002u=   Huracán complica que televidente de Tucson reciba  reembolsoz$md5:af298dc73aab74d4fca6abfb12acb6cfgEe@ib20220819zTelemundo ArizonaKTAZr  r   r3   r   zchttps://www.nbcboston.com/weather/video-weather/highs-near-freezing-in-boston-on-wednesday/2961135/ 9bf8c41dc7abbb75b1a44f1491a4cc852961135z*Highs Near Freezing in Boston on Wednesdayz$md5:3ec486609a926c99f00a3512e6c0e85bg rhum@i0c20230201rh   WBTSr  rJ  19201280960640416)1080720540360234c                    U R                  U5      R                  SS5      u  p#U R                  X5      nU R                  SUSU5      nUR	                  S5      =(       d    Sn[        US5      nU R                  SUS	U0 [        S
9nUR                  U R                  SUSU0 [        S
95        U(       d
  [        SSS9e0 / p[        UR	                  S5      5      S:H  nSSU[        USSS9SSSSU(       a  SOSSSSS .nU(       a  [        US!S"S#9nU S$3U	S%'   GO![        US&S"S#9n[        US'S(5      nU(       a  U R                  S)US*S"S+9nO[        US,S"S#9n[        US-S"S#9nU(       ak  [        U5      nU R                  S.[        U5      S/S S9nU
R                  UU[        U R                  R	                  U5      5      [        U5      S0U 3S1.5        U	R                  UR	                  S%5      =(       d    [        US2S"S#9[        US3S4S55      =(       d    [        [        US65      5      [!        U5      S7.5        S nU(       aT  U(       aM  U R#                  S8U S9U 3US:XS;9n[%        U[&        R(                  R*                  R,                  5      (       d  S nUb  U R/                  U[0        5      O0 nUb%  UR3                  U R5                  S<[0        5      5      O/  H  n[7        [9        UR	                  S=5      S>5      S?5      U	S@'   UR	                  SA5      n[;        UR	                  SB5      [        U5      S9nUSC:X  a;  U R=                  UUSDSEUUSFSG9u  nnU
R?                  U5        U RA                  UUSH9  M  U(       d  M  U
R                  USIU 3U[        UR	                  SJ5      5      [        UR	                  S/5      5      SK.5        M     U
(       d  U RC                  SLSS9  O(U(       a!   U RE                  [G        U
SM   SN   5      USOSP9  UUUR	                  SR5      UR	                  SS5      U
UUST.U	E$ ! [         a
    [I        USQ9ef = f)UNsiter   z1(?:<script>\s*var\s+nbc\s*=|Object\.assign\(nbc,)zNBC JSON datapdkAcctYh1nAC)r_  fwSSIDzdata-videos="\[r   )defaultrj   zdata-meta="r   z"No video metadata found in webpageTrC   mpx_is_livestreamr   z0MPEG-DASH none,M3U none,MPEG-DASH none,MPEG4,MP3r)   )r_  fwNetworkID382114)r  ots_desktop_htmlfalser  r  LIVEz	on-demandscriptz2.0z	PDK 6.1.3)rT   r,   fwsitesectionr  pprofile	sensitivewhmodevpaidschemasdk)N)r_  meta)
mpx_m3upidmpx_pidpid_streaming_web_mediumF)get_allz livestreamr   )r  )pid_streaming_web_highr  date_stringdate_gmtzdatetime="([^"]+)"zdate stringr|   )	dataLayeradobe)prop70eVar70eVar59)r  mp4_urlz
\d+-(\d+)prq  zhttp-)rO   r   rp  rq  rr  )r  )Nr  )contenttitler   prop22summaryexcerptvideo_hero_text)r  r  )r   r   r   r(   r{   zDownloading SMIL data)r  r/   ri   z.//videodurmsro  r   srcr%  r3   rW   rX   zNo HLS formats found)rY   ri   r&  errnoter~   zhttps-rp  )rO   rr  r   rp  rq  z!No video content found in webpager   rO   zChecking live status)r  )rL   callLetterson_air_name)r   r  r  r   rT   r}   r8  )%r   r^   r   r   r?   r"   r   updater   r   r  r   r   r}  _RESOLUTIONSr   r   rE   
isinstancexmletreeElementTreeElement_parse_smil_subtitlesr   findall	_xpath_nsr   r   r   r`   r|  r   raise_no_formats_request_webpager
   r   )rJ   rO   r  rL   r   nbc_datapdk_acctfw_ssidr   inforT   r8  r/   	player_idr  	video_urlr   rq  rM   r}   r_  video_src_urlfmtssubss                           r7   r   NBCStationsIE._real_extract'  s    11#6<<VTJ((7$$@'?\df<<	*6hx)<=&&x^j ' l
$++GZ2Xd , f 	g !EPTUUBgjnn-@ABaGI$'2JT\]* %F;
 $Z 2FOTVI&i{3DM %Z 2R[`bI 'z=*MK"00);U 1 T +T^ce %Z1WafgI#I.++M<	;RT\fj+k$():):)>)>v)FG)&1#(   KK#0 gL LW`e5g !Y	CTU T!,x9Q"RS.{;  %%1(1YKH(,E & JD dCII$9$9$A$ABBDHDTD..tZ@Z\	MQM]T\\$..Z"HIceeE,Z		%8H$-OQUVD!IIe,Muyy0-:VWCf}!EE!8UE *@ F B
d t$%%d9%=(#)#(7);<)%))H*=>   f& !!"EPT!U4%%
5 12HCY & [ ",,}5 ]3"	
 	
 		
 " 4!7334s   5 P? ?Qrt   N)r   r   r   r   joinmaprZ   escape
_DOMAIN_REr   r   r  r   r   rt   r:   r7   r  r    s    #bii *  J
 1<klJ CVA#% &
   zTA#%+ )
 V
& u1AA#% "
	A0Ff Lt
r:   r  c                   0   \ rS rSrSrS0 SS_SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#S$/_S%S&_S'S(0S).S*0 SS+_SS_SS,_S
S-_SS._SS/_SS0_SS1_SS2_SS_SS,_SS3_SS4_S5S6_SS_S7S8_S9S:_S;S$/S&S<.ES'S(0S=S>.S?0 SS@_SS_SSA_S
SB_SSC_SSD_SSE_SS2_SS2_SSF_SSA_SSG_SSH_S5SI_SS_S7S8_S9S:_S;SJ// SKQS<.ES'S(0S=S>.SL0 SSM_SS_SSN_S
SO_SSP_SSQ_SSR_SSS_SS_SSF_SST_SSU_SSV_SS_S7S8_S SW_S"SJ/_S%/ SXQ0ES'S(0S).SYSZS[./rS\ rS]rg^)_	BravoTVIEi  zGhttps?://(?:www\.)?(?:bravotv|oxygen)\.com/(?:[^/?#]+/)+(?P<id>[^/?#]+)z]https://www.bravotv.com/top-chef/season-16/episode-15/videos/the-top-chef-season-16-winner-isr   3923059r   rW   r   z#The Top Chef Season 16 Winner Is...r   z the-top-chef-season-16-winner-isr   z)Find out who takes the title of Top Chef!r   20190315r   il\r      r      r   zTop Chefr   Finaler      r   z	Season 16r   zre:^https://.+\.jpgr   z	NBCU-BRAVr   SerieszSeries/Top Chefr   zcount:10r   r3   r   zChttps://www.bravotv.com/top-chef/season-20/episode-1/london-calling
9000234570zLondon Callingzlondon-callingz$md5:5af95a8cbac1856bd10e7562f86bb75920230310i
d   r   i  z	Season 20r   zcount:7r   r   r   r   	NBCU-MPAT)r   r   r   -This video requires AdobePass MSO credentialsr  z?https://www.oxygen.com/in-ice-cold-blood/season-1/closing-night3692045zClosing Nightzclosing-nightz$md5:c8a5bb523c8ef381f3328c6d9f1e463220230126iczIn Ice Cold BloodiE
  zSeason 1zcount:6zSeries/In Ice Cold Blood)ice-tin ice cold bloodlaw and orderoxygen
true crimezxhttps://www.oxygen.com/in-ice-cold-blood/season-2/episode-16/videos/handling-the-horwitz-house-after-the-murder-season-23974019zC'Handling The Horwitz House After The Murder (Season 2, Episode 16)z4handling-the-horwitz-house-after-the-murder-season-2z$md5:f9d638dd6946a1c1c0533a9c6100eae520190618i7]r	   zMother Vs SonD   r   zNBCU-OXY)r1  r0  r2  r4  r3  z@https://www.bravotv.com/below-deck/season-3/ep-14-reunion-part-1Tr   c                 F    U R                  U5      nU R                  X5      $ r   r   r   rJ   rO   r   s      r7   r   BravoTVIE._real_extract  s!    ^^C(
''88r:   rt   Nr   r   r   r   r   r   r   r   rt   r:   r7   r!  r!    s   [Jn
)
5
 :
 <	

 F
 :
 
 R
 b
 j
 x
 
 k
 /
 
  8%67!
" J#
& #F++. U
,
5
 %
 *	

 A
 :
 
 R
 a
 j
 '
 
 k
 	
 /
  !
" .#
$ $,-)
, #F+?36 Q
)
5
 _
 /	

 A
 :
 
 Q
 a
 )
 
 
 j
 	
 /
  !
" .#
$ $56[)
, #F+?36 J
)
5
 [
 P	

 A
 :
 
 Q
 b
 )
 
 
 j
 /
 
  
!
" 56#
$ [%
( #F+-0 RCdFL9r:   r!  c                   j   \ rS rSrSrS0 SS_SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S%_S&/S'S(/S).ES*S+0S,.S-0 SS._SS_SS/_S
S0_SS1_SS2_SS3_SS_S4S5S6S7S8.S6S9S:S8.S9S;S<S8.S;S=S>S8.S=S?S@S8.S?S3SAS8./_SS_SS_SS_SS_SS_SSB_S SC_S"SD_S%S&/S'SE/SF.ES*S+0SGSH./rSI rSJrgK)LSyfyIEi  zchttps?://(?:www\.)?syfy\.com/[^/?#]+/(?:season-\d+/episode-\d+/(?:videos/)?|videos/)(?P<id>[^/?#]+)zBhttps://www.syfy.com/face-off/season-13/episode-10/videos/keyed-upr   3774403r   rW   r   zkeyed-upr   zKeyed Upr   z$md5:feafd15bee449f212dcd3065bbe9a755r   r   r      r   z$re:https://www\.syfy\.com/.+/.+\.jpgr   zFace Offr   z	Season 13r      r   z Through the Looking Glass Part 2r   
   r   ij[r   20180808r   Excerptr   r,  zSeries/Face Offzcount:15ztheplatform 3774403)r   r   r   r   r3   r   zShttps://www.syfy.com/face-off/season-13/episode-10/through-the-looking-glass-part-23772391z through-the-looking-glass-part-2zThrough the Looking Glass Pt.2z$md5:90bd5dcbf1059fe3296c263599af41d2r   i'
  r   g        g     8@z<Untitled Chapter 1>)
start_timeend_timer   g|?5C@z<Untitled Chapter 2>g     @z<Untitled Chapter 3>g     8@z<Untitled Chapter 4>gw@z<Untitled Chapter 5>z<Untitled Chapter 6>igc20230101r   ztheplatform 3772391)r   r   r   r   r-  r  c                 D    U R                  U5      nU R                  XSS9$ )Nr   )r   r9  r:  s      r7   r   SyfyIE._real_extractH  s&    ^^C(
''M'RRr:   rt   Nr<  rt   r:   r7   r>  r>    sU   wJS
)
5
 *
 Z	

 A
 
 
 @
 j
 k
 R
 9
 b
 
 :
  )!
" #
$ --!6 7)
, #F+14 e
)
5
 <
 5	

 A
 
 
 @
 I_`(-8Nde(0fOef(.FMcd(.HOef(0dMcdf
 j
  k!
" R#
$ 9%
& b'
( )
* :+
, .-
. $,-!6 75
8 #F+?? 39FvSr:   r>  )6r9  r   rZ   urllib.parser   xml.etree.ElementTreer	  	adobepassr   commonr   theplatformr   r   r   
networkingr
   utilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    utils.traversalr!   r"   r$   r   r   r  r  rF  r  r  r  r!  r>  rt   r:   r7   <module>rS     s      	   " ! E E $     0 4b
* b
Ji
 i
X ?  ?F*J- *JZ8
 8
vW
 W
t0
M 0
fS
+ S
lv
M v
rj9" j9Z?S ?Sr:   