U
    $Pf6P                     @   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 ddl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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_strcompat_urlparse)
clean_htmldetermine_extExtractorErrorint_or_noneparse_durationtry_geturl_or_noneurljoin)DailymotionIEc                   @   s   e Zd ZdddZdS )FranceTVBaseInfoExtractorNc                 C   s>   d| }d|kr |r |d| 7 }| j |t |dd dS )Nzfrancetv:%s@z@%sr   Zievideo_id)
url_result
FranceTVIEie_keysplit)selfZvideo_or_full_idcatalogZfull_id r   A/tmp/pip-unpacked-wheel-7zdooeg3/youtube_dl/extractor/francetv.py_make_url_result   s     z*FranceTVBaseInfoExtractor._make_url_result)N)__name__
__module____qualname__r   r   r   r   r   r      s   r   c                   @   s~   e 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g	ZdddZdd ZdS )r   a  (?x)
                    (?:
                        https?://
                            sivideo\.webservices\.francetelevisions\.fr/tools/getInfosOeuvre/v2/\?
                            .*?\bidDiffusion=[^&]+|
                        (?:
                            https?://videos\.francetv\.fr/video/|
                            francetv:
                        )
                        (?P<id>[^@]+)(?:@(?P<catalog>.+))?
                    )
                    zhttps://sivideo.webservices.francetelevisions.fr/tools/getInfosOeuvre/v2/?idDiffusion=162311093&callback=_jsonp_loader_callback_request_0Z c2248a8de38c4e65ea8fae7b5df2d84fZ	162311093mp4/   13h15, le dimanche... - Les mystères de Jésus$md5:75efe8d4c0a8205e5904498ffe1e1a427Y20170813idexttitledescription	timestampupload_date)urlmd5	info_dictzhttps://sivideo.webservices.francetelevisions.fr/tools/getInfosOeuvre/v2/?idDiffusion=NI_1004933&catalogue=Zouzous&callback=_jsonp_loader_callback_request_4Tr-   Zonly_matchingz1http://videos.francetv.fr/video/NI_657393@Regionszfrancetv:162311093zfrancetv:NI_1004933@Zouzouszfrancetv:NI_983319@Info-webzfrancetv:NI_983319zfrancetv:NI_657393@Regionszfrancetv:SIM_France3Nc                    s<   j dd|pddd}|ddkrDtd j|d	 f d
d|d d d}|rd
}  dd}|d d d }||krtdd
dnd} fdd}d }	g }
|dpg D ]*}|ddkrq|dsq|
| q|
s4dD ]B} j d d| |dddd }|r|d!r|
|d!  qg }|
D ]8}|d}|sVq<|	d krt|d"d# td
kp|d$d
kpd%|k}	|d&}t|}|d'kr|rq<| j	|||d( |dd) n|d*kr| j
|||d+d,|dd- nn|d.kr0| j||||dd/ nD|d0rT||d1| d2d3 n  ||r<|||d4 q< | |d5 }|d6}|r|d7| 7 }| }i }d8d9 |d:g D }|r||d;< |	r |n|t|d<td=|d>t|d?p t|d@tt|dAd# |	||dB	S )CNzIhttps://sivideo.webservices.francetelevisions.fr/tools/getInfosOeuvre/v2/zDownloading video JSON )idDiffusion	catalogue)querystatusZNOKz%s returned error: %smessageTexpectedvideosr   Z
geoblocagez(http://geo.francetv.fr/ws/edgescape.jsonz Downloading geo restriction infoZreponsegeo_infoZcountry_codez-The video is not available from your locationFc              	      s>   dD ]4}t  jd| d| dd| id}|r|  S q| S )N)zhdfauthftv-a.akamaihd.netzhdfauth.francetv.frzhttps://%s/esi/TAz"Downloading signed %s manifest URLFr-   )fatalr4   )r   _download_webpage)Zmanifest_urlZmanifest_idhostZ
signed_urlr   r   r   r   signv   s      
z'FranceTVIE._extract_video.<locals>.signZstatutZONLINEr-   )ZdesktopZmobilez<https://player.webservices.francetelevisions.fr/v1/videos/%sz"Downloading fallback %s video JSONZchrome)device_typeZbrowser)r4   r;   videoc                 S   s   | d d d S )NZplages_ouverturer   directr   xr   r   r   <lambda>       z+FranceTVIE._extract_video.<locals>.<lambda>is_livez/live.francetv.fr/formatZf4mz%&hdcore=3.7.0&plugin=aasp-3.7.0.39.44)Zf4m_idr;   Zm3u8r!   Zm3u8_native)Zentry_protocolZm3u8_idr;   Zmpd)Zmpd_idr;   Zrtmpzrtmp-%sZflv)r-   	format_idr(   )r-   rI   ZtitreZ
sous_titrez - %sc                 S   s*   g | ]"}| d r|d  | ddqS )r-   rH   )r-   r(   )get).0Z	subformatr   r   r   
<listcomp>   s
    
