您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
btnull设置已看,用来找电影
// ==UserScript== // @name btnull设置已看 // @namespace 设置已看 // @version 1.0.0 // @description btnull设置已看,用来找电影 // @author 蓝白社野怪 // @include *btnull* // @icon https://www.google.com/s2/favicons?sz=64&domain=greasyfork.org // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js // @require https://cdn.sheetjs.com/xlsx-0.20.3/package/dist/xlsx.mini.min.js // @license GPLv3 // @grant unsafeWindow // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_listValues // ==/UserScript== // 透明度设置修改下面三个变量:数值越小越透明,1不透明、0完全透明 // *********************************************************** // 全局:视频封面(已看):透明度 设定(0.0-1.0) var opacityIsViewCover = 0.1; // 全局:未看按钮:透明度 设定(0.0-1.0) var opacitybtnView = 0.7; // 全局:已看按钮:透明度 设定(0.0-1.0) var opacitybtnIsView = 0.3; // *********************************************************** // 添加自定义样式 var GM_addStyle = GM_addStyle || function(css) { var style = document.createElement("style"); style.type = "text/css"; style.appendChild(document.createTextNode(css)); document.getElementsByTagName("head")[0].appendChild(style); }; $(document).ready(function() { 'use strict'; gateway(); obServerPicture2(); }); // 方法入口 var gateway = function(){ setUploadList(); setVideoIsViewed(); setBtnView(); } // 网站的列表,翻页只替换元素,不刷新,无法执行脚本,所以要监听元素变化 var obServerPicture2 = function(){ // 目标元素 const targetElement = document.querySelector('.content-list'); // 创建一个MutationObserver实例 const observer = new MutationObserver((mutations) => { if(mutations){ gateway(); } }); // 配置观察器 const config = { childList: true, }; // 启动观察器 observer.observe(targetElement, config); } // 自定义样式 var staticStyle = ` .btnView{opacity:`+opacitybtnView+`;width:40px;height: 25px;line-height:16px;font-size:12px;text-align:center;cursor:pointer;display:inline-block;position:absolute;right:0;top:0;z-index:2;border:1px solid #999;border-radius:3px;padding:3px 5px;background:#fff;color:black;} .btnIsView{opacity:`+opacitybtnIsView+`;background:rgba(255,255,255,0.5);} .btnView:hover{opacity:1;background:#aaa;color:#fff;} .btnIsView:hover{background:rgba(255,255,255,1);opacity:1;color:#999;} .btnRefresh{display:inline-block;position:absolute;z-index:1;right:52px;top:18px;background:#fff;border:1px solid #999;border-radius:5px;color:#999;padding:1px 5px;} .btnRefresh:hover{background:#aaa;color:#fff;} .btnList{display:inline-block;position:absolute;z-index:1;right:97px;top:18px;background:#fff;border:1px solid #999;border-radius:5px;color:#999;padding:1px 5px;} .btnList:hover{background:#aaa;color:#fff;} .btnListSave{display:inline-block;position:absolute;z-index:1;right:170px;top:18px;background:#fff;border:1px solid #999;border-radius:5px;color:#999;padding:1px 5px;display:none;} .btnListSave:hover{background:#aaa;color:#fff;} .viewList{width:100%;height:120px;display:none;color:#999;padding:1px 5px;} /*通用属性*/ .__scale-wrap .btnView{right:unset;width:40px;line-height:16px;}`; GM_addStyle(staticStyle); // bvid 影片id,bname 影片名称 var bvid = null; var bname = null; // viewGroupArr存影片时间,viewNameGroupArr存影片名称 var viewGroupArr = []; var viewNameGroupArr = []; viewGroupArr = GM_getValue("BtnullViewIdList",null); if(!viewGroupArr) viewGroupArr = []; viewNameGroupArr = GM_getValue("BtnullViewNameList",null); if(!viewNameGroupArr) viewNameGroupArr = []; // 设置上传按钮 var setUploadList = function(){ if($("#viewListUpload").length>0) return; else{ $(".sort div:first").before("<input type='file' id='viewListUpload' >"); $("#viewListUpload").bind("change", handleFile); } } // 读取上传的文件内容 var handleFile = function(e) { var nameArray = []; var timeArray = []; var file = e.target.files[0]; var reader = new FileReader(); reader.readAsArrayBuffer(file); //reader.readAsText(file,'GB2312'); reader.onload = function(e) { var data = e.target.result; /* reader.readAsArrayBuffer(file) -> data will be an ArrayBuffer */ //var workbook = XLSX.read(data,{ type: "binary", codepage: 936 }); var workbook = XLSX.read(data); var mySheet = workbook.Sheets.Sheet1; let s = mySheet['!ref']; var sheetHeight = s.slice(s.indexOf(':')+2); //循环读取数据 for(let i = 2;i<=sheetHeight;i++){ var name = mySheet["A"+i].w; var time = null; var timecol = mySheet["E"+i]; if(timecol == undefined){ time = "0/"; }else{ time = timecol.w; } let a = name.indexOf('/'); if(a!=-1){ name = name.slice(0,name.indexOf('/')-1); } time = time.slice(0,time.indexOf('/')); nameArray.unshift(name); timeArray.unshift(time); } // 存储到GM GM_setValue("BtnullViewIdList",timeArray); GM_setValue("BtnullViewNameList",nameArray); alert("上传成功"); }; } // 设置封面样式 var setVideoIsViewed = function(){ // 获取内容列表 var content_list = $(".content-list li"); $.each(content_list,function(index,item){ // 获取封面的 a标签 var coverObj0 = $(item).find("a")[0]; var coverObj = $(coverObj0); // bvid = coverObj.attr("href"); // bvid = bvid.replace("/mv/",""); var timeObj = coverObj.parent().next().find("div"); var text = timeObj.text(); bvid = text.slice(0,text.indexOf('/')-1); bname = coverObj.attr("title"); // 添加已看/未看按钮、设置封面透明度 if(getBvIsViewed(bvid,bname)){ // 已看 coverObj.before("<button class='btnView btnIsView' data-view='1' data-av='"+bvid+"' data-bname='"+bname+"'>已看</button>"); coverObj.css("opacity",opacityIsViewCover); }else{ // 未看 coverObj.before("<button class='btnView btnNotView' data-view='0' data-av='"+bvid+"' data-bname='"+bname+"'>未看</button>"); coverObj.css("opacity","1"); } }); } // 判断视频是否已看,判断同年且同名的 var getBvIsViewed = function(bvid,bname){ bvid = bvid + ""; bname = bname + ""; if(!viewNameGroupArr) return false; for(var i = 0 ; i < viewNameGroupArr.length;i++){ if(bname == viewNameGroupArr[i] && bvid == viewGroupArr[i]){ return true; } } return false; } // 更新和保存GM本地存储的列表 var saveGMVideoList = function(bvid,bname,isViewed){ bvid = bvid + ""; bname = bname + ""; if(isViewed){ //列表非空 if(viewNameGroupArr){ // 防止没刷新重复插入 for(let i = 0 ; i < viewNameGroupArr.length ;i++){ if(viewNameGroupArr[i] == bname && viewGroupArr[i] == bvid){ return; } } } viewGroupArr.unshift(bvid); // 添加新的ID到数组中 viewNameGroupArr.unshift(bname); }else{ if(!viewNameGroupArr) return; for(let i = 0 ; i < viewNameGroupArr.length;i++){ if(viewNameGroupArr[i] == bname && viewGroupArr[i] == bvid){ viewGroupArr.splice(i,1); // 删除数组上指定位置的数据 viewNameGroupArr.splice(i,1); } } } // 存储到GM GM_setValue("BtnullViewIdList",viewGroupArr); GM_setValue("BtnullViewNameList",viewNameGroupArr); } // 设置已看/未看按钮响应 //var coverItemClass = "img"; var setBtnView = function(){ $(".btnView").unbind("click").click(function(e){ var avId = $(this).data("av"); var view = $(this).data("view"); var avName = $(this).data("bname"); var coverObjs = $(this).next(); // 先读再存(跨页操作) // not:类.block-list-item-info-player--img为课堂分区封面上面的播放小图标 // not:类.cover为热门-全站排行榜的唱片封面 // var coverObjs = $(this).parent().find(coverItemClass+":not(.block-list-item-info-player--img):not(.cover):first"); // 已看标志 var setIsViewed = false; if(view == 0){ // 未看 -> 已看 setIsViewed = true; $(this).text("已看"); $(this).removeClass("btnNotView"); $(this).addClass("btnIsView"); $(this).data("view","1"); coverObjs.css("opacity",opacityIsViewCover); }else{ // 已看 -> 未看 $(this).text("未看"); $(this).removeClass("btnIsView"); $(this).addClass("btnNotView"); $(this).data("view","0"); coverObjs.css("opacity","1"); } // 删除所有按钮 // $(".btnView").remove(); // 即时存储 saveGMVideoList(avId,avName,setIsViewed); // 重新读取 // setMethod(); return false; }); }