Skip to content

Instantly share code, notes, and snippets.

@azu
Created January 31, 2009 05:32
Show Gist options
  • Save azu/55448 to your computer and use it in GitHub Desktop.
Save azu/55448 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Add Mylist Link
// @author favril
// @namespace http://script41self.seesaa.net/
// @description ニコニコ動画のメニューバーに、mylistへのリンクを追加するスクリプトを改造してローカルに値を保持
// @version 0.1.3
// @include http://www.nicovideo.jp/*
// @require http://favril.myspace.googlepages.com/noriaki_updatechecker_uc-20080823.js
// ==/UserScript==
(function(){
var list = eval("("+GM_getValue("mylist_list")+")") || {};
// mylistをげっとする
function insertmenu(list){
var slct = document.createElement("select");
slct.setAttribute("class", "TXT12");
slct.style.width = "80px";
slct.setAttribute("onChange", "AML_link();");
slct.id = "AML_slct";
var opt = document.createElement("option");
opt.value = "";
opt.innerHTML = "--myslit--";
slct.appendChild(opt);
for(var i=0; i<list.length; i++){
// groups.add(***) : *** だけにして、さらに , で分割する
var sp = list[i].substring(11, list[i].length-1).split(", ");
opt = document.createElement("option");
opt.value = sp[0];
opt.innerHTML = sp[1].substring(1, sp[1].length-1) + " (" + sp[4] + ")";
slct.appendChild(opt);
}
// 更新ボタン
var refresh = document.createElement("span");
refresh.innerHTML = "更新";
refresh.setAttribute("style","cursor:default");
refresh.addEventListener("click", getmylists, false);
// 挿入位置探し
var inpos = document.getElementById("topline_menu").getElementsByTagName("a")[0];
// 挿入
inpos.parentNode.insertBefore(slct, inpos);
inpos.parentNode.insertBefore(refresh, inpos);
inpos.parentNode.insertBefore(document.createTextNode(" | "), inpos);
// onchange用の関数を仕込む
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.innerHTML = "function AML_link(){var slct = document.getElementById('AML_slct');var idx = slct.selectedIndex;if(idx != 0) {location.href = '/mylist/' + slct.options[idx].value;}}";
document.getElementsByTagName("head")[0].appendChild(script);
}
function getmylists(){
GM_xmlhttpRequest({
method: "get",
url: "http://www.nicovideo.jp/mylistgroup_edit",
headers: { "User-Agent": "Mozilla/5.0 Greasemonkey (Add Mylist Linker)" },
onload: function(res){
var list = res.responseText.match(/groups\.add\([^\)]+\)/g);
//GM_log(list);
if(!list) return; // mylistなし
GM_setValue("mylist_list", list.toSource());
//insertmenu(list);
},
onerror: function(res){ GM_log(res.status + ":" + res.statusText); }
});
}
if(list)
insertmenu(list);
else
getmylists();
// update lib
// http://blog.fulltext-search.biz/archives/2008/08/update-checker-4-greasemonkey.html
new UpdateChecker({
script_name: "Add Mylist Link",
script_url: "http://script41self.up.seesaa.net/user_js/add_mylist_link.user.js",
current_version: "0.1.2",
more_info_url: "http://script41self.seesaa.net/article/106627828.html"
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment