a
    hB                    @   s2  d dl Z d dlZd dlZd dlZd dlZddlmZ ddlm	Z	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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)G dd de%Z*G dd de%Z+dS )    N   )InfoExtractor)PeriscopeBaseIEPeriscopeIE   )js_number_to_string)	HTTPError)ExtractorErrordict_getfilter_dictfloat_or_noneformat_fieldint_or_nonejoin_nonemptymake_archive_id
remove_endstr_or_nonestrip_or_nonetruncate_stringtry_calltry_getunified_timestampupdate_url_queryurl_or_none
xpath_text)requiretraverse_objc                ,   @   s  e Zd ZdZdZdZdZdZdZdZ	e
jdi d	d
i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dddddddd)ddd Zdd Zdd Zedd Zedd Zejdd  Zd!d" Zd0d$d%Zi dfd&d'Zd(d) Zi d#fd*d+Zd,d- Zd.d/ ZdS )1TwitterBaseIEtwitterzhttps://api.x.com/1.1/zhttps://x.com/i/api/graphql/zzhttps?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/zhAAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnAzpAAAAAAAAAAAAAAAAAAAAAIK1zgAAAAAA2tUWuhGZ2JceoId5GwYWU5GspY4%3DUq7gzFoCZs1QfwGoVdvSac3IniczZEYXIcDyumCauIXpcAPorENZflow_contextlocationunknown)Zdebug_overridesZstart_locationr   r      r            ))Zaction_listZalert_dialogZapp_download_ctacheck_logged_in_accountZchoice_selectionZ$contacts_live_sync_permission_promptZctaZemail_verificationZend_flowZ
enter_dateZenter_emailenter_passwordZenter_phoneZenter_recaptcha
enter_textZenter_usernameZgeneric_urtZin_app_notificationZinterest_pickerjs_instrumentationZmenu_dialogZnotifications_permission_promptZopen_accountZopen_home_timelineZ	open_linkZphone_verificationZprivacy_optionsZsecurity_keyZselect_avatarZselect_bannersettings_list	show_codeZsign_upZsign_up_reviewZtweet_selection_urtZupdate_usersZupload_mediaZuser_recommendations_listZuser_recommendations_urtZwait_spinnerZ	web_modal)Zinput_flow_dataZsubtask_versions,:
separatorsc           	      C   s   | d}|sg i fS d|v r|| j||ddddd\}}t|dd	 D ],}td
|d  }rFt|dd|d< qF||fS tt|ddpd }|td||d}| 	|| |gi fS d S )Nurlz.m3u8mp4m3u8_nativeZhlsF)m3u8_idfatalc                 S   s   |d dko| dd u S )Nvcodecnonetbrget)_v r<   M/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/twitter.py<lambda>i       z8TwitterBaseIE._extract_variant_formats.<locals>.<lambda>z hls-[Aa]udio-(?P<bitrate>\d{4,})	format_idbitrate  r7   )rA   Zbit_ratehttp)r0   r@   r7   )
r9   Z#_extract_m3u8_formats_and_subtitlesr   rematchr   groupr
   r   _search_dimensions_in_video_url)	selfvariantvideo_idZvariant_urlfmtssubsfmobjr7   r<   r<   r=   _extract_variant_formatsa   s&    

z&TwitterBaseIE._extract_variant_formatsc                 C   s   t |}|sg i fS | ||}g }i }g }|dD ]T}tj|jd |jd< ||jd  | |j|\}}	|	| | 
||	}q6tt|d}
|
|vr| d|
i|\}}	|	| | 
||	}||fS )Nz:.//{http://twitter.com/schema/videoVMapV2.xsd}videoVariantr0   z.//MediaFile)r   Z_download_xmlfindallurllibparseunquoteattribappendrO   extend_merge_subtitlesr   r   )rH   vmap_urlrJ   Z	vmap_dataformats	subtitlesurlsZvideo_variantrK   rL   	video_urlr<   r<   r=   _extract_formats_from_vmap_urlw   s.    


z,TwitterBaseIE._extract_formats_from_vmap_urlc                 C   s8   t d|}|r4| t|dt|dd d S )Nz /(?P<width>\d+)x(?P<height>\d+)/widthheightr^   r_   )rD   searchupdateintrF   )Za_formatr\   mr<   r<   r=   rG      s    z-TwitterBaseIE._search_dimensions_in_video_urlc                 C   s   t | | jdS )NZ
auth_token)bool_get_cookies	_API_BASEr9   rH   r<   r<   r=   is_logged_in   s    zTwitterBaseIE.is_logged_inc                 C   s   | j ddgddd S )NapigraphqlTwitter)ie_keyr   )Z_configuration_argrh   r<   r<   r=   _selected_api   s    zTwitterBaseIE._selected_apic              	   C   sJ   t | j| j d|dd| j|o&| jdkdddthf}|sFtd|S )	Nzguest/activate.jsonzDownloading guest tokenr?   legacyro   )dataheadersguest_tokenzCould not retrieve guest token)r   _download_jsonrg   _set_base_headersrn   strr	   )rH   
display_idrs   r<   r<   r=   _fetch_guest_token   s    z TwitterBaseIE._fetch_guest_tokenFc                    s6   |r j s jn j}td| t fdddS )NzBearer c                      s      jd jS )NZct0)rf   rg   valuer<   rh   r<   r=   r>      r?   z1TwitterBaseIE._set_base_headers.<locals>.<lambda>)Authorizationzx-csrf-token)ri   _LEGACY_AUTH_AUTHr   r   )rH   ro   Zbearer_tokenr<   rh   r=   ru      s
    zTwitterBaseIE._set_base_headersc              	   C   s   | j | j dd ||||dd}t|dddthf}|rLtd| dd	nt|d
