U
    gLF                     @   s   d dl Z d dlZd dlZddlmZ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 G dd deZG d	d
 d
eZG dd deZdS )    N   )InfoExtractorSearchInfoExtractor)	YoutubeIE   )	ExtractorError
clean_htmlint_or_nonejoin_nonemptymimetype2extparse_iso8601traverse_objtry_geturl_or_nonec                   @   s|  e Zd ZdZdZdg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+d,d-dd.d/d0d1d2dd*d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAd4d5dBdCdDddEdFdGdHdIdJdKdLdM
dddNdOddPdQdRdSdTdUd4idVdWdXdYdZd[d\d]dd^d_d`dadTid\dbddcdddedfdgdhigdidjidkdlgdmdnd4d5dod4d5dpd4d5gZdqdr Zdsdt ZduS )vYahooIEzYahoo screen and moviesz(?P<url>https?://(?:(?P<country>[a-zA-Z]{2}(?:-[a-zA-Z]{2})?|malaysia)\.)?(?:[\da-zA-Z_-]+\.)?yahoo\.com/(?:[^/]+/)*(?P<id>[^?&#]*-[0-9]+(?:-[a-z]+)?)\.html)za<iframe[^>]+?src=(["\'])(?P<url>https?://(?:screen|movies)\.yahoo\.com/.+?\.html\?format=embed)\1zEhttp://screen.yahoo.com/julian-smith-travis-legg-watch-214727115.htmlz$2d25e626-2378-391f-ada0-ddaf1417e588mp4z-Julian Smith & Travis Legg Watch Julian Smithz$Julian and Travis watch Julian Smithi  i0QZ20130529)idexttitledescriptionduration	timestampupload_datezNo longer exists)url	info_dictskipzThttps://screen.yahoo.com/community/community-sizzle-reel-203225340.html?format=embedZ 7993e572fac98e044588d0b5260f4352z$4fe78544-8d48-39d8-97cd-13f205d9fcdbzYahoo Saves 'Community'z$md5:4d4145af2fd3de00cbb6c1d664105053   ilSZ20140731z9Unfortunately, this video is not available in your region)r   md5r   r   zVhttps://uk.screen.yahoo.com/editor-picks/cute-raccoon-freed-drain-using-091756545.htmlZ 71298482f7c64cbb7fa064e4553ff1c1z$b3affa53-2e14-3590-852b-0e0db6cd1a58webmu2   Cute Raccoon Freed From Drain Using Angle Grinderz$md5:f66c890e1490f4910a9953c941dee944a   igOTZ20141028zBhttp://news.yahoo.com/video/china-moses-crazy-blues-104538833.htmlZ 88e209b417f173d86186bef6e4d1f160z$f885cf7f-43d4-3450-9fac-46ac30ece521z$China Moses Is Crazy About the Bluesz$md5:9900ab8cd5808175c7b3fe55b979bed0   iZqRZ20131129)r   r   r   z@https://www.yahoo.com/movies/v/true-story-trailer-173000497.htmlZ 2a9752f74cb898af5d1083ea9f661b58z$071c4013-ce30-3a93-a5b2-e0413cd4a9d1z'True Story' Trailerz
True Story   i&TZ20141218zWhttps://gma.yahoo.com/pizza-delivery-man-surprised-huge-tip-college-kids-195200785.htmlTr   Zonly_matchingzNBC Sports embedszhttp://sports.yahoo.com/blogs/ncaab-the-dagger/tyler-kalinoski-s-buzzer-beater-caps-davidson-s-comeback-win-185609842.html?guid=nbc_cbk_davidsonbuzzerbeater_150313Z9CsDKds0kvHIZflvz$md5:df390f70a9ba7c95ff1daace988f0d8dz3Tyler Kalinoski hits buzzer-beater to lift DavidsonZ20150313zNBCU-SPORTSi(U)r   r   r   r   r   uploaderr   )noter   r   z)https://tw.news.yahoo.com/-100120367.htmlzYhttps://screen.yahoo.com/community/communitary-community-episode-1-ladders-154501237.htmlZ 4fbafb9c9b6f07aa8f870629f6671b35z$1f32853c-a271-3eef-8cb6-f6d6872cb504z*Communitary - Community Episode 1: Laddersz$md5:8fc39608213295748e1e289807838c97in  iFQUZ20150824ZCommunitary   r   )
r   r   r   r   r   r   r   seriesseason_numberepisode_numberuL   https://tw.video.yahoo.com/movie-tw/單車天使-中文版預-092316541.htmlz$ba133ff2-0793-3510-b636-59dfe9ff6cffu   單車天使 - 中文版預u   中文版預iXZ20161017)r   r   r   r   r   r   skip_downloadr   r   paramszhttps://www.yahoo.com/entertainment/gwen-stefani-reveals-the-pop-hit-she-passed-on-assigns-it-to-her-voice-contestant-instead-033045672.htmlz$46c5d95a-528f-3d03-b732-732fcadd51dez\Gwen Stefani reveals the pop hit she passed on, assigns it to her 'Voice' contestant insteadzhGwen decided not to record this hit herself, but she decided it was the perfect fit for Kyndall Inskeep.)r   r   r   r   z$966d4262-4fd1-3aaa-b45b-049ca6e38ba6z<Gwen Stefani reveals she turned down one of Sia's best songszUOn "The Voice" Tuesday, Gwen Stefani told Taylor Swift which Sia hit was almost hers.i]Z20191030Z352CFDOQrKgzZKyndal Inskeep "Performs the Hell Out of" Sia's "Elastic Heart" - The Voice Knockouts 2019z$md5:7fe8e3d5806f96002e55f190d1d94479z	The VoiceZNBCTheVoiceZ20191029)r   r   r   r   r#   Zuploader_idr   Zplaylistendr   zHTTP Error 404zIgnoring subtitle tracks)r   r   Zplaylistr+   Zexpected_warningsz[https://malaysia.news.yahoo.com/video/bystanders-help-ontario-policeman-bust-190932818.htmlzKhttps://es-us.noticias.yahoo.com/es-la-puerta-irrompible-que-110539379.htmlzUhttps://www.yahoo.com/entertainment/v/longtime-cbs-news-60-minutes-032036500-cbs.htmlc                 C   s  |  d| d| d|dd }|d }|dkr4d}|d	d
k}|rJdnd}g }g }i }	|D ]l}
| j d| |d|
 d|  |
| ddd d d d }|di d}|dg D ]}|d}|d}|r|sq|| }|ddkr|| j||dddd qt|d }||t|
|t|d!t|d"|t|d#d$ q|d%g D ]\}|d&}|rn||krqn|| |		|d'pd(g |t
|d)d* qnq^|d+}|r |s || j||dd,ddd |s|d-kr| jd.d/ g }|d0g D ]N}|d&}|sDq,||d1|d&t|d!t|d"d2 q,|d3pi }||||t|d4t|d5|	t|d6t|d7||d8t|d9t|d:d;S )<Nhttps://zF.yahoo.com/_td/api/resource/VideoService.videos;view=full;video_ids=["z"]zDownloading video JSON metadatar   r   ZmalaysiaZmyZ
live_stateZlive)m3u8)r   r   z6https://video-api.yql.yahoo.com/v1/video/sapi/streams/zDownloading z JSON metadata)formatZregion)headersqueryr0   resultsZmediaObjstatusmsgZstreamshostpathr.   r-   r   hlsFZm3u8_idfatalbitratewidthheightZ	framerate)r   	format_idr:   r;   tbrZfpsZclosedcaptionsr   langzen-UScontent_type)r   r   streaming_urlm3u8_nativezgeo restrictedT)Zmetadata_available
thumbnailstag)r   r   r:   r;   series_infor   Zpublish_timer   
view_countZ	show_namer'   r(   )r   r   formatsrB   r   r   	subtitlesr   rE   is_liver&   r'   r(   )_download_jsongetZgeo_verification_headersupperextend_extract_m3u8_formatsr	   appendr
   
setdefaultr   Zraise_geo_restrictedr   r   )selfvideo_idcountryvideor   rH   ZfmtsurlsrF   rG   fmtZ	media_objr3   sr4   r5   Zs_urlr=   ccZcc_urlr@   rB   ZthumbZ	thumb_urlrD    rX   :/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/yahoo.py_extract_yahoo_video   s     
 


    
	


    
zYahooIE._extract_yahoo_videoc              	      s    | \}}}|sd}n|dd } jd| d|dd|idd	 d }|d
 d }|ddkrg }|dp~i }|ddkr|d}|r| |d|d |dpg D ]0}	|	ddkr|	d}
|
r| |
 q|ddkr6t|dd }
|
r,| |
 n
 d |drf|	 fddt
||d D   ||d|d|dS  |d |}||d< |S )Nus-r   r,   z.yahoo.com/caas/content/articlez!Downloading content JSON metadatar   r0   itemsdataZpartnerDatatyperS   coverZyvideoZYahoouuidbodyZvideoIframeZstorywithleadvideoc                 S   s   | d d d S )NmetaZplayerr   rX   )xrX   rX   rY   <lambda>0      z'YahooIE._real_extract.<locals>.<lambda>z>Yahoo didn't provide an iframe url for this storywithleadvideoZmarkupc                 3   s   | ]}  |V  qd S )N
url_result).0Zyt_urlrP   rX   rY   	<genexpr>7  s    z(YahooIE._real_extract.<locals>.<genexpr>r   summary
display_id)Z_match_valid_urlgroupssplitrI   rJ   rN   ri   r   Zreport_warningrL   r   Z_extract_embed_urlsZplaylist_resultrZ   )rP   r   rR   rn   r^   itementriesra   Z	cover_urleZ
iframe_urlinforX   rk   rY   _real_extract  sf    
  
  

  zYahooIE._real_extractN)	__name__
__module____qualname__IE_DESC
_VALID_URLZ_EMBED_REGEX_TESTSrZ   ru   rX   rX   rX   rY   r      s(  				 
 !  ^r   c                   @   s$   e Zd ZdZdZdZdZdd ZdS )YahooSearchIEzYahoo screen searchi  zscreen.yahoo:searchZyvsearchc                 #   s   t dD ]x}dtj| d|d  } j||dt|d  d} fdd	|d
 D E d H  |d d |d d d kr
 qq
d S )Nr   z(http://video.search.yahoo.com/search/?p=z&fr=screen&o=js&gs=0&b=   zDownloading results page r   )r$   c                 3   s   | ]}  |d  V  qdS )ZrurlNrh   )rj   resultrk   rX   rY   rl   N  s     z0YahooSearchIE._search_results.<locals>.<genexpr>r1   mlasttotal)	itertoolscounturllibparse
quote_plusrI   str)rP   r0   ZpagenumZ
result_urlrt   rX   rk   rY   _search_resultsI  s    zYahooSearchIE._search_resultsN)rv   rw   rx   ry   Z_MAX_RESULTSIE_NAMEZ_SEARCH_KEYr   rX   rX   rX   rY   r|   C  s
   r|   c                   @   sT   e Zd ZdZdZdZdgZddddd	d
dddiddddgZdd Zdd Z	dS )YahooJapanNewsIEzyahoo:japannewszYahoo! Japan NewszFhttps?://news\.yahoo\.co\.jp/(?:articles|feature)/(?P<id>[a-zA-Z0-9]+)ZJPzJhttps://news.yahoo.co.jp/articles/a70fe3a064f1cfec937e2252c7fc6c1ba3201c0eZ(a70fe3a064f1cfec937e2252c7fc6c1ba3201c0er   ux   【独自】安倍元総理「国葬」中止求め“脅迫メール”…「子ども誘拐」“送信者”を追跡z$md5:1c06974575f930f692d8696fbcfdc546zre:https://.+)r   r   r   r   	thumbnailr)   Tr*   z%https://news.yahoo.co.jp/feature/1356r"   c                 C   s   g }t |dpg D ]}|d}t|d}|r|s:qq|dkr`|| j||ddddd qt|d	}||td
|t|dt|d|d q| | |S )N)Z	ResultSetZResult.ZVideoUrlSetZVideoUrl.deliveryUrlr6   r   rA   Fr7   r9   httpr;   r:   )r   r<   r;   r:   r=   )	r   rJ   r   rL   rM   r	   rN   r
   Z_remove_duplicate_formats)rP   	json_data
