
    uki+L                         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
e      Z G d de      Z G d de      Z G d de      Zy)    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                       e Zd ZddZy)FranceTVBaseInfoExtractorNc                     |j                  d      d   }d| }|r5t        |dt        j                  j	                  |      j
                  i      }| j                  |t        |      S )N@r   z	francetv:hostname)splitr   urllibparseurlparser   
url_result
FranceTVIE)selfvideo_idurlfull_ids       T/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/yt_dlp/extractor/francetv.py_make_url_resultz*FranceTVBaseInfoExtractor._make_url_result   s]    >>#&q)hZ(!'J8M8Mc8R8[8[+\]Gw
H==    N)__name__
__module____qualname__r'    r(   r&   r   r      s    >r(   r   c            
           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Zd  Z	y)"r!   francetvzfrancetv:(?P<id>[^@#]+)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@  20171224zfrancetv:162311093Tr$   only_matchingzfrancetv:NI_1004933@Zouzouszfrancetv:NI_983319@Info-webzfrancetv:NI_983319zfrancetv:NI_657393@Regionszfrancetv:SIM_France3Nc                 *
   d }g }d}d }d }d }d }	d }
d }d }d }dD ]  \  }}| j                  d| |d| d| dt        |||d      dd	      }|s8t        |d
t        hf      x}rK|j	                  |       ||j                  d      }||j                  d      }||j                  d      }n|t        |dt        hf      x}rg|dk(  r| j                  | j                         n|dv rd}| j                  | j                   d| dt        |j                  d             d       t        |dt        hf      x}s+||j                  d      }| j                  d|j                  d      ddd      \  }	}||j                  d      }|
|j                  d       }
|t        |j                  d!            } |s|r| j                  |       g i d }}}t        |d"       D ]  }|d#   }|j                  d$      }t        |d%d&t        ht         f      x}r2t        | j                  ||d'| d(dd)|d*+      d#t        hf      }|r|}t#        |      }|d,k(  r)|j%                  | j'                  |||xs |d-             |d.k(  r|xs d/}| j)                  ||d0|d1      \  }}t        |d2       D ]M  }t+        j,                  | d3|d4         x}s"|j/                  t1        |j3                  d5            d6d7       O |j%                  |       | j5                  ||8       G|d9k(  rB| j7                  |||xs d:d;      \  }}|j%                  |       | j5                  ||8       |j9                  d<      r!|j	                  |t;        d<|      d=d>       | j=                  |||      s|j	                  ||d?        |s^|r\| j?                  tA        |      |d@ddAB      }|r;|jB                  j                  dC      dDk(  r| j                  | j                  dE       |D ]O  }|j                  dF      dGk7  s|j                  dH      dIv s,dJ|dK<   dLjE                  tG        |dMdN            |dM<   Q |r<|j	                  ddOdGdGdPdPdQt        |dRt        hf      D  cg c]  } | dSdT	 c} dU       |t;        ||dVW      jI                         |
||||||r|nd |r|nd t1        |      t1        |	      dXdYS c c} w )ZNF))desktopchrome)mobilesafarizhttps://k7.ftven.fr/videos/zDownloading  z video JSON)device_typebrowserdomaini  )queryfatalexpected_statusvideor<   is_livespritesheetscodei  )	countries)i  i  i  Tz said: z "message"metar:   zS(\d+)\s*E(\d+)	pre_titlezepisode info)r   r   )NN)groupdefaultadditional_title	image_urlbroadcasted_atc                     t        |d         S )Nr$   )r   _vs     r&   <lambda>z+FranceTVIE._extract_video.<locals>.<lambda>   s    {1U87L r(   r$   formattoken)NakamaizDownloading signed z manifest URLjson)rf   r$   )rQ   rP   f4m)f4m_idrQ   r@   hlsr1   )m3u8_idrQ   c                 <    |d   dk(  xr |j                  d      d u S )Nvcodecnonetbr)getrb   s     r&   re   z+FranceTVIE._extract_video.<locals>.<lambda>   s'    89N9gSTSXSXY^S_cgSg r(   z-[Aa]udio-\w+-(?P<bitrate>\d+)	format_idbitratemp4a)rq   acodec)targetmpddash)mpd_idrQ   rtmpflv)r$   rs   r9   )r$   rs   zChecking for geo-restrictioni  )rQ   rR   zx-errortypegeo)rW   metadata_availablerv   rp   language)qtzqadilanguage_preferencezaudio description{}format_notez, %s
storyboardmhtmlzabout:invalid.   )r$   r<   )rs   r   rv   ro   r9   protocolr$   	fragmentsz - )delim)resrq   proto)r8   r:   r=   r<   r;   rT   formats	subtitlesepisodeseriesepisode_numberseason_number_format_sort_fields)%_download_jsonr   r   dictappendrr   intraise_geo_restricted_GEO_COUNTRIESreport_warningIE_NAMEr	   _search_regexr   
report_drmr   anyr
   extend_extract_f4m_formats#_extract_m3u8_formats_and_subtitlesrematchupdater   r\   _merge_subtitles"_extract_mpd_formats_and_subtitles