dkrbtdt|dddthfdd}|std|d | _|S )Nzonboarding/task.json  )rr   queryrq   expected_statuserrorsr   messagez Login failed, Twitter API says: TexpectedstatussuccesszLogin was unsuccessfulZsubtasks.
subtask_idFget_allz-Twitter API did not return next login subtask
flow_token)rt   rg   r   rv   r	   _flow_token)rH   noterr   r~   rq   responseerrorZsubtaskr<   r<   r=   _call_login_api   s     
zTwitterBaseIE._call_login_apic              	      s   j r
d S  d }i   d|ddddd} fdd}d	d
 } jd|ddi jd} j s|dkr jd|||ddddd}q^|dkrʈ jd|||ddd|iidgdddd}q^|dkr jd|||| d d}q^|d!kr  jd"||||dd#d$d}q^|d%krJ jd&|||d'd(id)d}q^|d*krv jd+|||| d,d}q^|d-kr jd.|||| d/d}q^|d0kr jd1d2d3 q^|d4krֈ jd5d2d3 q^|d6krtd7q^td8| d9q^   d S ):Nzapplication/jsonenyeszhttps://x.com/zhttps://x.com)zcontent-typex-guest-tokenx-twitter-client-languagex-twitter-active-userRefererZOriginc                     s   t j j| ddd S )N)r   subtask_inputsr+   r.   )jsondumpsr   encode)r   rh   r<   r=   build_login_json   s    z6TwitterBaseIE._perform_login.<locals>.build_login_jsonc                 S   s   | |dddS )N	next_link)textlink)r   r'   r<   )r   r   r<   r<   r=   
input_dict   s
    z0TwitterBaseIE._perform_login.<locals>.input_dictzDownloading flow tokenZ	flow_namelogin)r~   rq   ZLoginJsInstrumentationSubtaskz&Submitting JS instrumentation responsez{}r   )r   r   )r   r(   )rq   ZLoginEnterUserIdentifierSSOzSubmitting usernameZuser_identifierZ	text_dataresult)keyZresponse_data)Zsetting_responsesr   )r   r)   Z$LoginEnterAlternateIdentifierSubtaskzSubmitting alternate identifierzFone of username, phone number or email that was not used as --usernameZLoginEnterPasswordzSubmitting password)passwordr   )r   r&   ZAccountDuplicationCheckz$Submitting account duplication checkr   ZAccountDuplicationCheck_false)r   r%   ZLoginTwoFactorAuthChallengezSubmitting 2FA tokenztwo-factor authentication tokenZ	LoginAcidzSubmitting confirmation codez-confirmation code sent to your email or phoneZArkoseLoginz3Twitter is requiring captcha for this login attemptcookies)methodZDenyLoginSubtaskz1Twitter rejected this login attempt as suspiciousZLoginSuccessSubtaskz+Twitter API did not grant auth token cookiezUnrecognized subtask ID "")	ri   rx   ru   r   _LOGIN_INIT_DATAZ_get_tfa_inforaise_login_requiredr	   Zreport_login)rH   usernamer   rs   rr   r   r   Znext_subtaskr<   rh   r=   _perform_login   s    

		

	








zTwitterBaseIE._perform_loginc           	   	   C   s   | j | o| jdkd}|| jr.ddddnd| |i |rJh dnd	h}| j|r^| jn| j| ||||d
|rxdnd dd}|drd	t
t|dddthf}|rd|v r| t|d td|pd |S )Nro   rp   ZOAuth2Sessionr   r   )zx-twitter-auth-typer   r   r   >   r}   i    i  r   zDownloading ZGraphQLz
legacy APIz JSON)rr   r~   r   r   r   , .r   znot authorized.zError(s) while querying API: Unknown error)ru   rn   rb   ri   rx   rt   _GRAPHQL_API_BASErg   r9   joinsetr   rv   r   r   r	   )	rH   pathrJ   r~   rk   rr   Zallowed_statusr   r   r<   r<   r=   	_call_api0  s.    

zTwitterBaseIE._call_apic                 C   s   t dd S )Nz-Method must be implemented to support GraphQL)NotImplementedErrorrH   media_idr<   r<   r=   _build_graphql_queryG  s    z"TwitterBaseIE._build_graphql_queryc                 C   s4   |  |}dd | D }t| j|||dddS )Nc                 S   s    i | ]\}}|t j|d dqS )r+   r.   )r   r   ).0r   ry   r<   r<   r=   
<dictcomp>L  r?   z3TwitterBaseIE._call_graphql_api.<locals>.<dictcomp>T)r~   rk   rq   )r   itemsr   r   )rH   Zendpointr   rq   r~   r<   r<   r=   _call_graphql_apiJ  s    
zTwitterBaseIE._call_graphql_api)F)__name__
__module____qualname__Z_NETRC_MACHINErg   r   _BASE_REGEXr|   r{   r   r   r   r   r   rO   r]   staticmethodrG   propertyri   	functoolscached_propertyrn   rx   ru   r   r   r   r   r   r<   r<   r<   r=   r   "   s   	4
6


	
n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eg eedddddddddddddddddeeedgddgdd d!id"d#d$d%dd&d'd(d)d*d+d,ed-d.d/d0gded1ed2ed3d)d4d5d6d7d8d9gd:d;d<d=dd>d?d@dAdBdCdDddEdFd4dGgZdHdI Z	dJS )KTwitterCardIEztwitter:cardz0i/(?:cards/tfw/v1|videos(?:/tweet)?)/(?P<id>\d+)z5https://twitter.com/i/cards/tfw/v1/560070183650213889Z560070131976392705r1   zwTwitter - You can now shoot, edit and share video on Twitter. Capture life's most moving moments from your perspective.z$md5:18d3e24bb4f6e5007487dd546e53bd96rl   re:^https?://.*\.jpgg r>@iTZ20150127r   Z560070183650213889zhttps://twitter.com/Twitter)idexttitledescriptionuploaderuploader_id	thumbnailduration	timestampupload_date	age_limitcomment_counttagsrepost_count
like_countrw   uploader_urlz$This content is no longer available.r0   	info_dictskipz5https://twitter.com/i/cards/tfw/v1/623160978427936768Z 7137eca597f72b9abbe61e5ae0161399Z623160978427936768zONASA - Fly over Pluto's icy Norgay Mountains and Sputnik Plain in this @NASA...z{Fly over Pluto's icy Norgay Mountains and Sputnik Plain in this @NASANewHorizons #PlutoFlyby video. https://t.co/BJYgOjSeGAZNASAiUZ20150720zhttps://twitter.com/NASAZ
PlutoFlybyZ11348282ztwitter 623160978427936768)r   r   r   r   r   r   r   r   r   r   r   r   r   r   
channel_id_old_archive_idsformat[protocol=https]r0   md5r   paramsz5https://twitter.com/i/cards/tfw/v1/654001591733886977Z fb08fbd69595cbd8818f0b2f2a94474dZdq4Oj5quskIzUbuntu 11.10 Overviewz$md5:a831e97fa384863d6e26ce48d1c43376Z20111013zOMG! UBUNTU!z
@omgubuntuz8https://www.youtube.com/channel/UCIiSwcm9xiFb3Y4wjzR41eQZUCIiSwcm9xiFb3Y4wjzR41eQzcount:8z"https://www.youtube.com/@omgubuntu   zFilm & Animationpublicz4https://i.ytimg.com/vi/dq4Oj5quskI/maxresdefault.jpgzcount:12Tz	count:100iNZnot_live)r   r   r   r   r   r   r   Zchannel_urlr   Zchannel_follower_countZchaptersr   r   
categoriesr   r   Zavailabilityr   r   
view_countr   ZchannelZplayable_in_embedZheatmapr   live_statusZYoutube)r0   r   r   add_iez5https://twitter.com/i/videos/tweet/705235433198714880Z 884812a2adc8aaf6fe52b15ccbfa3b88705235433198714880aBrent Yarina - Khalil Iverson's missed highlight dunk. And made highlight dunk. In one highlight.jKhalil Iverson's missed highlight dunk. And made highlight dunk. In one highlight. https://t.co/OrxcJ28BnsBrent YarinaBTNBrentYarinaLV20160303)r   r   r   r   r   r   r   r   )r0   r   r   r   z/https://twitter.com/i/videos/752274308186120192r0   Zonly_matchingc                 C   s    |  |}| d| t |S )Nzhttps://twitter.com/statuses/)	_match_id
url_result	TwitterIErm   )rH   r0   Z	status_idr<   r<   r=   _real_extract  s
    
