Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////////////////////////////////
- //
- //@title おーぷん2ちゃんねるツール
- //@include http://*.open2ch.net
- //@private
- //
- //作った人: Awn(@Awn_tw)
- //
- //改定履歴
- //-20161021(ver 1.0.0): とりあえず作ってみた。
- //-20161024(ver 1.1.0): isSurenusiを追加。
- //-20161025(ver 1.2.0): _getNameを追加。モジュールパターンっぽくしてみた。isSurenusi -> _isSurenusiに変更。
- //-20161025(ver 1.3.0): _getName -> _getResNameに変更。_getResRawと_getResTimeと_getResIDを追加。
- //-20161025(ver 1.4.0): _isBrokenと_getValidNumを追加。
- //-20161025(ver 1.4.1): モジュールパターンではあるが、より正確に言えばリビーリングモジュールパターンっぽい。
- //-20161025(ver 1.4.2): URLの末尾に半角ハイフンを含む場合も"[全部]のURLに移動します。"のケースに含める。
- //-20161027(ver 1.4.3): (面倒なので)canonicalなURLで無い時はcanonicalなURLに飛ばす。kari_compの取得方法を変更(splitを減らし正規表現で取得)
- //
- //諸注意
- //-ご利用は自己責任でお願いします。
- //-スクリプトは予告なく修正または廃止されることがあります。
- //-コンソールでしか動かない、と思います。
- //-悪用は厳禁です。
- //-改造改良改悪はご自由にどうぞ。
- //
- //////////////////////////////////////////////////////////////////////////
- var Op2ools = (function(){
- /* private member */
- var _VERSION = "1.4.3";
- var _BBSNAME = "";
- var _SURETAI = "";
- var _isInitSuccess = false;
- /* private initializer */
- _init();
- /* private method */
- function _init(){
- var _hostname = location.hostname;
- var _url = location.href;
- //init failure
- if( _hostname.indexOf("open2ch") === -1 ){
- _failureMessage("このツールはおーぷん2ちゃんねる(http://*.open2ch.net)での動作しか保証しておりません。");
- return _isInitSuccess;
- }
- if( _url.indexOf("read.cgi") === -1 ){
- _failureMessage("特定のスレを開いてください。");
- return _isInitSuccess;
- }
- if( _url !== $("link[rel='canonical']").attr("href") ){
- _failureMessage("[全部]のURLに移動します。\n再度、Op2oolsを実行してください。");
- location.href = $("link[rel='canonical']").attr("href");
- return _isInitSuccess;
- }
- //init success
- _BBSNAME = _url.split("/")[5];
- _SURETAI = document.title;
- _isInitSuccess = true;
- console.log("Op2ools: init success!");
- if( _isBroken() ){
- console.warn("Op2ools: but this thread is broken..."); }
- else{
- console.log("Op2ools: and this thread may be not broken!");
- };
- return _isInitSuccess;
- }
- function _failureMessage(mes){
- console.warn(mes);
- alert(mes);
- console.log("Op2ools: init failure!");
- }
- function _getLastResNum(){
- //return ( $("dl.hide:last > dd > ares").attr("num") || $("dl:last > dd > ares").attr("num") ) - 0;
- return ( $("dl:last > dd > ares").attr("num") ) - 0;
- }
- function _getRes(num){
- num = _getValidNum(num);
- var rtn = $("dl:eq(" + (num-1) + ") > dd").text().replace(/\n/g,"").replace(/ [0-9]*件/g,"").replace(/>>[0-9]*/g,"");
- if( rtn !== "" ){ return rtn; }else{ return undefined; }
- }
- function _getResRaw(num){
- num = _getValidNum(num);
- var rtn = $("dl:eq(" + (num-1) + ") > dd").text().replace(/ [0-9]*件/g,"");
- if( rtn !== ""){ return rtn; }else{ return undefined; }
- }
- function _getResName(num){
- num = _getValidNum(num);
- if( num === undefined ){
- return undefined;
- }
- var rtn = ($("dl:eq(" + (num-1) + ")> dt").text().split(":"))[1];
- if( rtn !== "" && rtn !== undefined ){ return rtn.substr(rtn.length - 1) === " " ? rtn.substr(0,rtn.length - 1) : rtn ; }else{ return undefined; }
- }
- function _getResTime(num){
- num = _getValidNum(num);
- if( num === undefined ){
- return undefined;
- }
- var rtn = $("dl:eq(" + (num-1) + ")> dt");
- rtn.length > 0 ? rtn = rtn.text().split(":")[2].split(" ")[0] : undefined
- if( rtn !== "" && rtn !== undefined){return rtn; }else{ return undefined; }
- }
- function _getResID(num){
- num = _getValidNum(num);
- if( num === undefined ){
- return undefined;
- }
- var rtn = $("dl:eq(" + (num-1) + ")> dt");
- rtn.length > 0 ? rtn = rtn.text().split(":")[2].split(" ")[1].split(":")[1] : undefined
- if( rtn !== "" && rtn !== undefined){return rtn; }else{ return undefined; }
- }
- function _isSurenusi(num){
- num = _getValidNum(num);
- if( $("dl:eq(" + (num-1) + ") > dt > font > font").attr("color") === "red" || $("dl:eq(" + (num-1) + ") > dt > span > font > font").attr("color") === "red" ){ return true }else{ return false };
- }
- function _isBroken(){
- var lastresnum = _getLastResNum();
- if( lastresnum === $("dl").length ){ return false; }else{ return true;}
- }
- function _getValidNum(kari){
- if( typeof(kari) !== "number" ){
- return undefined;
- }
- if( kari > 1006 || kari < 0){
- return undefined;
- }
- var kari_comp = 1;
- var kariBreakFlag = true;
- var inc = 1;
- var inc_computed = 0;
- //try{ kari_comp = ($("dl:eq(" + (kari - 1) + ")> dt").text().split(":"))[0].split("\n")[1].split(" ")[0] - 0 }catch(e){
- try{ kari_comp = $("dl:eq(" + (kari - 1) + ")> dt").text().split(":")[0].match(/[0-9]+/)[0] - 0 }catch(e){
- kari_comp = 1;
- }
- if( kari === kari_comp){
- return kari;
- }else{
- while(kariBreakFlag){
- if( inc % 2 === 0 ){ inc_computed = (-1) * (inc/2); }else{ inc_computed = (inc+1)/2; };
- //try{ kari_comp = ($("dl:eq(" + (kari - 1 + inc_computed ) + ")> dt").text().split(":"))[0].split("\n")[1].split(" ")[0] - 0}catch(e){
- try{ kari_comp = $("dl:eq(" + (kari - 1 + inc_computed ) + ")> dt").text().split(":")[0].match(/[0-9]+/)[0] - 0 }catch(e){
- kari_comp = 1005;
- }
- if( kari === kari_comp ){
- kari = kari + inc_computed;
- kariBreakFlag = false;
- }
- if( inc > 501 ){ kariBreakFlag = false; kari = undefined; return kari; };
- inc++;
- }
- return kari;
- }
- }
- /* public API */
- if(_isInitSuccess){
- return{
- VERSION : _VERSION,
- BBSNAME : _BBSNAME,
- SURETAI : _SURETAI,
- getLastResNum : _getLastResNum,
- getRes : _getRes,
- getResRaw : _getResRaw,
- getResName : _getResName,
- getResTime : _getResTime,
- getResID : _getResID,
- isSurenusi : _isSurenusi,
- isBroken : _isBroken,
- getValidNum : _getValidNum
- }
- }else{
- return undefined;
- }
- })();
Advertisement
Add Comment
Please, Sign In to add comment