YoutubeのダウンロードURLを組み立てる方法 2011/8版

この情報もすぐ古くなっちゃって使えなくなると思うけど、現時点(2011/8)での方法を書いておきます
ようつべ工房」のYoutube動画ダウンロードブックマークレットにて実装している方法です

ここんとこ数回のアップデートでは、動画再生ページ中にある javascript データから取得できているみたいです
以前はKeyコードみたいなのからサーバへリクエストをあげて動的にURLを取得したりもしてたようですが最近はシンプルです

とはいえ、俺もほとんど他力本願でして、一応HTMLソースをざっとみてなんとなくあたりはつけるんですが、仕様変更後数日するとネットでコードが漁れるから、その漁ったコードを解析して実装してます

今回の場合だと、「PLAYER_CONFIG」ってハッシュキーの値にそれらしいURLがあることまでは確認できたので、あとは、この「PLAYER_CONFIG」と「Youtube、Download」とかでググると参考になるコードが見つかります
海外の情報のが早かったりするんで英語の場合もありますがコードは万国共通言語です
言語は Javascript だったり PHP や C だったりしますけどね

てーことで、今回実装したコードの一部を公開しておきます
(動画ダウンロード用URLを組み立てている部分を簡素化して抜粋)

// Youtube download URL make
var urlTbl = new Array();
var x,i,j,g,fmt;
var conf = yt.getConfig('PLAYER_CONFIG').args.url_encoded_fmt_stream_conf;
conf = conf.split(',');
for(i in conf) {
 x = conf[i].split('&');
 var h = {};
 for(j in x) {
 g = x[j].split('=');
 h[g[0]] = decodeURIComponent(g[1]);
 }
 fmt = '';
 if (h['type']&&h['type'].match(/video\/([a-zA-Z0-9_\-]+)/)) {
 fmt = RegExp.$1;
 }
 if (fmt == 'webm') continue;    // unused
 urlTbl[h['itag']] = h['url'] + '&title=videoplayback_fmt' + h['itag'];
}
// DEBUG
for(i in urlTbl)
{
 alert(urlTbl[i]);
}

連想配列「urlTbl」に fmt 番号をキーにして ダウンロード用URL が入ります
DEBUG以下のコードは内容確認のためなので実装時は必要ありません

実装は、上記コードを実行すべく、Youtube動画再生ページに自前の Javascript をぶち込まなくてはならないので、ブックマークレットにて実装するか、ブックマークレットから自前サーバに設置した Javascript を呼び出すかします
俺は後者の方法でサーバにある Javascript を ブックマークレットから呼び出すようにしています
この方法だと、毎回ブックマークレットを更新する必要がなく、サーバ上にある Javascript のみ更新すれば常に最新サービスを提供できますからね