
    V|h                     b   S SK r SSK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   " 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 " S S\5      r  " S S\5      r!g)    N   )InfoExtractor   )HEADRequest)ExtractorErrorGeoRestrictedError
clean_htmldetermine_extfilter_dictint_or_nonejoin_nonemptyparse_durationremove_startstrip_or_nonetraverse_objtry_getunified_strdateunified_timestampupdate_url_queryurljoin
xpath_textc                   X    \ rS rSrSrS/rSrS rSS jrS r	\
S 5       r\
S	 5       rS
rg)	RaiBaseIE   z7[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}ITFc                 z   U R                  XSSSS9nU H  nUR                  S5      (       d  SUS'   UR                  S5      (       d  SUS'   US	   n[        R                  " S
U5      (       a  SUS'   Ma  [        R                  " SU5      (       a  SUS'   M  US   S:X  a  SUS'   US   S:X  d  M  SUS'   M     U$ )Nmp4hlsF)m3u8_idfatalacodecmp4avcodecavc1urlzchunklist(?:_b\d+)*_ao[_.]nonezchunklist(?:_b\d+)*_vo[_.])_extract_m3u8_formatsgetresearch)self	media_urlvideo_idfmtsfman_urls         N/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/rai.py_fix_m3u8_formatsRaiBaseIE._fix_m3u8_formats   s    ))U * D A55??$(55??$(hGyy6@@$(8'BB$(X;&("(AhKX;&("(AhK       c           
      R   S n[         R                  " SU5      (       d  SSU0/0$ U R                  XSUSS00 U R                  5       ESS	0ES
9n[	        USSS9S:w  a  U R                  U5        [	        USSS9S:H  n[        [	        USS S95      n[	        USS S9nU(       d  U R                  S5        [	        USSS9S:H  n	[        U5      R                  5       n
/ nU
S:X  a  UR                  USSSS.5        OU
S:X  d  SU;   a!  UR                  U R                  X5      5        OU
S:X  a@  [        UR                  SS5      SSS .5      nUR                  U R                  XS!S"S#95        OQU
S$:X  a<  [!        [	        US%5      5      nUR                  UUS&:  a  UOS [#        S'US(S)9S*.5        O[%        S+U
 S,35      eU(       d  U	S-L d  S.U;   a  U R'                  U R(                  S-S/9  U(       d(  U(       d!  UR                  U R+                  XX5      5        [-        UUUS0.5      $ )1Nc                 b    [         R                  " SSU 5      n [         R                  " SSU 5      $ )Nz(\]\]>)[\r\n\t]+(</)z\1\2z(>)[\r\n\t]+(<!\[CDATA\[))r)   sub)ss    r1   	fix_cdata3RaiBaseIE._extract_relinker_info.<locals>.fix_cdata7   s+     .!<A666!DDr4   z	https?://formatsr%   zDownloading XML metadataoutput@   z
User-AgentRai)notetransform_sourcequeryheadersz./license_urlz{}defaultz	./is_liveNYz
./durationz./url[@type="content"]z"The relinker returned no media urlz./geoprotectionmp3r&   z	https-mp3)r%   r#   r!   	format_idm3u8zformat=m3u8f4mzmanifest#live_hds.f4mzmanifest.f4mz3.7.0zaasp-3.7.0.39.44)hdcorepluginhdsF)f4m_idr    r   z	./bitrater   https-delim)r%   tbrrH   zUnrecognized media extension ""Tz/video_no_available.mp4)	countriesmetadata_available)is_livedurationr;   )r)   match_download_xmlgeo_verification_headersr   
report_drmr   raise_no_formatsr
   lowerappendextendr2   r   replace_extract_f4m_formatsr   r   r   raise_geo_restricted_GEO_COUNTRIES_create_http_urlsr   )r+   relinker_urlr-   
audio_onlyr9   relinkerrW   rX   r,   geoprotectionextr;   manifest_urlbitrates                 r1   _extract_relinker_info RaiBaseIE._extract_relinker_info6   sb   	E xxl33 5677 %%)C&xnLt446LeL & N
 h>$FOOH%X{C@CG!*X|T"RSx)A4P	!!"FG #8->LPSSI&,,.%<NN  (	  F]my8NN411)FGE\+!!"9>J".@ACL NN444uE 5 C DE\!*X{"CDGNN ")A+w4*7G3G  !#A#a!HIIMT16OS\6\%%0C0CX\%]'NN411)7]^ 
  	r4   c                   ^^^ SnSn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.mS$S jmUUU4S jn U R                  [        XbS4-  5      US5        T V	s/ s H3  n	U	R                  S5      S:w  d  M  U	R                  S5      S:w  d  M1  U	PM5     sn	m[        R                  " XQ5      n
U
(       d  / $ U
R                  S5      (       a   U
R                  S5      R                  S5      OS/n/ n[        S U5       H8  nU R                  S U 35        UR                  XbU4-  S!S"S#.U" U5      E5        M:     U$ ! [         a,  nU R                  U SUR                   35        / s S nA$ S nAff = fs  sn	f )%NzK/(?P<id>\w+)(?:_(?P<quality>[\d\,]+))?(?:\.mp4)?(?:\.csmil)?/playlist\.m3u8z%s&overrideUserAgentRule=mp4-%si`     i   i     i  i  i  i  i     @  i   i  i  i*  i  i8  )     iX  rq   i   i  i  i  i`	  i  i  i  i'  c                     U (       a  U S:  a  g[        X-
  5      [        [        U 5      [        U5      -  S-  U5      :  $ )z9check if the target is in the range of number +/- percentr   Fg      Y@)absminfloat)numbertargetpcroofs       r1   
percentage/RaiBaseIE._create_http_urls.<locals>.percentage   s:    VaZv'#eFmeBi.G%.OQU*VVVr4   c           	      |  > SS K n[        U 5      n[        T5      S:X  a  U(       d  TS   R                  S5      nU(       a  US:  a  UR	                  US-  5      S-  n OSn S S /nT H  nUR                  S5      (       a#  T" XS   5      (       a  UR                  5       US'   UR                  S5      UR                  S5      /TR                  U 5      :X  d  Ms  UR                  5       US'   XS   S'   M     US   =(       d    US   =(       d    0 nU(       a  S	U  3UR                  S5      UR                  S5      UR                  S5      =(       d    U UR                  S
5      =(       d    SUR                  S5      =(       d    SUR                  S5      =(       d    SS.$ S	U  3TU    S   TU    S   U SSSS.$ )Nr   r   rS   i,  d   rt   widthheightzhttps-r#   r$   r!   r"   fps   )rH   r   r   rS   r#   r!   r   )mathr   lenr(   floorcopy)rS   r   brformat_copyr/   _QUALITYr.   r~   s        r1   get_format_info4RaiBaseIE._create_http_urls.<locals>.get_format_info   s   S!B4yA~b!W[['b3hjjc*S0  ,K55<<!#x00)*AEE'NAEE(O4S8II%&VVXKN,/N5)  &a.@KN@bK   &cU^$1%//(3"u-4%//(3=v%//(3=v"u-3   &cU^!#q)"3-*  #r4   *zChecking MP4 availabilityz(: MP4 direct download is not available: r#   r&   r!   quality,z"Creating https format for quality rO   r   )r%   protocolrj   )   }   )_request_webpager   r   	to_screencauser(   r)   r*   groupsplitfilterwrite_debugr_   )r+   rk   rf   r.   r-   _MANIFEST_REG	_MP4_TMPLr   er/   mobjavailable_qualitiesr;   qr   r~   s      `          @@r1   re   RaiBaseIE._create_http_urls}   s   f5	 sssss**++++,$<
"	W'	T	!!Is(;;<hHce   L4a55?f, 12xF1J 4 L yy5IBF**YBWBWdjj399#>^a]b12AA!EFNN !#44# "!$	  3 -  	NNhZ'OPQPWPWyYZI	
Ls0     E $E>E>E>
E;!E60E;6E;c                     U =(       d    0 R                  5        Vs/ s H  o"(       d  M  S[        X5      0PM     sn$ s  snf )Nr%   )valuesr   )thumbsr%   	thumb_urls      r1   _get_thumbnails_listRaiBaseIE._get_thumbnails_list   sK     #Lb002A2ii
73*
2A 	A As   
>>c           	      B   SnSn0 nUR                  S5      =(       d    UR                  S5      =(       d    / nS H%  nUR                  SUR                  U5      05        M'     U H  nUR                  S5      nU(       d  M  [        U[        5      (       d  M4  UR                  S5      =(       d    Sn	[	        X5      n[        X5      n
UR                  U	/ 5      R                  U
US	.5        X*:X  d  M  XI   R                  UUS [        U5      *  U-   S	.5        M     U$ )
NstlsrtsubtitlesArraysubtitleList)	subtitlessubtitlesUrlr%   languageit)rj   r%   )r(   r_   
isinstancestrr   r
   
setdefaultr   )r%   
video_dataSTL_EXTSRT_EXTr   subtitles_arrayksubtitlesub_urlsub_langsub_exts              r1   _extract_subtitlesRaiBaseIE._extract_subtitles   s   	$..)9:bjnn^>\b`b.A""E:>>!+<#=> /'Hll5)Gw:gs33#<<
3;t!#/'9$$Xr299"";  %'..&&~W6@0  ( r4    N)F)__name__
__module____qualname____firstlineno___UUID_RErd   _GEO_BYPASSr2   rm   re   staticmethodr   r   __static_attributes__r   r4   r1   r   r      sP    IHVNK.EN]~ A A
  r4   r   c                      \ rS rSrS\R
                   S3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0_SS_S S!_S"S#_S$S%_S&S_S'S(0S).S*S+0 SS,_SS	_S
S-_SS._SS/_SS0_SS1_SS2_SS3_SS4_SS5_S6S7_SS8_S9S7_S S:_S"S;_S$S<_S&S=0ES'S(0S>/S?.S@SASBS	SCSDSESFSGSHS5SISJS7SKSLSMSN.SO.SPSQSRS	SSSTSUSSVSWS/SXSYSZS[S\S]S^.SO.S_S(S`.SaS(S`.SbS(S`./rSc rSdr	ge)f	RaiPlayIE   z3(?P<base>https?://(?:www\.)?raiplay\.it/.+?-(?P<id>))\.(?:html|json)zbhttps://www.raiplay.it/video/2014/04/Report-del-07042014-cb27157f-9dd0-4aee-b788-b1f67643a391.html 8970abf8caf8aef4696e7b1f2adfc696idz$cb27157f-9dd0-4aee-b788-b1f67643a391rj   r   titlezReport del 07/04/2014	alt_titleu6   St 2013/14 - Report - Espresso nel caffè - 07/04/2014descriptionz$md5:d730c168a58f4bb35600fc2f881ec04e	thumbnailz%re:^https?://www\.raiplay\.it/.+\.jpguploaderzRai 3creatorrX   i  seriesReportseasonz2013/14r   r   zcount:4release_yeari  episodeu    Espresso nel caffè - 07/04/2014	timestampiHNCSupload_date20140408r;   skip_downloadTr%   md5	info_dictparamszfhttps://www.raiplay.it/video/2021/11/Blanca-S1E1-Senza-occhi-b1255a4a-8e72-4a2f-b9f3-fc1308e00736.html aeda7243115380b2dd5e881fd42d949az$b1255a4a-8e72-4a2f-b9f3-fc1308e00736zBlanca - S1E1 - Senza occhiz St 1 Ep 1 - Blanca - Senza occhiz$md5:75f95d5c030ec8bac263b1212322e28cz+re:^https://www\.raiplay\.it/dl/img/.+\.jpgzRai PremiumzRai Fictioni]  BlancazSeason 1episode_numberr   i  season_numberzSenza occhiia20211119zcount:73Video not available. Likely due to geo-restriction.)r%   r   r   r   expected_warningszlhttps://www.raiplay.it/video/2012/09/S1E11---Tutto-cio-che-luccica-0cab3323-732e-45d6-8e86-7704acab6598.html a634d20e8ab2d43724c273563f6bf87az$0cab3323-732e-45d6-8e86-7704acab6598u+   Mia and Me - S1E11 - Tutto ciò che luccicau0   St 1 Ep 11 - Mia and Me - Tutto ciò che luccicaz$md5:4969e594184b1920c4c1f2b704da9deare:^https?://.*\.jpg$zRai Gulpz
Mia and Me   i  u   Tutto ciò che luccicaif`P20120924)r   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r   r   zhttps://www.raiplay.it/video/2022/10/Ad-ogni-costo---Un-giorno-in-Pretura---Puntata-del-15102022-1dfd1295-ea38-4bac-b51e-f87e2881693b.html 572c6f711b7c5f2d670ba419b4ae3b08z$1dfd1295-ea38-4bac-b51e-f87e2881693bz=Ad ogni costo - Un giorno in Pretura - Puntata del 15/10/2022z1St 2022/23 - Un giorno in pretura - Ad ogni costoz$md5:4046d97b2687f74f06a8b8270ba5599fg     z@zDhttps://www.raiplay.it/dl/img/2022/10/12/1665586539957_2048x2048.pngzUn giorno in preturaz2022/23zAd ogni costoiEc20221011i  )r   rj   r   r   r   r   rX   r   creatorsr   r   r   r   r   r   z^http://www.raiplay.it/video/2016/11/gazebotraindesi-efebe701-969c-4593-92f3-285f0d1ce750.html?r%   only_matchingzbhttps://www.raiplay.it/video/2020/12/Report---04-01-2021-2e90f1de-8eee-4de4-ac0e-78d21db5b600.htmlzhttps://www.raiplay.it/video/2021/06/Lo-straordinario-mondo-di-Zoey-S2E1-Lo-straordinario-ritorno-di-Zoey-3ba992de-2332-41ad-9214-73e32ab209f4.htmlc                    U R                  U5      R                  5       u  p#U R                  U S3US5      n[        US5      (       a  U R	                  U5        US   nU R                  US   U5      n[        UR                  S5      UR                  S5      SS	9nUR                  S
5      n[        UR                  S5      UR                  S5      SS	9n	0 S[        UR                  S5      S5      =(       d    U_SU_SUR                  S5      _S[        U	=(       d    S 5      _SUR                  S5      _S[        [        US5      =(       d    UR                  S5      =(       d    S 5      _S[        [        US5      =(       d    UR                  S5      =(       d    S 5      _S[        UR                  S5      5      _S[        U5      _SU R                  UR                  S5      U5      _S[        US 5      _S![        U5      _S
U(       a  UR                  5       (       d  UOS _S"UR                  S#5      _S$[        UR                  S"5      5      _S%U R                  X5      _S&[        [        US'5      5      _UE$ )(N.jsonDownloading video JSON)rights_managementrightsdrmvideocontent_urldate_publishedtime_published rQ   r   r   toptitle - r   ContentItem-
display_idr   namer   r   r   )program_infochannelr  r   )r  editorr  rX   r   
thumbnailsimagesr   )r  r  r   r   episode_titler   r   r   )
track_info	edit_year)_match_valid_urlgroups_download_jsonr   r\   rm   r   r(   r   r   r   r   r   r   isdigitr   )
r+   r%   baser-   mediar   relinker_infor   r   r   s
             r1   _real_extractRaiPlayIE._real_extractf  s   ..s3::<##fENH&>@ EFFOOH%g33E-4H(S&II&'3C)DCQ8$!%))J"7:9NV[\	
,uyy?K8
(
 UYYv&
 y'8D9	

 599]3
 U$?@ 099Y'0+/1
 }U$>? /99X&/*.0
 uyy'<=
 *>:
 $33EIIh4GM
 l5*BC
  [0!
" 0@0@ft#
$ uyy1%
& k%))I*>?'
( 00<)
* KU<W(XY+
, -
 	
r4   r   N
r   r   r   r   r   r   
_VALID_URL_TESTSr  r   r   r4   r1   r   r      s   G	HZHZG[[lmJs1
8
5
 ,
 Q	

 A
 A
 
 w
 
 h
 i
 $	*
 D
 9
 
  :!
" y#
& #D)-2 x1
8
5
 2
 ;	

 A
 G
 
 }
 
 h
 j
 a
 D
 Q
 }
  !
" :#
$ y%
( #D)ST38 ~18BKA1""   /#%
	. \18TLA_ 	,&#% 
	, p
 t eEfFP'
r4   r   c                   D    \ rS rSrSrSSSSSSS	S	S
SSSSS.SS
0S./rSrg)RaiPlayLiveIEru   zA(?P<base>https?://(?:www\.)?raiplay\.it/dirette/(?P<id>[^/?#&]+))z'http://www.raiplay.it/dirette/rainews24z$d784ad40-e0ae-4a69-aa76-37519d238a9c	rainews24r   zHre:^Diretta di Rai News 24 [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$z$md5:4d00bcf6dc98b27c6ec480de329d1497zRai News 24TrW   20090502i<_Izcount:3)r   r  rj   r   r   r   r   rW   live_statusr   r   r;   r   r%   r   r   r   Nr   r   r   r   r  r  r   r   r4   r1   r  r    sI    UJ88%_A%$$%# 
 #D)! Fr4   r  c                   F    \ rS rSrSrSSSSS.SS	.S
SSSS.SS./rS rSrg)RaiPlayPlaylistIEi  z^(?P<base>https?://(?:www\.)?raiplay\.it/programmi/(?P<id>[^/?#&]+))(?:/(?P<extra_id>[^?#&]+))?z3https://www.raiplay.it/programmi/nondirloalmiocapo/nondirloalmiocapozNon dirlo al mio capoz$md5:98ab6b98f7f44c2843fd7d6f045f153br   r   r      r%   r   playlist_mincountzFhttps://www.raiplay.it/programmi/nondirloalmiocapo/episodi/stagione-2/z"Non dirlo al mio capo - Stagione 2   r%   r   playlist_countc                    U R                  U5      R                  5       u  p#nU R                  U S3US5      nU(       a  UR                  5       R	                  S5      nUR                  S5      n/ nUR                  S5      =(       d    /  GHZ  nUR                  S5      =(       d    /  GH7  n	U(       af  U[        UR                  S5      U	R                  S5      SS9R                  SS	5      R                  5       :w  a  MX  [        XiR                  S5      S
S9nU	R                  S5      n
U
(       d  M  U R                  U SU
 S3U
SSS9nU(       d  M  UR                  S5      =(       d    /  Hm  nUR                  S5      nU(       d  M  [        X5      nUR                  U R                  U[        R                  5       [        R                  U5      S95        Mo     GM:     GM]     U R                  XsU[        US 5      5      $ )Nr   Downloading program JSON/r  blockssetsrQ   r   rP   r   r   zDownloading content set JSONF)r    itemspath_id)ier-   c                     U S   S   $ )Nr  r   r   xs    r1   <lambda>1RaiPlayPlaylistIE._real_extract.<locals>.<lambda>  s    q'8'Gr4   )r  r  r  upperrstripr(   r   ra   r   r_   
url_resultr   ie_key	_match_idplaylist_resultr   )r+   r%   r  playlist_idextra_idprogramplaylist_titleentriesbr8   s_idmediasmr.  	video_urls                  r1   r  RaiPlayPlaylistIE._real_extract  s   &*&;&;C&@&G&G&I#8%%fENK)CE ~~'..s3H V,++h'-2-AeeFm)r)=EE&M155=$EELWSRUEVW\W\W^_ %2>55=X]%^NuuT{,,fAdV5)42% - A  **W-33AeeI.G"  ' 5INN4??!i&6&6&8!*!4!4Y!? $3 $A B 4 * .2 ##.GGHJ 	Jr4   r   Nr   r   r   r   r  r  r  r   r   r4   r1   r  r    sP    rJ E%,A

  	 X%9A

 	F(&Jr4   r  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0S.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/S0_S1S2_S3S4_S5./rS6 rS7r	g8)9RaiPlaySoundIEi  z8(?P<base>https?://(?:www\.)?raiplaysound\.it/.+?-(?P<id>r   zkhttps://www.raiplaysound.it/audio/2021/12/IL-RUGGITO-DEL-CONIGLIO-1ebae2a7-7cdb-42bb-842e-fe0d193e9707.htmlr   z$1ebae2a7-7cdb-42bb-842e-fe0d193e9707rG   z&Il Ruggito del Coniglio del 10/12/2021z$md5:0e6476cd57858bb0f3fcc835d305b455z$md5:2a17d2107e59a4a8faa0e18334139ee2zre:^https?://.+\.jpg$rai radio 2i5  Il Ruggito del Coniglioi|/a20211201)r   rj   r   r   r   r   r   rX   r   r   r   r   r   r   Tr   zhttps://www.raiplaysound.it/audio/2020/05/Storia--Lunita-dItalia-e-lunificazione-della-Germania-b4c16390-7f3f-4282-b353-d94897dacb7c.html c69ebd69282f0effd7ef67b7e2f6c7d8r   z$b4c16390-7f3f-4282-b353-d94897dacb7crj   r   u=   Storia | 01 L'unità d'Italia e l'unificazione della Germaniar   z$md5:ed4ed82585c52057b71b43994a59b705r   z$md5:92818b6f31b2c150567d56b75db2ea7fr   zrai radio 3rX   g     @r   zXhttps://www.raiplaysound.it/dl/img/2023/09/07/1694084898279_Maturadio-LOGO-2048x1152.jpgr   r   	Maturadior   zSeason 9r   	   r   u5   01. L'unità d'Italia e l'unificazione della Germaniar   r   r   i^r   20200525r   c                 ,   U R                  U5      R                  SS5      u  p#U R                  U S3US5      n[        US 5      n0 n/ n[	        [        US5      5      nU H5  n	U R                  XS5      nUR                  UR                  S5      5        M7     [        US	 S
 45      n
[        USS5      =(       d    0 n0 UEU=(       d    UU[        USS5      [        US[        S9UR                  S5      [        US[        S9[        US[        S9[        U
5      U R                  UR                  S5      U5      UR                  S5      [        UR                  S5      5      UR                  S5      [        UR                  S5      5      US.E$ )Nr  r   r   zDownloading audio JSONc                 4    [        [        U S   S5      S5      $ )N
uniquenamer   zPage-)r   r1  s    r1   r3  .RaiPlaySoundIE._real_extract.<locals>.<lambda>  s    |L<R`4acj'kr4   ))downloadable_audioaudio)livecardsr   rU  r%   Tr;   c                 F    U S    SU R                  S5      =(       d    S 3$ )Ncreate_dater   create_time r(   r1  s    r1   r3  rS    s%    a6F5Gq}I]IcacHd3er4   c                     U S   S   $ )NrV  rY  r   r1  s    r1   r3  rS    s    1V9]3Kr4   podcast_info)rV  rW  r   r   r  )r	  
media_name)expected_typer   )r	  r  )r	  r  r  r   r   )r   r  r   r   r   r   r   r   r  r   r   r   r   r;   )r  r   r  r   setr   rm   r`   r(   r   r   r   r   )r+   r%   r  audio_idr  uidinfor;   	relinkersrr   r^  s               r1   r  RaiPlaySoundIE._real_extract  s   ..s399&$G##tfENH>VWeklU,stu	A..qDADNN488I./  !)e)K)M N $E>;OPVTV

/"!%/B%e-IYfg 99]3$U,EUbc#E+CS`a*>:33L4D4DX4NPST"&&w/(8)<=yy1)%))I*>?
 	
r4   r   Nr  r   r4   r1   rH  rH    s=   LYM_M_L``qrJ|18=?A1%/?$#%
 #D)%* [1
8
5
 T
 ?	

 A
 
 
 s
 
 k
 j
 Q
 N
 a
 
  :!
	')FV!
r4   rH  c                   @    \ rS rSrSrSSSSSSS	S
SSSS.
SS0S./rSrg)RaiPlaySoundLiveIEi6  z?(?P<base>https?://(?:www\.)?raiplaysound\.it/(?P<id>[^/?#&]+)$)z"https://www.raiplaysound.it/radio2z$b00a50e6-f404-4af6-8f8c-ff3b9af73a44radio2r   z"re:Rai Radio 2 \d+-\d+-\d+ \d+:\d+z0re:^https://www\.raiplaysound\.it/dl/img/.+\.pngrI  zRai Radio 2raiplaysoundTrW   )
r   r  rj   r   r   r   r   r   rW   r  r   r  r   Nr  r   r4   r1   ri  ri  6  sC    SJ38":L%#%$
 #D) Fr4   ri  c                   D    \ rS rSrSrSSSSS.SS	.S
SSS.SS./rS rSrg)RaiPlaySoundPlaylistIEiJ  z{(?P<base>https?://(?:www\.)?raiplaysound\.it/(?:programmi|playlist|audiolibri)/(?P<id>[^/?#&]+))(?:/(?P<extra_id>[^?#&]+))?z:https://www.raiplaysound.it/programmi/ilruggitodelconiglioilruggitodelconigliorJ  z$md5:62a627b3a2d0635d08fa8b6e0a04f27er!  A   r#  zVhttps://www.raiplaysound.it/programmi/ilruggitodelconiglio/puntate/prima-stagione-1995z0ilruggitodelconiglio_puntate_prima-stagione-1995zPrima Stagione 1995)r   r   r   r&  c           
        ^ U R                  U5      R                  SSS5      u  p#mU S3nU R                  XS5      nT(       as  TR                  S5      mUSTR	                  SS5      -   -  n[        U4S jUR                  S	5      =(       d    /  5       5      nU R                  [        S
U5      US5      n[        USS5      =(       d    /  Vs/ s HI  nUR                  S5      (       d  M  U R                  [        X&S   5      [        R                  5       S9PMK     nnU R                  XsUR                  S5      [        US5      5      $ s  snf )Nr  r   r<  r   r)  r*  _c              3   \   >#    U  H!  nTUR                  S 5      ;   d  M  US   v   M#     g7f)weblinkr.  Nr\  ).0cr<  s     r1   	<genexpr>7RaiPlaySoundPlaylistIE._real_extract.<locals>.<genexpr>g  s-     k.JhZ[Z_Z_`iZjNj).Js   ,,filterszhttps://www.raiplaysound.itz"Downloading program secondary JSONrW  )blockrW  r.  )r/  r   )r^  r   )r  r   r  r6  ra   nextr(   r   r   r7  rH  r8  r:  )	r+   r%   r  r;  r=  pathru  r?  r<  s	           @r1   r  $RaiPlaySoundPlaylistIE._real_extract_  sK   &*&;&;C&@&F&FvtU_&`#8en%%c8RSs+H3!1!1#s!;;;Kkgkk).D.J.JkkD))5t<kKoqG
 "'74FGM2M!MuuY UDOOGDI,7N<Q<Q<SOTM 	 !
 ##G'++g:N$0:Y$Z\ 	\!s   E.2Er   NrF  r   r4   r1   rm  rm  J  sP     PJ L(.A

  	 hD*
 F&\r4   rm  c            
           \ rS rSrS\R
                   S3rSSSSSS	S
S.SS0S/S.SSSSSSSSS.SS0S.SSS./rS rSr	g)RaiIEit  z.https?://[^/]+\.(?:rai\.(?:it|tv))/.+?-(?P<id>z)(?:-.+?)?\.htmlzghttps://www.raisport.rai.it/dl/raiSport/media/rassegna-stampa-04a9f4bd-b563-40cf-82a6-aad3529cb4a9.htmlz$04a9f4bd-b563-40cf-82a6-aad3529cb4a9r   zTG PRIMO TEMPOzre:^https?://.*\.jpgi  20140612)r   rj   r   r   rX   r   r   Tr   r%   r   r   r   zahttps://www.rai.it/dl/RaiTV/programmi/media/ContentItem-efb17665-691c-45d5-a60c-5301333cbb0c.htmlz$efb17665-691c-45d5-a60c-5301333cbb0czTG1 ore 20:00 del 03/11/2016z6TG1 edizione integrale ore 20:00 del giorno 03/11/2016r   i  20161103)r   rj   r   r   r   rX   r   r  z`http://www.rai.it/dl/RaiTV/programmi/media/ContentItem-b63a4089-ac28-48cf-bca5-9f5b5bc46df5.htmlr   c                 4   U R                  U5      nU R                  SU S3USSSS9nUc  g SUS   ;   aE  S	[        S
UR                  S5      SS9US   UR                  S5      SUR                  S5      S./0nO*SUS   ;   a  U R	                  US   U5      nO[        S5      eU R                  S Vs0 s H  oUUR                  U5      _M     snU5      nU[        UR                  S5      =(       d    UR                  S5      5      [        UR                  S5      5      =(       d    S U[        UR                  S5      5      =(       d    S [        UR                  S5      5      [        UR                  S5      5      U R                  X5      S.UE$ s  snf )Nz8https://www.rai.tv/dl/RaiTV/programmi/media/ContentItem-z
.html?jsonr   Fi  )r    expected_statusAudiotyper;   rO   formatoAudiorP   rQ   audioUrlr&   )rH   r%   rj   r#   r!   VideomediaUriznot a media file)imageimage_medium	image_300r  r   descauthordatelength)r   r   r   r  r   r   rX   r   )r9  r  r   r(   rm   r   r   r   r   r   r   )r+   r%   
content_idr  r  
image_typer  s          r1   r  RaiIE._real_extract  s   ^^C(
##FzlR\]0s $ T =eFm#!.w		.8QY\!] , 99^4$#ii7 M f% 77j8I:VM !344..B6 7 B6::.. B6 78;=

 "599V#4#J		'8JK(6):;Ct$%eii&9:Bd*599V+<=&uyy':;00<

 

 
	
7s   4Fr   Nr  r   r4   r1   r~  r~  t  s    B9CUCUBVVfgJx8%0%
 #D)ST s83S1%
 #D) r1F<&
r4   r~  c                       \ rS rSrS\R
                   S3rS\R
                   S3/r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0S/S.SSS./rSr	S  r
S!rg")#	RaiNewsIEi  z7https?://(www\.)?rainews\.it/(?!articoli)[^?#]+-(?P<id>)(?:-[^/?#]+)?\.html-<iframe[^>]+data-src="(?P<url>/iframe/[^?#]+?\.html)zhttps://www.rainews.it/video/2024/02/membri-della-croce-rossa-evacuano-gli-abitanti-di-un-villaggio-nella-regione-ucraina-di-kharkiv-il-filmato-dallucraina--31e8017c-845c-43f5-9c48-245b43c3a079.htmlz$31e8017c-845c-43f5-9c48-245b43c3a079r   z$md5:1e81364b09de4a149042bac3c7d36f0b   20240225rainewscount:2r   rj   r   rX   r   r   r;   r   Tr  zhttps://www.rainews.it/dl/rainews/media/Weekend-al-cinema-da-Hollywood-arriva-il-thriller-di-Tate-Taylor-La-ragazza-del-treno-1632c009-c843-4836-bb65-80c33084a64b.htmlz$1632c009-c843-4836-bb65-80c33084a64bzXWeekend al cinema, da Hollywood arriva il thriller di Tate Taylor "La ragazza del treno"z"I film in uscita questa settimana.zre:^https?://.*\.png$iA  r  zcount:8)r   rj   r   r   r   rX   r   r;   zunable to extract player_datar  zhttps://www.rainews.it/iframe/video/2022/07/euro2022-europei-calcio-femminile-italia-belgio-gol-0-1-video-4de06a69-de75-4e32-a657-02f0885f8118.htmlr   newsc           	         U R                  U5      nU R                  X5      nU R                  SU R                   S3USU[        0 S9nUR                  S5      n[        USS5      nU(       d   [        R                  X5      $ U R                  [        X5      U5      nUUR                  S
5      =(       d)    UR                  S
5      =(       d    U R                  U5      [        UR                  S5      5      [        UR                  S5      =(       d    S 5      S.UE$ ! [         a    e [         a  n[        SUS	9eS nAff = f)Nz<raiz-player\s*data=\'player_data)r@   rD   r	  
mediapolisr   zRelinker URL not found)r   r   r  r  )r   r   r   r   )r9  _download_webpage_search_json_PLAYER_TAGr	   r(   r   r~  r  r   r   rm   r   _og_search_titler   r   )	r+   r%   r-   webpager  r	  rf   r   r  s	            r1   r  RaiNewsIE._real_extract  s?   >>#&((7''D$$%%67-QY' ( 5 !__\2
#K}MH**455 33GC4NPXY  __W-j1HjDLaLabiLj*:>>&+AB%jnnX&>&F$G	

 
 	
 & ! H$%=QGGHs   /D   E4
D>>Er   N)r   r   r   r   r   r   r  _EMBED_REGEXr  r  r  r   r   r4   r1   r  r    s    KIL^L^K__stJDYEWEWDXX_`aL X8;%! 
 #D) y8o?1% 	
 #D)=>" e9 FB K
r4   r  c            	       |    \ rS rSrS\R
                   S3rS\R
                   S3/rSSSS	S
SSSS.SS0S./rSr	Sr
g)RaiCulturaIEi  z:https?://(www\.)?raicultura\.it/(?!articoli)[^?#]+-(?P<id>r  r  r  zhttps://www.raicultura.it/letteratura/articoli/2018/12/Alberto-Asor-Rosa-Letteratura-e-potere-05ba8775-82b5-45c5-a89d-dd955fbde1fb.htmlz$05ba8775-82b5-45c5-a89d-dd955fbde1fbr   z'Alberto Asor Rosa: Letteratura e poterei  20181206
raiculturar  r  r   Tr  culturar   N)r   r   r   r   r   r   r  r  r  r  r   r   r4   r1   r  r    sn    NyOaOaNbbvwJDYEWEWDXX_`aL Y8>%$ 
 #D) F Kr4   r  c            
       d    \ rS rSrSrSSSSSSS	S
SS.SS0S.SSSSS
SS.SS0S.SSS./rS rSrg)RaiSudtirolIEi  z8https?://rai(?:bz|sudtirol)\.rai\.it/.+media=(?P<id>\w+)z;https://raisudtirol.rai.it/la/index.php?media=Ptv1619729460Ptv1619729460r   z/Euro: trasmisciun d'economia - 29-04-2021 20:51zEuro: trasmisciun d'economia20210429z+re:https://raisudtirol\.rai\.it/img/.+\.jpgraisudtirolzcount:1)r   rj   r   r   r   r   r   r;   r   Tr  zIhttps://raisudtirol.rai.it/it/kidsplayer.php?lang=it&media=GUGGUG_P1.smil	GUGGUG_P1z(GUGGUG! La Prospettiva - Die Perspektivezcount:6)r   rj   r   r   r;   z5https://raibz.rai.it/de/index.php?media=Ptv1751660400r   c                    U R                  U5      nU R                  X5      nU R                  SUSS S9nU R                  SS/USS S9nU R                  SS/US	S S9n[        U5      nUS
:X  a  U R	                  Xb5      nO7US:X  a  SU R                  U5      SSSSSS./nO/ nU R                  SU 35        U[        XTSS9U(       a  UOS [        U5      [        SU R                  SUSS S95      SUS.$ )Nz#<span class="med_data">(.+?)</span>
video_daterC   z$<span class="med_title">(.+?)</span>ztitle: \'(.+?)\',video_titlez"sources:\s*\[\{file:\s*"(.+?)"\}\]z4<source\s+src="(.+?)"\s+type="application/x-mpegURL"rD  rI   r   z	https-mp4rr   rs   r   r$   r"   )rH   r%   r   r   r   r#   r!   zUnrecognized media file: r   rQ   zhttps://raisudtirol.rai.it/zimage: \'(.+?)\'video_thumbr  )r   r   r   r   r   r   r;   )
r9  r  _html_search_regexr
   r'   _proto_relative_urlr]   r   r   r   )	r+   r%   r-   r  r  r  rD  rj   r;   s	            r1   r  RaiSudtirolIE._real_extract5  s`   >>#&((7,,2G\SW - Y
--35I/K]D . 2 ++1C-E [$ , 0	
 I&&=00EGE\(//	:   G G!!$=i["IJ ";%H%/kT*:6 !>@W@W#WmT AX AK L%	
 		
r4   r   NrF  r   r4   r1   r  r    s|    LJ M!G5%G% 	
 #D)  [?% 
 #D) G3F<(
r4   r  )"r)   commonr   
networkingr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rH  ri  rm  r~  r  r  r  r   r4   r1   <module>r     s    	 ! $    *_ _DQ
	 Q
hI ,<J <J~N
Y N
b ('\] '\TF
I F
RB
	 B
J9 &H
I H
r4   