拡張子:txtvbswsfjsphpjavahtmlutf8sjis mp4 に関する url フォーマットはたしか、High Quality on Youtube を参考にしました。 もともとは、その仕様を使った Firefox 拡張があって、コードを読むとそうなってたので、 調べたら上記リンクがヒットしたと記憶しています。その他のエントリは、Firebugで動画ダウンロード をテストしていて、その URL を調べてみると結局ページ内に定義されていた事が解り、 Firebug を駆使して構造を確かめて作りました。 ここでは、その定義済みオブジェクトを参照する必要があったので、unsafeWindow を使っています。 それ以外は特別な処理はありません。 拡張子:txtvbswsfjsphpjavahtmlutf8sjis // ==UserScript== // @name youtube download // @namespace http://winofsql.jp/youtube // @description youtube download links // @include http://www.youtube.com/watch?v=* // ==/UserScript== var link = "<br><b style='padding:3px;background-color:#000000;color:#FFFFFF;line-height:24px;'>" +"\u25bcdownload list</b><br>"; try { // video_id var mp4 = "http://www.youtube.com/get_video?video_id=" +unsafeWindow.yt.config_.SWF_ARGS['video_id']+"&t=" +unsafeWindow.yt.config_.SWF_ARGS['t']+"&fmt=18"; link = link + '<a href="' + mp4 + '" style="color:#0000FF"' link = link + '>mp4 download</a><br>'; for (key in unsafeWindow.yt.config_.SWF_ARGS) { if ( key == 'fmt_url_map' ) { var mediaTarget = decodeURIComponent( unsafeWindow.yt.config_.SWF_ARGS[key] ) + ""; mediaTarget = mediaTarget.split("|") var mcount = 0; for (key2 in mediaTarget) { if ( mcount != 0 ) { link = link + '<a href="' + (mediaTarget[key2].split(","))[0] + '" style="color:#0000FF"' link = link + '>download</a><br>'; } mcount++; } } } var target = document.createElement("DIV"); target.innerHTML = link; document.getElementById("watch-video-details-inner-less").appendChild(target); } catch( e ) { alert(e); }
mp4 に関する url フォーマットはたしか、High Quality on Youtube を参考にしました。 もともとは、その仕様を使った Firefox 拡張があって、コードを読むとそうなってたので、 調べたら上記リンクがヒットしたと記憶しています。その他のエントリは、Firebugで動画ダウンロード をテストしていて、その URL を調べてみると結局ページ内に定義されていた事が解り、 Firebug を駆使して構造を確かめて作りました。 ここでは、その定義済みオブジェクトを参照する必要があったので、unsafeWindow を使っています。 それ以外は特別な処理はありません。
// ==UserScript== // @name youtube download // @namespace http://winofsql.jp/youtube // @description youtube download links // @include http://www.youtube.com/watch?v=* // ==/UserScript== var link = "<br><b style='padding:3px;background-color:#000000;color:#FFFFFF;line-height:24px;'>" +"\u25bcdownload list</b><br>"; try { // video_id var mp4 = "http://www.youtube.com/get_video?video_id=" +unsafeWindow.yt.config_.SWF_ARGS['video_id']+"&t=" +unsafeWindow.yt.config_.SWF_ARGS['t']+"&fmt=18"; link = link + '<a href="' + mp4 + '" style="color:#0000FF"' link = link + '>mp4 download</a><br>'; for (key in unsafeWindow.yt.config_.SWF_ARGS) { if ( key == 'fmt_url_map' ) { var mediaTarget = decodeURIComponent( unsafeWindow.yt.config_.SWF_ARGS[key] ) + ""; mediaTarget = mediaTarget.split("|") var mcount = 0; for (key2 in mediaTarget) { if ( mcount != 0 ) { link = link + '<a href="' + (mediaTarget[key2].split(","))[0] + '" style="color:#0000FF"' link = link + '>download</a><br>'; } mcount++; } } } var target = document.createElement("DIV"); target.innerHTML = link; document.getElementById("watch-video-details-inner-less").appendChild(target); } catch( e ) { alert(e); }