mirror of
https://github.com/soimort/you-get.git
synced 2025-01-23 21:45:02 +03:00
[twitter] fix #2609
This commit is contained in:
parent
f73c7a3660
commit
da8c982608
@ -64,42 +64,26 @@ def twitter_download(url, output_dir='.', merge=True, info_only=False, **kwargs)
|
||||
output_dir=output_dir)
|
||||
|
||||
except: # extract video
|
||||
# always use i/cards or videos url
|
||||
if not re.match(r'https?://twitter.com/i/', url):
|
||||
url = r1(r'<meta\s*property="og:video:url"\s*content="([^"]+)"', html)
|
||||
if not url:
|
||||
url = 'https://twitter.com/i/videos/%s' % item_id
|
||||
try:
|
||||
html = get_content(url)
|
||||
except:
|
||||
return
|
||||
#i_url = 'https://twitter.com/i/videos/' + item_id
|
||||
#i_content = get_content(i_url)
|
||||
#js_url = r1(r'src="([^"]+)"', i_content)
|
||||
#js_content = get_content(js_url)
|
||||
#authorization = r1(r'"(Bearer [^"]+)"', js_content)
|
||||
authorization = 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA'
|
||||
|
||||
data_config = r1(r'data-config="([^"]*)"', html) or \
|
||||
r1(r'data-player-config="([^"]*)"', html)
|
||||
i = json.loads(unescape_html(data_config))
|
||||
if 'video_url' in i:
|
||||
source = i['video_url']
|
||||
item_id = i['tweet_id']
|
||||
page_title = "{} [{}]".format(screen_name, item_id)
|
||||
elif 'playlist' in i:
|
||||
source = i['playlist'][0]['source']
|
||||
if not item_id: page_title = i['playlist'][0]['contentId']
|
||||
elif 'vmap_url' in i:
|
||||
vmap_url = i['vmap_url']
|
||||
vmap = get_content(vmap_url)
|
||||
source = r1(r'<MediaFile>\s*<!\[CDATA\[(.*)\]\]>', vmap)
|
||||
item_id = i['tweet_id']
|
||||
page_title = "{} [{}]".format(screen_name, item_id)
|
||||
elif 'scribe_playlist_url' in i:
|
||||
scribe_playlist_url = i['scribe_playlist_url']
|
||||
return vine_download(scribe_playlist_url, output_dir, merge=merge, info_only=info_only)
|
||||
ga_url = 'https://api.twitter.com/1.1/guest/activate.json'
|
||||
ga_content = post_content(ga_url, headers={'authorization': authorization})
|
||||
guest_token = json.loads(ga_content)['guest_token']
|
||||
|
||||
try:
|
||||
urls = extract_m3u(source)
|
||||
except:
|
||||
urls = [source]
|
||||
api_url = 'https://api.twitter.com/2/timeline/conversation/%s.json?tweet_mode=extended' % item_id
|
||||
api_content = get_content(api_url, headers={'authorization': authorization, 'x-guest-token': guest_token})
|
||||
|
||||
info = json.loads(api_content)
|
||||
variants = info['globalObjects']['tweets'][item_id]['extended_entities']['media'][0]['video_info']['variants']
|
||||
variants = sorted(variants, key=lambda kv: kv.get('bitrate', 0))
|
||||
urls = [ variants[-1]['url'] ]
|
||||
size = urls_size(urls)
|
||||
mime, ext = 'video/mp4', 'mp4'
|
||||
mime, ext = variants[-1]['content_type'], 'mp4'
|
||||
|
||||
print_info(site_info, page_title, mime, size)
|
||||
if not info_only:
|
||||
|
Loading…
Reference in New Issue
Block a user