
    iB                     *   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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      r " S S\5      r " S S\5      r " S S\5      rg)    N   )InfoExtractor   )ExtractorError
clean_htmlfilter_dictget_element_by_classint_or_nonejoin_nonemptymake_archive_id
orderedSetparse_duration
remove_endtraverse_objtry_callunescapeHTMLunified_timestampurl_or_noneurljoinvariadicc                   ,    \ rS rSrSrSrS rSS jrSrg)		NhkBaseIE   zZhttps://api.nhkworld.jp/showsapi/v1/{lang}/{content_format}_{page_type}/{m_id}{extra_page}z7https?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/c           
          U(       a  SOSnU(       a  SOSnU(       d  SU SU 3nSn	OSnUn	U R                  U R                  R                  X&U	XS	9[        X5      5      $ )
Nvideoaudioclipsepisodes/_programs )langcontent_format	page_typem_id
extra_page)_download_json_API_URL_TEMPLATEformatr   )
selfr&   r#   is_video
is_episodeis_clipr$   content_typer'   r%   s
             A/app/mltbenv/lib/python3.13/site-packages/yt_dlp/extractor/nhk.py	_call_apiNhkBaseIE._call_api   sw    $,'")wz^,Al^<J"IJ$I""""))I * 2 $%	' 	'    Nc                 8   US L n[         R                  U5      R                  SSS5      u  pEnUS:g  nU(       a  U R                  XdUSUS S S:H  S9n[	        SSUS	9nUR                  S
