3
b`#c                 @   s   d dl mZ d dlZddlmZ ddlmZmZ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 ddl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eZdS )    )unicode_literalsN   )InfoExtractor   )compat_HTTPErrorcompat_parse_qscompat_urllib_parse_unquotecompat_urllib_parse_urlparse)	dict_getExtractorErrorfloat_or_noneint_or_nonetry_getstrip_or_noneunified_timestampupdate_url_query
xpath_text)PeriscopeBaseIEPeriscopeIEc               @   s@   e Zd ZdZdZdZdd Zdd Zedd	 Z	i fd
dZ
dS )TwitterBaseIEzhttps://api.twitter.com/1.1/z0https?://(?:(?:www|m(?:obile)?)\.)?twitter\.com/Nc             C   sv   |j d}|sg S d|kr0| j||dddddS tt|dd
pBd }|d|rTd| nd |d}| j|| |gS d S )Nurlz.m3u8mp4m3u8_nativehlsF)m3u8_idfatalbitratebit_ratei  httpz-%d )r   	format_idtbr)r   r   )get_extract_m3u8_formatsr   r
   _search_dimensions_in_video_url)selfvariantvideo_idvariant_urlr!   f r*   HC:\Users\Broad\Desktop\All-Down\binaries\youtube_dl\extractor\twitter.py_extract_variant_formats$   s    

z&TwitterBaseIE._extract_variant_formatsc             C   s   | j ||}g }g }xJ|jdD ]<}t|jd |jd< |j|jd  |j| j|j| q W tt|d}||kr|j| jd|i| |S )Nz:.//{http://twitter.com/schema/videoVMapV2.xsd}videoVariantr   z.//MediaFile)	_download_xmlfindallr   attribappendextendr,   r   r   )r%   vmap_urlr'   Z	vmap_dataformatsurlsZvideo_variant	video_urlr*   r*   r+   _extract_formats_from_vmap_url6   s    z,TwitterBaseIE._extract_formats_from_vmap_urlc             C   s8   t jd|}|r4| jt|jdt|jdd d S )Nz /(?P<width>\d+)x(?P<height>\d+)/widthheight)r7   r8   )researchupdateintgroup)a_formatr5   mr*   r*   r+   r$   E   s
    z-TwitterBaseIE._search_dimensions_in_video_urlc             C   s   ddi}| j s.| j| jd |dd|dd | _ | j |d< y| j| j| |||d	S  tk
r } zJt|jtr|jjd
krt| j|jj	 j
 |d d d dd W Y d d }~X nX d S )NAuthorizationzyBearer AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbwzguest/activate.jsonzDownloading guest token    )dataheadersZguest_tokenzx-guest-token)rC   queryi  errorsr   messageT)expected)_GUEST_TOKEN_download_json	_API_BASEr   
isinstancecauser   code_parse_jsonreaddecode)r%   pathr'   rD   rC   er*   r*   r+   	_call_apiN   s     

zTwitterBaseIE._call_api)__name__
__module____qualname__rJ   _BASE_REGEXrH   r,   r6   staticmethodr$   rS   r*   r*   r*   r+   r      s   	r   c               @   s   e Zd ZdZej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 d!d"gd#d$d%d&dd'd(d)d*d+d,d-gd#d.d/d0dd1d2d3d4d5d6dd7d8d9d:d;gZd<d= Zd>S )?TwitterCardIEztwitter:cardz0i/(?:cards/tfw/v1|videos(?:/tweet)?)/(?P<id>\d+)z5https://twitter.com/i/cards/tfw/v1/560070183650213889Z560070183650213889r   zwTwitter - You can now shoot, edit and share video on Twitter. Capture life's most moving moments from your perspective.z$md5:18d3e24bb4f6e5007487dd546e53bd96Twitterzre:^https?://.*\.jpgg r>@iT20150127)
idexttitledescriptionuploaderuploader_id	thumbnailduration	timestampupload_date)r   	info_dictz5https://twitter.com/i/cards/tfw/v1/623160978427936768Z 7137eca597f72b9abbe61e5ae0161399Z623160978427936768zjNASA - Fly over Pluto's icy Norgay Mountains and Sputnik Plain in this @NASANewHorizons #PlutoFlyby video.z{Fly over Pluto's icy Norgay Mountains and Sputnik Plain in this @NASANewHorizons #PlutoFlyby video. https://t.co/BJYgOjSeGAZNASAiUZ20150720)r\   r]   r^   r_   r`   ra   rd   re   )r   md5rf   z5https://twitter.com/i/cards/tfw/v1/654001591733886977Z b6d9683dd3f48e340ded81c0e917ad46Zdq4Oj5quskIzUbuntu 11.10 Overviewz$md5:a831e97fa384863d6e26ce48d1c43376Z20111013zOMG! UBUNTU!Z	omgubuntu)r\   r]   r^   r_   re   r`   ra   Youtube)r   rg   rf   add_iez5https://twitter.com/i/cards/tfw/v1/665289828897005568Z 6dabeaca9e68cbb71c99c322a4b42a11ZiBb2x00UVlv20151113Z1189339351084113920ZArsenalTerjezVine by ArsenalTerjeiZFV)r\   r]   re   ra   r`   r^   rd   Vinez5https://twitter.com/i/videos/tweet/705235433198714880Z 884812a2adc8aaf6fe52b15ccbfa3b88705235433198714880zaBrent Yarina - Khalil Iverson's missed highlight dunk. And made highlight dunk. In one highlight.zjKhalil Iverson's missed highlight dunk. And made highlight dunk. In one highlight. https://t.co/OrxcJ28BnszBrent YarinaBTNBrentYarinaiLV20160303z$This content is no longer available.)r   rg   rf   skipz/https://twitter.com/i/videos/752274308186120192T)r   only_matchingc             C   s    | j |}| jd| tj |S )Nzhttps://twitter.com/statuses/)	_match_id
url_result	TwitterIEie_key)r%   r   Z	status_idr*   r*   r+   _real_extract   s    
zTwitterCardIE._real_extractN)	rT   rU   rV   IE_NAMEr   rW   
_VALID_URL_TESTSru   r*   r*   r*   r+   rY   c   sr   



