ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: Greasemonkey : YouTube 動画ダウンロードリンク
名前: lightbox
処理選択
パスワード

件名 Greasemonkey : YouTube 動画ダウンロードリンク
名前 lightbox
コメント
@DIV
mp4 に関する url フォーマットはたしか、http://blog.jimmyr.com/High_Quality_on_Youtube_11_2008.php(High Quality on Youtube) を参考にしました。
もともとは、その仕様を使った Firefox 拡張があって、コードを読むとそうなってたので、
調べたら上記リンクがヒットしたと記憶しています。その他のエントリは、http://logicalerror.seesaa.net/article/125694879.html(Firebugで動画ダウンロード) 
をテストしていて、その URL を調べてみると結局ページ内に定義されていた事が解り、
Firebug を駆使して構造を確かめて作りました。

ここでは、その定義済みオブジェクトを参照する必要があったので、unsafeWindow を使っています。
それ以外は特別な処理はありません。
@END

@DIV
// ==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);
}
@END