5      n	[        US[        S
45      n
U	nU
(       a  U	(       a  U
 SU	 3n	OU
(       a  U	(       d  U
n	S n
S nOS nUU	U
US.[        US[        14S[        14SSS[        14SSS[        14SS S[        U5      14S[        14S[        14S.4S[        U5      14S.5      E[         R                  5       [         R                  S.En[        US[        1[        45      =(       d    0 nUR                  S5      (       d  U R                  SSS9  U$ US   nU(       aG  U R!                  X5      u  nnUR#                  UUS.[        US [        14S![        14S".5      E5        U$ [%        US#5      nU R'                  [        S$U5       S%3US&S'S(S)S*9US+'   US+    H  nUUS,'   M
     U$ )-Nr#   typeidr   T   9999)r-   r.   )	from_dicttitle)video_programaudio_programz - )r6   r:   seriesepisodedescriptionfirst_broadcasted_at
categories.nametagsimagesc                     US   $ Nurl r    vs     r0   <lambda>1NhkBaseIE._extract_episode_info.<locals>.<lambda>O   s    ahr3   rG   widthheightrG   rM   rN   )r?   release_timestamprA   rC   
thumbnailswebpage_url)extractor_key	extractor)r   r   z,Stream not found; it has most likely expiredexpected)formats	subtitlesdurationpublished_at)rY   	timestampz.m4azhttps://vod-stream.nhk.jpz/index.m3u8m4am3u8_nativehlsF)entry_protocolm3u8_idfatalrW   language)NhkVodIE_match_valid_urlgroupr1   r   getr   anystrr   r   r
   ie_keyIE_NAMEdictraise_no_formats#_extract_m3u8_formats_and_subtitlesupdater   _extract_m3u8_formats)r+   rG   r>   fetch_episoder#   m_type
episode_idr,   video_idr:   r=   episode_nameinfostream_info
stream_urlrW   rX   
audio_pathfs                      r0   _extract_episode_infoNhkBaseIE._extract_episode_info-   s   4#+#<#<S#A#G#GPVX\#] jW$nn(tZPRQR^W]E] % _G !vAG$g(JCQX'YZehc%)EEEFLL #	

 7 -u5&<?P>Q%R+S&3%@fse4')>!GCL>2%}5'+7A 
 !&~6% 
" &__.!))%
, #7-?$,MNTRTu%%!!"P[_!`. + %U+J%)%M%Mj%c"&!* #;%/+$?&47H6I%J2  $  (
F;
"&"<"<:JGHTm! #= #0Y iA$(AjM ) r3   rH   N)	__name__
__module____qualname____firstlineno__r)   _BASE_URL_REGEXr1   rz   __static_attributes__rH   r3   r0   r   r      s    tPO' Gr3   r   c                      \ rS rSr\R
                   S3\R
                   S3\R
                   S3/rSSSSS	S
SSSS// SQ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/.S0S.S/.S1S.S/.S2S.S/.S3S4SS5S6S7S8S9S:.S;S<.S=S>SS?S@SAS
SBSC.SDS<.SESFSSGSHSISJSKSL// SMQSNSOSNSOSP.S.SQSRSSSSTSUSVSWSXSYS
SZS[/S\.S.S]S^SS_S`S
SaSLSb// ScQSdSeSf.
S.SgS.S/.ShS.S/./rSi rSjr	gk)lrc   w   z>shows/(?:(?P<type>video)/)?(?P<id>\d{4}[\da-z]\d+)/?(?:$|[?#])zB(?:ondemand|shows)/(?P<type>audio)/(?P<id>[^/?#]+?-\d{8}-[\da-z]+)z0ondemand/(?P<type>video)/(?P<id>\d{4}[\da-z]\d+)z1https://www3.nhk.or.jp/nhkworld/en/shows/2049165/z
2049165-enmp4zNJapan Railway Journal - Choshi Electric Railway: Fighting to Get Back on Trackz$md5:ab57df2fca7f04245148c2e787bb203dzre:https://.+/.+\.jpgz6Choshi Electric Railway: Fighting to Get Back on TrackJapan Railway Journali  z
Biz & Tech)AkitaChibaTrains
TranscriptzAll (Japan Navigator)ih20250928iQh20250925)r6   extr:   r?   	thumbnailr>   r=   rY   rA   rC   r[   upload_daterP   release_daterG   	info_dictz:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/9999011/ 153c3016dfd252ba09726588149cf0e7z
9999011-enz?Dining with the Chef - Chef Saito's Family recipe: MENCHI-KATSUz$md5:5aee4a9f9d81c26281862382103b0ea5zDining with the Chefz(Chef Saito's Family recipe: MENCHI-KATSU   FoodWashokuiG\20190123)r6   r   r:   r?   r   r=   r>   rY   rA   rC   r[   r   )rG   md5r   zHhttps://www3.nhk.or.jp/nhkworld/en/shows/audio/livinginjapan-20240901-1/zlivinginjapan-20240901-1-enr\   z=Living in Japan - Weekend Hiking / Self-protection from crimeLiving in Japanz$md5:4d0e14ab73bdbfedb60a53b093954ed6z+Weekend Hiking / Self-protection from crimeInteractive)r6   r   r:   r=   r?   r   r>   rA   z:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/2015173/TrG   only_matchingzDhttps://www3.nhk.or.jp/nhkworld/en/ondemand/audio/plugin-20190404-1/zDhttps://www3.nhk.or.jp/nhkworld/fr/ondemand/audio/plugin-20190404-1/zChttps://www3.nhk.or.jp/nhkworld/en/ondemand/audio/j_art-20150903-1/z:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/9999a34/qfjay6cgu(   DESIGN TALKS plus - Fishermen’s Fineryz$md5:8a8f958aaafb0d7cb59d38de53f1e448z0re:^https?:/(/[a-z0-9.-]+)+\.jpg\?w=1920&h=1080$20210615i`)r6   r   r:   r?   r   r   r[   z404 Not Found)rG   r   skipz=https://www3.nhk.or.jp/nhkworld/ja/ondemand/video/0020271111/nw_ja_v_jvod_ohayou_20231008u1   おはよう日本（7時台） - 10月8日放送u   おはよう日本（7時台）u   10月8日放送z$md5:9c1d6cbeadb827b955b20e99ab920ff0)r6   r   r:   r=   r>   r   r?   zexpires 2023-10-15z1https://www3.nhk.or.jp/nhkworld/en/shows/3026036/z
3026036-enz6STATELESS: The Japanese Left Behind in the Philippinesz$md5:9a2fd51cdfa9f52baae28569e0053786i  zkhttps://www3.nhk.or.jp/nhkworld/en/shows/3026036/images/wide_l_QPtWpt4lzVhm3NzPAMIIF35MCg4CdNwcikPaTS5Q.jpgDocumentaryzCulture & Lifestyle)r   zDocumentary 360zThe Pursuit of PEACEiX+h20250927)r6   r   r:   r?   rY   r   rA   rC   r[   r   rP   r   z:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/9999a07/z
9999a07-enz?Mini-Dramas on SDGs: Ep 1 Close the Gender Gap [Director's Cut]zMini-Dramas on SDGszUMini-Dramas on SDGs - Mini-Dramas on SDGs: Ep 1 Close the Gender Gap [Director's Cut]z$md5:3f9dcb4db22fceb675d90448a040d3f6i0h`   20210525zCurrent AffairsEntertainment)r6   r   r>   r=   r:   r?   r[   rY   r   r   rA   z:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/9999d17/z
9999d17-enz2Flowers of snow blossom - The 72 Pentads of Yamatou   Today’s focus: Snow   zScience & Nature)NarazTemples & ShrinesWinterSnowi ]a20220128)
r6   r   r:   r?   r   rY   rA   rC   r[   r   zHhttps://www3.nhk.or.jp/nhkworld/en/shows/audio/livinginjapan-20231001-1/z1https://www3.nhk.or.jp/nhkworld/en/shows/9999o80/c                 $    U R                  U5      $ r|   )rz   r+   rG   s     r0   _real_extractNhkVodIE._real_extract  s    ))#..r3   rH   N)
r}   r~   r   r   r   r   
_VALID_URL_TESTSr   r   rH   r3   r0   rc   rc   w   s>   %%&&fg%%&&jk%%&&XYJ CeA1O-'.W#%!+&
( L1WA1,B!(K#%
	( Z/T'A1D(/	
 L V V U
 L?AL%#
   O0H7(1A
 % CMA G(*?@M#%!+&
& LY+mA#%1,o>
" LI2102DEC#%
  Z CUNF`/r3   rc   c            	          ^  \ rS rSrS\R
                   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SS.SS
.SSS./r\U 4S j5       r	S r
S rSrU =r$ )NhkVodProgramIEi  z(?x)
        z(?:shows|tv)/
        (?:(?P<type>audio)/programs/)?(?P<id>\w+)/?
        (?:\?(?:[^#]+&)?type=(?P<episode_type>clip|(?:radio|tv)Episode))?z.https://www3.nhk.or.jp/nhkworld/en/shows/sumo/sumozGRAND SUMO Highlightsz$md5:fc20d02dc6ce85e4b72e0273aa52fdbf)r6   r:   r?   r=   r   rG   r   playlist_mincountz6https://www3.nhk.or.jp/nhkworld/en/shows/japanrailway/japanrailwayr   z$md5:ea39d93af7d05835baadf10d1aae0e3f   z@https://www3.nhk.or.jp/nhkworld/en/shows/japanrailway/?type=clipzFhttps://www3.nhk.or.jp/nhkworld/en/shows/audio/programs/livinginjapan/livinginjapanr   z$md5:665bb36ec2a12c5a7f598ee713fc2b54   z>https://www3.nhk.or.jp/nhkworld/en/shows/10yearshayaomiyazaki/Tr   c                 Z   > [         R                  U5      (       a  S$ [        TU ]  U5      $ )NF)rc   suitablesuper)clsrG   	__class__s     r0   r   NhkVodProgramIE.suitableD  s(     ))#..uIEG4DS4IIr3   c                 T    U H"  n[        [        X25      5      =n(       d  M   Us  $    g r|   )r   r	   )r+   class_valueshtmlclass_valuevalues        r0   !_extract_meta_from_class_elements1NhkVodProgramIE._extract_meta_from_class_elementsH  s'    'K"#7#JKKuK (r3   c                 8  ^ ^^
 T R                  T5      R                  SSSS5      u  p#pET R                  XBUS:g  SUS:H  5      m
U
U U4S jnT R                  TU5      nT R	                  / S	QU5      nT R	                  / S
QU5      n	T R                  U" 5       XHXS9$ )Nr#   r5   r6   episode_typer   Fclipc               3   |   >#    [        TSS 45       H$  n TR                  [        TU S   5      U 5      v   M&     g 7f)Nitemsc                     US   $ rF   rH   rI   s     r0   rK   @NhkVodProgramIE._real_extract.<locals>.entries.<locals>.<lambda>S  s    5r3   rG   )r   rz   r   )r>   r   r+   rG   s    r0   entries.NhkVodProgramIE._real_extract.<locals>.entriesR  s<     '7<Q2RS00gen1MwWW Ts   9<)zp-programDetail__titlepProgramHero__logoTexttAudioProgramMain__titlezp-program-name)zp-programDetail__textpProgramHero__descriptiontAudioProgramMain__infozp-program-description)r=   )rd   re   r1   _download_webpager   playlist_result)r+   rG   r#   rq   
program_idr   r   r   program_titleprogram_descriptionr   s   ``        @r0   r   NhkVodProgramIE._real_extractM  s    151F1Fs1K1Q1QRXZ`bfhv1w.j>>f/8NP	X %%c:6>> @  $	%
 #DD F% '+	, ##GIzJ]#ttr3   rH   )r}   r~   r   r   r   r   r   r   classmethodr   r   r   r   __classcell__)r   s   @r0   r   r     s    			"	"# $JMJ @,A-	
 
 H ,A-	
  	 R ,A-	
  
 X!&A'	
  
 PO*FX J J
u ur3   r   c            	       @    \ rS rSrSrSSSSSSS	S
S.SS0S./rS rSrg)NhkForSchoolBangumiIEie  zbhttps?://www2\.nhk\.or\.jp/school/movie/(?P<type>bangumi|clip)\.cgi\?das_id=(?P<id>[a-zA-Z0-9_-]+)zHhttps://www2.nhk.or.jp/school/movie/bangumi.cgi?das_id=D0005150191_00000D0005150191_00003u   にている かなgE@iP;S20140402r   zcount:12)r6   r:   rY   r[   r   r   chaptersskip_downloadT)rG   r   paramsc                 R   U R                  U5      R                  5       u  p#U R                  SU SU 3U5      n[        R                  " SU5       Vs0 s H#  oUR                  S5      UR                  S5      _M%     nn[        R                  " SU5       Vs0 s H#  oUR                  S5      UR                  S5      _M%     nn[        R                  " SU5       Vs/ s H  n[        UR                  S5      5      PM     nn[        R                  " S	U5       Vs/ s HT  nS
R                  UR                  S5      =(       d    S[        UR                  S5      5      /5      R                  5       PMV     n	nUR                  S5      =(       d    UR                  S5      n
U
(       a  UR                  S5      S    SU
 3nU R                  SUSS  SU S3USSS9n[        UR                  S5      5      nS nU(       aQ  U	(       aJ  [        U5      [        U	5      :X  a2  Un/ USS  QUPn[        XU	SS9 VVVs/ s H  u  nnnUUUS.PM     nnnnUUR                  S5      [        UR                  S5      5      [        US   5      UUS.$ s  snf s  snf s  snf s  snf s  snnnf )Nz$https://www2.nhk.or.jp/school/movie/z.cgi?das_id=z$var\s+([a-zA-Z_]+)\s*=\s*"([^"]+?)";r   r   z:(?:program|clip)Obj\.([a-zA-Z_]+)\s*=\s*(["\'])([^"]+?)\2;   z$chapterTime\.push\(\'([0-9:]+?)\'\);z><div class="cpTitle"><span>(scene\s*\d+)?</span>([^<]+?)</div> r"   	r_versionversionr    r   z#https://nhks-vh.akamaihd.net/i/das/   r   z_V_000.f4v/master.m3u8r   r^   )r   r`   
r_durationT)strict)
start_timeend_timer:   rB   r_upload)r6   r:   rY   r[   rW   r   )rd   groupsr   refinditerre   r   joinr   striprf   splitro   lenzipr   )r+   rG   program_typers   webpagegbase_valuesprogram_valueschapter_durationschapter_titlesr   rW   rY   r   r   r   sets                      r0   r   #NhkForSchoolBangumiIE._real_extractz  s   !%!6!6s!;!B!B!D((2<.XJWYac 8:{{Cjls7tu7t!wwqz1771:-7tu:<++  GD  FM  ;N  O  ;NQ''!*aggaj0  ;N  OACMtv}A~A~A^AGGAJ7A~bdbmbm  op  ry  cz  {  cz]^#((AGGAJ$4"l1771:6N#OPVVX  cz  { //+.O.2D2DY2O"..-a017)<H,,1(1Q-(Kab% - 0 "+//,"?@C8I4JcR`Na4a*J9*12.99H
 !~dS	U T'!Q   T	  U #''/&{|'DE*;z+BC 
 	
9 v O {"Us   *J*J$JAJ:J"rH   Nr}   r~   r   r   r   r   r   r   rH   r3   r0   r   r   e  sA    vJY%*#%"

 T
 F&*
r3   r   c                       \ rS rSrSrSrSR                  SR                  S \ 5       5      5      rSSS	S
.SS.SSSS
.SS./r	S r
Srg)NhkForSchoolSubjectIEi  up   Portal page for each school subjects, like Japanese (kokugo, 国語) or math (sansuu/suugaku or 算数・数学))rikasyakaikokugosansuuseikatsudoutokuongakutaiikuzukougijutsukateisougoueigotokkatsutokushisonotaz:https?://www\.nhk\.or\.jp/school/(?P<id>{})/?(?:[\?#].*)?$|c              #   N   #    U  H  n[         R                  " U5      v   M     g 7fr|   r   escape.0r   s     r0   	<genexpr>NhkForSchoolSubjectIE.<genexpr>  s     6~!1~   #%z$https://www.nhk.or.jp/school/sougou/r  u   総合的な学習の時間r6   r:      r   z"https://www.nhk.or.jp/school/rika/r  u   理科   c                    ^ U R                  T5      nU R                  TU5      nU R                  [        R                  " S[        R
                  " U5       S3U5      UU R                  SUSSS9U4S j5      $ )Nz-href="((?:https?://www\.nhk\.or\.jp)?/school/z	/[^/]+/)"zB(?s)<span\s+class="subjectName">\s*<img\s*[^<]+>\s*([^<]+?)</span>r:   Fra   c                 :   > [        TU R                  S5      5      $ )Nr   )r   re   )r   rG   s    r0   rK   5NhkForSchoolSubjectIE._real_extract.<locals>.<lambda>  s    gc1771:.r3   )	_match_idr   playlist_from_matchesr   r   r  _html_search_regex)r+   rG   
subject_idr   s    `  r0   r   #NhkForSchoolSubjectIE._real_extract  s    ^^C(
((j9))KKHS]I^H__hikrs##$ikrt{  DI#  J.	0 	0r3   rH   N)r}   r~   r   r   IE_DESCKNOWN_SUBJECTSr*   r   r   r   r   r   rH   r3   r0   r  r    sv     AGN OUU6~668J 62
   4
  F 0r3   r  c                       \ rS rSrSR	                  SR                  S \R                   5       5      5      rSSSS.S	S
./r	S r
Srg)NhkForSchoolProgramListIEi  z>https?://www\.nhk\.or\.jp/school/(?P<id>(?:{})/[a-zA-Z0-9_-]+)r  c              #   N   #    U  H  n[         R                  " U5      v   M     g 7fr|   r  r  s     r0   r  #NhkForSchoolProgramListIE.<genexpr>  s     L'K!1'Kr  z&https://www.nhk.or.jp/school/sougou/q/zsougou/qu!   Ｑ～こどものための哲学r     r   c                    U R                  U5      nU R                  SU S3U5      nU R                  SU5      =(       d    U R                  SUSSS9nU(       a  [        R
                  " SSU5      OS nU R                  S	US
SSS9nU R                  SU S3U5      n[        US5      =(       d    /  Vs/ s H  nU R                  SU 35      PM     nnU R                  XXE5      $ s  snf )Nzhttps://www.nhk.or.jp/school/r   r"   u   <h3>([^<]+?)とは？\s*</h3>r:   Fr!  z\s*\|\s*NHK\s+for\s+School\s*$z3(?s)<div\s+class="programDetail\s*">\s*<p>[^<]+</p>r?   r   )ra   re   z/meta/program.json)part.zpart-video-dasidz7https://www2.nhk.or.jp/school/movie/bangumi.cgi?das_id=)
r$  r   _generic_titler&  r   subr(   r   
url_resultr   )	r+   rG   r   r   r:   r?   bangumi_listxbangumiss	            r0   r   'NhkForSchoolProgramListIE._real_extract  s!   ^^C(
((+HTU)VXbc$$R1 m++,LgW^fk+l 	HM8"eDSW--B]%q . : **+J<7IJJX
 ",0QRXVXXZX OOUVWUXYZX 	 Z ##H%MM	Zs   4C&rH   N)r}   r~   r   r   r*   r   r  r*  r   r   r   r   rH   r3   r0   r,  r,    sS    RYYL'<'K'KLLNJ 88
   FNr3   r,  c                   V   \ rS rSrS/rSrSrS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ES*.S+S,S-S.S/S,S0S0S-S1.S2S3.S4S5S6SS7S8S8S9S:S;S&S<S&S=.S*.S>S?S@SSASBSCSCSDSESFSGSHSISHSJ.SK/SL./rSMrSN r	SO r
SP rSQ rSR rSZSS jrST rSU rSV rSW rSX rSYrgM)[NhkRadiruIEi  JPu   NHK らじる (Radiru/Rajiru)zhttps?://www\.nhk\.or\.jp/radio/(?:player/ondemand|ondemand/detail)\.html\?p=(?P<site>[\da-zA-Z]+)_(?P<corner>[\da-zA-Z]+)(?:_(?P<headline>[\da-zA-Z]+))?zHhttps://www.nhk.or.jp/radio/player/ondemand.html?p=LG96ZW5KZ4_01_4251382zEpisode expires on 2025-07-14r:   u]   クラシックの庭　特集「ドボルザークを聴く」（１）交響曲を中心にr6   LG96ZW5KZ4_01_4251382r   r\   r?   z$md5:652d3c38a25b77959c716421eba1617auploaderu   NHK FM・東京channelrY   g     Ź@r   zzhttps://www.nhk.jp/static/assets/images/radioseries/rs/LG96ZW5KZ4/LG96ZW5KZ4-eyecatch_a67c6e949325016c0724f2ed3eec8a2f.jpgrA   u   音楽u   クラシック・オペラcastu   田添菜穂子r=   u   クラシックの庭	series_id
LG96ZW5KZ4r>   u?   特集「ドボルザークを聴く」(1)交響曲を中心にrr   
QP1Q2ZXZY3r[   inkhr   20250707rP   iSTkhr   )rG   r   r   z@https://www.nhk.or.jp/radio/ondemand/detail.html?p=Z9L1V2M24L_01Z9L1V2M24L_01u   ベストオブクラシックuZ   世界中の上質な演奏会をじっくり堪能する本格派クラシック番組。zzhttps://www.nhk.jp/static/assets/images/radioseries/rs/Z9L1V2M24L/Z9L1V2M24L-eyecatch_83ed28b4782907998875965fee60a351.jpgzNHK FM)r6   r:   r?   r   r@  r=  r>  r=   r   r   zHhttps://www.nhk.or.jp/radio/player/ondemand.html?p=18439M2W42_02_4251212zExpires on 2025-07-1518439M2W42_02_4251212u:   マイあさ! 午前5時のNHKニュース 2025年7月8日   NHKラジオ第1Phttps://www.nhk.or.jp/radioondemand/json/18439M2W42/img/series_945_thumbnail.jpg   NHKラジオニュースi<+lhi@'lh)r6   r   r:   r=  r>  r   r=   r[   r   rP   r   zHhttps://www.nhk.or.jp/radio/player/ondemand.html?p=J8792PY43V_20_4253945zExpires on 2025-09-01J8792PY43V_20_4253945uE   「後絶たない筋肉増強剤の使用」ワールドリポートu   大濱 敦（ソウル支局）zNHK R1zShttps://www.nhk.or.jp/radioondemand/json/J8792PY43V/img/corner/box_31_thumbnail.jpgu(   マイあさ！ ワールドリポートJ8792PY43V_20ijh20250706ijh)r6   r   r:   r?   r=  r>  r   r=   r@  r[   r   rP   r   z?Failed to download extended metadata: HTTP Error 404: Not Found)rG   r   r   expected_warningsNc           
         0 n[        US[        145       H0  nUR                  S5      nXB;  a  / X$'   X$   R                  U5        M2     / nUR	                  5        Hq  u  pF[        U5       H]  u  psUS:X  a	  Ub  SU S3OSnUR                  S5      =n	(       a  X S3-  nUR                  [        XR                  S	5      SS
95        M_     Ms     [        USS06$ )N.roler   u   【u   】r"   r:   u   …rB   delimrP  u   ，)r   rk   rf   appendr   	enumerater   )
r+   act_listrole_groupsactrN  formatted_rolesactsiresr:   s
             r0   _format_act_listNhkRadiruIE._format_act_listF  s    3-8C776?D&$&!$$S)	 9 %++-JD#D/)*aD4DD6o"GGG,,5,WC=(C&&}S''&/QS'TU	 * . o;U;;r3   c           
      4   / n[        XS[        145       Hf  n[        [        US[        SR                  14S[        SR                  14S[        44[
        145      SS06=n(       d  MU  UR                  U5        Mh     S	R                  U5      =(       d    S $ )
N.rN  u   {}…r1  u   （{}）rB   rP  r"   u   、)r   rk   r   filterr*   rh   rQ  r   )r+   trackkeyartistsartistrY  s         r0   _make_artistsNhkRadiruIE._make_artistsW  s    "5dV*<=F#\&'..!12*"3"3!45 < u	; & " !	" "s "
 s# > zz'"*d*r3   c                     [        X[        145      nUc  g [        US5      u  pE[        US5      u  pgSnUS:  a  U[        U5       S3-  nUS:  a  U[        U5       S3-  nU[        U5      S S3-  nU$ )	Ni  <   u   （r   u   時間u   分02u   秒）)r   r   divmodint)	r+   r^  r_  dhours	remainderminutessecondsrY  s	            r0   _make_durationNhkRadiruIE._make_durationc  s    ~&6 789!!T?!)R019c%j\((CQ;c'l^3''C#g,r"&))
r3   c           
         / n[        US[        145       GH  n[        US[        SR                  14S[        SR                  14S[        SR                  14S[        S	R                  144[        145      nUR                  U R                  US
5      5        UR                  U R                  US5      5        [        SSSUS9=n(       a  UR                  SU S35        [        US[        145      =n(       a  UR                  SU S35        UR                  [        USS065        GM     SR                  U5      $ )N.rB   u   「{}」lyricistu	   {}:作詞composeru	   {}:作曲arrangeru	   {}:編曲byArtistrY   labelcoder   rP  r9   u   ＜u   ＞locationu   ～rP  


)
r   rk   r]  r*   rh   rQ  rb  rn  r   r   )r+   
music_listtracksr^  track_detailsru  rx  s          r0   _format_music_listNhkRadiruIE._format_music_listq  sC   !*sTFm<E(*"3"3!45Vk&8&8%9:Vk&8&8%9:Vk&8&8%9:	2
 u1 M   !3!3E:!FG  !4!4UJ!GH%gvSERRuR$$s5'%56'
SE/BCCxC$$s8*C%89MM-CdCD =  {{6""r3   c           
          [        US[        145      =(       d    0 n[        [        SSSUS9[        USSU R                  145      [        USSU R                  145      SS	9$ )
NdetailedDescriptionepg80epg200rz  rw  miscactList	musicListrO  )r   rk   r   rZ  r~  )r+   responsedetailed_descriptions      r0   _format_descriptionNhkRadiruIE._format_description  sp    +H7Ltf6UV\Z\'86EYZFI8M8M7N#OPFK$:Q:Q9R#ST	 	r3   c                 N   / n[        U/ [        U[        [        [        [
        45      Q[        R                  1PS P75       H]  u  pgUR                  US   [        UR                  S5      5      [        UR                  S5      5      U[        X65      S.5        US-  nM_     U$ )Nc                 B    US   S:g  =(       a    [        US   S   5      $ )Nr   	copyrightr   rG   )r   rI   s     r0   rK   -NhkRadiruIE._get_thumbnails.<locals>.<lambda>  s"    1,IQqT%[1IIr3   rG   rM   rN   )rG   rM   rN   
preferencer6   r   )r   r   rh   bytesrk   setr   rQ  r
   rf   r   )r+   datakeysrB   r  rQ   sizethumbs           r0   _get_thumbnailsNhkRadiruIE._get_thumbnails  s    
' /
dS%s34/
7;zzl/
I/
 KD U|$UYYw%78%eii&9:(#D/  !OJ r3   c                   ^ ^^^ [        US[        1S 145      u  mnmUS   m[        UUU U4S j5      nU(       d  0 $ T R                  XASSSSS	9nU(       d  0 $ [        US
[        145      =n(       a   T R                  S[        SSUSS9 35        0 $ [        USS[        145      n/ nUR                  T R                  US5      5        [        [        US5      5       H2  u  pUR                  T R                  U
S [        SU	5      S5      5        M4     UR                  T R                  USSS5      5        [        T R                  U5      [        USSSS[        145      US.[        US[        14S[        14S[        14S [        14S!.5      E[        US"S#[        14S$[        14S%[        14S&[        14S'SS(S)/[        1[        [        14S*.45      EUUS+.E5      $ ),Nr   c                 6    U =(       d    SR                  S5      $ )Nr"   ,	partitionr6  s    r0   rK   8NhkRadiruIE._extract_extended_metadata.<locals>.<lambda>  s    bH[H[\_H`r3   r   c                  L   > TR                   R                  [        TT T5      S9$ )N)broadcastEventId)_API_URL_TMPLr*   r   )areadate_idr+   services   r0   rK   r    s$    D&&--}WVZ\c?d-er3   zDownloading extended metadataz$Failed to download extended metadataFi  )ra   expected_statuserrorz4Failed to get extended metadata. API returned Error 
statuscodemessagez: )r9   rP  publishedOnbroadcastDisplayName)abouteyecatch)r  eyecatchList.list)r  partOfSeriesr  r=   r  r  .rB   )r?   r?  rQ   endDate	startDaterY   )r:   r[   rP   rY   identifierGroupradioSeriesNameradioSeriesIdradioEpisodeNameradioEpisodeIdgenrename1name2)r=   r@  r>   rr   rA   )r>  r=  )r   rh   r   r(   rk   report_warningr   extendr  rR  r   r  r   r   allr   )r+   rr   aa_vinfor    
detail_urlr  r  stationrQ   numdctr  r  r  s   `          @@@r0   _extract_extended_metadata&NhkRadiruIE._extract_extended_metadata  sG   '1se>`=a2bcD1+eg
I&&$C2%QT ' V I GdV+<==5=&|Y%W[\]_` Ix-9ORUQV)WX
$..x9NOP!,x9W"XYHCd223mFTW>XZ\]^ Z  +PRZ\^_	a 33H= FIsFSE+RS$
 8 3%'*;)<=&14E3F%G'.)9:	& 	
 8&7,se4-u5.6/#7&gw-?#j\Z: & 
