
    V|h	G                         S SK r S SK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   " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      rg)    N   )InfoExtractor   )ExtractorError
clean_htmldetermine_extextract_attributesfloat_or_noneget_elements_html_by_classint_or_nonemerge_dictsmimetype2extparse_iso8601
remove_endremove_startstr_or_nonetraverse_objurl_or_nonec                   \    \ rS rSr\R
                  " S5      rSrSrSr	S r
S rS rS	 rS
rg)NYTimesBaseIE   z$36dd619a-56dc-595b-9e09-37f4152c7b5da  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuNIzKBOFB77aT/jN/FQ+/QVKWq5V1ka1AYmCR9hstz1pGNPH5ajOU9gAqta0T89iPnhjwla+3oec/Z3kGjxbpv6miQXufHFq3u2RC6HyU458cLat5kVPSOQCe3VVB5NRpOlRuwKHqn0txfxnwSSj8mqzstR997d3gKB//RO9zE16y3PoWlDQXkASngNJEWvL19iob/xwAkfEWCjyRILWFY0JYX3AvLMSbq7wsqOCE5srJpo7rRU32zsByhsp1D5W9OYqqwDmflsgCEQy2vqTsJjrJohuNg+urMXNNZ7Y3naMoqttsGDrWVxtPBafKMI8pM2ReNZBbGQsQXRzQNo7+QIDAQABz/https://samizdat-graphql.nytimes.com/graphql/v2a  query VideoQuery($id: String!) {
  video(id: $id) {
    ... on Video {
      bylines {
        renderedRepresentation
      }
      duration
      firstPublished
      promotionalHeadline
      promotionalMedia {
        ... on Image {
          crops {
            name
            renditions {
              name
              width
              height
              url
            }
          }
        }
      }
      renditions {
        type
        width
        height
        url
        bitrate
      }
      summary
    }
  }
}c                 h   [         R                  " U R                  S5      n[         R                  " X!5      n[        U R	                  U R
                  US[        R                  " U R                  SSU 30S.SS9R                  5       SS	S
U R                  SS.SS9SS[        145      =(       d    0 $ )Nvideoz!Downloading JSON from GraphQL APIidznyt://video/)query	variables),:)
separatorszapplication/jsonvhszv3.52.21zhttps://nytimes.com)zContent-TypezNyt-App-TypezNyt-App-Versionz	Nyt-TokenOriginF)dataheadersfatalr"   )uuiduuid5_DNS_NAMESPACEr   _download_json_GRAPHQL_APIjsondumps_GRAPHQL_QUERYencode_TOKENdict)selfmedia_id
video_uuid
media_uuids       R/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/nytimes.py	_call_apiNYTimesBaseIE._call_api>   s    ZZ 3 3W=
ZZ
5
D//x)LSWS]S],,"l:,$?@_ %T& '-fh 2 %#-![[/9  0 
 %gv6
8 
> <>
	>    c                 B    [        US SS[        14S[        14S.4S S9$ )Nc                     [        US   5      $ )Nurl)r   )_vs     r4   <lambda>3NYTimesBaseIE._extract_thumbnails.<locals>.<lambda>P   s    +ah2Gr7   r:   widthheight)r:   r?   r@   default)r   r   )r0   thumbss     r4   _extract_thumbnails!NYTimesBaseIE._extract_thumbnailsO   s;    F%G}-+/J
 % 	 	r7   c                    / n/ n0 n[        USS[        145       GHi  nUR                  S5      nUR                  S5      nU(       a  US:X  d  Xs;   a  M:  UR                  U5        [	        UR                  S5      5      =(       d    [        U5      n	U	S:X  a@  U R                  XqSS	U=(       d    S
SS9u  pUR                  U
5        U R                  XS9  M  U	S:X  a  M  UR                  UUUR                  S5      =(       d    UR                  S5      [        UR                  S5      5      [        UR                  S5      5      [        USS[        14SS9[        UR                  S5      S5      =(       d    S U	S.5        GMl     XE4$ )N
renditions.r:   typerC   mimetypem3u8mp4m3u8_nativehlsF)m3u8_idr$   )targetmpdvideoencodingvideo_codecr?   r@   )	file_sizefileSize)Nvalueget_allbitrate  )r:   	format_idvcodecr?   r@   filesizetbrext)
r   r/   getappendr   r   #_extract_m3u8_formats_and_subtitlesextend_merge_subtitlesr   )r0   video_idcontent_media_jsonurlsformats	subtitlesr   	video_urlrZ   r^   	m3u8_fmts	m3u8_subss               r4   _extract_formats_and_subtitles,NYTimesBaseIE._extract_formats_and_subtitlesV   su   	!"4|S4&6QRE		%(I		&)I	X 59JKK	"uyy45Qy9QCf}'+'O'O%.e (P (=$	 y)%%i%B$!*#ii8TEIIm<T(7);<)%))H*=> ,U13D{m5U^c!e&uyy';TBJd
  
! S8 !!r7   c                 l   U R                  U5      nU R                  X5      u  p4UUR                  S5      UR                  S5      [        UR                  S5      5      [	        UR                  S5      SS9SR                  [        USS	S
S 145      5      UUU R                  [        US5      5      S.	$ )NpromotionalHeadlinesummaryfirstPublisheddurationrY   scalez, bylines.renderedRepresentationc                     [        U S5      $ )NzBy )r   xs    r4   r=   .NYTimesBaseIE._extract_video.<locals>.<lambda>   s    \RSUZE[r7   promotionalMediacrops.rG   .)	r   titledescription	timestamprr   creatorrg   rh   
thumbnails)r5   rl   r_   r   r
   joinr   rD   )r0   r1   r"   rg   rh   s        r4   _extract_videoNYTimesBaseIE._extract_videox   s    ~~h'!@@P XX3488I.&txx0@'AB%dhhz&:$Gyyd3 8;[:\5^ "_ `"22T#XY[
 	
r7    N)__name__
__module____qualname____firstlineno__r%   UUIDr'   r.   r)   r,   r5   rD   rl   r   __static_attributes__r   r7   r4   r   r      s;    YYEFN XFDL ND>" "D
r7   r   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./rS rSrg)	NYTimesIE   zhttps?://(?:(?:www\.)?nytimes\.com/video/(?:[^/]+/)+?|graphics8\.nytimes\.com/bcvideo/\d+(?:\.\d+)?/iframe/embed\.html\?videoId=)(?P<id>\d+)zl<iframe[^>]+src=(["\'])(?P<url>(?:https?:)?//graphics8\.nytimes\.com/bcvideo/[^/]+/iframe/embed\.html.+?)\1>zshttp://www.nytimes.com/video/opinion/100000002847155/verbatim-what-is-a-photocopier.html?playlistId=100000001150263 a553aa344014e3723d33893d89d4defc100000002847155rK   z Verbatim: What Is a Photocopier?z$md5:93603dada88ddbda9395632fdc5da260it]S20140428zBrett Weinerz're:https?://\w+\.nyt.com/images/.+\.jpgi  )	r   r^   r~   r   r   upload_dater   	thumbnailrr   r:   md5	info_dictzJhttp://www.nytimes.com/video/travel/100000003550828/36-hours-in-dubai.htmlTr:   only_matchingc                 F    U R                  U5      nU R                  U5      $ )N)	_match_idr   )r0   r:   rd   s      r4   _real_extractNYTimesIE._real_extract   s!    >>#&""8,,r7   r   N)	r   r   r   r   
_VALID_URL_EMBED_REGEX_TESTSr   r   r   r7   r4   r   r      s`     aJ D  EL E1#7A#%%C

 \F&-r7   r   c                       \ 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*0S+.S,S-S.S/S0S1S2/S3S4.S5S6.S7S8S9S:S;S</S=S>S?.S@S6.SASBSC./rSD rSE rSFrgG)HNYTimesArticleIE   zphttps?://(?:www\.)?nytimes\.com/\d{4}/\d{2}/\d{2}/(?!books|podcasts)[^/?#]+/(?:\w+/)?(?P<id>[^./?#]+)(?:\.html)?zhttp://www.nytimes.com/2015/04/14/business/owner-of-gravity-payments-a-credit-card-processor-is-setting-a-new-minimum-wage-70000-a-year.html?_r=0 3eb5ddb1d6f86254fe4f233826778737100000003628438rK   u0   One Company’s New Minimum Wage: $70,000 a Yearz$md5:89ba9ab67ca767bb92bf823d1f138433i-U20150414zMatthew WilliamszPatricia Cohen're:https?://\w+\.nyt.com/images/.*\.jpgg     ]@)
r   r^   r~   r   r   r   uploaderr   r   rr   z%HTTP Error 500: Internal Server Error)r:   r   r   skipzMhttps://www.nytimes.com/2023/09/29/health/mosquitoes-genetic-engineering.html 2365b3555c8aa7f4dd34ca735ad02e6a100000009110381mp3z<The Gamble: Can Genetically Modified Mosquitoes End Disease?z$md5:9ff8b47acbaf7f3ca8c732f5c815be2eie20230929zStephanie NolenzNatalija Gormalovai*  )	r   r^   r~   r   r   r   creatorsr   rr   r   zThttps://www.nytimes.com/2023/11/29/business/dealbook/kamala-harris-biden-voters.html100000009202270uU   Kamala Harris Defends Biden Policies, but Says ‘More Work’ Needed to Reach Votersz$md5:de4212a7e19bb89e4fb14210ca915f1fige20231129zBy The New York TimeszKatie RogersgMbhX@)
r   r^   r~   r   r   r   r   r   r   rr   skip_downloadrJ   )r:   r   r   paramszOhttps://www.nytimes.com/2023/12/02/business/air-traffic-controllers-safety.htmlzair-traffic-controllers-safetyzHDrunk and Asleep on the Job: Air Traffic Controllers Pushed to the Brinkz$md5:549e5a5e935bf7d048be53ba3d2c863d20231202zEmily SteelzSydney Emberi` ke)r   r~   r   r   r   r      r:   r   playlist_countzFhttps://www.nytimes.com/2025/04/30/well/move/hip-mobility-routine.htmlzhip-mobility-routinez!Tight Hips? These Moves Can Help.zRSitting all day is hard on your hips. Try this simple routine for better mobility.zAlyssa AgeszTheodore Taeih20250430)r   r~   r   r   r   r      zShttps://www.nytimes.com/2023/12/02/business/media/netflix-squid-game-challenge.htmlTr   c                    [        US[        14SSS[        14S S[        SS914S[        1444S	[        14S
[        14S.SS9nU R                  UR                  S5      U5      u  p4[        US[        145      nU(       d  U(       a  UR                  USS.5        0 UEU R                  [        US5      5      UUS.E$ )NsourceIdru   .rv   rr   rY   rs   lengthrq   podcastSeries)r   r   rr   r   seriesFrV   r   fileUrlnone)r:   r[   r{   )r   rg   rh   )
r   strr
   r   r   rl   r_   r   r`   rD   )r0   blockdetailsrg   rh   r:   s         r4   _extract_content_from_block,NYTimesArticleIE._extract_content_from_block   s    uu%"C)AC5Im$.G-H IHWbVcKdef*]O<&.'
  "@@TARTYZ59{m"<=3NN3&9:

22<L4N O"
 	
r7   c                 r   U R                  U5      nU R                  XSS9nU R                  SUSUS S9S   S   S	   nUS
   S   n/ nS n[        USSU[        45      =n(       a2  UR                  SUR                  S5      5        UR                  U5        UR                  [        USU45      5        U(       d  [        S5      e[        U R                  U5      S5      [        US
SSSSSS[        14SS9=(       d    U R                  SS/U5      [        US[        145      [        USSSSS[        145      U R                  [        US5      5      S.n	/ n
U H-  nU
R                  [!        U R#                  U5      U	5      5        M/     [%        U
5      S:  a  U R&                  " X40 U	D6$ SU0U
S    E$ )!NT)impersonatezwindow\.__preloadedData\s*=zmedia detailsc                 &    U R                  SS5      $ )N	undefinednull)replacerx   s    r4   r=   0NYTimesArticleIE._real_extract.<locals>.<lambda>  s    qyyf'Er7   )transform_sourceinitialDatar"   articlesprinkledBodycontentc                 *    U S:H  =(       a    US   S;   $ )Nmedia
__typename)VideoAudior   )kr<   s     r4   r=   r     s    AL$ZQ|_HZ5Z$Zr7   .	ledeMediar   z/Unable to extract any media blocks from webpagez - The New York Timesrp   textFrV   og:descriptiontwitter:descriptionrq   ru   r   displayName)r|   
assetCrops.rG   .)r~   r   r   r   r   r   r   r   )r   _download_webpage_search_jsonr   any
setdefaultr_   r`   rb   r   r   _html_extract_titler   _html_search_metar   rD   r   r   lenplaylist_result)r0   r:   page_idwebpageart_jsonr   blocksblock_filterlede_media_blockcommon_infoentriesr   s               r4   r   NYTimesArticleIE._real_extract  s   ..%((4(H$$*G_gE % GGTVV\^^gi ?+I6Z+Gc;VY5Z[[[''
HLL4LMMM*+l7S,,?@A !RSS   8 8 ACZ['CIsFUXTY3[ m"&"8"8:JLa9bdk"l%h1AM?0ST$X	3
CQ^ad`e/fg22<T4V W	
 ENN;t'G'G'NP[\]  w<!''HKHH '
aj
 	
r7   r   N)	r   r   r   r   r   r   r   r   r   r   r7   r4   r   r      s.    EJ c1#GA#%*'C
 8$ _1#SA#%*,@AC

	" f1#lA#%/'(C
 V
!* a2_A%&7#
  X(8o&7#%
  eUMF^
.&
r7   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S.	S.SSSSSS.SS./rS rSrg )!NYTimesCookingIEi8  NYTimesCookingGuidez4https?://cooking\.nytimes\.com/guides/(?P<id>[\w-]+)z:https://cooking.nytimes.com/guides/13-how-to-cook-a-turkeyz13-how-to-cook-a-turkeyzHow to Cook a Turkeyz$md5:726cfd3f9b161bdf5c279879e8050ca0)r   r~   r   r   r   z@https://cooking.nytimes.com/guides/50-how-to-make-mac-and-cheese 64415805fe0b8640fce6b0b9def5989a100000005835845rK   zHow to Make Mac and Cheesez$md5:b8f2f33ec1fb7523b21367147c9594f1i`Z20180405gQ#@zAlison Romanr   )	r   r^   r~   r   r   r   rr   r   r   r   z9https://cooking.nytimes.com/guides/20-how-to-frost-a-cakez20-how-to-frost-a-cakezHow to Frost a Cakez$md5:a31fe3b98a8ce7b98aae097730c269cd   )r:   r   r   r   c           
         U R                  U5      nU R                  X5      nU R                  SS/U5      nU R                  SS/U5      nU R                  SUS5      n[	        [        SU5      S[        1S	45      nU(       a8  UR                  U5        U R                  [        U R                  U5      X$U5      $ 0 U R                  U5      EUUU R                  S
USS S9S.E$ )Nzog:titleztwitter:titler   r   z#data-video-player-id="(\d+)"></div>z
lead videoz
video-item.zdata-video-idz*<span itemprop="author">([^<]+)</span></p>authorrA   )r~   r   r   )r   r   r   _search_regexr   r   r	   r`   r   mapr   )r0   r:   r   r   r~   r   lead_video_id	media_idss           r4   r   NYTimesCookingIE._real_extract]  s   ..%((6&&
O'DgN,,.>@U-VX_`**2G\K &|W=FXEY[j?km	 ]+''D''3W[R R
!!-0
&))=wZ^ * `	
 	
r7   r   N)	r   r   r   r   IE_NAMEr   r   r   r   r   r7   r4   r   r   8  s    #GHJK++A

  R1#1A#%%C

	  K1**A

 	/ FD
r7   r   c                   v    \ 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./rS  rS!rg")#NYTimesCookingRecipeIEiv  z2https?://cooking\.nytimes\.com/recipes/(?P<id>\d+)z?https://cooking.nytimes.com/recipes/1017817-cranberry-curd-tart 579e83bbe8e61e9de67f80edba8a78a81017817rK   zCranberry Curd Tartz$md5:ad77a3fc321db636256d4343c5742152iKV20151118zDavid Tanisr   )r   r^   r~   r   r   r   r   r   r   zKhttps://cooking.nytimes.com/recipes/1024781-neapolitan-checkerboard-cookies 58df35998241dcf0620e99e646331b421024781zNeapolitan Checkerboard Cookiesz$md5:ba12394c585ababea951cb6d2fcc6631ige20231130zSue Liz:https://cooking.nytimes.com/recipes/1019516-overnight-oats 2fe7965a3adc899913b8e25ada3608231019516i +\z$md5:8856ce10239161bd2596ac335b9f9bfb20190102zOvernight OatszGenevieve Ko)r   r^   r   r   r   r~   r   r   c                 |   U R                  U5      nU R                  X5      nU R                  X25      S   S   S   nU R                  US   USSS9u  pV0 [	        US[
        14S	[        14S
[        14S[        14SS[        14S.5      EUU[	        USSSS[        145       Vs/ s H  nSU0PM	     snS.E$ s  snf )Nprops	pagePropsrecipevideoSrcrK   rM   )rN   r   r~   topnotepublishedAtcontentAttribution
cardByline)r   r~   r   r   r   imager}   .r:   )rg   rh   r   )
r   r   _search_nextjs_datara   r   r   r   r   r   r   )r0   r:   r   r   recipe_datarg   rh   	thumb_urls           r4   r   $NYTimesCookingRecipeIE._real_extract  s   ..%((6..w@I+VW_`!EE
#WeU F D
;k]+!C5) )J<8+k];0,F) 
 "?Kgw#}M@O P @O)E9- @O P
 	
Ps   %B9
r   N)r   r   r   r   r   r   r   r   r   r7   r4   r   r   v  s    FJP1*A#%$C	
 ]16A#%C	
 L1#A%%%C	
5'FR
r7   r   )r*   r%   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r4   <module>r     sj      !    &p
M p
f- -8N
} N
b;
} ;
|?
] ?
r7   