content_idrF   vidr   r   r9   rX   rX   rY   _extract_formatsi  s6    
    

z!YahooJapanNewsIE._extract_formatsc                 C   s4  |  |}| ||}| d|d|}t|ddtd}|d krJtdddd	}t|d
td}| jd| |dd||rt	d
||f  ndddd}t|ddtdp| jd|dd dp| |}	t|dtdp| jd|dd d}
t|dtdp| j|d dp| jd|dd d}||	|
|| ||dS ) Nz__PRELOADED_STATE__\s*=zpreloaded state)articleDetailZ
paragraphs.ZobjectItems.rS   r   F)get_allexpected_typez%This article does not contain a videoT)expectedznews.yahoo.co.jp)pageDataZspaceId)r   z,https://feapi-yvpub.yahooapis.jp/v1/content/z8dj0zaiZpPVZMTVFJR0FwZWpiMyZzPWNvbnN1bWVyc2VjcmV0Jng9YjU-json_ Z1100)ZappidoutputdomainZakZdevice_typer]   )r   Zheadline)r   Z	pageParamr   )zog:titleztwitter:titler   )default)r   r   )zog:descriptionr   ztwitter:descriptionr   )r   ZogpImageztwitter:imager   )r   r   r   r   rF   )Z	_match_idZ_download_webpageZ_search_jsonr   intr   r   rI   hashlibr   joinencode	hexdigestZ_html_search_metaZ_html_extract_titleZ_og_search_thumbnailr   )rP   r   rQ   ZwebpageZpreloaded_stater   ZHOSTZspace_idr   r   r   r   rX   rX   rY   ru     sf    
  "   
zYahooJapanNewsIE._real_extractN)
rv   rw   rx   r   ry   rz   Z_GEO_COUNTRIESr{   r   ru   rX   rX   rX   rY   r   S  s*    r   )r   r   urllib.parser   commonr   r   Zyoutuber   utilsr   r   r	   r
   r   r   r   r   r   r   r|   r   rX   rX   rX   rY   <module>   s   ,  1