zTwitterCardIE._real_extractN
r   r   r   IE_NAMEr   r   
_VALID_URLrc   _TESTSr   r<   r<   r<   r=   r   P  s   
"
fr   c                6   @   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eeeg ddg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,eeeg d-d.d/gd0d1d2d3dd4d5d6d7d8d9d:eeeg d.d;d<d=id>d?d@dAdBddCdDddEdFdGdHdIdJdKeeedLgd.dMgdNdOddPdQdRddSdTdUdVdWdXdYdZd[deeeg d.d\gd]d1d^d_dd`dadbdcddddedfgdgdhdidjddkdldmdndodpdqdrdsd.dtdg eeedugdvd1dwdxdyddzdd{d|d}d~ddddeeedgd.dgdd<d=idddddddddddddddeeeg d.dgdd<d=iddddddddddddddeeeeg d.dddddddddddgeddgddhddddddddddddddeeeg d.dgdd<d=idddddddddddddddeeeg d.dgdd<d=idddddddddddeeeg d.d͜dd<d=idϜddddddddddddddeeedgd.dgdޜd1ddddeededddddeeedg dgdd<didd?dddeg deedd.eddedddddddeddeeedddg edd.ddddd eddedddd.deeedgddd	d
ddddddddddddgd<didddddddeddeg dd d.d!d"ed#dd$d%dd&ddddd!eeg dd'd"dedd d.d(gd)d*d=idd+d,d-dd.d/d0d1d2d3d4d5d6d7dg eeed8gd9ddd:d;d<dd=d>d?ed@dAedBedCd.dDg dEdFdGgdHd*d=idId?dJdKdLddMdNdOdPd.dQedRdSeeg dTdUdVdWgdXd1dYdZd[dd\d]d^d_d`d.g dadbdcddeededfddgdhddidjdkdldmdndod.g dpdqdrdseeedtgdud1dgdhddidjdkdldmdndod.g dpdqdrdseedtgdvdwddxdygiiiddzd{dd|d}d~dddddeeddgddhdddddg dddddddeeeddddddddddddddddddsdgeeed.dgddddddddddddddddg eeedsd.dgdddd=ddd=ddd=ddd=ddd=ddd=ddd=ddd=ddd=dg*Z	e
dZdZdd Zdd Zdd Zdd ZdÐdĄ ZdŐdƄ ZdS (  r   r   zS(?:(?:i/web|[^/]+)/status|statuses)/(?P<id>\d+)(?:/(?:video|photo)/(?P<index>\d+))?z;https://twitter.com/freethenipple/status/643211948184596480Z643211870443208704Z643211948184596480r1   z9FREE THE NIPPLE - FTN supporters on Hollywood Blvd today!r   z>FTN supporters on Hollywood Blvd today! http://t.co/c7jHH749xJZ	549749560zFREE THE NIPPLEZfreethenipplegMb)@imUZ20150913z!https://twitter.com/freethenipple   ztwitter 643211948184596480)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zRequires authenticationr   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   r   r   r   r_   r^   zAccount suspended)r0   r   r   Zexpected_warningsr   z6https://twitter.com/starwars/status/665052190608723968Z665052190608723968z5re:Star Wars.*A new beginning is coming December 18.*zA new beginning is coming December 18. Watch the official 60 second #TV spot for #StarWars: #TheForceAwakens. https://t.co/OkSqT2fjWJZ20106852Zstarwarszre:Star Wars.*iEVZ20151113zhttps://twitter.com/starwars)ZTVZStarWarsZTheForceAwakensr   ztwitter 665052190608723968)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r   z<https://twitter.com/BTNBrentYarina/status/705235433198714880r   r   r   r   r   r   r   z"https://twitter.com/BTNBrentYarina)r   r   r   r   r   r   r   r   r   r   r   r   r   r   skip_downloadTzDead external link)r0   r   r   r   z8https://twitter.com/jaydingeer/status/700207533655363584Z700207414000242688Z700207533655363584z4jaydin donte geer - BEAT PROD: @suhmeduh #DamndanielzQBEAT PROD: @suhmeduh  https://t.co/HBrQ4AfpvZ #Damndaniel https://t.co/byBooq2ejZZ
1383165541zjaydin donte geerZ
jaydingeerg      >@ifVZ20160218zhttps://twitter.com/jaydingeerZ
Damndanielztwitter 700207533655363584)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zTweet has been deletedz<https://twitter.com/captainamerica/status/719944021058060289Z717462543795523584Z719944021058060289zZCaptain America - @King0fNerd Are you sure you made the right choice? Find out in theat...za@King0fNerd Are you sure you made the right choice? Find out in theaters. https://t.co/GpgYi9xMJIZ	701615052ZCaptainAmericazCaptain Americag\(\	@i3WZ20160412z"https://twitter.com/CaptainAmericaztwitter 719944021058060289)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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   r   r   r   r   r   Z	PeriscopezBroadcast not found)r0   r   r   r   z9https://twitter.com/news_al3alm/status/852138619213144067Z852077943283097602u   عالم الأخبار - كلمة تاريخية بجلسة الجناسي التاريخية.. النائب خالد مؤنس العتيبي للمعا...u   كلمة تاريخية بجلسة الجناسي التاريخية.. النائب خالد مؤنس العتيبي للمعارضين : اتقوا الله .. الظلم ظلمات يوم القيامة   https://t.co/xg6OhpyKfNZ
2526757026u   عالم الأخبارZnews_al3almgfffffVq@iXZ20170412Z852138619213144067zhttps://twitter.com/news_al3almztwitter 852138619213144067)r   r   r   r   r   r   r   r   r   r   rw   r   r   r   r   r   r   r   r   z3https://twitter.com/i/web/status/910031516746514432Z910030238373089285Z910031516746514432u`   Préfet de Guadeloupe - [Direct] #Maria Le centre se trouve actuellement au sud de Basse-Terr...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/mwx01Rs4loZ
2319432498u   Préfet de GuadeloupeZ	Prefet971g=
ףpG@iYZ20170919zhttps://twitter.com/Prefet971ZMariaztwitter 910031516746514432r0   r   r   z8https://twitter.com/LisPower1/status/1001551623938805763Z1001551417340022785Z1001551623938805763z re:.*?Shep is on a roll today.*?z$md5:37b9f2ff31720cef23b2bd42ee8a0f09Z	255036353z	Lis PowerZ	LisPower1go[@iA[Z20180529zhttps://twitter.com/LisPower1ztwitter 1001551623938805763z5https://twitter.com/foobar/status/1087791357756956680Z1087791272830607360Z1087791357756956680zX - 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:6dfd341a3310fb97d80d2bf7145df976XgjtN@iDlG\Z20190122zhttps://twitter.com/X)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zThis Tweet is unavailablez<https://twitter.com/ViviEducation/status/1136534865145286656Z1vOGwqejwoWxBzjVivi - Vivi founder @lior_rauchy announcing our new student feedback tool live at @EduTECH_AU #EduTECH2019ZViviZ1eVjYOLGkGrQLZEduTECH2019)r   r   r   r   r   r   r   r   ZTwitterBroadcastBroadcast no longer existsz@https://twitter.com/BrooklynNets/status/1349794411333394432?s=20Z1349774757969989634Z1349794411333394432zXBrooklyn Nets - WATCH: Sean Marks' full media session after our acquisition of 8-time...z$md5:71ead15ec44cee55071547d6447c6a3eZ18552281zBrooklyn NetsZBrooklynNetsg9vGt@i `Z20210114z https://twitter.com/BrooklynNetsztwitter 1349794411333394432z5https://twitter.com/oshtru/status/1577855540407197696Z1577855447914409984Z1577855540407197696u?   Oshtru - gm ✨️ now I can post image and video. nice update.z$md5:b9c3699335447391d11753ab21c70a74Z20221006Z	143077138ZOshtruZoshtruzhttps://twitter.com/oshtrugHz>@iD>cztwitter 1577855540407197696)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z<https://twitter.com/UltimaShadowX/status/1577719286659006464Z1577719286659006464zUltima - TestzTest https://t.co/Y3KEZD7DadZ	168922496ZUltimaZUltimaShadowXz!https://twitter.com/UltimaShadowXZ20221005i5=c)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   )r0   r   playlist_countr   z9https://twitter.com/MesoMax919/status/1575560063510810624Z1575559336759263233Z1575560063510810624zTMax Olson - Absolutely heartbreaking footage captured by our surge probe of catas...z$md5:95aea692fda36a12081b9629b02daa92Z
1094109584z	Max OlsonZ
MesoMax919zhttps://twitter.com/MesoMax919gV-R5@iF5cZ20220929ZHurricaneIanztwitter 1575560063510810624)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z7https://twitter.com/Rizdraws/status/1575199173472927762Z1575199163847000068Z1575199173472927762Z1217167793541480450ZRizdrawszhttps://twitter.com/RizdrawsZ20220928i+4czre:^https?://.+\.jpgztwitter 1575199173472927762)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zThe media could not be playedz;https://twitter.com/Srirachachau/status/1395079556562706435r   Z1395079556562706435Z21539378Z20210519zHere it is! Finished my gothic western cartoon. Pretty proud of it. It's got some goofs and lots of splashy over the top violence, something for everyone, hope you like it https://t.co/fOsG5glUnwZSrirachachauz https://twitter.com/SrirachachauiT`)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r0   playlist_mincountr   z:https://twitter.com/DavidToons_/status/1578353380363501568Z1578353380363501568Z
2195866214ZDavidToons_i@czhttps://twitter.com/DavidToons_zkChris sounds like Linda from Bob's Burgers, so as an animator: this had to be done. https://t.co/WgJauwIW1wZ20221007)r   r   r   r   r   r   r   r   r   r   r   r   r   r   z;https://twitter.com/primevideouk/status/1578401165338976258Z1578401165338976258z$md5:659a6b517a034b4cee5d795381a2dc41Z19338359ZprimevideoukiA@@cz https://twitter.com/primevideoukZTheRingsOfPower)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r0   r   r   z=https://twitter.com/MoniqueCamarra/status/1550101959377551360Z1lPJqmBeeNAJbm4az9EuroFile@6 Ukraine Up-date-Draghi Defenestration-the Westzre:Monique Camarra.+?ZMoniqueCamarrawas_liveiqbz2re:Twitter Space participated by Sergej Sumlenny.+i[KbZ20220721)r   r   r   r   r   r   release_timestampr   r   release_dater   ZTwitterSpacesm3u8)r0   r   r   r   zBhttps://twitter.com/CTVJLaidlaw/status/1600649710662213632/video/1Z1600649710662213632zZJocelyn Laidlaw - How Kirstie Alley's tragic death inspired me to share more about my c...g   5LAz$md5:591c19ce66fadc2359725d5cd0d1052cZJocelynVLaidlawZ80082014)ZcolorectalcancerZcancerjourneyZimnotaquitterZ20221208zJocelyn Laidlawz#https://twitter.com/JocelynVLaidlaw)r   r   r   r   r   r   r   r   r   r   r   r   r   r   zBhttps://twitter.com/CTVJLaidlaw/status/1600649710662213632/video/2Z1600649511827013632z]Jocelyn Laidlaw - How Kirstie Alley's tragic death inspired me to share more about my c... #1gX9vY@ztwitter 1600649710662213632)r   r   r   r   r   r   r   r   r   r   r   r   r   rw   r   r   r   r   r   Z
noplaylistz6https://twitter.com/s2FAKER/status/1621117700482416640Z1621117577354424321Z1621117700482416640u$   뽀 - 아 최우제 이동속도 봐u6   아 최우제 이동속도 봐 https://t.co/dxu2U5vXXBg+8@Z1281839411068432384u   뽀Zs2FAKERzhttps://twitter.com/s2FAKERZ20230202g  @Azre:https?://pbs\.twimg\.com/.+ztwitter 1621117700482416640)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z@https://twitter.com/hlo_again/status/1599108751385972737/video/2Z1599108643743473680Z1599108751385972737u	   ۪ - 💋Z1347791436809441283zhttps://twitter.com/hlo_againZ	hlo_againzbhttps://pbs.twimg.com/ext_tw_video_thumb/1599108643743473680/pu/img/UG3xjov4rgg5sbYM.jpg?name=origgZd;#@Z20221203g  lAu   ۪u   💋 https://t.co/bTj9Qz7vQPztwitter 1599108751385972737)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zTweet is limitedz<https://twitter.com/MunTheShinobi/status/1600009574919962625Z1600009362759733248Z1600009574919962625Z	211814412z!https://twitter.com/MunTheShinobiuJ   This is a genius ad by Apple. 🔥🔥🔥🔥🔥 https://t.co/cNsA0MoOmlzbhttps://pbs.twimg.com/ext_tw_video_thumb/1600009362759733248/pu/img/XVhFQivj75H_YxxV.jpg?name=origu   Boy Called MünZ20221206uD   Boy Called Mün - This is a genius ad by Apple. 🔥🔥🔥🔥🔥ZMunTheShinobig$a@g   *Aztwitter 1600009574919962625)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z9https://twitter.com/liberdalau/status/1623739803874349067Z1623274794488659969Z1623739803874349067zQJohnny Bullets - Me after going viral to over 30million people:    Whoopsie-daisyz$md5:b06864cd3dc2554821cc327f5348485azJohnny BulletsZJohnnybull3tsz!https://twitter.com/Johnnybull3tsg7A` @g  AZ20230208z0re:https://pbs\.twimg\.com/ext_tw_video_thumb/.+)r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zProtected tweetz=https://twitter.com/playstrumpcard/status/1695424220702888009Z1694928337846538240Z1695424220702888009zXBenny Johnson - Donald Trump driving through the urban, poor neighborhoods of Atlanta...z$md5:004f2d37fd58737724ec75bc7e679938Z15212187zBenny JohnsonZbennyjohnsonz https://twitter.com/bennyjohnsong㥛 F@g  #:AZ20230825z1re:https://pbs\.twimg\.com/amplify_video_thumb/.+ztwitter 1695424220702888009)r   r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zextractor_argsrj   ro   z>https://twitter.com/JessicaDobsonWX/status/1731121063248175384Z1rmxPMjLzAXKNz*WAVE Weather Now - Saturday 12/2/23 UpdatezJessica DobsonZJessicaDobsonWXz#https://twitter.com/JessicaDobsonWXikeZ20231203z re:https://[^/]+pscp\.tv/.+\.jpg)r   r   r   r   r   r   r   r   r   r   concurrent_view_countr   z8https://twitter.com/BAKKOOONN/status/1696256659889565950Z1696256659889565950z BAKOON - https://t.co/zom968d0a0zhttps://t.co/zom968d0a0Z
1263540390ZBAKOONZ	BAKKOOONNzhttps://twitter.com/BAKKOOONNg  @o@;AZ20230828)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r0   r   r   r   z>https://twitter.com/RobertKennedyJr/status/1724884212803834154Z 511377ff8dfa7545307084dca4dce319Z1724883339285544960z_Robert F. Kennedy Jr - A beautifully crafted short film by Mikki Willis about my independent...z$md5:9dc14f5b0f1311fc7caf591ae253a164Z1724884212803834154Z	337808606zRobert F. Kennedy JrZRobertKennedyJrz#https://twitter.com/RobertKennedyJrZ20231115g  @IUAgT㥛Pu@Z	Kennedy24ztwitter 1724884212803834154)r   r   r   r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r0   r   r   z7https://x.com/historyinmemes/status/1790637656616943991Z 4549eda363fecfe37439c455923cba2cZ1790637589910654976z:Historic Vids - One of the most intense moments in historyzBOne of the most intense moments in history https://t.co/Zgzhvix8ESZ1790637656616943991zHistoric VidsZhistoryinmemesz"https://twitter.com/historyinmemesZ855481986290524160Z20240515g   9Ag`".@ztwitter 1790637656616943991)r   r   r   r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zmhttps://twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion/TwitterBlue/status/1484226494708662273r   z5https://twitter.com/GunB1g/status/1163218564784017422z9https://twitter.com/poco_dandy/status/1047395834013384704z9https://twitter.com/poco_dandy/status/1150646424461176832z7https://twitter.com/qarev001/status/1348948114569269251z9https://twitter.com/CAF_Online/status/1349365911120195585z>https://twitter.com/SamsungMobileSA/status/1348609186725289984z<https://twitter.com/SouthamptonFC/status/1347577658079641604z_video/(\d+)/z*2ICDjqPd81tulZcYrtpTuQ/TweetResultByRestIdc           	   	   C   sr  t |ddthfpi }|d}|dvr>| jd| |dd d|v rxtt |dd	d	thfd
}td|pjd ddnf|dkr|d}|dkr| d n|dkr| d t|pdddn|dkrt |dthfpi }|di }|t |dddddti d |dr>t |ddd d!ddthfp4i |d d"< d#d$ t |d%d&d'thfD }|rn||d% d&< |S )(NZtweetResultr   Z
__typename)ZTweetTweetWithVisibilityResultsZTweetTombstoneTweetUnavailableNzUnknown typename: TZ	only_onceZ	tombstoner   z. Learn morezTwitter API says: r   r   r  reasonZNsfwLoggedOutz"NSFW tweet requires authenticationZ	Protectedz3You are not authorized to view this protected tweetzRequested tweet is unavailabler  Ztweetro   )coreuser_resultsr   ro   )cardro   )Zquoted_status_resultr   ro   )ro   retweeted_status_resultr   ro   )userr  quoted_statusretweeted_status)expected_typedefaultr  r	  r  r  r
  c                 S   s   i | ]}| d | dqS )r   ry   r8   )r   Zbinding_valuer<   r<   r=   r     s   z0TwitterIE._graphql_to_legacy.<locals>.<dictcomp>r  binding_values.)	r   dictr9   report_warningr   rv   r	   r   rb   )	rH   rq   twidr   typenamecauser  r   r  r<   r<   r=   _graphql_to_legacy  sJ    