z-FranceTVIE._extract_video.<locals>.<listcomp>	subtitlesfrZsynopsisz0https://sivideo.webservices.francetelevisions.frimageZreal_durationZdureec                 S   s   | d d S )NZ	diffusionr+   r   rC   r   r   r   rE      rF   )	r'   r)   r*   Z	thumbnaildurationr+   rG   formatsrM   )_download_jsonrJ   r
   IE_NAMEappendr   boolr	   extendZ_extract_f4m_formatsZ_extract_m3u8_formatsZ_extract_mpd_formats
startswithZ_is_valid_urlZ_sort_formatsstripZ_live_titler   r   r   r   )r   r   r3   infoZallowed_countriesZgeorestrictedr:   Zcountryr?   rG   r9   rA   r@   Zfallback_inforQ   Z	video_urlrI   r(   r)   ZsubtitlerM   Zsubtitles_listr   r>   r   _extract_videoY   s      
 


  

  

   

   




zFranceTVIE._extract_videoc                 C   sx   t | j|}|d}|d}|sltt|j}|dd gd }|dd gd }|slt	ddd| 
||S )	Nr'   r   r2   r   r3   zInvalid URLTr7   )rematch
_VALID_URLgroupr   parse_qsurlparser4   rJ   r
   rZ   )r   r-   mobjr   r   qsr   r   r   _real_extract   s    

zFranceTVIE._real_extract)N)r   r   r    r]   _TESTSrZ   rc   r   r   r   r   r   #   sN   (
 r   c                   @   s   e Zd ZdZdddddddd	d
die g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dd ZdS )FranceTVSiteIEzShttps?://(?:(?:www\.)?france\.tv|mobile\.france\.tv)/(?:[^/]+/)*(?P<id>[^/]+)\.htmlzRhttps://www.france.tv/france-2/13h15-le-dimanche/140921-les-mysteres-de-jesus.htmlz$ec217ecc-0733-48cf-ac06-af1347b849d1r!   r"   r#   r$   r%   r&   skip_downloadTr-   r/   paramsadd_iezchttps://www.france.tv/france-3/des-chiffres-et-des-lettres/139063-emission-du-mardi-9-mai-2017.htmlr0   zLhttps://www.france.tv/france-4/hero-corp/saison-1/134151-apres-le-calme.htmlzFhttps://www.france.tv/france-5/c-a-dire/saison-10/137013-c-a-dire.htmlzJhttps://www.france.tv/france-o/archipels/132249-mon-ancetre-l-esclave.htmlz*https://www.france.tv/france-2/direct.htmlzfhttps://www.france.tv/documentaires/histoire/136517-argentine-les-500-bebes-voles-de-la-dictature.htmlz_https://www.france.tv/jeux-et-divertissements/divertissements/133965-le-web-contre-attaque.htmlz[https://mobile.france.tv/france-5/c-dans-l-air/137347-emission-du-vendredi-12-mai-2017.htmlz,https://www.france.tv/142749-rouge-sang.htmlz*https://www.france.tv/france-3/direct.htmlc                 C   sV   |  |}| ||}d }| jd|dd dd}|sJ| d|dd\}}| ||S )NzL(?:data-main-video\s*=|videoId["\']?\s*[:=])\s*(["\'])(?P<id>(?:(?!\1).)+)\1video idr'   )defaultr^   zQ(?:href=|player\.setVideo\(\s*)"http://videos?\.francetv\.fr/video/([^@]+@[^"]+)"zvideo IDr   )	_match_idr<   _search_regexZ_html_search_regexr   r   )r   r-   
display_idwebpager3   r   r   r   r   rc   $  s&    
    zFranceTVSiteIE._real_extractNr   r   r    r]   r   r   rd   rc   r   r   r   r   re      s\   	 4re   c                   @   s@   e Zd ZdZdddddddd	d
