// ==UserScript==
// @name Acfun过滤UP计划
// @namespace http://tampermonkey.net/
// @version 1.26
// @description 帮助你屏蔽不想看的UP主
// @author 人文情怀
// @match http://www.acfun.cn/a/ac*
// @match http://www.acfun.cn/v/list63
// @match https://www.acfun.cn/a/ac*
// @match http://www.acfun.cn/*
// @match https://www.acfun.cn/*
// @match https://www.acfun.cn/v/list*
// @match http://www.acfun.cn/a/ac*
// @match https://www.acfun.cn/a/ac*
// @match http://www.acfun.cn/v/ac*
// @match https://www.acfun.cn/v/ac*
// @match https://www.acfun.cn/v/as*
// @match http://www.acfun.cn/v/as*
// @connect gf.qytechs.cn
// @require https://code.jquery.com/jquery-3.4.1.min.js
// @grant GM.getValue
// @grant GM.setValue
// @grant GM.xmlHttpRequest
// @grant unsafeWindow
// @run-at document-idle
// ==/UserScript==
function core() {
'use strict';
let version="1.26";
$.info = unsafeWindow.$.info;
let empty = (a) => {
return typeof a=="undefined" ? ()=>{} : a;
};
//TamperMonkey 和 GreaseMonkey兼容
let GM_set = typeof GM_setValue == "undefined" ?
function (key, value, callback, failcallback) {
//console.log("GM.setvalue")
let p = GM.setValue(key, value);
p.then(empty(callback), empty(failcallback));
}
: function (key, value, callback) {
let res = GM_setValue(key, value);
callback();
};
let GM_get = typeof GM_getValue == "undefined" ?
function (key, value, callback) {
let p = GM.getValue(key, value);
p.then((debug)=>{empty(callback)(debug); }, ()=>{callback(value);});
//console.log("empty", empty(callback));
}
: function (key, value, callback, failcallback) {
let res = GM_getValue(key, value);
callback(res);
}
//检查更新
function checkUpdate(callback){
GM.xmlHttpRequest({
method: "GET",
url: "https://gf.qytechs.cn/scripts/381476-acfun%E8%BF%87%E6%BB%A4up%E8%AE%A1%E5%88%92/code/Acfun%E8%BF%87%E6%BB%A4UP%E8%AE%A1%E5%88%92.user.js",
onload: function(response) {
let text = response.responseText;
let p = /@version +(\d+\.\d+)/
let arr = p.exec(text);
let latest=arr[1];
callback(latest);
}
});
}
//清空列表。DEBUG用
function cleanList() {
GM_set("ACFUN_BLOCK_LIST", []);
}
let up = function (callback) {
GM_get("ACFUN_BLOCK_LIST", [], callback);
};
function addToList(id, callback) {
//let old =
up((old) => {
if (old.indexOf(id) >= 0) {
$.info.show("你已经屏蔽过UP主[" + id + "]啦!")
return;
}
old.push(id);
GM_set("ACFUN_BLOCK_LIST", old, () => {
$.info.show("已将UP主[" + id + "]加入屏蔽列表")
empty(callback)();
});
});
}
function removeFromList(id, callback) {
up((old) => {
let i = old.indexOf(id);
if (i >= 0) {
old.splice(i, 1);
}
GM_set("ACFUN_BLOCK_LIST", old, () => {
$.info.show("已将UP主[" + id + "]移出屏蔽列表。");
empty(callback)();
});
});
}
let filterButton = document.createElement("div");
function initButton() {
document.body.appendChild(filterButton);
$(filterButton)
.css("width", "15px")
.css("height", "15px")
.css("background-color", "rgba(255,0,0,1)")
.css("font-familty", "'黑体',serif")
.css("font-weight", "600")
.css("font-size", "11px")
.css("padding", "1.5px")
.css("left", "0")
.css("top", "0")
.css("transform", "translate(0,0)")
.css("display", "none")
.css("position", "absolute")
.css("z-index", "99999")
.css("background-size", "contain")
.css("background-image", "url(data:image/png;base64,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)")
.css("border-radius","11px")
.css("border","2px rgb(230,230,230) solid")
.css("cursor","pointer")
}
function handleSpecialJSONstr(str){
let chunk =str.split("\"title\":\"");
let later = chunk[1].split("\"");
let title = later[0];
let res = str.replace(title,"");
return res;
}
//获得所有主页的UP的DOM TAG
function getHomeSelection() {
//if (typeof addMark == "undefined") {
// addMark = false;
//}
let res = [];
//过滤主页视频
let selections = $("a[data-info]");
for (let i = 0; i < selections.length; i++) {
let tag = selections[i];
let info = $(tag).attr("data-info");
let json="";
try{
json = JSON.parse(handleSpecialJSONstr(info));
let username = json.userName;
res.push({tag: $(tag).parent()[0], username: username, type: 1});
}catch(e){
console.error(e);
}
//$(tag)
}
//过滤右边排行榜视频
let sel = $("ul[data-con]");
//For each rank
for (let i = 0; i < sel.length; i++) {
let tag = sel[i];
let rows = $(tag).find("li");
//For each row
for (let ri = 0; ri < rows.length; ri++) {
let rowTag = rows[ri];
let aTag = $(rowTag).find("[title]")[0];
let title = $(aTag).attr("title");
let matches = usernameByTitle(title)
if (matches) {
let username = matches[0].substring(3).trim();
//$(rowTag)
res.push({tag: rowTag, username: username, type: 2});
}
}
}
//--------------------
sel = $("div[data-con]");
for (let i = 0; i < sel.length; i++) {
let tag = sel[i];
let rows = $(tag).find("li");
//For each row
for (let ri = 0; ri < rows.length; ri++) {
let rowTag = rows[ri];
let aTag = $(rowTag).find("[title]")[0];
let title = $(aTag).attr("title");
if (title) {
let matches = usernameByTitle(title)
if (matches) {
let username = matches[0].substring(3).trim();
res.push({tag: rowTag, username: username, type: 3});
}
}
}
}
//香蕉搒
var allBananas = $("figure.fl.block-box.block-video.weblog-item").find("> figcaption > em > a");
for (let i = 0; i < allBananas.length; i++) {
let sel = allBananas[i];
let upname = $(sel).attr("title");
let tag = $(sel).parent().parent().parent()[0];
//console.log(tag);
res.push({tag: tag, username: upname, type: 1});
}
return res;
}
function getListSelection() {
let res = [];
let sel = $("div.weblog-item");
//console.log("sel weblog")
for (let i = 0; i < sel.length; i++) {
let row = sel[i];
let aTag = $(row).find(".atc-up")[0];
let username = $(aTag).attr("title");
res.push({tag: row, username: username, type: 4});
}
return res;
}
let pageType = "home";
function displayList() {
up((data)=>{
$("#blocklist").empty();
for (let i=0;i<data.length;i++){
let style1 = "font-size:13px;display:inline-block;margin:2px;height:18px;background-color:white;"
let style2 = "width:18px; height:18px; line-height:18px; padding: 2px; background-color: rgb(255,120,120); border-width:0; font-size:15px";
let b = $("<div class='blockname' style='"+style1+"'><span>"+data[i]+"</span><button style='"+style2+"'>×</button></div>")
let str = data[i];
b.on("click", function(){
removeFromList(str, ()=>{
displayList();
if(pageType=="home"){
FilterVideos();
FilterArticles();
}else{
FilterListPage();
}
});
});
$("#blocklist").append(b);
}
});
}
let show = false;
let dragging =false;
function banana(i){
let res = "<div id='banana_"+i+"'class='bbanana' style='cursor: pointer;display:inline-block;height:20px; width:20px; background-image:url(https://cdn.aixifan.com/acfun-pc/2.7.49/img/page/detail/banana_0.png);background-position: center; background-repeat:no-repeat; background-size:contain'></div>";
return res
}
function feedBanana(n){
try{
let ajax = $.ajax;
let a = btoa(Math.random().toString(36).substr(2))
let str = '$.cookie("stochastic","'+a+'",{path:"/"});';
console.log(str);
unsafeWindow.eval();
let cookie = unsafeWindow.eval('(()=>{return })();');
let command = str+
`
let a = btoa(Math.random().toString(36).substr(2));
$.cookie("stochastic",a ,{path:"/"});
let c = $.cookie("_did");
$.ajax({
type:"post",
url: "/nd/pst?locationPath=throwBanana&certified="+a,
beforeSend: function(e) {
e.setRequestHeader("udid", c)
},
data: {
contentId: "10271618",
count: `+(n+1)+`,
userId: $.user.uid,
},
dataType: "json",
xhrFields: {
withCredentials: !0
}
}).done(function(e){
if (e.success>0){
$.info.success("成功投食了作者"+`+(n+1)+`+"根香蕉O(∩_∩)O。谢谢支持!", 3e3)
}else{
$.info.warning("投食作者失败了。"+e.info, 3e3);
}
}).fail(function(){
$.info.warning("投食作者失败了 /(ㄒoㄒ)/~~。请于稍后重新操作。", 3e3)
})`
unsafeWindow.eval(command);
}catch(e){
console.log("投食DEBUG",e);
}
}
let banana_n = -1;
function attachBananaEvent(){
let banana_0="url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAACaUlEQVR4Ab2WA7AcTRSF88e2XYptFGOzFNu2bdu2bdu2bTvje3LeTviMnn+qvt19PdN9rudFUn1Bu/sfxFoOyFPylb8PcS2+ciF/oolgPOlCukK/3xr6486wPgwHjfFOVKx8EPMiHP0QxWZDnBcAFnrrKZCRdCPHIfYzADNI5Ej/xwXnW3WIcRLAZC91/Oe2GKz3UxniMfydzOvwRgFkOoxnvSjW3Ifxojsgub0UHQKxbkJ/2O6XKL2dAeAWIHG8EEwHyCe2SzdX8C/c/A5UL2p/qgr781JXyB/G894AnrPAoqsuniqkeZC4IU+vMrTR4Wh7gxd90Bbmq7IqRfND7CfBinJCAVinUFQ60tODIYhOA7BRpadHwUODFbU/LwEwT1UBpeOBy6DdaxmCp9MhVhP/1maG2H5jqzqsd10AbAFkImkNsYpxPY6/5xPA+e5XsY1I81CS7NfmSuQkeQfn63q30h514Oyc7Os7RzsA+8sqN0QfZwJ4TF4QHWKc43qLEMXMl4N4xrRfoYkK/XFzejaJ5Tw4xM18McN42p2ztSe0+61C7aE7kbr/NUk+t4f5erj7gHrozBAAr0nCv3PTh7nZ6Zmo62Vz/z1WHOI8/5Ub5egPKgP4L7A+Owvr7VilYs63zSwevzMDH/KsyrS82RjsNQWetfFNJ+AqIClCavKUEOsk87vLfSOEO4dnAawniUI7zlKQRYB8Zng2htoz68Ms2J8W8u/aTFO+8P7/mo4hasBDajL0c/j3bTj6YZ8h9td1vqJjNLh+F4BGDgNOPa5HUTXME5CSpCUZSkZyYhWmQDZ3XeKG5bwfy2sngYJT7nMAAAAASUVORK5CYII=)"
let banana_1="url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAEQklEQVR4Ab2WA5hkuRbHe2ZRN7mFNqvWtvH2rW2Mbdtt27Zt2zbGtm116Ww6rTtW1Z7v+8fJL040VG3eMwTv+80W9ATNF+7wmyXYYzeKzdRQt3lPF2yWb5fAvnIxdKWaQIGHgdRtkmCJWqG+s0QHtuSK4XynBA5Xi+FMiwk4jGGL1Ao1+5V/PHyJ8PjeUhOothGC9V/87cu/Yl5QK3T+xzxtAvmlwl9P3maPwfYPPE3jv7CV3zATW6L1pDvDhOA5Hm8hHcFqBdqPYpfEr9U8tbNQDLDNBA4EIQiYhPYT8Ai1AG3/Zn/Nstc62xIrBtlWCcAuovWGsN6RBxEzUI461nKE2yT+totdEtiQLqbAIZWLIG4WI/f4m2esUuia79EP1UG6V3rSxKDYTmHD6jGEA75ktDNRvkqhjmPYnEtdJrAlhzNKrlJ4EDIVnVEp1H0yf4tyJ7mJyu4ATWUgeApfSpYBqWo9+ZHLRUfPtErg+ubbADsMAJJ5EDVTqCRl31QJdN2PaFRbrJ70yoYByIHvAHY/2x/eSZTLUmjYdM0+6DsqgTqNY8u35XKm9di84XCDDgVKExjwHq+pINCnb54mtPo79Ds54KvNf8Hzlvyf+ZKk6d8NaPk7/tNvjt7lg5UD0APfAhydOXRGIYWh0B5HPvhNElwl7Y0cONR4FAF5kM1woCtRX36o0gh2FxlCc5SeLNlC8wR5H3e7jGfbyIhS7f5hzcx/xZOs/8TzSbzId5buxaO1A6Pa9xHAGY/+8BZjgAxEgX3KW6YJ/pPxfgpc9S16PWKp8MTGDCOyCW7aef3rMqS+I7G/3Ah25BvQTl3dwCl/6B+Ak1Yk/AwBmgBk4SHgmTAEuUsF4DkBu1Go3d84aluarrKH3CJH62+CSvdQ/47a/QLA4XEAx5cAHPypP22jEUAmBQ6pap0IomahvqkVDq7jkymLUG9vgQgur5eAfPudIJwp3P8pgfxGRvcHwJ6Xh/Pa9Ol55AJ3erLQYYfBawLO1uBa2Ex8hhYqFcH+YmOQbbsD8A6i61cipBCuToUi2OrGB98J6CIdJdeiFvFXXImhBel1tSNCGy40GN4TRndnuYjWuRl4mqzjXh8W8lYimeM/eNztbpSRKYvxdW6l3d4sbPYSgLJEBFCnDdCo069abTojN68bVxciEd08jTZI4T4eB2jcyQJmsH/VWiIFt/K1WAY67AXQ5SCAqyRM0u5bFeZI7jIGR977+zgJB6YtZOTX425soDeeoYe73kII1WZCqCN+g6UQOkmHtrnz4VjQ8KgvRfEgag6+7DmZ/fH+n6i/0Gfke3GsZCWjPBd+/yO7EMmDglVIFreE70xvnYcxj1HM/0Ono7bw6eh85hJG1mbD0If4dChRGA+OhSLY7I2hxJyVhs/Cp5OXsUspTIVfEd1lXzDf2o1iLcnH2Zc82FEOo1lXs1/wBJKn+aDt/QuVqtkurjj8qQAAAABJRU5ErkJggg==)";
$(".bbanana").on("mouseover", function(){
let id = $(this).attr("id");
let n = parseInt(id.split("_")[1]);
banana_n=n;
let all = $(".bbanana");
for (let i = 0;i<all.length;i++){
let tid = $(all[i]).attr("id");
let tn = parseInt(tid.split("_")[1]);
if (tn<=n){
$(all[i]).css("background-image",banana_1)
}else{
$(all[i]).css("background-image",banana_0)
}
}
})
.on("click", function(){
let id = $(this).attr("id");
let n = parseInt(id.split("_")[1]);
feedBanana(n);
})
$("#banana_contain").on("mouseleave",function(){
$(".bbanana").css("background-image","url(https://cdn.aixifan.com/acfun-pc/2.7.49/img/page/detail/banana_0.png)")
})
}
function addPanel() {
let dx=0;
let dy=0;
let sx=0;
let sy=0;
let ox=0;
let oy=0;
let ppanel = $("<div id='blockbuttoncontainer' style=';z-index:999;position:fixed; left: 0; top: 0px;text-orientation:upright;'></div>");
let dragbutton = $("<div id='blockdrag' style='height:17px; width: 23px; background-color:rgb(230, 121, 126);text-align:center;cursor:grab; user-select:none'>|||||</div>")
let pbutton = $("<button id='blockbutton' style='height: 80px; padding: 3px; width: 23px;background-color:rgb(255, 193, 193); border-width:0;'>屏蔽列表</button>");
let p = $("<div id='blockpanel' style=' width: 218px;display:none; padding: 0px;z-index:998;position:fixed; background-color:rgb(255, 196, 196);left:23px; top: 0px;; '></div>");
let plist = $("<div id='blocklist' style='background-color:rgb(226, 185, 185);height: 220px; border: 0px solid white; width: 210px; margin: 3px;overflow-y:scroll'></div>")
let pAd = $("<div style='border: 1px solid white; margin:3px;padding: 2px; font-size: 11px;background-color:rgb(255, 217, 67); color: black'>喜欢的话 安利哟:<a target='_blank' style='color:rgb(71, 71, 138); text-decoration: underline' href='/a/ac10271618'>ac10271618</a></div>")
let bananas = "<a id='banana_contain'>"+banana(0)+banana(1)+banana(2)+banana(3)+banana(4)+"</a>";
let pinfo =$("<div style='border: 0px solid white; margin:3px;padding: 2px; font-size: 11px;background-color:rgb(234, 200, 65); color: rgb(50,50,50)'>当前版本:"+version+" "+ bananas+"</div>")
let pupdate = $("<div style='background-color: green; color: white; display: none; margin:3px; padding: 2px;' id='update_info'></div>")
checkUpdate((v)=>{
console.log(v,version);
if (parseFloat(v)> parseFloat(version)){
pupdate.css("display","block")
.html("<a style='color:white' target='_blank' href='https://gf.qytechs.cn/en/scripts/381476'>可以升级至:"+v+" 👉</a>");
$.info.show("【AcFun屏蔽UP主计划】有新版本了!")
}
})
GM_get("ACFUN_BLOCK_POS", "{ox:0, oy:0}", (d)=>{
ox=parseInt(d.ox);
oy=parseInt(d.oy);
ox = isNaN(ox) ? 0 : ox;
oy = isNaN(oy) ? 300 : oy;
p.css("transform","translate("+(ox)+"px,"+(oy)+"px)");
$(ppanel).css("transform","translate("+(ox)+"px,"+(oy)+"px)");
});
$(document.body).append(ppanel);
ppanel.append(dragbutton);
ppanel.append(pbutton);
p.append(plist);
p.append(pAd);
p.append(pinfo);
p.append(pupdate);
$(document.body).append(p);
attachBananaEvent();
pbutton.on("click", function () {
show = !show;
p.css("display", show ? "block" : "none");
if (show) {
displayList();
}
})
dragbutton.on("mousedown", (event )=>{
sx=event.pageX;
sy=event.pageY;
dragging=true;
});
$(document).on("mouseup", ()=>{
if (dragging){
ox=dx+ox;
oy=dy+oy;
dx=0;
dy=0;
let maxHeight = $(window.top).height()-123;
let maxWidth = 240;
ox = ox>maxWidth?maxWidth:ox;
ox = ox<0?0:ox;
oy= oy<0?0:oy;
oy = oy>maxHeight? maxHeight: oy;
p.css("transform","translate("+(ox)+"px,"+(oy)+"px)");
$(ppanel).css("transform","translate("+(ox)+"px,"+(oy)+"px)");
GM_set("ACFUN_BLOCK_POS", {ox:ox,oy:oy}, (d)=>{
//console.log("DEBUG", "POSITION SET", ox, oy);
});
}
dragging=false;
});
$(document).on("mousemove",(event)=>{
if (dragging){
dx=event.pageX-sx;
dy=event.pageY-sy;
$(ppanel).css("transform","translate("+(dx+ox)+"px,"+(dy+oy)+"px)")
}
})
}
function addButton() {
//console.log("addbutton")
//console.log("page type", pageType);
let attach = function (list) {
//console.log("list",list)
for (let i = 0; i < list.length; i++) {
let tag = list[i].tag;
if ($(tag).hasClass("event-attached")) continue;
// console.log("debug tag",tag);
$(tag).addClass("event-attached");
$(tag).on("mousemove",function () {
if (window.currentTag == tag) return;
let rect = tag.getBoundingClientRect();
let brect = filterButton.getBoundingClientRect();
let button = $(filterButton).detach();
$(tag)
.css("white-space", "nowrap")
.css("overflow", "visible")
.css("position", "relative")
.append(button)
window.currentTag = tag;
window.currentUser = list[i].username;
$(filterButton).css("display","block").off("click");
if (pageType !== "home") {
$(filterButton)
.css("right", "0")
.css("top", "0")
.css("transform", "translate(0,0)")
}
$(filterButton)
.on("click",
function () {
//console.log("current", window.currentTag, window.currentUser);
if (typeof window.currentTag !== "undefined" && window.currentTag !== null) {
addToList(window.currentUser, ()=>{
displayList();
if(pageType=="home"){
FilterVideos();
FilterArticles();
}else{
FilterListPage();
}
});
}
})
.show();
})
$(tag).on("mouseleave",function () {
let rect = tag.getBoundingClientRect();
$(filterButton).detach();
window.currentTag = null;
window.currentUser = null;
$(filterButton).off("click").hide()
})
}
}
if (pageType == "home") {
let list = getHomeSelection("ATTACHED");
attach(list);
} else {
let list = getListSelection("ATTACHED");
//console.log("debug list", list)
attach(list);
}
}
let pannelAdded = false;
function watchHomepage(){
let mutationObserver = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
let target = mutation.target;
if ($(target).hasClass("clearfix") && $(target).hasClass("module-video")){
addButton();
HandleHomePage();
}
});
});
mutationObserver.observe(unsafeWindow.document, {subtree: true, childList: true});
}
function watchList(){
let mutationObserver = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
let target = mutation.target;
if ($(target).hasClass("article-list")){
addButton();
//屏蔽文章页,
FilterListPage();
}
});
});
mutationObserver.observe(unsafeWindow.document, {subtree: true, childList: true});
}
function addUI() {
if (!pannelAdded) {
addPanel();
pannelAdded = true;
if (pageType=="home"){
watchHomepage();
}else{
watchList();
}
}
}
function usernameByTitle(title) {
let regex = /UP:(.+)[\s\v\n]/g
return title.match(regex);
}
function hideTag(tag){
if ($(tag).css("display")!=="none"){
$(tag).css("transition","0.5s")
.css("-webkit-transition","0.5s")
.css("overflow","hidden")
let d=$(tag).css("display");
tag["_d"]=d;
tag["_h"]=$(tag).css("height")
console.log("hide tag",tag["_d"], tag["_h"]);
$(tag).css("height","0px");
setTimeout(()=>{
$(tag).css("display", "none");
},500)
let bar = $(tag).next();
//console.log(bar);
if (bar.length>0 && $(bar).prop("tagName").toUpperCase()=="HR"){
$(bar).css("display", "none");
}
}
}
function showTag(tag){
if ($(tag).css("display")=="none"){
console.log("show tag",tag["_d"], tag["_h"]);
$(tag).css("transition","0.5s")
.css("-webkit-transition","0.5s")
.css("overflow","hidden")
if (typeof tag["_d"]!=="undefined"){
$(tag).css("display", tag["_d"]);
$(tag).css("height", tag["_h"]);
}else{
$(tag).css("display", "block");
}
let bar = $(tag).next();
if ($(bar).prop("tagName").toUpperCase()=="HR"){
$(bar).css("display", "block");
}
}
}
function FilterVideos() {
up((upList) => {
//过滤主页视频
let selections = getHomeSelection("FILTER", false, false);
for (let i = 0; i < selections.length; i++) {
let tag = selections[i].tag;
let username = selections[i].username;
if (upList.indexOf(username) >= 0) {
//console.log("hiding", tag);
hideTag(tag);
} else {
showTag(tag);
}
}
//过滤右边排行榜视频
let sel = $("ul[data-con]");
//For each rank
for (let i = 0; i < sel.length; i++) {
let tag = sel[i];
let rows = $(tag).find("li");
//For each row
for (let ri = 0; ri < rows.length; ri++) {
let rowTag = rows[ri];
let aTag = $(rowTag).find("[title]")[0];
let title = $(aTag).attr("title");
let matches = usernameByTitle(title)
if (matches) {
let username = matches[0].substring(3).trim();
if (upList.indexOf(username) >= 0) {
//找到了,隐藏本条
hideTag(rowTag);
} else {
showTag(rowTag);
}
}
}
}
});
}
//过滤主页文章区
function FilterArticles() {
up((upList) => {
let sel = $("div[data-con]");
for (let i = 0; i < sel.length; i++) {
let tag = sel[i];
let rows = $(tag).find("li");
//For each row
for (let ri = 0; ri < rows.length; ri++) {
let rowTag = rows[ri];
let aTag = $(rowTag).find("[title]")[0];
let title = $(aTag).attr("title");
if (title) {
let matches = usernameByTitle(title);
if (matches) {
let username = matches[0].substring(3).trim();
if (upList.indexOf(username) >= 0) {
//找到了,隐藏本条
// console.log("过滤文脏区 rank=", i, "row=",ri,"username=",username);
hideTag(rowTag);
} else {
showTag(rowTag);
}
}
}
}
}
});
}
//过滤文章列表页
function FilterListPage() {
up(((upList) => {
let sel = getListSelection();
for (let i = 0; i < sel.length; i++) {
let row = sel[i].tag;
//if (typeof row.visited=="undefined"){ row.visited = true; }else{continue;}
//let aTag = $(row).find(".atc-up")[0];
let username = sel[i].username;
//console.log("username",username, window.currentUser);
if (upList.indexOf(username) >= 0) {
//console.log("过滤文脏区",username);
//屏蔽
hideTag(row);
} else {
showTag(row);
}
}
window.scrollTo(window.scrollX, window.scrollY + 1);
}))
}
function HandleHomePage() {
//屏蔽首页UP,包括视频和右边的文章区
FilterVideos();
FilterArticles();
//console.log("change buttons", changeButtons);
//setTimeout(HandleHomePage, 1000);
}
function HandleListPage() {
// console.log("debug timer list")
setTimeout(FilterListPage, 500);
}
function HandleArticlePage() {
//对于单独的文章页或者视频,添加一个按钮屏蔽当前UP主
console.log(window.location.href.indexOf("www.acfun.cn/a/ac"), window.location.href.indexOf("www.acfun.cn/v/ac"))
let button = $("<div style='z-index: 9999;position:fixed; left:0px; top: 200px; width:30px; padding: 5px; background-color: rgba(255,50,50,0.3);user-select:none; cursor: pointer;'>屏蔽UP</div>");
$(document.body).append(button);
button.on("click", function () {
let upname = "";
if (window.location.href.indexOf("www.acfun.cn/v/ac") >= 0) {
upname = $("a.name-wrap").html();
} else if (window.location.href.indexOf("www.acfun.cn/a/ac") >= 0) {
upname = $("a.upname").html();
}
addToList(upname);
})
}
function initLoad() {
if (typeof $ == "undefined") {
console.log("Loading..", typeof unsafeWindow.$);
$=unsafeWindow.$;
setTimeout(initLoad, 1000);
return;
}
function isArtileListPage(){
if ( window.location.href.indexOf("www.acfun.cn/v/as")>0) return true;
let t = ["list63","list110","list73","list164","list184","list74","list75"];
let url = window.location.href;
for (let i=0;i<t.length; i++){
if (url.indexOf(t[i])>=0) return true;
}
return false;
}
console.log("DEBUG body Loaded");
if (window.location.href === "http://www.acfun.cn/" || window.location.href === "https://www.acfun.cn/") {
pageType="home";
initButton(); addUI();addButton();
HandleHomePage();
}
if (window.location.href.indexOf("www.acfun.cn/v/list") >= 0 || window.location.href.indexOf("www.acfun.cn/v/as")>0 ) {
//可能是文章列表
if (isArtileListPage()){
pageType="list";
initButton(); addUI();
HandleListPage();
}else{
pageType="home";
initButton(); addUI();addButton();
HandleHomePage();
}
}
if (window.location.href.indexOf("www.acfun.cn/v/ac") >= 0 || window.location.href.indexOf("www.acfun.cn/a/ac") >= 0) {
HandleArticlePage();
}
$.info.success("ACFUN投稿屏蔽系统 —— 启动成功! 欢迎安利哟!")
}
initLoad();
};
core();