http://www.youtube.com/get_video_info?video_id= *VIDEO_ID*を使用して おり、取得したデータから url_encoded_fmt_stream_map を解析しており、次のような URL を取得しています。
http://blah.youtube.com/videoplayback?blah
以前はこの URL を使用してビデオをダウンロードできましたが、現在はビデオをダウンロードできません。誰でも理由がわかりますか?
http://www.youtube.com/get_video_info?video_id= *VIDEO_ID*を使用して おり、取得したデータから url_encoded_fmt_stream_map を解析しており、次のような URL を取得しています。
http://blah.youtube.com/videoplayback?blah
以前はこの URL を使用してビデオをダウンロードできましたが、現在はビデオをダウンロードできません。誰でも理由がわかりますか?
ビデオの URL を返すコードは次のとおりです。
すべてのクレジットは youtube-dl URL を抽出するために必要なスクリプトの一部のみをコピーしました
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))
理由はわかりませんが、すべてのダウンローダー拡張機能に影響しているようですので、YouTube 側にあることはほぼ確実です。知的財産権と関係があると思います。YouTube は、ビデオ ファイルのリポジトリではなく、ストリーミング サイトになることを「意図」しています。
addons.mozilla.com の Shutaroは、YouTube に古い .webm 形式の配信を強制的に戻すことを伴う回避策を発見しました。
私は同じ問題を抱えており、それを修正した他の誰かから私が理解していることから、ビデオリンク (返される mp4 または 3gp リンク) に署名を追加する必要があることを理解しています... 私はこれを調べており、アップデート。何か発見がありましたら、同じようにしていただければ幸いです。