Reputation: 4693
I am using http://www.youtube.com/get_video_info?video_id=*VIDEO_ID* and from the data I get I am parsing the url_encoded_fmt_stream_map and I get the urls like
http://blah.youtube.com/videoplayback?blah
Earlier I could download the videos using this url but now I am not able to download the videos anymore. Anyone has a clue why?
Upvotes: 1
Views: 2305
Reputation: 66
Here is the code to return the video urls:
all credits to youtube-dl I only copied the part of their script which you need for extracting the urls
video_id = "yourvideoid"
for el_type in ['&el=embedded', '&el=detailpage', '&el=vevo', '']:
video_info_url = ('http://www.youtube.com/get_video_info?&video_id=%s%s& ps=default&eurl=&gl=US&hl=en'
% (video_id, el_type))
request = urllib2.Request(video_info_url)
try:
video_info_webpage = urllib2.urlopen(request).read()
video_info = parse_qs(video_info_webpage)
if 'token' in video_info:
break
except (urllib2.URLError, httplib.HTTPException, socket.error), err:
print('ERROR: unable to download video info webpage: %s' % str(err))
video_url_list = video_info['url_encoded_fmt_stream_map'][0]
url_data_strs = video_info['url_encoded_fmt_stream_map'][0].split(',')
url_data = [parse_qs(uds) for uds in url_data_strs]
url_data = filter(lambda ud: 'itag' in ud and 'url' in ud, url_data)
url_map = dict((ud['itag'][0], ud['url'][0] + '&signature=' + ud['sig'][0]) for ud in url_data)
print(str(url_map))
Upvotes: 5
Reputation: 6813
I am having the same problem and from what I understand from someone else who has fixed it that we need to add a signature to the video link (the mp4 or 3gp links that are returned)... I'm looking into this and will update. I hope you can do the same if you discover anything.
Upvotes: 0
Reputation: 1422
No clue as to why, but it seems to be affecting all downloader extensions, so it's almost certainly on YouTube's side. I'm assuming it has something to do with intellectual property. YouTube is "intended" to be a streaming site, not a video file repository.
Shutaro at addons.mozilla.com has discovered a workaround that entails forcing YouTube to revert to delivering the older .webm format.
Upvotes: 1