a
    h+L                     @   s   d dl Z d dlZddlmZ ddlm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 ddl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dS )    N   )InfoExtractor)DailymotionIE   )HEADRequest)ExtractorError
clean_htmldetermine_extextract_attributesfilter_dictformat_fieldint_or_nonejoin_nonemptyparse_iso8601smuggle_urlunsmuggle_urlurl_or_none)find_element	get_firsttraverse_objc                   @   s   e Zd ZdddZdS )FranceTVBaseInfoExtractorNc                 C   sB   | dd }d| }|r4t|dtj|ji}| |t|S )N@r   z	francetv:hostname)splitr   urllibparseurlparser   
url_result
FranceTVIE)selfvideo_idurlZfull_id r"   N/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/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ZdgZdZddddd	d
dddddiddddddddddddi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   Zfrancetvzfrancetv:(?P<id>[^@#]+)ZFRFz-francetv:ec217ecc-0733-48cf-ac06-af1347b849d1z$ec217ecc-0733-48cf-ac06-af1347b849d1mp4/   13h15, le dimanche... - Les mystères de Jésus7Y
  re:^https?://.*\.jpg$20170813idexttitle	timestampduration	thumbnailupload_dateskip_downloadm3u8r!   	info_dictparamsz-francetv:c5bda21d-2c6f-4470-8849-3d8327adb2baz$c5bda21d-2c6f-4470-8849-3d8327adb2bai?Zi@  Z20171224zfrancetv:162311093Tr!   Zonly_matchingzfrancetv:NI_1004933@Zouzouszfrancetv:NI_983319@Info-webzfrancetv:NI_983319zfrancetv:NI_657393@Regionszfrancetv:SIM_France3Nc                  C   s  d }g }d}d }d }d }d }	d }
d }d }d }dD ]\}}| j d| |d| d| dt|||dddd	}|svq0t|d
thf }r|| |d u r|d}|d u r|d}|d u r|d}nht|dthf }r4|dkr| j| jd n|dv r
d}q0| 	| j
 d| dt|d d q0t|dthf }r0|d u r\|d}| jd|ddddd\}	}|d u r|d}|
