
    yfR                        d dl Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZ  G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    N   )InfoExtractor   )ExtractorError
clean_htmlget_element_by_classint_or_nonejoin_nonemptyparse_duration
remove_endtraverse_objtry_callunescapeHTMLunified_timestampurl_or_noneurljoinc                   0    e Zd ZdZdZd ZddZd Zd	dZy)
	NhkBaseIEz@https://nwapi.nhk.jp/nhkworld/%sod%slist/v7b/%s/%s/%s/all%s.jsonz7https?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/c           	          | j                  | j                  |rdnd|rdnd|rdnd|||rdndfz  |d	d
i      d   d   xs g S )Nvrclipesdepisodeprogramz/all apikey EJfK8jdS57GqlupFgAfAAwr573q01y6k)querydataepisodes)_download_json_API_URL_TEMPLATE)selfm_idlangis_video
is_episodeis_clips         6/usr/lib/python3/dist-packages/yt_dlp/extractor/nhk.py	_call_apizNhkBaseIE._call_api   s    """"S!u'	YdhFB	&8 8
 #EF # H IOP Q[\ b `b	b    c                 0   |s| j                   j                  dd      S | j                   j                  ddi        | j                  dd d      }| j	                  d|d d      | j	                  d|d d	      d
}| j                   j                  dd|       |S )Nnhkapi_infoz9https://movie-a.nhk.or.jp/world/player/js/movie-player.jsz"Downloading stream API information)notez)prod:[^;]+\bapiUrl:\s*[\'"]([^\'"]+)[\'"]zstream API urlz(prod:[^;]+\btoken:\s*[\'"]([^\'"]+)[\'"]zstream API token)urltoken)cacheloadstore_download_webpage_search_regex)r$   refreshmovie_player_jsr/   s       r*   _get_api_infozNhkBaseIE._get_api_info"   s    ::??5*55


B/00G5 1 7 %%<otUeg'';_dTfh
 	


H5r,   c                    dD ]  }| j                  |      }|s|j                  d      }t        | j                  ||ddi |d|dd      d	      }t        |d
dt        hfd      }|si| j                  ||      \  }}i t        |dt        hfdt        hfdt        hfdt        hfd      ||dc S  t        d      )N)FTr1   zDownloading stream url infoFjsonr   )typeoptional_id
active_flg)fatalr   )metar   	movie_url)mb_autoauto_spauto_pcget_alldurationpublication_dateinsert_dateupdate_date)rH   	timestamprelease_timestampmodified_timestamp)formats	subtitleszUnable to extract stream url)	r:   popr   r"   r   #_extract_m3u8_formats_and_subtitlesr	   r   r   )	r$   vod_idr8   r/   api_urlrA   
stream_urlrO   rP   s	            r*   _extract_stream_infozNhkBaseIE._extract_stream_info3   s"   $ 	G))'2Hll5)G##V%B% X"X &'-&'	X $  $%D &{$E}U_dfJ %)%M%MjZ`%a"	"4%/+$?&8;L:M%N.;>O=P-Q/<?P>Q.R	* 	  '!*	 	'	: ;<<r,   Nc           	         d u }t         j                  |      j                  ddd      \  }}}|dk7  }|r|d d dz   |dd  z   }|r| j                  |||d|d d dk(        d	   fd
} |d      }	 |d      }
g }dD ]9  \  }}}j	                  d|z         }|s|j                  d|z  ||d|z   d       ; |	}|
r
|	r|
 d|	 }	n|
r	|	s|
}	d }
d }nd }|dz   |z   |	 |d      ||
|d}|r-d   }|j                  i | j                  |      d|i       |S |rJt        d   d   d      }| j                  t        d|       d|dddd      |d<   |d   D ]  }||d<   	 |S |j                  d t         j                         |d!       |S )"Nr&   r=   idaudio   -T9999r   c                 d    t        j                  | dz         xs j                  |             S )N_clean)r   get)keyr   s    r*   get_clean_fieldz8NhkBaseIE._extract_episode_info.<locals>.get_clean_field_   s)    gkk#.9MW[[=MNNr,   	sub_titletitle))r   i  ih  )_li   i  imagez%dpzhttps://www3.nhk.or.jp)rX   heightwidthr1   z - description)rX   rc   rh   
thumbnailsseriesr   rS   z.m4azhttps://vod-stream.nhk.jpz/index.m3u8m4am3u8_nativehlsF)entry_protocolm3u8_idr@   rO   languageurl_transparent)_typeie_keyr1   )NhkVodIE_match_valid_urlgroupr+   r_   appendupdaterV   r   _extract_m3u8_formatsr   rs   )r$   r1   r   fetch_episoder&   m_type
episode_idr'   ra   rc   rj   ri   swhimg_pathepisode_nameinforS   
audio_pathfs     `                  r*   _extract_episode_infozNhkBaseIE._extract_episode_infoS   sH   4#+#<#<S#A#G#GPVX\#] fjW$#BQ#-
12>JnnD(D*Ra.F2JLLMOG	O  , )
: 		GAq!{{7Q;/Hai/(:	 			 ehc%)EEEFLL s"T)*=9$#
 X&FKK ++F3f *  '(8(A6J
"&"<"<:JGHTm! #= #0Y i )A$(AjM)  .&oo/ 
 r,   )TN)	__name__
__module____qualname__r#   _BASE_URL_REGEXr+   r:   rV   r    r,   r*   r   r      s$    ZPOb"=@Hr,   r   c                      e Zd Zej                   dej                   dej                   dgZdddddd	d
ddddddddddddddddd	ddddddddd d!d"d#d$d%d&d'd(d	d)d*dd+d,d-d.d,d-d/d,d-d0d,d-d1d2dd3d4d5d6d7d8d9d:d;d<dd=d>d?d	d@dAdBd:dCdDddEdFd	ddGdHdIdJdddKdLdMddNdOddPdQddRdSdTdUdVddWd	dXdYddZd[dd\d]d^d_d`dad	dbdcddddddedfddgdhdidjd	dkdldmdndmdodmdpddqdrddsdtdudvd	dwdxdyddzddd{dd|d,d-d}d,d-gZd~ Zy)rt   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+)z:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/2049126/1nw_vod_v_en_2049_126_20230413233000_01_1681398302mp4z?Japan Railway Journal - The Tohoku Shinkansen: Full Speed Aheadz$md5:49f7c5b206e03868a2fdf0d0814b92f6zre:https://.+/.+\.jpgz'The Tohoku Shinkansen: Full Speed AheadJapan Railway Journalieix8diPdi  202304132024020620230905)rX   extrc   rh   	thumbnailr   rj   rN   rL   rM   rH   upload_datemodified_daterelease_dater1   	info_dictz:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/9999011/ 153c3016dfd252ba09726588149cf0e7z lpZXIwaDE6_Z-976CPsFdxyICyWUzlT5z?Dining with the Chef - Chef Saito's Family recipe: MENCHI-KATSUz$md5:5aee4a9f9d81c26281862382103b0ea5zDining with the Chefz(Chef Saito's Family recipe: MENCHI-KATSU   2019081620230902i\di9W])rX   r   rc   rh   r   rj   r   rH   r   r   rM   rN   r   rL   )r1   md5r   zKhttps://www3.nhk.or.jp/nhkworld/en/ondemand/audio/livinginjapan-20231001-1/zlivinginjapan-20231001-1-enrk   zFLiving in Japan - Tips for Travelers to Japan / Ramen Vending MachinesLiving in Japanz$md5:0a0e2077d8f07a03071e990a6f51bfabz4Tips for Travelers to Japan / Ramen Vending Machines)rX   r   rc   rj   rh   r   r   z:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/2015173/Tr1   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`)rX   r   rc   rh   r   r   rL   z404 Not Found)r1   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)rX   r   rc   rj   r   r   rh   zexpires 2023-10-15z:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/3004952/1nw_vod_v_en_3004_952_20230723091000_01_1690074552z7Barakan Discovers - AMAMI OSHIMA: Isson's Treasure Islaz$md5:5db620c46a0698451cc59add8816b797ihdi{  id20230723z#AMAMI OSHIMA: Isson's Treasure IslazBarakan Discovers)rX   r   rc   rh   r   r   rL   rH   rM   r   rN   r   r   rj   z:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/9999a07/znw_c_en_9999-a07z?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:3f9dcb4db22fceb675d90448a040d3f6ix.`   2023090320210525iOd)rX   r   r   rj   r   rc   rh   rL   rH   r   rN   r   r   rM   z:https://www3.nhk.or.jp/nhkworld/en/ondemand/video/9999d17/znw_c_en_9999-d17z2Flowers of snow blossom - The 72 Pentads of Yamatou   Today’s focus: Snowi8d2023090420220128ia   r   )rX   r   rc   rh   rM   r   r   rL   r   rH   rj   r   rN   z1https://www3.nhk.or.jp/nhkworld/en/shows/2032307/1nw_vod_v_en_2032_307_20240321113000_01_1710990282z1Japanology Plus - 20th Anniversary Special Part 1z$md5:817d41fc8e54339ad2a916161ea24fafz20th Anniversary Special Part 1zJapanology Plusi  i8e20240321i["eiBe)rX   r   rc   rh   r   rj   r   rH   rL   r   rM   r   rN   r   z1https://www3.nhk.or.jp/nhkworld/en/shows/3020025/1nw_vod_v_en_3020_025_20230325144000_01_1679723944z3100 Ideas to Save the World - Working Styles Evolvez$md5:9e6c7778eaaf4f7b4af83569649f84d9zWorking Styles Evolvez100 Ideas to Save the Worldi  20230325idiܐd)rX   r   rc   rh   r   rj   r   rH   r   rL   r   rM   r   rN   zHhttps://www3.nhk.or.jp/nhkworld/en/shows/audio/livinginjapan-20231001-1/z1https://www3.nhk.or.jp/nhkworld/en/shows/9999o80/c                 $    | j                  |      S r   )r   r$   r1   s     r*   _real_extractzNhkVodIE._real_extractd  s    ))#..r,   N)r   r   r   r   r   
_VALID_URL_TESTSr   r   r,   r*   rt   rt      s   %%&&fg%%&&jk%%&&XYJ LEVA1@-",#!+%'&
( L14WA1,B%&!+",'#
	, ]/]'A1M
 L V V U
 L?AL%#
   O0H7(1A
 % LEOA1&#!+%",'=)
* L$Y+'mA#&",%1!+
( L$I2!+&%#1'",
& CEHA8'1#%!+&",'
( CEJA.31%#&!+'",
( Z Cq|F|/r,   rt   c            	            e Zd Zdej                   dZddddddd	d
dddddd	ddddddd	ddddddd	ddddddd	dddgZe fd       Zd Z	d Z
 xZS )NhkVodProgramIEz(?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)rX   rc   rh   r   r1   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:665bb36ec2a12c5a7f598ee713fc2b54z6https://www3.nhk.or.jp/nhkworld/en/tv/designtalksplus/designtalkspluszDESIGN TALKS plusz$md5:47b3b3a9f10d4ac7b33b53b70a7d2837   z>https://www3.nhk.or.jp/nhkworld/en/shows/10yearshayaomiyazaki/Tr   c                 P    t         j                  |      rdS t        |   |      S )NF)rt   suitablesuper)clsr1   	__class__s     r*   r   zNhkVodProgramIE.suitable  s%     ))#.uIEG4DS4IIr,   c                 H    |D ]  }t        t        ||            x}s|c S  y r   )r   r   )r$   class_valueshtmlclass_valuevalues        r*   !_extract_meta_from_class_elementsz1NhkVodProgramIE._extract_meta_from_class_elements  s.    ' 	K"#7T#JKKuK	r,   c                 B   
  j                        j                  dddd      \  }}}} j                  |||dk7  d|dk(        

 fd} j                  |      } j	                  g d	|      } j	                  g d
|      }	 j                   |       |||	      S )Nr&   r=   rX   episode_typerY   Fr   c               3      K   D ]4  } | j                  d      x}sj                  t        |      |        6 y w)Nr1   )r_   r   r   )r   episode_pathr!   r$   r1   s     r*   entriesz.NhkVodProgramIE._real_extract.<locals>.entries  sG     # Z#*;;u#55<544WS,5OQXYYZs   >!>)zp-programDetail__titlepProgramHero__logoTexttAudioProgramMain__titlezp-program-name)zp-programDetail__textpProgramHero__descriptiontAudioProgramMain__infozp-program-description)ru   rv   r+   r6   r   playlist_result)r$   r1   r&   r{   
program_idr   r   r   program_titleprogram_descriptionr!   s   ``        @r*   r   zNhkVodProgramIE._real_extract  s    151F1Fs1K1Q1QRXZ`bfhv1w.fj,>>f/8NP	Z
 %%c:6>> @  $	%
 #DD F% '+	, ##GIz=J]^^r,   )r   r   r   r   r   r   r   classmethodr   r   r   __classcell__)r   s   @r*   r   r   h  s    			"	"# $JMJ @,A

 	 H ,A

   R ,A

  	 X!&A

  	 H#(A

  	 PY/Fb J J
_r,   r   c            	       8    e Zd ZdZdddddddd	d
ddidgZd Zy)NhkForSchoolBangumiIEzbhttps?://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)rX   rc   rH   rL   r   r   chaptersskip_downloadT)r1   r   paramsc                    | j                  |      j                         \  }}| j                  d| d| |      }t        j                  d|      D ci c]#  }|j                  d      |j                  d      % }}t        j                  d|      D ci c]#  }|j                  d      |j                  d      % }}t        j                  d|      D cg c]  }t        |j                  d             }}t        j                  d	|      D cg c]N  }d
j                  |j                  d      xs dt        |j                  d            g      j                         P }	}|j                  d      xs |j                  d      }
|
r|j                  d      d    d|
 }| j                  d|dd  d| d|dd      }t        |j                  d            }d }|rJ|	rHt        |      t        |	      k(  r1|}|dd  |gz   }t        |||	      D cg c]  \  }}}|||d }}}}||j                  d      t        |j                  d            t        |d         ||dS c c}w c c}w c c}w c c}w c c}}}w )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version_r   z#https://nhks-vh.akamaihd.net/i/das/   /z_V_000.f4v/master.m3u8r   rm   )r   ro   
r_duration)
start_timeend_timerc   namer_upload)rX   rc   rH   rL   rO   r   )ru   groupsr6   refinditerrv   r   joinr   stripr_   splitry   lenzipr   )r$   r1   program_typevideo_idwebpagegbase_valuesprogram_valueschapter_durationschapter_titlesr   rO   rH   r   r   r   r}   ets                      r*   r   z#NhkForSchoolBangumiIE._real_extract  s   !%!6!6s!;!B!B!Dh((2<.XJWYac 8:{{Cjls7tu!qwwqz1771:-uu:<++  GD  FM  ;N  OQ!''!*aggaj0  O  OACMtv}A~A^AGGAJ7bdbmbm  op  ry  cz  {]^#((AGGAJ$4"l1771:6N#OPVVX  {  { //+.O.2D2DY2O"..-a017)<H,,1(1Q-(Kab% - 0 "+//,"?@C8I4JcR`Na4a*J(,z9H
 !X~F	H H !Q   HH H #''/&{|'DE*;z+BC 
 	
9 v O {"Hs   (I)(I.!I3AI8I=Nr   r   r   r   r   r   r   r,   r*   r   r     sA    vJY%*#%"

 T
 F&*
r,   r   c                   t    e Zd ZdZdZddj                  d eD              z  Zdddd	d
ddddd	ddgZd Zy)NhkForSchoolSubjectIEup   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>%s)/?(?:[\?#].*)?$|c              #   F   K   | ]  }t        j                  |        y wr   r   escape.0r}   s     r*   	<genexpr>zNhkForSchoolSubjectIE.<genexpr>  s     YklZ\ZcZcdeZfY   !z$https://www.nhk.or.jp/school/sougou/r  u   総合的な学習の時間rX   rc      r   z"https://www.nhk.or.jp/school/rika/r  u   理科   c           
          | j                        }| j                  |      }| j                  t        j                  dt        j
                  |       d|      || j                  d|dd      fd      S )Nz-href="((?:https?://www\.nhk\.or\.jp)?/school/z	/[^/]+/)"zB(?s)<span\s+class="subjectName">\s*<img\s*[^<]+>\s*([^<]+?)</span>rc   Fr@   c                 :    t        | j                  d            S )Nr   )r   rv   )r   r1   s    r*   <lambda>z5NhkForSchoolSubjectIE._real_extract.<locals>.<lambda>&  s    gc1771:. r,   )	_match_idr6   playlist_from_matchesr   r   r  _html_search_regex)r$   r1   
subject_idr   s    `  r*   r   z#NhkForSchoolSubjectIE._real_extract  s    ^^C(
((j9))KKHS]I^H__hikrs##$ikrt{  DI#  J.	0 	0r,   N)	r   r   r   IE_DESCKNOWN_SUBJECTSr   r   r   r   r   r,   r*   r  r    sq     AGN OQTQYQYYp~YQJ 62
   4
  F 0r,   r  c                   p    e Zd Zddj                  d ej
                  D              z  Zdddddd	gZd
 Zy)NhkForSchoolProgramListIEz>https?://www\.nhk\.or\.jp/school/(?P<id>(?:%s)/[a-zA-Z0-9_-]+)r  c              #   F   K   | ]  }t        j                  |        y wr   r  r  s     r*   r  z#NhkForSchoolProgramListIE.<genexpr>+  s     L!1Lr  z&https://www.nhk.or.jp/school/sougou/q/zsougou/qu!   Ｑ～こどものための哲学r  r   r   c                    | j                  |      }| j                  d| d|      }| j                  d|      xs | j                  d|dd      }|rt	        j
                  dd|      nd }| j                  d	|d
dd      }| j                  d| d|      }t        |d      xs g D cg c]  }| j                  d|        }}| j                  ||||      S c c}w )Nzhttps://www.nhk.or.jp/school/r   r   u   <h3>([^<]+?)とは？\s*</h3>rc   Fr   z\s*\|\s*NHK\s+for\s+School\s*$z3(?s)<div\s+class="programDetail\s*">\s*<p>[^<]+</p>rh   r   )r@   rv   z/meta/program.json)part.zpart-video-dasidz7https://www2.nhk.or.jp/school/movie/bangumi.cgi?das_id=)
r#  r6   _generic_titler%  r   subr"   r   
url_resultr   )	r$   r1   r   r   rc   rh   bangumi_listxbangumiss	            r*   r   z'NhkForSchoolProgramListIE._real_extract6  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Z OOUVWUXYZZ Z ##Hj%MM	Zs   *CN)	r   r   r   r   r  r(  r   r   r   r   r,   r*   r*  r*  )  sL    RL'<'K'KLLJ 88
   FNr,   r*  c                       e Zd ZdgZdZdZdddddd	d
d
ddddddddddddd
d
ddddddddddddd d!d"d#d$d%d&d'd(gd)d*d+d,dd-d-d.d/d0d1d2d/d3d4dgZd5Zd6 Zd7 Z	d8 Z
d9 Zy5):NhkRadiruIE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]+))?zBhttps://www.nhk.or.jp/radio/player/ondemand.html?p=0449_01_3926210zEpisode expired on 2024-02-24uo   ジャズ・トゥナイト　シリーズＪＡＺＺジャイアンツ　５６　ジョニー・ホッジス0449_01_3926210rk   u   ジャズ・トゥナイトzNHK-FMz+https://www.nhk.or.jp/prog/img/449/g449.jpg20240217z$md5:a456ee8e5e59e6dd2a7d32e62386e811i eie)rc   rX   r   rj   uploaderchannelr   r   rh   rL   rM   r   )r1   r   r   z:https://www.nhk.or.jp/radio/ondemand/detail.html?p=0458_010458_01u   ベストオブクラシックuZ   世界中の上質な演奏会をじっくり堪能する本格派クラシック番組。z+https://www.nhk.or.jp/prog/img/458/g458.jpg)rX   rc   rh   r:  r9  r   r   r   zBhttps://www.nhk.or.jp/radio/player/ondemand.html?p=F300_06_3738470zExpires on 2024-03-31F300_06_3738470u*   有島武郎「一房のぶどう」u   朗読：川野一宇（ラジオ深夜便アンカー）

（2016年12月8日放送「ラジオ深夜便『アンカー朗読シリーズ』」より）u   NHKラジオ第1、NHK-FMiazNhttps://www.nhk.or.jp/radioondemand/json/F300/img/corner/box_109_thumbnail.jpg20161207u&   らじる文庫 by ラジオ深夜便 i,3HX20211101)rX   r   rc   rh   r:  r9  rL   r   r   rj   rM   r   z Unable to download JSON metadataz"Failed to get extended description)r1   r0   r   expected_warningszBhttps://www.nhk.or.jp/radio/player/ondemand.html?p=F261_01_3855109zExpires on 2023-04-17F261_01_3855109   NHKラジオ第1i<;d20230416   NHKラジオニュースu   午後６時のNHKニュースChttps://www.nhk.or.jp/radioondemand/json/F261/img/RADIONEWS_640.jpgi;d)rX   r   r:  r9  rL   r   rj   rc   r   r   rM   Nc                     t        |dt        hd hf      \  }t        |dt        hf      t         fd      }|sy t         j                  ||dd      dd	t        hf      xs i }t        d
dddd|      S )N	aa_vinfo2c                 ,    | xs dj                  d      S )Nr   ,)	partitionr2  s    r*   r"  z;NhkRadiruIE._extract_extended_description.<locals>.<lambda>  s    RSRYWYQdQdehQi r,   	aa_vinfo3c                  @    j                   j                         S )N)serviceareadateid)_API_URL_TMPLformat)rK  rN  r$   rM  s   r*   r"  z;NhkRadiruIE._extract_extended_description.<locals>.<lambda>  s     D&&--gDQZ-[ r,   zDownloading extended metadataFr   listr   subtitlecontentactmusicz

)delim	from_dict)r   strr   r"   dictr
   )	r$   r|   r   r   
detail_url	full_metarK  rN  rM  s	   `     @@@r*   _extract_extended_descriptionz)NhkRadiruIE._extract_extended_description  s    '+uGiFj1klD ;*>?	[]
 
J8W_deWa$(* 0-/ 	 ZE7&\effr,   c                    | d|d    }t        |ddt        hf      }| j                  ||      }|s$| j                  d       t        |dt        hf      }i ||| j                  |j                  d      |d	      d
d|j                  d      t        |j                  d            xs |j                  d      |dt        |ddt        hfdd ht        hfd      S )Nr   headline_id	file_listr   z;Failed to get extended description, falling back to summaryfile_title_sub	file_nameFr   m4a_dashTrc   headline_imager   )rX   rO   	containerwas_liverj   r   rh   
file_title	open_time	aa_vinfo4c                 *    | j                  d      d   S )Nr   r   )r   rJ  s    r*   r"  z3NhkRadiruIE._extract_episode_info.<locals>.<lambda>  s    aggcl1o r,   )rc   rL   rM   )	r   rZ  r]  report_warningrY  ry   r_   r   r   )r$   headlineprogramme_idseries_metar|   r   rh   s          r*   r   z!NhkRadiruIE._extract_episode_info  s   $~Qx'>&?@
x+q4&)AB88WM ]^&w1AC50IJK

11'++k2JJ^c1d#!oog.$X\\2B%CDdXcHd&
 7%),=+>?&14M3NQbPc%d% 
 	
r,   c                 x    | j                   ry | j                  dd dd      t        fd      t        _         y )N1https://www.nhk.or.jp/radio/config/config_web.xmlzDownloading API configFr   c                  @    d j                  d      j                   S )Nhttps:z.//url_program_detail)findtext)
api_configs   r*   r"  z.NhkRadiruIE._real_initialize.<locals>.<lambda>  s    vjooNe>f>k>k=l5m r,   )rP  _download_xmlr   r5  )r$   ru  s    @r*   _real_initializezNhkRadiruIE._real_initialize  s>    ''?G_gl ( n
$,-m$n!r,   c                    	  j                  |      j                  ddd      \  }}| d| |dk(  rd}n	d| d d	} j                  |      d
   t        ddddt        hfdd      	r$ j                  t        dfdfd      	      S  	fd}  j                   |       fdj                  d      i	S )Nsitecornerrl  r   F261z=https://www.nhk.or.jp/s-media/news/news-site/list/v1/all.jsonz)https://www.nhk.or.jp/radioondemand/json/z	/bangumi_z.jsonmainprogram_name
media_name)thumbnail_cthumbnail_p)rc   r:  r9  r   FrF   detail_listc                     |d   k(  S )Nr_  r   )r   r   r_  s     r*   r"  z+NhkRadiruIE._real_extract.<locals>.<lambda>  s    -0@K0O r,   c               3   j   K   t        ddt        hf      D ]  } j                  |         y w)Nr  .)r   rZ  r   )rl  rA   rm  r$   rn  s    r*   r   z*NhkRadiruIE._real_extract.<locals>.entries  s=     (sTF/KL V00<UUVs   03playlist_descriptionsite_detail)ru   rv   r"   r   r   r   r   r_   )
r$   r1   site_id	corner_idjson_urlr   r_  rA   rm  rn  s
   `     @@@@r*   r   zNhkRadiruIE._real_extract  s   *.*?*?*D*J*J6S[]g*h'K!!I;/fVHB7)9UaTbbghH""8\:6B"4##$8;-H	*

  --T!#O$QZ_ak+ +
	V $t##I|b:>((=:QbU`b 	br,   )r   r   r   _GEO_COUNTRIESr'  r   r   rP  r]  r   rw  r   r   r,   r*   r5  r5  L  s   VN-G nJS/ G#3 F&A#!+%
& L5w F
  T'#A }23#i&>!+%
 ABfg%* T'#)*#&05^%!+
	aAFF Mg
0obr,   r5  c            	       2    e Zd ZdZddddddddd	d
gZd Zy)NhkRadioNewsPageIEz/https?://www\.nhk\.or\.jp/radionews/?(?:$|[?#])z https://www.nhk.or.jp/radionews/   F261_01rD  z$md5:bf2c5b397e44bc7eb26de98d8f15d79drA  rC  )rX   r   rh   r:  r9  rc   )r1   r   r   c                 .    | j                  dt              S )Nz:https://www.nhk.or.jp/radio/ondemand/detail.html?p=F261_01)r0  r5  r   s     r*   r   z NhkRadioNewsPageIE._real_extract  s    []hiir,   Nr  r   r,   r*   r  r    s8    CJ 2^A)*/
	 Fjr,   r  c            
           e Zd ZdgZdZddddddd	d
dddddgiiidddddd	ddddddgiiidddddd	dgZddddZd Zy)NhkRadiruLiveIEr6  z<https?://www\.nhk\.or\.jp/radio/player/\?ch=(?P<id>r[12]|fm)z)https://www.nhk.or.jp/radio/player/?ch=r1zr1-tokyou-   re:^ＮＨＫネットラジオ第1 東京.+$rk   z5https://www.nhk.or.jp/common/img/media/r1-200x200.pngis_live)rX   rc   r   r   live_statusr   z)https://www.nhk.or.jp/radio/player/?ch=r2extractor_argsnhkradiruliverN  fukuokaz
r2-fukuokau-   re:^ＮＨＫネットラジオ第2 福岡.+$z5https://www.nhk.or.jp/common/img/media/r2-200x200.png)r1   r   r   z)https://www.nhk.or.jp/radio/player/?ch=fmsapporoz
fm-sapporou/   re:^ＮＨＫネットラジオＦＭ 札幌.+$z5https://www.nhk.or.jp/common/img/media/fm-200x200.pngn1n2n3)r1r2fmc                 D   | j                  |      }| j                  ddg      d   }| j                  d|d      }|j                  d| d      }|sFt	        dd	j                  |j                  d
      D cg c]  }|j                   c}      z  d      | j                  d|j                  d      j                   j                  |j                  d      j                        |d| dd      }t        |d| j                  j                  |      df      }dj                  t        |ddt        hf            t        ||      t        |dddddt        hfdt        hfd f      | j!                  |j                  | d!      j                  |      dd"S c c}w )#NrN  tokyor   rp  zDownloading area informationz.//data//area[.="z"]/..z!Invalid area. Valid areas are: %sz, z.//data//areaT)expectedrr  z.//url_program_noaareakey)rN  zDownloading z station metadataF)r0   r@   nowonair_listpresentr   )rM  rN  r   rM  images.r1   rg   rf   )r1   rg   rf   rm   )rc   rX   ri   rO   r  )r#  _configuration_argrv  rs  r   r   findallrt  r"   rQ  r   _NOA_STATION_IDSr_   rY  r
   r	   ry   )	r$   r1   stationrN  configr    inoa_infopresent_infos	            r*   r   zNhkRadiruLiveIE._real_extract  s   ..%&&vy9!<##?Jhj{{.tfE:; !Dtyy!'!@AAAHC "CMQS S &&V[[!56;;<=DD$))T]J^JcJcDdL.?@ ' O $H@U@U@Y@YZa@bdm.no XXl<:NPVY\X]9^_`.&|i3!K=1#k]3Q 6 
 11$))wisO2L2Q2QSZ[

 
	
 Bs   6FN)r   r   r   r  r   r   r  r   r   r,   r*   r  r    s    VNPJ ;DP$

 ;#o7L%MNDP$
 ;#o7L%MNFP$
	-!FF #$d;
r,   r  )r   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   rt   r   r   r  r*  r5  r  r  r   r,   r*   <module>r     s    	 !   "F FRG/y G/TU_i U_p?
M ?
D$0M $0N N  NFRb- Rbjj j(C
m C
r,   