您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
おしおき支援ソフト第1弾 発展場情報の板が自動更新します。 ついでに音でお知らせします。
// ==UserScript== // @name oshioki notifecation // @namespace QuinceProject // @description おしおき支援ソフト第1弾 発展場情報の板が自動更新します。 ついでに音でお知らせします。 // @include http://77.xmbs.jp/miyuki-*-br_res.php?* // @exclude *disp=* // @version 1.02 // @grant none // ==/UserScript== // // 対象ウェブブラウザは以下の通りです // Firefox : 3.5以降(HTML5.1対応ブラウザ) // (Chromeについては現在確認できていません) // (function(){ //設定 (☆星がついたものは変更可能です) //設定はCookieによる保護をしています。 var Cookies_Recipe ={ // ☆ cookieの保管日数 ☆ hokanbi : 14, // ☆ お知らせ音のURL/pass ☆ load_Music : "https://dl.dropbox.com/u/7079101/coin.mp3", // ☆ お知らせ音のボリューム(0-100の範囲) ☆ volume_Music : 60, // ☆ リロード時間 (サーバー保護のため60秒以上にしてください) ☆ reload_Time : 60, //対象の掲示板のURL load_URL : "", //最後にリロードした時のレス番号 Res_Last : 1, //最後にチェックした時のレス番号( Res_Last >= Res_Checked ) Res_Checked : 1, }; //最新レス番号の取得用関数 function load_ResNo(){ var myNumber; var myNodes = document.getElementsByTagName('font'); myString = new String(); myString = myNodes[9].firstChild.nodeValue; //9番目のfont直下が最新レスの番号に当たる if(!myString){ myNumber = 0; //fontの最初の子ノードが文字列でなければ0を返す } else{ myString = myString.replace( /\D/ , '' ); //数字以外を消す myNumber = parseInt(myString,10); if(!myNumber){ myNumber = -1; //TEXTの形式が"No.XXXX"でなければ-1を返す } } return myNumber; } //Cookieの書き込み用関数 function makeCookie(MyCookies_Recipe){ var expire = new Date(); expire.setTime( expire.getTime() + MyCookies_Recipe.hokanbi * 1000 * 3600 * 24 ); document.cookie = 'load_URL='+ MyCookies_Recipe.load_URL + '; expires=' + expire.toUTCString(); document.cookie = 'Res_Last='+ MyCookies_Recipe.Res_Last + '; expires=' + expire.toUTCString(); document.cookie = 'Res_Checked='+ MyCookies_Recipe.Res_Checked + '; expires=' + expire.toUTCString(); document.cookie = 'load_Music='+ MyCookies_Recipe.load_Music + '; expires=' + expire.toUTCString(); document.cookie = 'volume_Music='+ MyCookies_Recipe.volume_Music + '; expires=' + expire.toUTCString(); document.cookie = 'reload_Time='+ MyCookies_Recipe.reload_Time + '; expires=' + expire.toUTCString(); return 0; } //Cookieの読み取り用関数 function eatCookie(MyCookies_Recipe){ var allcookies = document.cookie; if( allcookies != ''){ var cookies = allcookies.split( ';' ); for(var i = 0;i < cookies.length; i++){ cookies[i] = cookies[i].replace( /=/ , ';' ); //最初の'='のみ置き換え cookies[i] = cookies[i].replace( / /gi , '' ); //空白は消す var cookie = cookies[i].split( ';' ); //もとが'='の部分で分割 if(cookie[0] == "load_URL"){ MyCookies_Recipe.load_URL = cookie[1]; }else if(cookie[0] == "Res_Last"){ MyCookies_Recipe.Res_Last = parseInt(cookie[1]); }else if(cookie[0] == "Res_Checked"){ MyCookies_Recipe.Res_Checked = parseInt(cookie[1]); }else if(cookie[0] == "load_Music"){ MyCookies_Recipe.load_Music = cookie[1]; }else if(cookie[0] == "volume_Music"){ MyCookies_Recipe.volume_Music = parseInt(cookie[1]); }else if(cookie[0] == "reload_Time"){ MyCookies_Recipe.reload_Time = parseInt(cookie[1]); } } } return true; } //レスチェック時の差分の判断関数 function ResChecked_sabun(arg){ if(arg == 0){ document.getElementById("resInfoTxt").innerHTML = "おしらせ:現在未読はありません"; return true; }else if(arg > 0){ document.getElementById("resInfoTxt").innerHTML = "おしらせ:未読が" + arg + "件あります"; return true; }else{ document.getElementById("resInfoTxt").innerHTML = "おしらせ:ResCheckError"; return false; } } //レス確認のボタンを押した時(.resInfoBtn.onclick) function resetResChecked(MyCookies_Recipe){ MyCookies_Recipe.Res_Checked = MyCookies_Recipe.Res_Last; ResChecked_sabun(0); makeCookie(MyCookies_Recipe); return true; } //I/Oフォーム(上部追加分)のひな形用関数 function IOForm_hinagata(MyCookies_Recipe){ var IOFormHeaderCenter = document.createElement("center"); var IOFormHeader = document.createElement("div"); IOFormHeader.id = "IOFormHeader"; var resInfo = document.createElement("div"); resInfo.id = "resInfo"; var resInfoBtn = document.createElement("input"); resInfoBtn.id = "resInfoBtn"; resInfoBtn.className = "SidebySide"; resInfoBtn.type = "button"; resInfoBtn.value = "確認"; resInfoBtn.onclick = function(){resetResChecked(MyCookies_Recipe);}; var resInfoTxt = document.createElement("div"); resInfoTxt.id = "resInfoTxt"; resInfoTxt.className = "SidebySide"; document.body.insertBefore(IOFormHeaderCenter,document.body.firstChild); IOFormHeaderCenter.appendChild(IOFormHeader); IOFormHeader.appendChild(resInfo); resInfo.appendChild(resInfoTxt); resInfo.appendChild(resInfoBtn); return IOFormHeader; } //リロード時の関数 function funcExit(){ window.stop(); //一旦読み込み中止してからでないと、次に上手く読み込まない? location.reload(true); //キャッシュは破棄してリロード } //CSS追加用関数 function addGlobalStyle(css) { // Head部分にstyleを追加する関数 var head, style; head = document.getElementsByTagName('head')[0]; // head要素を取る if (!head) { return } style = document.createElement('style'); // 要素styleをつくる style.type = 'text/css'; // styleの属性typeを追加 style.innerHTML = css; // styleの属性として引数cssを追加 head.appendChild(style); // headの中に要素styleを追加する } //追加CSS addGlobalStyle('.SidebySide {display : inline-block;font-size: small; }'); //本文 //Cookieの取得(設定データ) eatCookie(Cookies_Recipe); //リロード時間はここで先に指定 var Timer = setTimeout(funcExit,Cookies_Recipe.reload_Time * 1000); //事前に音声を取得 var audio = new Audio(Cookies_Recipe.load_Music); audio.volume = Cookies_Recipe.volume_Music / 100.; //page内の最新レス番号を取得 var Res_Now = load_ResNo(); if(Res_Now == 0 || Res_Now == 1){ alert("仕様変更?\n製作者に連絡ください\n(Res_Now = " + Res_Now + ")"); return 0; } else{ //ひな形の作成 var IOForm = IOForm_hinagata(Cookies_Recipe); //URLに対応したCookieがなければ、新たに作る if(Cookies_Recipe.load_URL == location.href){ if(Cookies_Recipe.Res_Last != Res_Now){ audio.play(); Cookies_Recipe.Res_Last = Res_Now; } ResChecked_sabun(Res_Now - Cookies_Recipe.Res_Checked); }else{ Cookies_Recipe.load_URL = location.href; Cookies_Recipe.Res_Last = Res_Now; Cookies_Recipe.Res_Checked = Res_Now; ResChecked_sabun(Res_Now - Cookies_Recipe.Res_Checked); } makeCookie(Cookies_Recipe); } })()