die gdgZdd ZdS )FranceTVEmbedIEz5https?://embed\.francetv\.fr/*\?.*?\bue=(?P<id>[^&]+)z=http://embed.francetv.fr/?ue=7fd581a2ccf59d2fc5719c5c13cf6961Z	NI_983319r!   zLe Pen ReimsZ20170505iTZY   )r'   r(   r)   r,   r+   rP   rf   Trg   c                 C   s0   |  |}| d| |}| |d |dS )Nz8http://api-embed.webservices.francetelevisions.fr/key/%sr   r   )rl   rR   r   rJ   )r   r-   r   rA   r   r   r   rc   I  s    
zFranceTVEmbedIE._real_extractNrp   r   r   r   r   rq   6  s   	 rq   c                   @   s   e Zd ZdZdZddddddd	d
idddie g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gZd!d" Zd#S )$FranceTVInfoIEzfrancetvinfo.frzVhttps?://(?:www|mobile|france3-regions)\.francetvinfo\.fr/(?:[^/]+/)*(?P<id>[^/?#&.]+)zchttp://www.francetvinfo.fr/replay-jt/france-3/soir-3/jt-grand-soir-3-lundi-26-aout-2013_393427.htmlZ84981923r!   zSoir 3Z20130826ipRrN   z
mincount:2)r'   r(   r)   r,   r+   rM   rf   Trg   zhttp://www.francetvinfo.fr/elections/europeennes/direct-europeennes-regardez-le-debat-entre-les-candidats-a-la-presidence-de-la-commission_600639.htmlr0   zohttp://www.francetvinfo.fr/economie/entreprises/les-entreprises-familiales-le-secret-de-la-reussite_933271.htmlzhttp://france3-regions.francetvinfo.fr/bretagne/cotes-d-armor/thalassa-echappee-breizh-ce-venredi-dans-les-cotes-d-armor-954961.htmlzhttp://www.francetvinfo.fr/politique/notre-dame-des-landes/video-sur-france-inter-cecile-duflot-denonce-le-regard-meprisant-de-patrick-cohen_1520091.htmlZ ee7f1828f25a648addc90cb2687b1f12Zx4iiko0uD   NDDL, référendum, Brexit : Cécile Duflot répond à Patrick Cohenu   Au lendemain de la victoire du "oui" au référendum sur l'aéroport de Notre-Dame-des-Landes, l'ancienne ministre écologiste est l'invitée de Patrick Cohen. Plus d'info : https://www.franceinter.fr/emissions/le-7-9/le-7-9-27-juin-2016ivpWZ20160627zFrance InterZx2q2ez)r'   r(   r)   r*   r+   r,   uploaderuploader_idZDailymotion)r-   r.   r/   ri   zJhttp://france3-regions.francetvinfo.fr/limousin/emissions/jt-1213-limousinzhttps://www.francetvinfo.fr/culture/patrimoine/incendie-de-notre-dame-de-paris/notre-dame-de-paris-de-l-incendie-de-la-cathedrale-a-sa-reconstruction_4372291.htmlc                    sT     |} ||}t|}|r<  fdd|D S  d|d} |S )Nc                    s   g | ]}  |t qS r   )r   r   r   )rK   Zdailymotion_urlr   r   r   rL     s   z0FranceTVInfoIE._real_extract.<locals>.<listcomp>)z&player\.load[^;]+src:\s*["\']([^"\']+)zid-video=([^@]+@[^"]+)zD<a[^>]+href="(?:https?:)?//videos\.francetv\.fr/video/([^@]+@[^"]+)"z[(?:data-id|<figure[^<]+\bid)=["\']([\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})rj   )rl   r<   r   Z_extract_urlsplaylist_resultrm   r   )r   r-   rn   ro   Zdailymotion_urlsr   r   rv   r   rc     s    

 zFranceTVInfoIE._real_extractN	r   r   r    rS   r]   r   r   rd   rc   r   r   r   r   rs   S  s^     
