nico_betterBrowse

By iguu Last update May 10, 2009 — Installed 2,529 times.

There are 20 previous versions of this script.

// ==UserScript==
// @name           nico_betterBrowse
// @version        0.3.53 (ββ)
// @author         iguu
// @description    ブラウジングを快適にする事が目標です。現在4つの機能があります。
// @namespace      http://blog.hexaedge.net/
// @include        http://*.nicovideo.jp/*
// @unwrap
// ==/UserScript==

/*------------------------------------------------------------------------------*/
// 1にすると機能がONになり、0にするとOFFになります。
var conf_preventHorizontalScroll = 1; //横スクロールを出さない(ハミ出ても出さない)
var conf_preventBrokenThumb	= 1; //サムネが読めないときのレイアウト崩壊を防ぎます
var conf_randomLink         = 0; //気まぐれジャンプのリンクを出します
var conf_pageAlign          = 0; //1=ページを左寄せにする 2=右寄せ
var conf_comToDefThreadLink	= 1; //制作中
var conf_r18tab             = 1; //ランキングにR-18タブを追加
/*------------------------------------------------------------------------------*/

debug=false;
/*************************************************************************/
if(debug && unsafeWindow.console.log){
	log = function(txt){unsafeWindow.console.log(txt)}
}else if(debug){
	log = function(txt){document.body.innerHTML="<li>"+txt+"</li>"+document.body.innerHTML}
}else{
	log = function(txt){}
}
/*************************************************************************/
function $css(css) {
    var style;
    style = document.createElement('style');
    style.type = 'text/css';
    if(window.addcss){
    	style.innerHTML = window.addcss.innerHTML;
    }
    style.innerHTML += css;
    window.addcss = style;
}

function $css_write() {
   if(window.addcss){
    var head;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    head.appendChild(window.addcss);
   }
}

String.prototype.replaceAll = function(str1,str2){
	var temp = this;
	while(temp.indexOf(str1) != -1){
		temp=temp.replace(str1,str2);
	};
	return temp;
};
/*************************************************************************/
var followBox = document.createElement("DIV");
followBox.id="followBox";
document.body.appendChild(followBox);
$css(
	"div#followBox {"+
		"width:auto;"+
		"position:fixed;"+
		"top:1px; left:1px;"+
		"text-align:right;"+
		"font-size:12px;"+
	"}"+
	"div#followBox a {"+
		"opacity:0.75;"+
		"margin:0 4px; padding:2px;"+
		"background-color:#333;"+
		"border:solid 1px #aaa;"+
		"color:#fff;"+
	"}"
);

/*************************************************************************/
if(conf_preventBrokenThumb){
$css(//サムネ切れテレビちゃん化
	"img.video_w48:-moz-broken, img.video_w80:-moz-broken, img.video_w96:-moz-broken, img.video_w128:-moz-broken, img.g-thumbnail-image:-moz-broken {"+
		"display:inline-block;"+
		"background-image:url(http://res.nicovideo.jp/img/base/head/icon/nico/000.gif);"+
		"background-repeat:no-repeat;"+
		"background-position:center center;"+
		"background-color:#fff;"+
		"color:#aaa;"+
		"font-size:0;"+
		"line-height:10px;"+
		"text-align:left;"+
		"overflow:hidden;"+
	"}"
	);
}
/*************************************************************************/
if(conf_preventHorizontalScroll){
	$css(//overflow-x
	"html {"+
		"margin-left:-2px;"+
		"overflow-x:hidden;"+
	"}"
	);
}
/*************************************************************************/
if(conf_pageAlign==1){
	$css("body {margin:0;background-position:left top;}");
}else if(conf_pageAlign==2){
	$css("body {margin:0 0 0 auto;background-position:right top;}");
}
/*************************************************************************/

if(conf_randomLink) {
	$css(
		"div.topline a {color:#fff;}"
	);
	
	//入れ物
	target = followBox;
	
	//材料
	f = document.getElementById("PAGEFOOTER");
	strong = f.getElementsByTagName("strong");
	nums_video = strong[0].innerHTML;
	nums_video = nums_video.replaceAll(",","");
	
	var knockTimes = 0;
	var knockLimit = 1;
	var wait       = 1000;
	if(knockLimit<=1){wait=0}
	
	var boost = 0;
	if(boost){
		knockLimit = 20;
		wait = 500;
	}
	
	findAvailableID = function(knock) {
		randmized_id = Math.floor(Math.random()*nums_video+1);
		url = "http://ext.nicovideo.jp/api/getthumbinfo/sm"+randmized_id;
		if(knock!==false){
			GM_xmlhttpRequest({
			    method : "GET",
			    url    : url,
			    onload : checkFoundID
			});
		}else{
			checkFoundID("");
		}
	}
	
    checkFoundID = function(res) {
		if(res && res.responseText.indexOf('status="fail"')!=-1 && knockTimes<knockLimit){
			if(knockTimes==0){randomlink.style.color="#ffaa00"}
			knockTimes++;
			if(knockLimit>2){randomlink.innerHTML = "探し中 "+knockTimes;}
			if(knockTimes<=knockLimit){
				setTimeout(function(){findAvailableID()},wait);
			}else{
				findAvailableID(false);
			}
		}else{
			location.href = "/watch/sm"+randmized_id;
		}
    }
	
	var sepa       = document.createTextNode(" | ");
	var randomlink = document.createElement("a");
	randomlink.addEventListener("click",findAvailableID,false);
	randomlink.innerHTML = "気まぐれ";
	randomlink.href = "javascript:;";
	//target.appendChild(sepa);
	target.appendChild(randomlink);
}
/*************************************************************************/
/*
if(conf_comToDefThreadLink && _unsafeWindow.Video){
	var Video = _unsafeWindow.Video;
	if(Video.id!=Video.v){
		alert("コミュニティ or チャンネル or マイメモリー");
	}
}
*/
/*************************************************************************/
if(conf_r18tab && unsafeWindow._udl){
	//alert(unsafeWindow._udl);
	//http://www.nicovideo.jp/ranking/mylist/daily/music/
	
	var rankingurl = location.href;
	p = rankingurl.split("/");
	if(p[3]=="ranking"&&p[5]!="hourly"&&p[6]!="ichiba"){
		var PAGEBODY = document.getElementById("PAGEBODY");
		var tds = PAGEBODY.getElementsByTagName("TD");
		var r18tab = document.createElement("A");
		if(p[6]=="r18"){
			r18tab.className = "tab_a0";
		}else{
			r18tab.className = "tab_a1";
		}
		r18tab.href = p[0]+"/"+p[1]+"/"+p[2]+"/"+p[3]+"/"+p[4]+"/"+p[5]+"/"+"r18";
		var div = document.createElement("DIV");
		div.innerHTML = "R-18";
		r18tab.appendChild(div);
		tds[0].appendChild(r18tab);
	}
}
/*************************************************************************/
$css_write();