zTwitterIE._graphql_to_legacyc                 C   sB   |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S )NF)ZtweetIdZwithCommunityZincludePromotedContentZ	withVoiceT)Z/creator_subscriptions_tweet_preview_api_enabledZ(tweetypie_unmention_optimization_enabled%responsive_web_edit_tweet_api_enabledZ:graphql_is_translatable_rweb_tweet_is_translatable_enabledZ"view_counts_everywhere_api_enabledZ'longform_notetweets_consumption_enabledZ8responsive_web_twitter_article_tweet_consumption_enabledZ tweet_awards_web_tipping_enabledZ)freedom_of_speech_not_reach_fetch_enabledstandardized_nudges_misinfoGtweet_with_visibility_results_prefer_gql_limited_actions_policy_enabledZ*longform_notetweets_rich_text_read_enabledZ(longform_notetweets_inline_media_enabledZ0responsive_web_graphql_exclude_directive_enabledZverified_phone_label_enabledZ+responsive_web_media_download_video_enabledZAresponsive_web_graphql_skip_user_profile_image_extensions_enabledZ2responsive_web_graphql_timeline_navigation_enabled$responsive_web_enhance_cards_enabledZwithArticleRichContentState)	variablesfeaturesZfieldTogglesr<   r   r<   r<   r=   r     s8    zTwitterIE._build_graphql_queryc                 C   s.   t td}tt|d tj d|S )Nz0.g  4&kC$   )	rv   	maketransr  fromkeysr   rc   mathpi	translate)rH   r  translationr<   r<   r=   _generate_syndication_token  s    z%TwitterIE._generate_syndication_tokenc              	   C   s   | j d|dd | jd|dddi|| |dd	}|s@td
g }t|dddthfD ]6}t|dddd| jjhdfddp~||d< || qXd|i|d< |S )Nz?Not all metadata or media is available via syndication endpointTr  z.https://cdn.syndication.twimg.com/tweet-resultzDownloading syndication JSON
User-AgentZ	Googlebot)r   token)rr   r~   z1Syndication endpoint returned empty JSON response)NZquoted_tweetZmediaDetails.
video_infovariantsr0   r   Fr   id_strmediaextended_entities)	r  rt   r#  r	   r   r  _MEDIA_ID_REra   rU   )rH   r  r   r)  Zdetailr<   r<   r=   _call_syndication_api  s0    zTwitterIE._call_syndication_apic              
   C   s   | j dvrt| j dddzX| js0| j dkrH| | | j||}n,| j dkrt| d| d|d	d
