V2EX增强插件

1.回复标记楼主ID 2.每天打开V2EX网站任意页面时自动领取签到的登陆奖励 3.回复时可@所有人 4.召唤/呼叫管理员 5.链接自动转图片

目前為 2024-03-08 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name                        V2EX增强插件
// @description         1.回复标记楼主ID 2.每天打开V2EX网站任意页面时自动领取签到的登陆奖励 3.回复时可@所有人 4.召唤/呼叫管理员 5.链接自动转图片
// @namespace   yfmx746qpx8vhhmrgzt9s4cijmejj3tn
// @icon                        http://ww1.sinaimg.cn/large/4ec98f50jw1e85azvlnh9j206y06y3ye.jpg
// @author                      me
// @match        https://*.v2ex.com/*
// @match        https://v2ex.com/*
// @version                     2024.03.08
// @grant        none
// ==/UserScript==

// 2024.03.08 新消息界面,回复提醒对比感谢提醒更加醒目
// 2024.02.27 回复框增加快捷回复,建议广告贴发在推广节点
// 2024.01.16 新消息界面,显示消息序号,页码链接显示序号范围
// 2024.01.08 更新管理员列表,标记回帖中漏标记的管理员
// 2023.12.27 避免链接转图片的大小超出布局
// 2021.11.26 账户余额页面增加签到页面链接
// 2020.10.19 首页增加全文搜索链接
// 2020.10.10 解决由于改版导致的定位错误导致无法签到问题
// 2019.10.25 解决Safari不能重加载新浪图片
// 2019.08.01 修正帖子tag区域的链接转图片误判
// 2019.05.12 新浪的图片反防盗链
// 2017.05.16 由于存储数据出错,改变存储数据的方式
// 2016.09.21 修复发帖页面判断用户名出错的情况
// 2016.09.14 修正判断登录状态逻辑
// 2016.05.25 链接自动转图片
// 2016.05.21 新增召唤/呼叫管理员
// 2016.05.09 Webkit内核允许修改回复框高度
// 2016.04.12 在回复时可@所有人
// 2015.10.16 新增在回复中标记楼主
// 2015.03.22 尝试修正未知原因情况下导致的签到失败。
// 2015.02.07 解决JQuery库在某种情况可能会无法载入
// 2014.10.07 某种情况下会产生cookie重复赋值,增加清理补丁。
// 2014.10.06 cookie信息过期时间改为3天


//签到
setTimeout(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[class='balance_area']").length > 0 && $("a[href='/settings']").length > 0 ) {
		var uid=$.find('a[href^="/member/"]')[0].innerHTML;//用户名
		var dateinfo=new Date().getUTCDate();//获得GMT时间今天几号
		var SigninInfo=uid + ":" + dateinfo + "";
		var daily = $('input[id="search"]');
		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("");
		}
	}
});
//

//帖子标记个别没有自动标记的管理员,回复所有人
if (location.href.indexOf("/t/") != -1) {
(function (){
	var modarr=["Livid","Kai","Olivia","GordianZ","sparanoid","Tink"];
	var modlist=modarr.join(" @");//生成@所有管理员的列表
	var uname=document.getElementById("Rightbar").getElementsByTagName("a")[0].href.split("/member/")[1];//自己用户名
	//标记管理员,预存回复用户名列表
	var lzname=document.getElementById("Main").getElementsByClassName("avatar")[0].parentNode.href.split("/member/")[1];
	var allname='@'+lzname+' ';
	var all_elem = document.querySelectorAll('a[href^="/member"].dark');
	for(var i=0; i<all_elem.length; i++) {
		if (modlist.indexOf(all_elem[i].innerHTML)!= -1){
			if (document.getElementsByClassName("badges")[i].innerHTML.indexOf("mod") == -1){
				document.getElementsByClassName("badges")[i].innerHTML+='<div class="badge mod">MOD</div>';
			}
		}
		//为回复所有人做准备
		if ( uname != 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";

		document.getElementById("reply_content").parentNode.innerHTML
			+="&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:;' onclick='if ( document.getElementById(\"reply_content\").value.indexOf(\""
			+modlist+"\") == -1 ) {document.getElementById(\"reply_content\").value+=\"\\r\\n"+modlist+"\"}'>@管理员</a>";
	}
})();
}
//

// 帖子回复框增加快捷回复,提示广告贴应发在推广节点
if (location.href.indexOf("/t/") != -1) {
(function(){
	document.getElementById("reply_content").parentNode.innerHTML
		+="&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:;' onclick='document.getElementById(\"reply_content\").value+=\"\\r\\n"+"广告和推广主题应该发在推广节点。"+"\"'>报告广告贴</a>";
})()
}//

// 图片链接自动转换成图片 代码来自caoyue@v2ex
(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 + "' style='max-width:98%' />";
        }
    }
})();
//

//新浪图床的图片反防盗链
(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 + "?";
        }
    }
})();
//

// 首页增加全文搜索链接
if ( location.pathname=="/" && $('div[id="SecondaryTabs"]').length > 0 ) {
	document.getElementById("SecondaryTabs").innerHTML+='&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://www.sov2ex.com/" >全文搜索</a>'
}
//

// 在账户余额界面/明细界面的上方增加签到页面链接
if ( location.href.indexOf("/balance") != -1 && document.getElementsByClassName("tab").length > 0) {
	document.getElementsByClassName("tab")[0].parentNode.innerHTML+='<a class="tab" href="/mission/daily" >签到</a>'
}
//

// 新消息界面,显示消息序号,页码链接显示序号范围
if (location.href.indexOf("/notifications") != -1){
(function(){
	var page_index=new URL(window.location.href).searchParams.get('p');
	var before_index=0;
	if(page_index!=null){
		before_index=(page_index-1)*50;
	}
	document.querySelectorAll("a[onclick^=delete]").forEach((ele,i)=>{
		var index_ele=document.createElement("span");
		index_ele.innerText=(i+1+before_index)+". ";
		ele.parentElement.insertBefore(index_ele,ele.parentElement.firstElementChild)
	})
	var allmsgcount=document.querySelectorAll(".header .gray")[0].innerText;//消息总数
	document.querySelectorAll(".page_current,.page_normal").forEach((ele)=>{
		var index_a=(ele.innerText-1)*50+1;
		var index_b=(ele.innerText-1)*50+50;
		var title_str=index_a+"-"+index_b;
		if(allmsgcount-index_a<50){
			title_str=index_a+"-"+allmsgcount;
		}
		ele.setAttribute("title",title_str)
	})
})();
}
//

// 新消息界面,回复提醒对比感谢提醒更加醒目
if (location.href.indexOf("/notifications") != -1){
(function(){
    if(document.querySelectorAll(".payload").length > 0){
        document.querySelectorAll(".payload").forEach((ele) => {
			if(ele.parentElement.innerText.indexOf("时提到了你") != -1){
				ele.style.backgroundColor="#F9EA9A";
			}
		})
    }
})();
}
//

},0);
// end