" %
  	r3   c                 H   U SUS    3n[        USS 145      nU R                  XE5      n[        US[        1S 145      u  pxn	0 UEUU R                  UR	                  S5      USS	9S
SUR	                  S5      UR	                  S5      [        U	5      [        U5      S.EUE$ )Nr    r6   aa_contents_idc                 $    U R                  S5      $ )N;r   r  s    r0   rK   3NhkRadiruIE._extract_episode_info.<locals>.<lambda>  s    qwws|r3   r7   c                 6    U =(       d    SR                  S5      $ )Nr"   r    r  r  s    r0   rK   r    s    QW",?,?,Dr3   rw   Fr!  m4a_dashTr   program_sub_title)r6   rW   	containerwas_liver:   r?   r[   rP   )r   r  rh   ro   rf   r   )
r+   r>   programme_idseries_metarr   r  extended_metadatafallback_start_timer    fallback_end_times
             r0   rz   !NhkRadiruIE._extract_episode_info  s    $~Qwt}o6
*:=S<T)UV ;;JQ4@q3%"D!EF5H1 1

11'++l2KZ_d1e#[[1";;':;*+<=!23F!G
  
 	
r3   c                 r   U SUS    3n[        USS[        145      n0 UEUU R                  UR                  S5      USS9SS	UR                  S
5      [	        UR                  S5      5      =(       d    UR                  S5      S.E[        US[
        14S[
        14S[        14SS 1[        14S.5      E$ )Nr    headline_id	file_listr   	file_nameFr!  r  Tr:   headline_imager   )r6   rW   r  r  r=   r   
file_titlefile_title_sub	open_time	aa_vinfo4c                 *    U R                  S5      S   $ )Nr    r   r  r  s    r0   rK   0NhkRadiruIE._extract_news_info.<locals>.<lambda>  s    aggcl1or3   )r:   r?   r[   rP   )r   rk   ro   rf   r   rh   r   )r+   headliner  r  rr   r>   s         r0   _extract_news_infoNhkRadiruIE._extract_news_info  s    $~Qx'>&?@
x+q4&)AB

11'++k2JJ^c1d#!oog.$X\\2B%CDdXcHd
 7&. 03%8),=+>?&14M3NQbPc%d	% 
 	
r3   c                 ~   ^ U R                   (       a  g U R                  SS SSS9m[        U4S j5      [        l         g )N1https://www.nhk.or.jp/radio/config/config_web.xmlzDownloading API configFr!  c                  @   > ST R                  S5      R                   3$ )Nhttps:z.//url_program_detail)findtext)
api_configs   r0   rK   .NhkRadiruIE._real_initialize.<locals>.<lambda>  s    vjooNe>f>k>k=l5mr3   )r  _download_xmlr   r:  )r+   r  s    @r0   _real_initializeNhkRadiruIE._real_initialize  s>    ''?G_gl ( n
$,-m$n!r3   c                   ^ ^	^
^^ T R                  U5      R                  SSS5      u  p#m	U SU 3mUS:X  a  T R                  ST5      S   m
[        T
S[        14S	[        14S	[        14S
[
        14S.SS9mT	(       a;  [        T
SU	4S j[        45      nU(       d
  [        SSS9eT R                  UTT5      $ U
UU U4S jnT R                  " U" 5       T4ST
R                  S5      0TD6$ T R                  STUUS.S9m
[        S[        T
S[        145      SS9n[        SSST
S9T[        T
S [
        145      UUS!.mT	(       a;  [        T
S"U	4S# j[        45      nU(       d
  [        SSS9eT R                  UTT5      $ U
UU U4S$ jnT R                  " U" 5       T4TR                  S%5      T
R                  S&5      S'.TD6$ )(Nsitecornerr  r    
18439M2W42z=https://www.nhk.or.jp/s-media/news/news-site/list/v1/all.jsonmainprogram_name
media_name)thumbnail_cthumbnail_p)r:   r>  r=  r   F)get_alldetail_listc                    > US   T:H  $ )Nr  rH   r    rJ   r  s     r0   rK   +NhkRadiruIE._real_extract.<locals>.<lambda>  s    q7G;7Vr3   z-Content not found; it has most likely expiredTrU   c               3   n   >#    [        TSS[        145       H  n TR                  U TT5      v   M     g 7f)Nr  .)r   rk   r  )r  metar  r+   r  s    r0   news_entries/NhkRadiruIE._real_extract.<locals>.news_entries  s6      ,TM33O PH11(L+VV !Q   25r?   site_detailz:https://www.nhk.or.jp/radio-api/app/v1/web/ondemand/series)site_idcorner_site_id)queryNHKradio_broadcastr   rO  r:   corner_namerw  thumbnail_url)r=   r@  r   r>  r=  r   c                 &   > US   [        T5      :H  $ )Nr6   )rh  r  s     r0   rK   r  -  s    1T7cR]N^C^r3   c               3   n   >#    [        TSS[        145       H  n TR                  U TT5      v   M     g 7f)Nr   .)r   rk   rz   )r>   r  r  r+   r  s    r0   r   *NhkRadiruIE._real_extract.<locals>.entries2  s6     'z3.GH00,TT Ir  r=   series_description)r:   r?   )rd   re   r(   r   rh   r   rg   r   r  r   rf   r   rz   )r+   rG   r  	corner_idr  r   fallback_stationr>   r   r  r  r  r  s   `        @@@@r0   r   NhkRadiruIE._real_extract  s9   *.*?*?*D*J*J6S[]g*h'K!!I;/ l"&&OQ]__egD&t(3%0(3%0)C51<{mL	.
 K '=*VX[\^()Xcghh..x{SSW W ''b:>((=:QbU`b b ""H,""+_ #  )TDUX[W\C]0^fij#G]#QUV%%d_{m,LM'(
 "4*6^`c)deG$%T_cdd--g|[QQ	U 	U ##I|G+6??8+D!56G:EG 	Gr3   rH   )N)r}   r~   r   r   _GEO_COUNTRIESr)  r   r   r  rZ  rb  rn  r~  r  r  r  rz   r  r  r   r   rH   r3   r0   r:  r:    s   VN-G nJY/
w
)
 5
 A	

 )
 (
 
   V
 8%BC
 &'
 -
 
 X
 ,
 
  :!
"  #
$ J%
2 R!5w V( 6	
   Z')Q*)k0#%!+&
	& Z')\< n@(#%!+&
  ``)mKFZ M<"
+#( 1f
(
(o9Gr3   r:  c            	       :    \ rS rSrSrSSSSSSSS	S
.S./rS rSrg)NhkRadioNewsPageIEi;  z/https?://www\.nhk\.or\.jp/radionews/?(?:$|[?#])z https://www.nhk.or.jp/radionews/   18439M2W42_01rG  z$md5:bf2c5b397e44bc7eb26de98d8f15d79drF  rH  )r6   r   r?   r>  r=  r:   )rG   r   r   c                 .    U R                  S[        5      $ )Nz@https://www.nhk.or.jp/radio/ondemand/detail.html?p=18439M2W42_01)r4  r:  r   s     r0   r    NhkRadioNewsPageIE._real_extractK  s    acnoor3   rH   Nr  rH   r3   r0   r  r  ;  s8    CJ 2!kA)*/
	 Fpr3   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/000SSSSS	S/S.S.SSSSS/000SSSSS	S/S.S./rSSSS .rS! rS"r	g#)$NhkRadiruLiveIEiO  r;  z<https?://www\.nhk\.or\.jp/radio/player/\?ch=(?P<id>r[12]|fm)z)https://www.nhk.or.jp/radio/player/?ch=r1z	bs-r1-130u    re:^NHKラジオ第1・東京.+$r\   zChttps://www.nhk.jp/assets/images/broadcastservice/bs/r1/r1-logo.svgis_liveznhkradirulive r1-tokyo)r6   r:   r   r   live_status_old_archive_idsr   z)https://www.nhk.or.jp/radio/player/?ch=r2extractor_argsnhkradiruliver  fukuokaz	bs-r2-400u   re:^NHKラジオ第2.+$zChttps://www.nhk.jp/assets/images/broadcastservice/bs/r2/r2-logo.svgznhkradirulive r2-fukuoka)rG   r   r   z)https://www.nhk.or.jp/radio/player/?ch=fmsapporoz	bs-r3-010u   re:^NHK FM・札幌.+$zChttps://www.nhk.jp/assets/images/broadcastservice/bs/r3/r3-logo.svgznhkradirulive fm-sapporor1r2r3)r#  r$  fmc                 `   U R                  U5      nU R                  SS/5      S   nU R                  SUS5      nUR                  SU S35      nU(       dQ  [	        SR                  S	R                  UR                  S
5       Vs/ s H  ofR                  PM     sn5      5      SS9eU R                  SUR                  S5      R                   3R                  UR                  S5      R                  S9USU S3SS9n[        XpR                  R                  U5      S45      n0 [        US[        14S[        14S.5      E[        U [        X#5      5      /[        USSSS[         14S[         14S.45      U R#                  UR                  U S35      R                  U5      SS .E$ s  snf )!Nr  tokyor   r  zDownloading area informationz.//data//area[.="z"]/..z!Invalid area. Valid areas are: {}z, z.//data//areaTrU   r  z.//url_program_noaareakey)r  zDownloading z station metadataF)notera   r  r  r6   )r:   r6   logo.rG   rM   rN   rO   r^   )r  rQ   rW   r  )r$  _configuration_argr  r  r   r*   r   findallr  r(   r   _NOA_STATION_IDSrf   rh   r   r   r
   ro   )	r+   rG   r  r  configr  rX  noa_infobroadcast_services	            r0   r   NhkRadiruLiveIE._real_extractz  s   ..%&&vy9!<##?Jhj{{.tfE:; !D!K!KDII!'!@A!@A!@AMC "DNRT T &&V[[!56;;<=DD$))T]J^JcJcDdL.?@ ' O )4I4I4M4Mg4VXe3fg
,03%8cUm/ 

 "1}W7S!T U&'863!K=1#k]3I ; 
 11$))wisO2L2Q2QSZ[
 	
 Bs   F+rH   N)
r}   r~   r   r   r  r   r   r.  r   r   rH   r3   r0   r  r  O  s    VNPJ ;7^$!9 :
 ;#o7L%MN.^$!; <
 ;#o7L%MN-^$!; <
	1$FL #$d;
r3   r  )r   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   r   r   r  r,  r:  r  r  rH   r3   r0   <module>r5     s    	 !    *[ [|Y/y Y/xOui Oud?
M ?
D%0M %0PN NDGG- GGT
p p(I
m I
r3   