YouTubeのflvファイルを落とす(新仕様対応)

データURLが仕様変更され、新仕様ではムービー取得にvideo_id以外にtパラメータが必須になり、get_videoでも一旦リダイレクトされるようになったようです。

より(もう無い)

YouTubeのコンテンツページのソースをDOM Viewerで見ると、

<embed type="application/x-shockwave-flash" 
src="/player2.swf?video_id=XXXXXXXXXXX&l=YYYYY&t=ZZZZZZZZZZZZZZ" 
id="movie_player" name="movie_player" ...>

となっています。

で取れました。URLを作るには、以下の方法が取れるでしょう:

  • watchページを解析する(JavaScript向き): document.getElementById("movie_player").src.substr("/player2.swf?".length)等
  • 簡易SWFのURLを送り、リダイレクトURLを解析する(サーバプログラム向き)


一応、bookmarkletにしてみました(実際は一行で)。

javascript:void(function(){var%20div=document.createElement(%22div%22);
div.innerHTML=%22<a%20href=%27http://youtube.com/get_video.php?%22+
document.getElementById(%22movie_player%22).src.substr(13)
+%22%27>download%20flv</a>%22;
document.body.insertBefore(div,document.body.firstChild);}())

get_videoという名前になるので、適宜拡張子flvをつけてリネームします。
flvはFFmpegやそのGUIフロントエンドになってるRiva FLV Encoderでmpg,aviなど各種形式に変換できるはず。