d u r|d }
|d u r0t|d!}q0|s|r| | g i d   }}}t|d"d# D ]}|d$ }|d%}t|d&d[thtf }rXt| j ||d(| d)dd*|d+d,d$thf}|rX|}t|}|d-kr|| j|||p~|dd. q|d/kr|pd0}| j||d1|dd2\}}t|d3d# D ]<}t| d4|d5  }r|t|d6d7d8 q|| | j||d9 n|d:kr^| j|||p8d;dd<\}}|| | j||d9 nF|d=r||td=|d>d? n | |||r|||d@ q|s|r| jt ||dAddBdC}|r|j!dDdEkr| j| jddF |D ]D}|dGdHkr|dIdJv rdK|dL< dM"t#|dNdO|dN< q|rv|ddPdHdHdQdQdRdSdT t|dUthfD dV |t||dWdX$ |
||||||r|nd |r|nd t|t|	dYdZS )\NF))ZdesktopZchrome)ZmobileZsafarizhttps://k7.ftven.fr/videos/zDownloading  z video JSON)device_typebrowserdomaini  )queryfatalexpected_statusvideor3   is_livespritesheetscodei  )	countries)i  i  i  Tz said: z "message"metar1   zS(\d+)\s*E(\d+)Z	pre_titlezepisode info)r   r   )NN)groupdefaultZadditional_titleZ	image_urlZbroadcasted_atc                 S   s   t |d S )Nr!   )r   _vr"   r"   r#   <lambda>       z+FranceTVIE._extract_video.<locals>.<lambda>r!   formattokenakamaizDownloading signed z manifest URLjson)rR   r!   )rA   r@   Zf4m)Zf4m_idrA   r7   Zhlsr(   )Zm3u8_idrA   c                 S   s   |d dko| dd u S )Nvcodecnonetbr)getrM   r"   r"   r#   rP      rQ   z-[Aa]udio-\w+-(?P<bitrate>\d+)	format_idZbitrateZmp4a)rX   acodec)targetZmpdZdash)Zmpd_idrA   ZrtmpZflv)r!   rZ   r0   )r!   rZ   zChecking for geo-restrictioni  )rA   rB   zx-errortypeZgeo)rG   Zmetadata_availabler[   rW   language)ZqtzZqadiZlanguage_preferencezaudio description{}format_notez, %sZ
storyboardZmhtmlzabout:invalidc                 S   s   g | ]}|d dqS )   )r!   r3   r"   ).0Zsheetr"   r"   r#   
<listcomp>   s   z-FranceTVIE._extract_video.<locals>.<listcomp>.)rZ   r^   r[   rV   r0   protocolr!   	fragmentsz - )delim)resrX   proto)r/   r1   r4   r3   r2   rD   formats	subtitlesepisodeseriesepisode_numberseason_numberZ_format_sort_fields)NrT   )%Z_download_jsonr   r   dictappendrY   intZraise_geo_restricted_GEO_COUNTRIESZreport_warningIE_NAMEr   _search_regexr   Z
report_drmr   anyr	   extendZ_extract_f4m_formatsZ#_extract_m3u8_formats_and_subtitlesrematchupdater   rK   Z_merge_subtitlesZ"_extract_mpd_formats_and_subtitles
startswithr   Z_is_valid_urlZ_request_webpager   headersrR   r   strip) r   r    r   rD   ZvideosZdrm_formatsr1   Zsubtitlerk   rl   imager3   r2   rE   r=   r>   ZdinforC   rF   rJ   rg   rh   Z	video_urlrZ   Z	token_urlZtokenized_urlr0   ZfmtssubsfZmobjZurlhr"   r"   r#   _extract_videoZ   s    




 



















 zFranceTVIE._extract_videoc                 C   s4   t |i \}}| |}|dp$d}| j||dS )Nr   zwww.france.tv)r   )r   	_match_idrY   r~   )r   r!   Zsmuggled_datar    r   r"   r"   r#   _real_extract   s    
zFranceTVIE._real_extract)N)
r%   r&   r'   rq   
_VALID_URLrp   Z_GEO_BYPASS_TESTSr~   r   r"   r"   r"   r#   r   %   s`   		/
 !r   c                   @   s   e Zd ZdZdZddddddd	d
dddi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,d-d.dd/id&d0dd1d2dd1d3dd1d4dd1d5dd1d6dd1d7dd1d8dd1d9dd1gZd:d; Zd<S )=FranceTVSiteIEzfrancetv:sitezShttps?://(?:(?:www\.)?france\.tv|mobile\.france\.tv)/(?:[^/]+/)*(?P<id>[^/]+)\.htmlzRhttps://www.france.tv/france-2/13h15-le-dimanche/140921-les-mysteres-de-jesus.htmlz$b2cf9fd8-e971-4757-8651-848f2772df61r(   r)   r*   r+   r,   r-   r.   r6   Tz0Unfortunately, this video is no longer available)r!   r9   r:   skipz\https://www.france.tv/enfants/six-huit-ans/foot2rue/saison-1/3066387-duel-au-vieux-port.htmlz$a9050959-eedd-4b4a-9b0d-de6eeaa73e44zFoot2Rue - Duel au vieux portzDuel au vieux portZFoot2Ruer   iaZ20220121zSeason 1i  )r/   r0   r1   ri   rj   rk   rl   r2   r5   Zseasonr4   r3   )r!   r9   r   z*https://www.france.tv/france-4/direct.htmlz$9a6a7670-dde9-4264-adbc-55b89558594bzre:France 4 en direct .+rD   )r/   r0   r1   Zlive_statuszgeo-restricted livestreamz*https://www.france.tv/france-2/direct.htmlz$006194ea-117d-4bcf-94a9-153d999c59aezre:France 2 en direct .+Z
livestreamr8   z|https://www.france.tv/france-2/la-maison-des-maternelles/5574051-nous-sommes-amis-et-nous-avons-fait-un-enfant-ensemble.htmlz$b448bfe4-9fe7-11ee-97d8-2ba3426fa3dfu]   Nous sommes amis et nous avons fait un enfant ensemble - Émission du jeudi 21 décembre 2023i)  zre:https?://.+/.+\.jpgieZ20231221)r/   r0   r1   r3   r4   r2   r5   r7   zchttps://www.france.tv/france-3/des-chiffres-et-des-lettres/139063-emission-du-mardi-9-mai-2017.htmlr;   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.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   sN   |  |}| ||}| ||}t|ddthf}|s@td| j||dS )Noptionsr/   zUnable to extract video IDr!   )r   _download_webpageZ_search_nextjs_v13_datar   strr   r$   )r   r!   
display_idwebpageZnextjs_datar    r"   r"   r#   r   j  s    
zFranceTVSiteIE._real_extractN)r%   r&   r'   rq   r   r   r   r"   r"   r"   r#   r     s   
	dr   c                   @   s   e Zd ZdZdZdd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ie gddddddddddddd dd!d"d#d$d%d&eg d'd(d)ed*d+d,gd-d.ddd/ddgZd0d1 Z	d2S )3FranceTVInfoIEzfrancetvinfo.frzVhttps?://(?:www|mobile|france3-regions)\.francetvinfo\.fr/(?:[^/]+/)*(?P<id>[^/?#&.]+)zehttps://www.francetvinfo.fr/replay-jt/france-3/soir-3/jt-grand-soir-3-jeudi-22-aout-2019_3561461.htmlz$d12458ee-5062-48fe-bfdd-a30d6a01b793r(   zSoir 3Z20190822i_]zre:^https?://.*\.jpe?g$ie  frz