1rs   c                   @   sB   e Zd ZdZdZddddddd	d
die gdgZdd ZdS )FranceTVInfoSportIEzsport.francetvinfo.frz<https?://sport\.francetvinfo\.fr/(?:[^/]+/)*(?P<id>[^/?#&]+)zfhttps://sport.francetvinfo.fr/les-jeux-olympiques/retour-sur-les-meilleurs-moments-de-pyeongchang-2018z$6e49080e-3f45-11e8-b459-000d3a2439ear!   z4Retour sur les meilleurs moments de Pyeongchang 2018iZZ20180413)r'   r(   r)   r+   r,   rf   Trg   c                 C   s0   |  |}| ||}| d|d}| |dS )Nzdata-video="([^"]+)"r   z	Sport-web)rl   r<   rm   r   )r   r-   rn   ro   r   r   r   r   rc     s    
z!FranceTVInfoSportIE._real_extractNrx   r   r   r   r   ry     s    ry   c                   @   sH   e Zd ZdZdZddddddd	d
ddidgddddgZdd ZdS )GenerationWhatIEzfrance2.fr:generation-whatzChttps?://generation-what\.francetv\.fr/[^/]+/video/(?P<id>[^/?#&]+)z>http://generation-what.francetv.fr/portrait/video/present-armsZwtvKYUG45iwr!   u%   Generation What - Garde à vous - FRAzGeneration WhatZUCHH9p1eetWCgt4kXBYCb3_wZ20160411)r'   r(   r)   rt   ru   r,   rf   TYoutuberg   z<http://generation-what.francetv.fr/europe/video/present-armsr0   c                 C   s4   |  |}| ||}| d|d}| j|d|dS )Nz-window\.videoURL\s*=\s*'([0-9A-Za-z_-]{11})';z
youtube idr{   r   )rl   r<   rm   r   )r   r-   rn   ro   Z
youtube_idr   r   r   rc     s    
 zGenerationWhatIE._real_extractN)r   r   r    rS   r]   rd   rc   r   r   r   r   rz     s(   	 rz   c                	   @   sB   e Zd ZdZdddddddd	d
ddie gdgZdd ZdS )CultureboxIEzIhttps?://(?:m\.)?culturebox\.francetvinfo\.fr/(?:[^/]+/)*(?P<id>[^/?#&]+)zhttps://culturebox.francetvinfo.fr/opera-classique/musique-classique/c-est-baroque/concerts/cantates-bwv-4-106-et-131-de-bach-par-raphael-pichon-57-268689Z	EV_134885r!   u:   Cantates BWV 4, 106 et 131 de Bach par Raphaël Pichon 5/7z$md5:19c44af004b88219f4daa50fa9a351d4Z20180206izZi]  )r'   r(   r)   r*   r,   r+   rP   rf   Trg   c                 C   sR   |  |}| ||}d|kr.td| dd| d|dd\}}| ||S )Nz)>Ce live n'est plus disponible en replay<zVideo %s is not availableTr7   z;["\'>]https?://videos\.francetv\.fr/video/([^@]+@.+?)["\'<]rj   r   )rl   r<   r
   rm   r   r   )r   r-   rn   ro   r   r3   r   r   r   rc     s    
  zCultureboxIE._real_extractNrp   r   r   r   r   r|     s    
 r|   c                   @   s@   e Zd ZdZdddidddddid	dd
ddgZdd ZdS )FranceTVJeunesseIEzG(?P<url>https?://(?:www\.)?(?:zouzous|ludo)\.fr/heros/(?P<id>[^/?#&]+))z"https://www.zouzous.fr/heros/simonr'   Zsimon	   )r-   r/   Zplaylist_countz!https://www.ludo.fr/heros/ninjagoZninjago
   z&https://www.zouzous.fr/heros/simon?abcTr0   c                 C   s   t | j|}|d}| d|ddf |}|dsLtd| ddg }|d	 D ],}|d
}|rXt|trX|	| 
| qX| ||S )Nr'   z%s/%sr-   playlistcountz%s is not availableTr7   itemsidentity)r[   r\   r]   r^   rR   rJ   r
   
isinstancer   rT   r   rw   )r   r-   ra   Zplaylist_idr   entriesitemr   r   r   r   rc     s"    
 
 
z FranceTVJeunesseIE._real_extractN)r   r   r    r]   rd   rc   r   r   r   r   r}     s$     r}   )
__future__r   r[   commonr   compatr   r   utilsr   r	   r
   r   r   r   r   r   Zdailymotionr   r   r   re   rq   rs   ry   rz   r|   r}   r   r   r   r   <module>   s   (

 KIJ#$