d
ddd}W nR ty } z:t|jt	r|jj
dkr | d | |}W Y d }~n
d }~0 0 | j dkr| |}t|dd tdpi S )N)rk   ro   syndicationz is not a valid API selectionTr   rk   ro   zstatuses/show/z.jsonzWeb-12r   r   extended)Zcards_platformZinclude_cardsZinclude_reply_countZinclude_user_entitiesZ
tweet_modei  z9Rate-limit exceeded; falling back to syndication endpointr-  r  r  )rn   r	   ri   r  r   _GRAPHQL_ENDPOINTr   
isinstancer  r   r   r  r,  r   r  )rH   r  r   er<   r<   r=   _extract_status1  s*    


 

zTwitterIE._extract_statusc                    s&   |dd\}}t|ddd hfddp:d }}ttd	d|d
d}|dpbi }|d}|r| d| }|d}|||t|dt	|dpt	|d|t
|d dt|dt|dt|d|drdndt|ddfdd  fdd}	t|d d!d"d#d thf}
j|d$d%rpg t |
|	|d&R }nt|d d!d"t|d' thfdd}|std(| d)d*d+n$|d,d-krtd.| d/d*d+t|
d'D ]h\}}|d|dkrq|d'krtgd0< t|
d'kr<d1  d2| 7  <  qFqi  |d3iS fd4d5|D }|st|d6td7}|r||krjd8d*d+ S j|fd3iS tg|d d0< t|d'kr|d S t|d'D ] \}}|d1  d2| 7  < qj|fi S )9Nr   index)Z	full_textr   c                 S   s   |  ddS )N
 replacexr<   r<   r=   r>   P  r?   z)TwitterIE._real_extract.<locals>.<lambda>Fr    z\s+(https?://[^ ]+)H   )leftr
  namez - screen_name
created_atZuser_id_strr(  https://twitter.com/%sZfavorite_countZretweet_countZreply_countZpossibly_sensitiver   r   )entitiesZhashtags.r   )r   r   r   r   r   r   r   r   r   r   r   r   r   c           
   	      s   t | ddtd}d|  g }i }t | dD ]*}|\}}||}|| q2g | dpt| d  r fdd	}| d
