Greasemonkeyåå¼·ä¼
ã¼ãç¨è³æãé¢ä¿ã®ãªãæ¹ã¯ã¹ã«ã¼ãã¦ãã ãã
ä»åã®è³æï¼ダウンロード
Greasemonkeyã¨ã¯
Firefoxã§ã¦ã¼ã¶ã¼ã¹ã¯ãªãããå®ç¾ããããã®ã¨ã¯ã¹ãã³ã·ã§ã³ï¼æ¡å¼µæ©è½ï¼ã®ä¸ã¤ã§ãèªã¿è¾¼ãã ã¦ã§ããã¼ã¸ãã¯ã©ã¤ã¢ã³ãï¼ã¦ã¼ã¶ã¼ï¼å´ã§ã«ã¹ã¿ãã¤ãºå¯è½ã«ãããã®ã
ä»ã®ãã©ã¦ã¶ã§ã¯ãåæ§ã®æ©è½ããOpera8ã§ã¯æ¨æºã§ãIEã§ã¯Trixieãå°å ¥ãããã¨ã§ãSafariã§ã¯Creammonkeyãå°å ¥ãããã¨ã§å®ç¾ã§ããã
ä¾ãã°ãç¹å®ãµã¤ãã®ãã©ã³ããå¤æ´ããããåºåãæé¤ãããã便å©ãªãªã³ã¯ã追å ããããããã¨ãã§ããã¦ã¼ã¶ã¼ã¹ã¯ãªãããããã¾ãããã詳細ãªå
容ï¼http://diveintogreasemonkey.org/toc/ã*1
使ãã«ã¯
ã©ããªãã®ãããã®
ã¨ãããã使ã£ã¦ã¿ããããããããã¹ã¯ãªããããã£ã±ãããâhttp://userscripts.org/ /人気エントリ
- Autopagerize http://userscripts.org/scripts/show/8551
- è¤æ°ã®ãã¼ã¸ã«åããã¦ããã³ã³ãã³ããã¹ã¯ãã¼ã«ããã ãã§ç§»åã§ããã
- LDRize http://userscripts.org/scripts/show/11562
- j,kã§ã¹ã¯ãã¼ã«ã§ããã
- ãã¼ã¸ãåãåããé¨åãæä½ãå®ç¾©ããé¨åãå¥ã ã«å®ç¾©ã§ããã
- ã¤ã³ã¹ã¿ã©ã¯ã·ã§ã³ï¼http://www.heiwaboke.com/ ãLDRizeãã¦è¦ã«è¡ã
- SBM comment viewer
- ã¯ã¦ãã¨ãdel.icio.usã§ã®ããã¯ãã¼ã¯æ°ã¨ããä¸åº¦ã«è¦ãã
- twitterにはてなスターを設置
- Twitterã®åçºè¨ã«ã¯ã¦ãªã¹ã¿ã¼ãè¨ç½®ããGreasemonkeyãTwitterStar(æ称ã¯ã¤ãâãã)
- ニコニコ動画にアクセスしている時間をカウントする
- ã©ãã ãå»äººãä¸ç®çç¶ã§ãã^^^
- ニコニコ動画のコメント熱狂度を可視化する
- å¼¾å¹ãå¼µããã¦ããã®ããã¤ãä¸ç®çç¶ã§ãã^^^
- ニコニコ動画のコメントの中から、動画IDやURLっぽいやつを抽出する
- è¦åç §åç»ã«ãããã移åã§ãã¦ãã³ãã³ã©ã¤ããå éãã¾ãã大å¤ããã£ãã§ããã
- mixiのコメントランキングをグラフで表示するグリモン作ったよ!
- ãã人ã®æ¥è¨ã«èª°ãã©ãã ããããããã¦ããä¸ç®çç¶ã§ãã大å¤ããã£ãã§ããã
ã©ããã£ã¦ä½ããã ã
ããã¥ã¢ã«ï¼http://diveintogreasemonkey.org/toc/
æ¸ãã¦*.user.jsã¨ååãã¤ããã°ãï½ããªã³ã¯ã§è¸ãããã©ãã°ã¢ã³ãããããã§ã¤ã³ã¹ãã¼ã«ã§ããã
// ==UserScript== // @name hello Greasemonkey // @namespace http://omedete.na/ // @include * // @exclude http://www.google.com/* // @exclude http://www.google.co.jp/* // @description ^o^ // ==/UserScript== alert('Hello world!');
åé ã®ã³ã¡ã³ãè¡ã¯å¿ é ãç¹æ®ãªã®ã¯ããããã
- @includeï¼ãã®ã¹ã¯ãªãããæå¹ã«ãªãURL
- @excludeï¼ãã®ã¹ã¯ãªãããç¡å¹ã«ãªãURL
æ¥æ¬èªã¯Unicodeã¨ã¹ã±ã¼ãããªãã¨ããã¾ãããã¨ã¹ã±ã¼ããã¦ãããããã°ã©ã ãã¨ãã£ã¿ãç¨æããã¨ããã§ãããã
åæ©
ãã³ãã³åç»ã®åç»ãªã³ã¯ãã¾ãã§å½¹ã«ç«ããªãã®ã§æ¸ãæããã
ãã³ãã³ã¯ã çæéã§ã®é£ç¶ã¢ã¯ã»ã¹ã¯ãé æ
®ãã ããããªã®ã§èªéãã¦sample1.htmlã§ã¾ãç·´ç¿ï¼資料ï¼
// ==UserScript== // @name niconico google // @namespace http://omedete.na/ // @include http://www.nicovideo.jp/watch/* // @description ^o^ // ==/UserScript== var h1 = document.getElementsByTagName('h1')[0]; if(!h1) return; h1.firstChild.href='http://www.google.co.jp/search?q=' + h1.firstChild.innerHTML;
GMç¹æã®æ©è½
Greasemonkeyã«ã¯ç¹å¥ãªæ©è½ãããã¤ãç¨æããã¦ãã¾ãããã³ãã³åç»ã«ã¢ã¯ã»ã¹ãã¦ããæéãã«ã¦ã³ãããã¹ã¯ãªãããä¾ã«ã¨ã£ã¦èª¬æã
// ==UserScript== // @name NicovideoTimer // @namespace http://cureblack.com/ // @include http://www.nicovideo.jp/* // ==/UserScript== var field = document.createElement('div'); document.body.appendChild(field); with(field.style) { width = "200px"; backgroundColor = "#FF0000"; position = "fixed"; bottom = 0; right = 0; opacity = '0.5'; textAlign = "right"; }
var time = GM_getValue('nicovideotimer_time', 0);
GM_getValue(key,ããã©ã«ãå¤),GM_setValue(key,å¤)ã§Greasemonkeyã«å¤ãä¿åãããåãåºãããåºæ¥ã¾ãã*2
if(window.parent == window){ window.setInterval(function(){ ++time;
GM_setValue('nicovideotimer_time', time);
ãããããã
var sec = time % 60; var min = Math.floor(time / 60) % 60; var hour = Math.floor(time / (60 * 60)) % 24; var day = Math.floor(time / (60 * 60 * 24)); var str = "ç´¯è¨ "; if(day) str += day + "æ¥"; if(hour) str += hour + "æé"; if(min) str += min + "å"; if(sec) str += sec + "ç§"; field.innerHTML = str; }, 1000); }
GM_registerMenuCommand("Reset Nicovideo timer", function(){ time = 0; });
ã¦ã¼ã¶ã¼ã¡ãã¥ã¼ã«é¢æ°ãç»é²ã§ãã¾ãã*3
ãã¡ã¤ã³å¤ã¨ã®éä¿¡ã«ã¯GM_xmlhttpRequest(details)*4ã使ãã¾ãã
ä¾ãã°ãã³ãã³ã®ã³ã¡ã³ãXMLã«ã¢ã¯ã»ã¹ããã®ã«å¿
è¦ããã³ãã³ã®ã³ã¡ã³ãã«ã¤ãã¦ã¯ä»¥ä¸ãåç
§
ãã³ãã³åç»ãæ¡å¼µãã
ãã³ãã³åç»ã¯åç»ã®é·ãã«ããææ°ã®ãã®ãã250ã1000件ã®ã³ã¡ã³ãã表示ãã¾ããçãåç»ãªã250ã³ã¡ã³ããã¤ã¾ãè¦ãã¦ããã³ã¡ã³ããæ¸ãã人ãã¡ã¨ãã³ãã³ãã¦ããã«éããªããå®éã«ã¯ä½äººã¨ï¼
pointï¼
- GM_xmlhttpRequestï¼å¤é¨ãã¡ã¤ã³ã¨ã®éä¿¡ï¼
- é£æ³é åï¼ããã·ã¥âã¦ãã¼ã¯ãã¼ã ãã«æ·æ±°ã§ããNEï¼
- XML解æï¼.getAttribute()ï¼*5
ãã³ãã³ã¯ã çæéã§ã®é£ç¶ã¢ã¯ã»ã¹ã¯ãé æ ®ãã ããããªã®ã§èªéãã¦sample2.htmlã§ã¾ãç·´ç¿ï¼資料ï¼
// ==UserScript== // @name niconico comment unique user // @namespace http://omedete.na/ // @include http://www.nicovideo.jp/watch/* // @description ^o^ // ==/UserScript== (function(){ var h1 = document.getElementsByTagName('h1')[0]; if(!h1) return; var info = document.createElement('span'); info.appendChild(document.createTextNode('unique user...')); if(/watch\/([^/]+)$/.test(location.href)){ var video_id = RegExp.$1; GM_xmlhttpRequest({ method: 'GET', url: 'http://www.nicovideo.jp/api/getflv?v=' + video_id, onload: function(res){ if(/thread_id=(.+?)&.+&ms=(.+?)&/.test(res.responseText)){ var thread_id = decodeURIComponent(RegExp.$1); var url = decodeURIComponent(RegExp.$2); GM_xmlhttpRequest({ method: 'POST', headers: { 'Content-type': 'text/xml' }, url: url, data: '<thread res_from="-1000" version="20061206" thread="' + thread_id + '" />', onload: function(res){ var responseXML = (new DOMParser).parseFromString(res.responseText, "application/xml"); var chats = responseXML.getElementsByTagName('chat'); var unique = new Object(); for(i=0;i<chats.length;i++){ unique[chats[i].getAttribute('user_id')] = 1; } var count=0; for(s in unique){ count++; } info.appendChild(document.createTextNode(count)); }, onerror: function(res){ GM_log(res.status + ':' + res.statusText); } }); } }, onerror: function(res){ GM_log(res.status + ':' + res.statusText); } }); } h1.parentNode.insertBefore(info, h1); })();
åè
*1:[http://firefox.geckodev.org/index.php?plugin=attach&pcmd=open&file=dive_gm.pdf&refer=Greasemonkey:title=å訳PDF]
*2:http://diveintogreasemonkey.org/api/gm_getvalue.html
*3:http://diveintogreasemonkey.org/api/gm_registermenucommand.html
*4:http://diveintogreasemonkey.org/api/gm_xmlhttprequest.html
*5:ãããåèã«ãªã£ãï¼http://www.w3schools.com/dom/dom_parser.asp