startswithr   _is_valid_url_request_webpager   headersrf   r   strip)!r"   r#   r   rT   videosdrm_formatsr:   subtitler   r   imager<   r;   rU   rM   rN   dinforS   rV   rZ   r   r   	video_urlrs   	token_urltokenized_urlr9   fmtssubsfmobjurlhsheets!                                    r&   _extract_videozFranceTVIE._extract_videoZ   s   	 %R ,	J K''-hZ8({m1WI[A#.&&V J   ( 6E $UWtf,=>>u>e$#$yy4H?#ii	2G'#(99^#<L%efse_===4<--8K8K-L// #'K##||nGD6Juyy?S4T3UUVWY#EFTF+;<<t<= HHW-E040B0B&(=~U[eq 1C 1s-~##xx(:;H= HH[1E$ -dhh7G.H IIY,	J\ +OOH%(*BI!&*LM .	EeI		(+I(:J[M[^0_``y` ,T-@-@x+>yk)W"((( .A .
 .!0 ! -I	*Ce|t88x	0@S  9  O P%.	!EEx	 F P
d%d,gh A!xxI;6T(UWXYdWefftf#.tzz)/D#E&,"  t$%%d9%=!DDx	0CV5 E R
dt$%%d9%=%%f-$!.vy!A    %%i9ENN(%.$ W.	d 9((I&2PS ) 2D ((75@))D4G4G\`)a 	hAuuX&(QUU:->.-P+.'(#8#?#?QP]_e@f#g- 	h
 NN++  #&  ,L3:NOQ  ! !$ Q $ "5(%@FFH ""#1xt-e4).9(7#:
 	
Qs   7Tc                     t        |i       \  }}| j                  |      }|j                  d      xs d}| j                  ||      S )Nr   zwww.france.tv)r   )r   	_match_idrr   r   )r"   r$   smuggled_datar#   r   s        r&   _real_extractzFranceTVIE._real_extract   sL    *33]>>#& $$Z0CO""8h"??r(   r)   )
r*   r+   r,   r   
_VALID_URLr   _GEO_BYPASS_TESTSr   r   r-   r(   r&   r!   r!   %   s    G+JVNK ?8F#1%
 #F+ ?8F#1%
 #F+ $ - - $ ,
 &S-F^^
@@r(   r!   c                       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: Zy;)<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-848f2772df61r1   r2   r3   r4   r5   r6   r7   r?   Tz0Unfortunately, this video is no longer available)r$   rB   rC   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 portFoot2Ruer   ia20220121zSeason 1i  )r8   r9   r:   r   r   r   r   r;   r>   seasonr=   r<   )r$   rB   r   z*https://www.france.tv/france-4/direct.htmlz$9a6a7670-dde9-4264-adbc-55b89558594bzre:France 4 en direct .+rT   )r8   r9   r:   live_statuszgeo-restricted livestreamz*https://www.france.tv/france-2/direct.htmlz$006194ea-117d-4bcf-94a9-153d999c59aezre:France 2 en direct .+
livestreamrA   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?://.+/.+\.jpgie20231221)r8   r9   r:   r<   r=   r;   r>   r@   zchttps://www.france.tv/france-3/des-chiffres-et-des-lettres/139063-emission-du-mardi-9-mai-2017.htmlrE   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                     | j                  |      }| j                  ||      }| j                  ||      }t        |ddt        hf      }|st        d      | j                  ||      S )Noptionsr8   zUnable to extract video IDr$   )r   _download_webpage_search_nextjs_v13_datar   strr   r'   )r"   r$   
display_idwebpagenextjs_datar#   s         r&   r   zFranceTVSiteIE._real_extractj  sn    ^^C(
((j9227JG[9dSE*BC !=>>$$X3$77r(   N)r*   r+   r,   r   r   r   r   r-   r(   r&   r   r     s|   GgJ d8F#1%
 T
 C" n84+ #% 1
 C#( <80$	
 ,
 <80$	
 #L1
 N8t2#%
 #F+ u ^ X \
 x q m >
 <}bFH8r(   r   c                       e Zd ZdZdZddddddd	d
ddidddiej                         gddddddd	ddddddiej                         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d0 Z	y1)2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-a30d6a01b793r1   zSoir 320190822i_]zre:^https?://.*\.jpe?g$ie  frz
mincount:2)r8   r9   r:   r>   r;   r=   r<   r   r?   T)r$   rB   rC   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`20210421)r8   r9   r:   r=   r<   r;   r>   )noter$   rB   rC   r   zhttp://www.francetvinfo.fr/elections/europeennes/direct-europeennes-regardez-le-debat-entre-les-candidats-a-la-presidence-de-la-commission_600639.htmlrE   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.html ee7f1828f25a648addc90cb2687b1f12x4iiko0uD   NDDL, référendum, Brexit : Cécile Duflot répond à Patrick Cohenz$md5:fdcb582c370756293a65cdfbc6ecd90eivpWFrance Interx2q2ez20160627)	Politiquer   z27 juin 2016u   Linvité de 8h20u   Cécile DuflotzPatrick Cohenr   i  z"re:https://[^/?#]+/v/[^/?#]+/x1080)r8   r9   r:   descriptionr;   uploaderuploader_idr>   
view_counttags	age_limitr<   
like_countr=   Dailymotion)r$   md5rB   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           
         | j                  |      }| j                  ||      }t        t        j                  ||            }|rA| j                  |D cg c]&  }| j                  |t        j                               ( c}      S t        |t        dddd      ht        hdf      xs | j                  d|d      }| j                  ||	      S c c}w )
Nbuttonzdata-cyzfrancetv-player-wrapperT)tagattrvaluehtmlr8   )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   _extract_embed_urlsplaylist_resultr    ie_keyr   r   r   r   r'   )r"   r$   r   r   dailymotion_urlsdailymotion_urlr#   s          r&   r   zFranceTVInfoIE._real_extract  s    ^^C(
((j9 !B!B3!PQ'''7)9# 1E1E1GH)9 : :
 (B[bfgh#$d#, - % !!q %	 	 $$X3$77!)9s   +CN)
r*   r+   r,   r   r   r!   r   r   r   r   r-   r(   r&   r   r   u  s9   GjJ w8%#3l
 T
 $$&'#& O N8p3#%
 T
 $$&'" h A V
 k1[A#&#%x>
  !/), \
 tGGFR8r(   r   )r   urllib.parser   commonr   dailymotionr   
networkingr   utilsr   r	   r
   r   r   r   r   r   r   r   r   r   utils.traversalr   r   r   r   r!   r   r   r-   r(   r&   <module>r      sn    	  ! & $    > >Z@ Z@zp8. p8fd8. d8r(   