V2EX Pro

为V2EX添加自动签到、替换站内搜索引擎、标记@楼主和@管理员等功能。

目前为 2020-03-13 提交的版本。查看 最新版本

// ==UserScript==
// @name           V2EX Pro
// @description    为V2EX添加自动签到、替换站内搜索引擎、标记@楼主和@管理员等功能。
// @icon           https://i.loli.net/2020/03/13/DMA2TbVNUwyoFcQ.jpg
// @author         yjxjn
// @include        https://*.v2ex.com/*
// @include        https://v2ex.com/*
// @version        2020.03.13
// @grant          none
// @namespace      https://gf.qytechs.cn/users/457965
// ==/UserScript==

(function () {
    'use strict';
    document.body.innerHTML += '<a href="#" id="back-to-top">↑回到顶部</a>';
    var top_button = document.getElementById('back-to-top');

    //为按钮添加css样式
    top_button.style.position = 'fixed';
    top_button.style.bottom = '3em';
    top_button.style.right = '3em';
    top_button.style.textDecoration = 'none';
    top_button.style.color = '#EEEEEE';
    top_button.style.backgroundColor = 'rgba(0, 0, 0, 0.3)';
    top_button.style.fontSize = '12px';
    top_button.style.padding = '1em';
    top_button.style.display = 'none';
    top_button.style.borderRadius = '3px';
    top_button.style.border = '1px solid #CCCCCC';

    // 点击回到顶部
    document.getElementById('back-to-top').addEventListener('click', function (event) {
        event.preventDefault();
        window.scrollTo(0, 0);
        setTimeout(function () {
            document.getElementById('back-to-top').style.display = 'none';
        }, 100);
    });

    // 3、高亮作者回复
    /////////////////////////////////////////
    var author = document.getElementsByClassName('header')[0].children[0].children[0].getAttribute('href');
    var all_cell_div = document.getElementsByClassName('cell');

    for (var i in all_cell_div) {
        if (all_cell_div[i].id !== "") {
            try {
                var href = all_cell_div[i].children[0].children[0].children[0].children[2].children[2].children[0].getAttribute('href');
                var box = all_cell_div[i].children[0].children[0].children[0].children[2];
                if (author == href) {
                    box.style.backgroundColor = '';
                }
            } catch (e) {
                //console.log(e);
                continue;
            }
        }
    }
})();


//替换为SOV2EX搜索
(function() {
    'use strict';
    $("form").each(function(){
        var action = $(this).attr("action");
        if(action.indexOf("google") !== -1) {
            $(this).attr("action", "https://www.sov2ex.com");
            $(this).removeAttr("onsubmit");
        }
    });

})();