rY   c               @   s  e Zd ZdZej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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/d0id1d2d3dd4d5dd6d7d8d9d:d;
dd<d=d>dd?d@dAdBdCdDdEgdFdGdHddIdJdKdLdMdNdOdP	ddQdRddSdTdUdVdWdXdYgdZd[d\dd]d^d_d`dadbdcdd	ddedfddgddhdidjdkdldmdn
d/d0id1dodpddqddrdsdtdudvdwdn
d/d0id1dxdyddzdd{d|d|d}d~ddn
dddddddddgdZdd0ddd0dgZdd ZdS )rs   twitterz/(?:(?:i/web|[^/]+)/status|statuses)/(?P<id>\d+)z;https://twitter.com/freethenipple/status/643211948184596480Z643211948184596480r   z9FREE THE NIPPLE - FTN supporters on Hollywood Blvd today!zre:^https?://.*\.jpgz>FTN supporters on Hollywood Blvd today! http://t.co/c7jHH749xJzFREE THE NIPPLEZfreethenipplegMb)@imUZ20150913   )r\   r]   r^   rb   r_   r`   ra   rc   rd   re   	age_limit)r   rf   z;https://twitter.com/giphz/status/657991469417025536/photo/1Z f36dcd5fb92bf7057f155e7d927eeb42Z657991469417025536z=Gifs - tu vai cai tu vai cai tu nao eh capaz disso tu vai caizaGifs on Twitter: "tu vai cai tu vai cai tu nao eh capaz disso tu vai cai https://t.co/tM46VHFlO5"zre:^https?://.*\.pngZGifsZgiphz)r\   r]   r^   r_   rb   r`   ra   r8   r7   zAccount suspended)r   rg   rf   expected_warningsro   z6https://twitter.com/starwars/status/665052190608723968Z665052190608723968zyStar Wars - A new beginning is coming December 18. Watch the official 60 second #TV spot for #StarWars: #TheForceAwakens.zA new beginning is coming December 18. Watch the official 60 second #TV spot for #StarWars: #TheForceAwakens. https://t.co/OkSqT2fjWJZstarwarsz	Star WarsiEVrj   )r\   r]   r^   r_   ra   r`   rd   re   z<https://twitter.com/BTNBrentYarina/status/705235433198714880rl   zaBrent Yarina - Khalil Iverson's missed highlight dunk. And made highlight dunk. In one highlight.zjKhalil Iverson's missed highlight dunk. And made highlight dunk. In one highlight. https://t.co/OrxcJ28Bnsrm   zBrent YarinaiLVrn   skip_downloadT)r   rf   paramsz8https://twitter.com/jaydingeer/status/700207533655363584Z700207533655363584z/simon vetugo - BEAT PROD: @suhmeduh #DamndanielzQBEAT PROD: @suhmeduh  https://t.co/HBrQ4AfpvZ #Damndaniel https://t.co/byBooq2ejZzsimon vetugoZsimonvertugog      >@ifVZ20160218)
r\   r]   r^   r_   rb   r`   ra   rc   rd   re   z7https://twitter.com/Filmdrunk/status/713801302971588609Z 89a15ed345d13b86e9a5a5e051fa308aZMIOxnrUteUdu@   Dr.Pepperの飲み方 #japanese #バカ #ドクペ #電動ガンZTAKUMAZ1004126642786242560ioSZ20140615)r\   r]   r^   r`   ra   rd   re   rk   )r   rg   rf   ri   z<https://twitter.com/captainamerica/status/719944021058060289Z719944021058060289z[Captain America - @King0fNerd Are you sure you made the right choice? Find out in theaters.za@King0fNerd Are you sure you made the right choice? Find out in theaters. https://t.co/GpgYi9xMJIZCaptainAmericazCaptain Americag\(\	@i3WZ20160412)	r\   r]   r^   r_   ra   r`   rc   rd   re   z5https://twitter.com/OPP_HSD/status/779210622571536384Z1zqKVVlkqLaKBzqSgt Kerry Schmidt - Ontario Provincial Police - Road rage, mischief, assault, rollover and fire in one occurrenceZ20160923Z1PmKqpJdOJQoYz-Sgt Kerry Schmidt - Ontario Provincial PoliceiW)r\   r]   r^   re   ra   r`   rd   	Periscope)r   rf   ri   z9https://twitter.com/news_al3alm/status/852138619213144067Z852138619213144067u   عالم الأخبار - كلمة تاريخية بجلسة الجناسي التاريخية.. النائب خالد مؤنس العتيبي للمعارضين : اتقوا الله .. الظلم ظلمات يوم القيامةu   كلمة تاريخية بجلسة الجناسي التاريخية.. النائب خالد مؤنس العتيبي للمعارضين : اتقوا الله .. الظلم ظلمات يوم القيامة   https://t.co/xg6OhpyKfNu   عالم الأخبارZnews_al3almgfffffVq@iX20170412)	r\   r]   r^   r_   r`   ra   rc   rd   re   z3https://twitter.com/i/web/status/910031516746514432Z910031516746514432u   Préfet de Guadeloupe - [Direct] #Maria Le centre se trouve actuellement au sud de Basse-Terre. Restez confinés. Réfugiez-vous dans la pièce la + sûre.u   [Direct] #Maria Le centre se trouve actuellement au sud de Basse-Terre. Restez confinés. Réfugiez-vous dans la pièce la + sûre. https://t.co/mwx01Rs4lou   Préfet de GuadeloupeZ	Prefet971g=
ףpG@iYZ20170919)
r\   r]   r^   rb   r_   r`   ra   rc   rd   re   z8https://twitter.com/LisPower1/status/1001551623938805763Z1001551623938805763z re:.*?Shep is on a roll today.*?z$md5:37b9f2ff31720cef23b2bd42ee8a0f09z	Lis PowerZ	LisPower1go[@iA[Z20180529z5https://twitter.com/foobar/status/1087791357756956680Z1087791357756956680zTwitter - A new is coming.  Some of you got an opt-in to try it now. Check out the emoji button, quick keyboard shortcuts, upgraded trends, advanced search, and more. Let us know your thoughts!z$md5:6dfd341a3310fb97d80d2bf7145df976rZ   gjtN@iDlG\Z20190122z<https://twitter.com/ViviEducation/status/1136534865145286656Z1vOGwqejwoWxBzjVivi - Vivi founder @lior_rauchy announcing our new student feedback tool live at @EduTECH_AU #EduTECH2019ZViviZ1eVjYOLGkGrQL)r\   r]   r^   r`   ra   ZTwitterBroadcastz5https://twitter.com/GunB1g/status/1163218564784017422)r   rp   c                s  | j |}| jd| |dddddd}|d jdd	 }}tjd
d|}|jdpVi }|jd}|rrd||f }|jd}g }	x6t|dd tpg D ]}
|
jd}|sq|	j| qW ||||t	|jd||rd| nd t
|jdt
|jdt
|jd|jdrdnd|	d}t|dd }|r|jddkr|jdpLi }g }x(|jdg D ]}|j| j|| q`W | j| g |jd p|jd!rfd"d#}x(|jd$i j D ]\}}||| qW |d%|jd&pi  |j|t|jd'd(d) n|jd*}|r|d+   fd,d-}|d jd.dJ }|dKkrB|d/k}|rl|d1n|d2}|d3|r|nd4 }| j||p|}| j| g xzdLD ]r}|d9| pi }|jd:}| sd;|krqj|r|dd  nd<|t
|jd=t
|jd>d? qW |j|t
|d@d) n~|d4krb|jd:|dAdB n^|dCkr|jd:|d:p|dAtj dD n.|dEkr|jd:|dFtj dD ntdGn,t|dHd }|stdI|jd:|dB |S )MNzstatuses/show/%s.jsonzWeb-12r   r   extended)Zcards_platformZinclude_cardsZinclude_reply_countZinclude_user_entitiesZ
tweet_modeZ	full_text
 z\s+(https?://[^ ]+)r   usernamez%s - %sZscreen_namec             S   s   | d d S )NentitiesZhashtagsr*   )xr*   r*   r+   <lambda>  s    z)TwitterIE._real_extract.<locals>.<lambda>text
created_atzhttps://twitter.com/Zfavorite_countZretweet_countZreply_countZpossibly_sensitiverz   )r\   r^   r_   r`   rd   ra   uploader_url
like_countrepost_countcomment_countr{   tagsc             S   s   | d d d S )NZextended_entitiesmediar   r*   )r   r*   r*   r+   r     s    typephoto
video_infovariantsZmedia_url_https	media_urlc                sJ   j | t d| it|jdp&|jdt|jdp<|jdd d S )Nr   wr7   hr8   )r\   r   r7   r8   )r0   r   r   r"   )r   size)r   
thumbnailsr*   r+   add_thumbnail  s
    z.TwitterIE._real_extract.<locals>.add_thumbnailsizesorigZoriginal_infoZduration_millisi  )r3   r   rc   cardbinding_valuesc                s    j | pi }t|dd S )Nc             S   s   | | d j  d  S )Nr   _value)lower)r   r*   r*   r+   r     s    zDTwitterIE._real_extract.<locals>.get_binding_value.<locals>.<lambda>)r"   r   )ko)r   r*   r+   get_binding_value  s    z2TwitterIE._real_extract.<locals>.get_binding_value:amplifypromo_video_websiteZamplify_url_vmapZplayer_stream_urlz%s_content_idplayer_small_large_x_large	_originalZplayer_imager   z/player-placeholdermediumr7   r8   )r\   r   r7   r8   Zcontent_duration_seconds