i  D ]\}}	|||	 q|d| dpi  |||t | ddthft	t | ddddS )Nr(  r   r/  zExtracting from video info: )r&  r'  .Zmedia_url_https	media_urlc              	      sJ    | t d| it|dp&|dt|dp<|dd d S )Nr>  wr^   hr_   r   r0   r^   r_   )rU   r   r   r9   )r>  sizerC  
thumbnailsr<   r=   add_thumbnailw  s    zOTwitterIE._real_extract.<locals>.extract_from_video_info.<locals>.add_thumbnailsizesorigZoriginal_infoZ
mediaStatsZ	viewCount)r&  Zduration_millisrB   )resz
proto:m3u8brrG  )r   rY   rZ   rI  r   r   Z_format_sort_fields)
r   r   write_debugrO   rW   rV   r9   r   r   r   )
r)  r   rY   rZ   rI   rK   rL   rJ  r>  rG  )rH   r  rH  r=   extract_from_video_infoi  s.    z8TwitterIE._real_extract.<locals>.extract_from_video_infoc              
   3   s  | sd S  d| d  | d   fdd}| d dd }|d	kr`d|d
dV  n|dkrd|dpx|d
t dV  nx|dkrd|dt dV  nV|dkrdd|d t dV  n.|dkrd|ddV  n|dkr&|d}tt	|dt
dE d H  n|dk}|r<|dn|d}|d|rR|nd	 }||ph\}}g }	dD ]p}
|d|
 pi }|d}|rxd|v rqx|	|
r|
dd  nd |t|d!t|d"d# qx|||	t|d$d%V  d S )&NzExtracting from card info: r0   r  c                    s     | pi }t|dd S )Nc                 S   s   | | d   d  S )Ntype_value)lowerr9  r<   r<   r=   r>     r?   zdTwitterIE._real_extract.<locals>.extract_from_card_info.<locals>.get_binding_value.<locals>.<lambda>)r9   r   )kor  r<   r=   get_binding_value  s    zRTwitterIE._real_extract.<locals>.extract_from_card_info.<locals>.get_binding_valuer>  r-   playerZ
player_url)_typer0   Zperiscope_broadcast)rZ  r0   rm   	broadcastZbroadcast_urlZ
audiospacezhttps://twitter.com/i/spaces/r   summaryZcard_urlunified_card)Zmedia_entities.r/  ZamplifyZamplify_url_vmapZplayer_stream_urlz%s_content_id)Z_smallr;  Z_largeZ_x_largeZ	_originalZplayer_imagez/player-placeholderr   Zmediumr^   r_   rF  Zcontent_duration_seconds)rY   rZ   rI  r   )rO  r9   splitr   rm   TwitterBroadcastIETwitterSpacesIEZ_parse_jsonmapr   r  r]   rU   r   )r  rW  Z	card_namer]  Z
is_amplifyrX   Z
content_idrY   rZ   rI  suffiximageZ	image_url)rP  rH   r  rV  r=   extract_from_card_info  sr    

z7TwitterIE._real_extract.<locals>.extract_from_card_info)Nr  r*  r)  c                 S   s   |d dkS )NrQ  Zphotor<   )r:   rd   r<   r<   r=   r>     r?   zURL-specified video number)Zvideo_labelr  r   zVideo #z is unavailableTr   rQ  videozMedia #z is not a videor   r   z #rw   c                    s    g | ]}i  |d iqS )rw   r<   )r   rq   )infor  r<   r=   
<listcomp>  r?   z+TwitterIE._real_extract.<locals>.<listcomp>)rB  r[   r   expanded_urlr/  z%No video could be found in this tweet)_match_valid_urlrF   r3  r   r   rD   subr9   r   r   r   r   r  Z_yes_playlistra  rc   r	   	enumerater   lenr   raise_no_formatsr   Zplaylist_result)rH   r0   Zselected_indexr   r   r   r
  r   r   rd  ZvideosZselected_entriesZdesired_objr4  entryentriesrh  r<   )rP  rf  rH   r  r=   r   K  s    



$J 

zTwitterIE._real_extractN)r   r   r   r   r   r   r   rc   rv   r   rD   compiler+  r0  r  r   r#  r,  r3  r   r<   r<   r<   r=   r     s  
	

           	+"r   c                   @   s8   e Zd ZdZdZddddddd	d
di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 fec25801d18a4557c5c9f33d2c379ffaz$0ba0c3c7-0af3-4c0a-bed5-7efd1ffa2951r1   Twitter Videozre:^https?://.*)r   r   r   r   r   r   r   c                    s     |} || dd} ||\}}g } jdddd} fdd}|rz|d	\}	}
|||	|
d
 |d\}}|d ||d |d||dS )Nztwitter:amplify:vmapzvmap urlztwitter:image:srcr   Fr4   c                    s@   t  jd|  ddd}t  jd|  ddd}||fS )Nztwitter:z:widthFrs  z:height)r   _html_search_meta)targetrD  rE  rH   Zwebpager<   r=   _find_dimension   s    z7TwitterAmplifyIE._real_extract.<locals>._find_dimensionrc  )r0   r^   r_   rY  r   r`   rr  )r   r   rY   rI  )r   Z_download_webpagert  r]   rU   rb   )rH   r0   rJ   rX   rY   r:   rI  r   rw  Zthumbnail_wZthumbnail_hZvideo_wZvideo_hr<   rv  r=   r     s8    
