U
    $PfFG                     @   s   d dl mZ d dlZddlmZ ddlmZ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mZmZ G dd	 d	eZG d
d deZG dd deZG dd deZG dd deZdS )    )unicode_literalsN   )InfoExtractor   )compat_urlparse
compat_str)ExtractorErrordetermine_extfind_xpath_attrfix_xml_ampersandsGeoRestrictedErrorint_or_noneparse_durationremove_startstrip_or_nonetry_getunified_strdateunified_timestampupdate_url_queryurljoin
xpath_textc                   @   s.   e Zd ZdZdgZdZdd Zedd ZdS )		RaiBaseIEz7[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}ZITFc                 C   s  t d|sdd|igiS g }d }d }d }dD ]~}| j||d| td|d|  d}|snt|d	d d
dk}|st|dd d
dk}|stt|dd d
}t|ddd}	|	d krq.|	j}
d|
krq.t	|
}|dkr|dks.|dkr|dkrq.|dks
d|
ks
|dkr(|
| j|
|ddddd q.|dks<|dkrnt|
ddddd }|
| j||d!dd" q.tt|d#}||
|d$kr|nd |d$krd%| nd&d' q.|s|d(kr| j| jd) td*d+ |||d, D S )-Nz	https?://formatsurl)monflashZnativez(Downloading XML metadata for platform %s-   )outputpl)ZnoteZtransform_sourcequeryheadersz./geoprotectiondefaultYz	./is_livez
./durationz./urltypecontentz/video_no_available.mp4Zm3u8r   Zf4mr   zformat=m3u8mp4Zm3u8_nativeZhlsF)Zm3u8_idfatalzmanifest#live_hds.f4mzmanifest.f4mz3.7.0zaasp-3.7.0.39.44)ZhdcoreZpluginZhds)Zf4m_idr'   bitrater   zhttp-%dhttp)r   Ztbr	format_idT)Z	countriesc                 s   s"   | ]\}}|d k	r||fV  qd S )N ).0kvr+   r+   </tmp/pip-unpacked-wheel-7zdooeg3/youtube_dl/extractor/rai.py	<genexpr>c   s    z3RaiBaseIE._extract_relinker_info.<locals>.<genexpr>)is_livedurationr   )rematchZ_download_xmlr   Zgeo_verification_headersr   r   r
   textr	   extendZ_extract_m3u8_formatsr   replaceZ_extract_f4m_formatsr   appendZraise_geo_restricted_GEO_COUNTRIESdictitems)selfrelinker_urlvideo_idr   Zgeoprotectionr1   r2   platformZrelinkerZurl_elemZ	media_urlextZmanifest_urlr(   r+   r+   r/   _extract_relinker_info#   s    
            

   

z RaiBaseIE._extract_relinker_infoc                 C   s   d}d}i }| dpg }dD ]}|d| |i q|D ]}| d}|r<t|tr<| dpdd}	t| |}t||}
||	g |
|d ||
kr<||	 ||d t|  | d q<|S )	NstlZsrtZsubtitlesArray)	subtitlesZsubtitlesUrlr   languageit)r@   r   )getr8   
isinstancer   r   r	   
setdefaultlen)r   Z
video_dataZSTL_EXTZSRT_EXTrC   Zsubtitles_arrayr-   subtitleZsub_urlZsub_langZsub_extr+   r+   r/   _extract_subtitlesi   s,    