player_url)_typer   Zperiscope_broadcast)r   r   rt   	broadcastbroadcast_urlzUnsupported Twitter Card.c             S   s   | d d d d S )Nr   r4   r   expanded_urlr*   )r   r*   r*   r+   r     s    zThere's no video in this tweet.)r   r   )r   r   r   r   r   )rq   rS   replacer9   subr"   r   listr0   r   r   r1   r,   _sort_formatsitemsr;   r   splitr6   r   rt   TwitterBroadcastIEr   )r%   r   Ztwidstatusr^   r_   r   r`   ra   r   hashtagZhashtag_textinfor   r   r3   r&   r   r   r   r   r   Z	card_nameZ
is_amplifyr2   
content_idsuffiximage	image_urlr   r*   )r   r   r   r+   ru     s    















zTwitterIE._real_extractN)	rT   rU   rV   rv   r   rW   rw   rx   ru   r*   r*   r*   r+   rs      s  










rs   c               @   s2   e Zd ZdZdZddddddd	d
Zdd ZdS )TwitterAmplifyIEztwitter:amplifyz1https?://amp\.twimg\.com/v/(?P<id>[0-9a-f\-]{36})z<https://amp.twimg.com/v/0ba0c3c7-0af3-4c0a-bed5-7efd1ffa2951Z 7df102d0b9fd7066b86f3159f8e81bf6z$0ba0c3c7-0af3-4c0a-bed5-7efd1ffa2951r   zTwitter Videozre:^https?://.*)r\   r]   r^   rb   )r   rg   rf   c                s    j |} j|| jdd} j||}g } jdddd} fdd}|rv|d	\}}	|j|||	d
 |d\}
}|d j|
|d |d||dS )Nztwitter:amplify:vmapzvmap urlztwitter:image:srcrb   F)r   c                s8   t  jd|  dd}t  jd|  dd}||fS )Nztwitter:%s:widthF)r   ztwitter:%s:height)r   _html_search_meta)targetr   r   )r%   webpager*   r+   _find_dimension$  s
    z7TwitterAmplifyIE._real_extract.<locals>._find_dimensionr   )r   r7   r8   r   r   )r7   r8   zTwitter Video)r\   r^   r3   r   )rq   _download_webpager   r6   r0   r;   )r%   r   r'   r2   r3   r   rb   r   Zthumbnail_wZthumbnail_hZvideo_wZvideo_hr*   )r%   r   r+   ru     s.    