zTwitterAmplifyIE._real_extractN)r   r   r   r   r   Z_TESTr   r<   r<   r<   r=   rq    s   rq  c                   @   s   e Zd ZdZejd Zdddddddd	d
ddeeddddddddddddddeeddddddddddddddeedddddddeddd d!d"gd#d$d d%d&d'ed(dgZd)d* Z	d+S ),r_  ztwitter:broadcastz)i/(?P<type>broadcasts|events)/(?P<id>\w+)z.https://twitter.com/i/broadcasts/1yNGaQLWpejGjZ1yNGaQLWpejGjr1   z(Andrea May Sahouri - Periscope BroadcastzAndrea May SahouriZandreamsahouriz"https://twitter.com/andreamsahouriiT^Z20200601z re:^https?://[^?#]+\.jpg\?token=r   )r   r   r   rw   r   r   r   r   r   r   r   r  r   r   z.https://twitter.com/i/broadcasts/1ZkKzeyrPbaxvZ1ZkKzeyrPbaxvz+Starship | SN10 | High-Altitude Flight TestZSpaceXzhttps://twitter.com/SpaceXi@`Z20210303z.https://twitter.com/i/broadcasts/1OyKAVQrgzwGbZ1OyKAVQrgzwGbzStarship Flight Testi0AdZ20230420z*https://x.com/i/events/1910629646300762112Z1LyxBWDRNqyKNu,   #ガンニバル ウォッチパーティーZ1910629646300762112Z20250423ihu   ガンニバルzre:https?://[^?#]+\.jpg\?token=ihu   ディズニープラス公式ZDisneyPlusJPz https://twitter.com/DisneyPlusJP)r   r   r   r  rw   r   r   r   r   r   r   r   r   r   r   r   c                 C   s  |  |dd\}}|dkrT| d| d|}t|dddd	thttd
hf}n|}| d|d|id | }|stddd| ||}|	||
dp|
d|
dp|
dt|ddd dd |d dkr| jddd |S |d }| d| |d }	|	
dp|	d }
d|
v r0|   tjtj|
j
dd gd  }| |\}}}| |
||||||d!< |S )"NrQ  r   eventszlive_event/1/z/timeline.jsonZtwitter_objectsZ
broadcasts.)r   broadcast_idzbroadcast IDzbroadcasts/show.jsonidsr   Tr   r   r   Ztwitter_usernamer   rA  )r  )rw   r   r   r   r   is_upcomingz'This live broadcast has not yet started	media_keylive_video_stream/status/sourcenoRedirectPlaybackUrlr   z/live_video_stream/geoblocked/r   rY   )ri  rF   r   r   rv   anyr   r	   Z_parse_broadcast_datarb   r9   r   rm  Zraise_geo_restrictedrQ   rR   parse_qsurlparser~   Z_extract_common_format_infoZ_extract_pscp_m3u8_formats)rH   r0   Zbroadcast_typerw   Ztimelinery  r[  rf  r|  r~  Zm3u8_urlr3   stater^   r_   r<   r<   r=   r     sj    