zRaiBaseIE._extract_subtitlesN)	__name__
__module____qualname___UUID_REr9   Z_GEO_BYPASSrA   staticmethodrK   r+   r+   r+   r/   r      s   Fr   c                   @   s^   e Zd Zdej Zdddddddd	d
dddddidddidddddddgZdd ZdS )	RaiPlayIEzF(?P<base>https?://(?:www\.)?raiplay\.it/.+?-(?P<id>%s))\.(?:html|json)zahttp://www.raiplay.it/video/2014/04/Report-del-07042014-cb27157f-9dd0-4aee-b788-b1f67643a391.htmlZ 8970abf8caf8aef4696e7b1f2adfc696z$cb27157f-9dd0-4aee-b788-b1f67643a391r&   zReport del 07/04/2014u-   St 2013/14 - Espresso nel caffè - 07/04/2014z$md5:d730c168a58f4bb35600fc2f881ec04ere:^https?://.*\.jpg$zRai Gulpi  ZReportz2013/14rE   count:2)idr@   title	alt_titledescription	thumbnailuploaderr2   seriesseasonrC   skip_downloadT)r   md5	info_dictparamsz^http://www.raiplay.it/video/2016/11/gazebotraindesi-efebe701-969c-4593-92f3-285f0d1ce750.html?r   Zonly_matchingzbhttps://www.raiplay.it/video/2020/12/Report---04-01-2021-2e90f1de-8eee-4de4-ac0e-78d21db5b600.htmlc                 C   s  t | j| \}}| |d |d}|d }|d }| |d |}| |d  g }|di  D ] \}	}
|
rj|	dt
||
i qj|d	}|d
}|r|r|d| 7 }| ||}|dpi }|d}t|ddp|||dr| |n|t|d|dt|dt|dp4d t|dt|||dt||rl| sl|nd |dt|d|d}|| |S )N.jsonDownloading video JSONnamevideoZcontent_urlr   Zimagesr   date_publishedtime_published program_infor[   rT   zContentItem-r1   rJ   rW   ZchannelZeditorr2   Zepisode_titleepisode)rT   
display_idrU   rV   rW   rY   creatorr2   	timestamp
thumbnailsrZ   Zseason_numberr[   ri   Zepisode_numberrC   )r3   r4   
_VALID_URLgroups_download_jsonrA   _sort_formatsrF   r;   r8   r   rK   r   Z_live_titler   r   r   r   isdigitupdate)r<   r   baser>   mediarU   rd   relinker_inform   _valuere   rf   rC   rh   r[   infor+   r+   r/   _real_extract   s\       



zRaiPlayIE._real_extractN)rL   rM   rN   r   rO   rn   _TESTSrz   r+   r+   r+   r/   rQ      s:   
  rQ   c                
   @   s4   e Zd ZdZddddddddd	d
dd	idgZdS )RaiPlayLiveIEzA(?P<base>https?://(?:www\.)?raiplay\.it/dirette/(?P<id>[^/?#&]+))z'http://www.raiplay.it/dirette/rainews24z$d784ad40-e0ae-4a69-aa76-37519d238a9cZ	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 24T)rT   rj   r@   rU   rW   rY   rk   r1   r\   r   r^   r_   N)rL   rM   rN   rn   r{   r+   r+   r+   r/   r|      s    r|   c                   @   s.   e Zd ZdZdddddddgZd	d
 ZdS )RaiPlayPlaylistIEzC(?P<base>https?://(?:www\.)?raiplay\.it/programmi/(?P<id>[^/?#&]+))z2http://www.raiplay.it/programmi/nondirloalmiocapo/ZnondirloalmiocapozNon dirlo al mio capoz$md5:98ab6b98f7f44c2843fd7d6f045f153b)rT   rU   rW      )r   r^   Zplaylist_mincountc                 C   s   t | j| \}}| |d |d}g }|dp8g D ]}|dpJg D ]}|d}|s`qL| jd||f |ddd	}	|	sqL|	d
pg D ]>}
|
d}|sqt||}|| j|t	
 t	|d qqLq:| |||dt|dd S )Nra   zDownloading program JSONblocksZsetsrT   z
%s/%s.jsonzDownloading content set JSONF)r'   r;   path_id)Zier>   rc   c                 S   s   | d d S )Nrh   rW   r+   )xr+   r+   r/   <lambda>      z1RaiPlayPlaylistIE._real_extract.<locals>.<lambda>)r3   r4   rn   ro   rp   rF   r   r8   Z
url_resultrQ   Zie_key	_match_idZplaylist_resultr   )r<   r   rt   Zplaylist_idprogramentriesbsZs_idZmediasmr   Z	video_urlr+   r+   r/   rz      sH      

  

   zRaiPlayPlaylistIE._real_extractN)rL   rM   rN   rn   r{   rz   r+   r+   r+   r/   r~      s   
r~   c                   @   s   e Zd Zdej 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(id)d*d+dd,d-d.d/d0id1d'd(id)d2d(d3d4d(d3gZd5d6 Zd7d8 Zd9S ):RaiIEzLhttps?://[^/]+\.(?:rai\.(?:it|tv)|rainews\.it)/.+?-(?P<id>%s)(?:-.+?)?\.htmlzfhttp://www.raisport.rai.it/dl/raiSport/media/rassegna-stampa-04a9f4bd-b563-40cf-82a6-aad3529cb4a9.htmlz$04a9f4bd-b563-40cf-82a6-aad3529cb4a9r&   zTG PRIMO TEMPOrR   i  Z20140612)rT   r@   rU   rX   r2   upload_datez'This content is available only in Italy)r   r^   skipzhttp://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  Z20161103)rT   r@   rU   rW   rX   r2   r   )r   r^   z`http://www.rai.it/dl/RaiTV/programmi/media/ContentItem-efb17665-691c-45d5-a60c-5301333cbb0c.htmlZ 6865dd00cf0bbf5772fdd89d59bd768az$efb17665-691c-45d5-a60c-5301333cbb0czTG1 ore 20:00 del 03/11/2016z6TG1 edizione integrale ore 20:00 del giorno 03/11/2016i  )r   r]   r^   zrhttp://www.tg1.rai.it/dl/tg1/2010/edizioni/ContentSet-9b6e0cba-4bef-4aef-8cf0-9f7f665b7dfb-tg1.html?item=undefinedz$c2187016-8484-4e3a-8ac8-35e475b07303z,re:TG1 ore \d{2}:\d{2} del \d{2}/\d{2}/\d{4}i  Z20170401)rT   r@   rU   r2   r   zChanges dailyz[http://www.rainews.it/dl/rainews/live/ContentItem-3156f2f2-dc70-4953-8e2f-70d7489d4ce9.htmlz$3156f2f2-dc70-4953-8e2f-70d7489d4ce9zLa diretta di Rainews24)rT   r@   rU   r\   Tr}   zlhttp://www.presadiretta.rai.it/dl/portali/site/puntata/ContentItem-3ed19d13-26c2-46ff-a551-b10828262f1b.htmlz$1ad6dc64-444a-42a4-9bea-e5419ad2f5fdz4Partiti acchiappavoti - Presa diretta del 13/09/2015z$md5:d291b03407ec505f95f27970c0b025f4Z20150913rE   rS   )rT   r@   rU   rW   r   rC   z`http://www.rai.it/dl/RaiTV/programmi/media/ContentItem-b63a4089-ac28-48cf-bca5-9f5b5bc46df5.htmlr`   zohttps://www.rainews.it/tgr/marche/notiziari/video/2019/02/ContentItem-6ba945a2-889c-4a80-bdeb-8489c70a8db9.htmlc              
   C   s  |  d| |d}|d  }|d }d|krRd|d|d |dd	gi}n"d