zTwitterAmplifyIE._real_extractN)rT   rU   rV   rv   rw   _TESTru   r*   r*   r*   r+   r   	  s   r   c               @   s"   e Zd ZdZejd Zdd ZdS )r   ztwitter:broadcastz$i/broadcasts/(?P<id>[0-9a-zA-Z]{13})c             C   s   | j |}| jd|d|id | }| j||}|d }| jd| |d }|jdp\|d }d	|krn| j  tt|jjd
d gd }| j|\}	}
}| j	||||	|
||d< |S )Nzbroadcasts/show.jsonids
broadcasts	media_keyzlive_video_stream/status/sourceZnoRedirectPlaybackUrllocationz/live_video_stream/geoblocked/r   r   r3   )
rq   rS   _parse_broadcast_datar"   raise_geo_restrictedr   r	   rD   _extract_common_format_info_extract_pscp_m3u8_formats)r%   r   broadcast_idr   r   r   r   m3u8_urlr   stater7   r8   r*   r*   r+   ru   E  s"    
z TwitterBroadcastIE._real_extractN)rT   rU   rV   rv   r   rW   rw   ru   r*   r*   r*   r+   r   A  s   
r   )
__future__r   r9   commonr   compatr   r   r   r	   utilsr
   r   r   r   r   r   r   r   r   	periscoper   r   r   rY   rs   r   r   r*   r*   r*   r+   <module>   s   ,DX  P8