z TwitterBroadcastIE._real_extractNr   r<   r<   r<   r=   r_  =  s   
Jr_  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i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d(d&ddd)ddidd*d+d,d-d#d.d/ddd0d1d2d1d3d4ddidgZd5dd6dd7Zd8d9 Z	d:d; Z
d<S )=r`  ztwitter:spacesz i/spaces/(?P<id>[0-9a-zA-Z]{13})z*https://twitter.com/i/spaces/1OwxWwQOPlNxQZ1OwxWwQOPlNxQr   zDEverybody in: @mtbarra & @elonmusk discuss the future of EV chargingz'Twitter Space participated by Elon Muskr   Z20230608if:dz-re:https?://pbs\.twimg\.com/profile_images/.+i2dz
Mary BarraZmtbarra)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z*https://twitter.com/i/spaces/1vAxRAVQWONJlZ1vAxRAVQWONJlz Framing Up FinOps: Billing Toolsz5Twitter Space participated by rupa, Alfonso HernandezzGoogle CloudZgooglecloud	post_liveiF8dZ20230413i>dZ20230418m4a_dash)r   r   r   r   r   r   r   r   r   r   r   r   protocol	containerz*https://twitter.com/i/spaces/1eaKbrQbjoRKXZ1eaKbrQbjoRKXu   あz(Twitter Space participated by nobody yetu   息根とめるZtomeru_ikinoneZ20230601i0zxdi.zxd)r   r   r   r   r   r   r   r   r   r   r   r   r  r  z$https://x.com/i/spaces/1DXGydznBYWKMZ1DXGydznBYWKMr1   u1   America and Israel’s “special relationship”zCandace OwensZRealCandaceOifZ20240817ifr2   )r   r   r   r   r   r   r   r   r   r   r   r   r  r{  is_live)Z
notstartedZendedZrunningZtimedoutc                 C   s2   |ddddddddddddddddddd
dS )NTF)r   ZisMetatagsQueryZwithDownvotePerspectiveZwithReactionsMetadataZwithReactionsPerspectiveZwithReplaysZwithSuperFollowsUserFieldsZwithSuperFollowsTweetFields)
Z dont_mention_me_view_api_enabledZinteractive_text_enabledr  r  Zresponsive_web_uc_gql_enabledZspaces_2022_h2_clippingZ!spaces_2022_h2_spaces_communitiesr  r  Zvibe_api_enabled)r  r  r<   )rH   space_idr<   r<   r=   r     s*    z$TwitterSpacesIE._build_graphql_queryc                    s   |}d|d }|s*tddd|d  t fdd}|d	k}g }d
di}|dkrpjddd n|s dsjddd n dr8td d   d ddthfdd}|od|v }	|rj	| d |	rdnd|	rdnd||ddng }|	r8|D ]$}
|

ddd |sd|
d < qd!t|d"pLd#}|sl|d$krljd%dd |d&| |||d't d(thfd)td*d+htfd,td*d+hfd-t d.d/d0d1thfd2thfd3d4d hthfd5fS )6Nz%HPEisOmj1epUNLCWTYhUWw/AudioSpaceByIdZ
audioSpacezTwitter Space not foundTr   metadatac                      s   j  d   S )Nr  )SPACE_STATUSrS  r<   r  rH   r<   r=   r>   0  r?   z/TwitterSpacesIE._real_extract.<locals>.<lambda>r  r   zhttps://twitter.com/r{  zTwitter Space not started yetZis_space_available_for_replayz*Twitter Space ended and replay is disabledr|  r}  r~  )r  r   Fr   zaudio-spacer   r1   r   r2   )Zentry_protocolZliverr   r4   r6   Zaac)r5   Zacodecr  r  r   )participantsZspeakers.Zdisplay_namez
nobody yetr  z,Twitter Space ended but not downloadable yetzTwitter Space participated by )r   r   rY   Zhttp_headersr   r   )Z
started_atZscheduled_startrB   )Zscaler@  )r   r   r   Zcreator_resultsr   ro   r>  r?  Zprofile_image_url_httpsc                 S   s   |  ddS )NZ_normalZ_400x400r7  r9  r<   r<   r=   r>   ^  r?   )r   r   r   )r   r   r	   r   rm  r9   r   r   r   Z_extract_m3u8_formatsrb   r   rv   r   r  r   )rH   r0   r  Z
space_datar   r  rY   rr   r~  Zis_audio_spacefmtr  r<   r  r=   r   )  sr    


zTwitterSpacesIE._real_extractN)r   r   r   r   r   r   r   r   r  r   r   r<   r<   r<   r=   r`    s   
Or`  c                   @   s    e Zd ZdZdZdZdd ZdS )TwitterShortenerIEztwitter:shortenerz1https?://t\.co/(?P<id>[^?#]+)|tco:(?P<eid>[^?#]+)zhttps://t.co/c                 C   sf   |  |}|dd\}}|r,|}| j| }| j||ddidj}d}||r\||d}| |S )Neidr   r$  Zcurl)rr   z;https://twitter.com/safety/unsafe_link_warning?unsafe_link=r;  )ri  rF   	_BASE_URLZ_request_webpager0   
startswithr8  r   )rH   r0   rN   r  Z	shortcodenew_urlZ _TwitterShortenerIE__UNSAFE_LINKr<   r<   r=   r   h  s    


z TwitterShortenerIE._real_extractN)r   r   r   r   r   r  r   r<   r<   r<   r=   r  c  s   r  ),r   r   r  rD   urllib.parserQ   commonr   Z	periscoper   r   Zjsinterpr   Znetworking.exceptionsr   utilsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zutils.traversalr   r   r   r   r   rq  r_  r`  r  r<   r<   r<   r=   <module>   s8   P  0p        L9y .