クリップボードのURLをflvのURLに変換してIrvineに登録するDMonkeyスクリプト

また、またどこかにありそうなスクリプトをさらしてみるテスト。
ブラウザからURLを抽出して、クリップボードにコピーしてから起動すると幸せになれるかもしれない。

function main() {
    var irvine = new ActiveXObject("Irvine.Api");
    var urls = Clipboard.asText.split(/\s+/);
    var folder_name;

    if (WScript.Arguments.Count > 0) {
	folder_name = WScript.Arguments.Item(0);
    } else {
	folder_name = prompt("Folder Name");
    }

    for (var i in urls) {
	if (!urls[i].match(/^http/)) {
	    alert(urls[i] + " is not valid URL");
	}
	var info = get_video_info(urls[i]);

	var filename = info.title + ".flv";
	var data_text = info.url + "\t" + folder_name + "\t" + filename;
	for (var j = 0; j < 10; j++) {
	    data_text += "\t";
	}
	data_text += urls[i];
	irvine.AddQueueItem("", data_text);
    }
}

function get_video_info(url) {
    var http = new HTTP();
    try {
	http.autoRedirect = false;

	var u = new URL(url);
	var text = http.get(u.url).fromUTF8toSJIS();
	if (text.match(/player2.swf(.*?)\"/)) {
	    var next_url = "http://www.youtube.com/get_video.php" + RegExp.$1;
	    http.request("HEAD", next_url);
	    http.response();

	    var result = new Object();
	    result.url = http.responseHeader.location;
	    result.title = get_title(text);
	    result.id = get_video_id(url);
	    return result;
	} else {
	    println(url);
	    println(http.responseHeader.code);
	    return null;
	}
    } finally {
	http.disconnect();
    }
}

function get_title(text) {
    if (text.match(/<h1>(.*?)<\/h1>/)) {
	return RegExp.$1;
    } else {
	return null;
    }
}

function get_video_id(url) {
    if (url.match(/[\?&]v=([^&]+)/)) {
	return RegExp.$1;
    } else {
	return null;
    }
}
main();