mincount:2)r/   r0   r1   r5   r2   r4   r3   rh   r6   T)r!   r9   r:   add_iez<Only an image exists in initial webpage instead of the videoz|https://www.francetvinfo.fr/sante/maladie/coronavirus/covid-19-en-inde-une-situation-catastrophique-a-new-dehli_4381095.htmlz$7d204c9e-a2d3-11eb-9e4c-000d3a23d482uY   Covid-19 : une situation catastrophique à New Dehli - Édition du mercredi 21 avril 2021L   i&j`Z20210421)r/   r0   r1   r4   r3   r2   r5   )Znoter!   r9   r:   r   zhttp://www.francetvinfo.fr/elections/europeennes/direct-europeennes-regardez-le-debat-entre-les-candidats-a-la-presidence-de-la-commission_600639.htmlr;   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 Cohenz$md5:fdcb582c370756293a65cdfbc6ecd90eivpWFrance InterZx2q2ezZ20160627)Z	Politiquer   z27 juin 2016u   Linvité de 8h20u   Cécile DuflotzPatrick Cohenr   i  z"re:https://[^/?#]+/v/[^/?#]+/x1080)r/   r0   r1   descriptionr2   ZuploaderZuploader_idr5   Z
view_counttagsZ	age_limitr3   Z
like_countr4   ZDailymotion)r!   md5r9   r   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                    s~     |} ||}tt||}|rB  fdd|D S t|tdddddhthdfpn 	d	|d
} j
||dS )Nc                    s   g | ]}  |t qS r"   )r   r   ie_key)r`   Zdailymotion_urlr   r"   r#   ra     s   z0FranceTVInfoIE._real_extract.<locals>.<listcomp>buttonzdata-cyzfrancetv-player-wrapperT)tagattrvaluehtmlr/   )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})zvideo idr   )r   r   tupler   Z_extract_embed_urlsZplaylist_resultr   r   r
   rr   r$   )r   r!   r   r   Zdailymotion_urlsr    r"   r   r#   r     s"    
zFranceTVInfoIE._real_extractN)
r%   r&   r'   rq   r   r   r   ro   r   r   r"   r"   r"   r#   r   u  s   
Ir   )ru   urllib.parser   commonr   Zdailymotionr   Z
networkingr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   Zutils.traversalr   r   r   r   r   r   r   r"   r"   r"   r#   <module>   s   8	 ^s