//签到
(function(){
	var load, execute, loadAndExecute;
	load = function(a, b, c) {
			var d;
			d = document.createElement("script"), d.setAttribute("src", a), b != null && d.addEventListener("load", b), c != null && d.addEventListener("error", c), document.body.appendChild(d);
			return d;
	}, execute = function(a) {
			var b, c;
			typeof a == "function" ? b = "(" + a + ")();" : b = a, c = document.createElement("script"), c.textContent = b, document.body.appendChild(c);
			return c;
	}, loadAndExecute = function(a, b) {
			return load(a, function() {
					return execute(b);
			});
	};

	loadAndExecute("//lib.sinaapp.com/js/jquery/2.0/jquery.min.js", function() {
			if ( !$("a[href='/signup']").length && !$("a[href='/signin']").length && document.body.innerHTML.indexOf(";<\/span> 创建新回复<\/div>") == -1 ) {
					var uid=$.find('a[href^="/member/"]')[0].innerHTML;//用户名
					var dateinfo=new Date().getUTCDate();//获得GMT时间今天几号
					var SigninInfo=uid + ":" + dateinfo + "";
					var daily = $('input[id="q"]');
					if (daily.length && localStorage.SigninInfo != SigninInfo ) {
							$.ajax({url:"/"});
							daily.val("正在检测每日签到状态...");
							$.ajax({
									url: "/mission/daily",
									success: function(data) {
											var awards = $(data).find('input[value^="领取"]');
											if (awards.length) {
													// daily.val("正在" + awards.attr("value") + "...");
													daily.val("正在领取今日的登录(不可用)奖励......");
													$.ajax({
															url: awards.attr('onclick').match(/(?=\/).+?(?=\')/),
															success: function(data) {
																	daily.val("正在提交...");
																	var days=data.split("已连续登")[1].split(" ")[1];
																	if ( $('a[href="/mission/daily"]').length==1 ) {$('a[href="/mission/daily"]').parent().parent().fadeOut(3000);}
																	$.ajax({
																			url: "/balance",
																			success: function(data) {
																					function p(s) {return s < 10 ? '0' + s: s;} //自动补0
																					var date2="" + new Date().getUTCFullYear() + p(new Date().getUTCMonth()+1) +p(new Date().getUTCDate());
																					if (data.indexOf(date2+" 的每日登录(不可用)奖励")!="-1") {
																							daily.val( "已连续领取" + days + "天,本次领到" + data.split("每日登录(不可用)")[2].split(" ")[1] + "铜币" );
																							localStorage.SigninInfo = SigninInfo;
																					} else {
																							daily.val( "自动领取遇到意外,你可以试试手动领。" );
																					}
																			}
																	});
															},
															error: function() {
																	daily.val("网络异常 :(");
															}
													});
											}else{
													if (data.indexOf("已领取") != -1) {
															daily.val("今日奖励领取过了");
															localStorage.SigninInfo = SigninInfo;
													} else {
															daily.val("无法辩识领奖按钮 :(");
													}

											}
									},
									error: function() {
											daily.val("请手动领取今日的登录(不可用)奖励!");
									}
							});
					} else {
							//console.log("");
					}
			}
	});
})();

//标记楼主
(function (){
	var uid=document.getElementById("Rightbar").getElementsByTagName("a")[0].href.split("/member/")[1];//自己用户名
	if (location.href.indexOf(".com/t/") != -1) {
		var lzname=document.getElementById("Main").getElementsByClassName("avatar")[0].parentNode.href.split("/member/")[1];
		var allname='@'+lzname+' ';
		var all_elem = document.getElementsByClassName("dark");
		for(var i=0; i<all_elem.length; i++) {
			if (all_elem[i].innerHTML == lzname){
				all_elem[i].innerHTML += " <font color=green>[楼主]</font>";
				}
			//为回复所有人做准备
			if ( uid != all_elem[i].innerHTML && all_elem[i].href.indexOf("/member/") != -1 && all_elem[i].innerText == all_elem[i].innerHTML && allname.indexOf('@'+all_elem[i].innerHTML+' ') == -1 ) {
				allname+='@'+ all_elem[i].innerHTML+' ';
			}
		}
	}

	if ( document.getElementById("reply_content") ) {
		document.getElementById("reply_content").parentNode.innerHTML+="&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:;' onclick='if ( document.getElementById(\"reply_content\").value.indexOf(\""+allname+"\") == -1 ) {document.getElementById(\"reply_content\").value+=\"\\r\\n"+allname+"\"}'>@所有人</a>";
		if ( document.body.style.WebkitBoxShadow !== undefined ) {
			//允许调整回复框高度
			document.getElementById("reply_content").style.resize="vertical";
		}
		document.getElementById("reply_content").style.overflow="auto";
		var magagers="@Livid @Kai @Olivia @GordianZ @sparanoid";
		document.getElementById("reply_content").parentNode.innerHTML+="&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:;' onclick='if ( document.getElementById(\"reply_content\").value.indexOf(\""+magagers+"\") == -1 ) {document.getElementById(\"reply_content\").value+=\"\\r\\n"+magagers+"\"}'>@管理员</a>";
	}
})();

// 图片链接自动转换成图片
(function (){
    var links = document.links;
    for (var i=0;i<links.length;i++){
        var link = links[i];
        if (/^http.*\.(?:jpg|jpeg|jpe|bmp|png|gif)/i.test(link.href)
            && !/<img\s/i.test(link.innerHTML) && link.href.indexOf("v2ex.com/tag")==-1){
            link.innerHTML = "<img title='" + link.href + "' src='" + link.href + "' />";
        }
    }
})();
//

//新浪图床的图片反防盗链
(function (){
    var images = document.images;
    for (var i=0;i<images.length;i++){
        var image = images[i];
        if ( image.src && image.src.indexOf(".sinaimg.cn")!=-1 &&image.src.indexOf(".sinaimg.cn")<13 ) {
			image.setAttribute("referrerPolicy","no-referrer");
			image.src=image.src + "?";
        }
    }
})();

//V2EX帖子盖楼显示
(function() {
    'use strict';

    // Your code here...
    var a = $('div.cell > table > tbody > tr > td:nth-child(3) > div.fr > span').get().map(i=>i.innerHTML);
    var b = $('div.cell > table > tbody > tr > td:nth-child(3) > div.reply_content').get().map(i=>i.innerHTML);
    var c = $('div.cell > table > tbody > tr > td:nth-child(3) > strong > a').get().map(i=>i.innerHTML);

    var d = $('div.cell > table > tbody > tr > td:nth-child(3) > div.reply_content');
    var m = $('#Main > div:nth-child(4) > div[id].cell');

    var e = $('div.cell > table > tbody > tr > td:nth-child(3) > strong > a');
    var x = $('#Main > div:nth-child(2) > div.header > small > a')[0].innerHTML;
    var y = $('#Rightbar > div:nth-child(2) > div:nth-child(1) > table:nth-child(1) > tbody > tr > td:nth-child(3) > span > a')
    y = y.length?y[0].innerHTML :null ;
    var z = "why2fly";

    var i = 1;
    while(i< m.length){

        if( c[i] == x )
        {
            e[i].setAttribute('style','color:blue');
        }
        else if( c[i] == y )
        {
            e[i].setAttribute('style','color:black');
        }
        else if( c[i] == z )
        {
            e[i].setAttribute('style','color:yellow');
        }

        if(b[i].match("楼上"))
        {
            console.log(a[i]+" have @楼上 #"+i);
            d[i-1].append(m[i]);
        }

        for(var j=i-1;j>=0;j--){
            if(b[i].match(c[j])){
                console.log(a[i]+" have @"+c[j] + " #"+(j+1));
                d[j].append(m[i]);
                break;
            }
        }
        i++;
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址