|krl| |d |}ntd| |d  g }dD ](}||}	|	r|dt||	i q| 	||}
||t
|d||dt|dt|d|
d}|| |S )NzChttp://www.rai.tv/dl/RaiTV/programmi/media/ContentItem-%s.html?jsonrb   rc   r$   ZAudior   ZformatoAudioZaudioUrl)r*   r   r@   ZVideoZmediaUriznot a media file)imageZimage_mediumZ	image_300r   descauthordatelength)rT   rU   rW   rm   rY   r   r2   rC   )rp   striprF   rA   r   rq   r8   r   r   rK   r   r   r   rs   )r<   Z
content_idr   ru   rU   
media_typerv   rm   Z
image_typeZthumbnail_urlrC   ry   r+   r+   r/   _extract_from_content_ido  sL     
 

zRaiIE._extract_from_content_idc              	   C   s@  |  |}| ||}d }| jd|d d}|rF| jd| j |dd d}|sd| jd| j |dd dd}t }|rx|| ||kr|| |D ]@}z| ||W   S  tk
r    Y q t	k
r   Y qX q| 
| jd|d	d
d}| t|||}| |d  | jd|ddd dp&| |}	||	d}
|
| |
S )N)zog:urlzog:videozog:video:secure_urlztwitter:urlztwitter:playerZjsonlinkr!   zContentItem-(%s)zcontent item ida=  (?x)
                    (?:
                        (?:initEdizione|drawMediaRaiTV)\(|
                        <(?:[^>]+\bdata-id|var\s+uniquename)=|
                        <iframe[^>]+\bsrc=
                    )
                    (["\'])
                    (?:(?!\1).)*\bContentItem-(?P<id>%s)
                rT   )r"   groupae  (?x)
                (?:
                    var\s+videoURL|
                    mediaInfo\.mediaUri
                )\s*=\s*
                ([\'"])
                (?P<url>
                    (?:https?:)?
                    //mediapolis(?:vod)?\.rai\.it/relinker/relinkerServlet\.htm\?
                    (?:(?!\1).)*\bcont=(?:(?!\1).)+)\1
            zrelinker URLr   )r   r   z3var\s+videoTitolo\s*=\s*([\'"])(?P<title>[^\'"]+)\1rU   )r   r"   )rT   rU   )r   Z_download_webpageZ_html_search_metaZ_search_regexrO   setaddr   r   r   Z_proto_relative_urlrA   r   rq   Z_og_search_titlers   )r<   r   r>   ZwebpageZcontent_item_idZcontent_item_urlZcontent_item_idsr=   rv   rU   ry   r+   r+   r/   rz     s|    
   	   

     
zRaiIE._real_extractN)	rL   rM   rN   r   rO   rn   r{   r   rz   r+   r+   r+   r/   r     s   
   U0r   )
__future__r   r3   commonr   compatr   r   utilsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   rQ   r|   r~   r   r+   r+   r+   r/   <module>   s   DeV+