// ==UserScript== // @name 哔哩哔哩(B站|Bilibili)收藏夹Fix // @namespace http://tampermonkey.net/ // @version 0.4 // @description 修复 哔哩哔哩(B站|Bilibili) 失效的收藏。(可查看av号、标题、封面) // @author Mr.Po // @match https://space.bilibili.com/*/favlist* // @require http://code.jquery.com/jquery-1.11.0.min.js // @connect biliplus.com // @grant GM_xmlhttpRequest // @downloadURL none // ==/UserScript== (function() { 'use strict'; var space = 2000; setInterval(updateFav,space); })(); // 修改收藏 function updateFav(){ var $lis = $("ul.fav-video-list.content li.small-item.disabled"); if($lis.size()>0){ $lis.each(function(i,it){ var aid = $(it).attr("data-aid"); var $a = $(it).find("a"); $a.attr("href","https://www.biliplus.com/video/av"+aid+"/"); $a.attr("target","_blank"); showDetail($lis); fixTitleAndPic($(it),aid,$($a[1])); signInval($(it),$($a[1])) $(it).removeClass("disabled"); $a.removeClass("disabled"); }); } } // 标记失效 function signInval($it,$a){ var $pubdate = $it.find("div.meta.pubdate"); $pubdate.attr("style","text-decoration:line-through"); $a.attr("style","text-decoration:line-through"); } // 修复标题和海报 function fixTitleAndPic($it,aid,$a){ GM_xmlhttpRequest({ method: 'GET', url: "https://www.biliplus.com/api/view?id="+aid, responseType:"json", onload: function(response){ var res = response.response; // 找到了 if(res.title){ $a.text(res.title); $a.attr("title",$a.text()); isLoad(res.pic,function(){ var $img = $it.find("img"); $img.attr("src",res.pic); }); }else{// 未找到 fixTitleAndPicEnhance1(aid,$a,$it); } } }); } // 修复标题和海报 增强 - 1 function fixTitleAndPicEnhance1(aid,$a,$it){ GM_xmlhttpRequest({ method: 'GET', url: "https://www.biliplus.com/all/video/av"+aid+"/", onload: function(response){ var params = response.responseText.match(/getjson\('(\/api\/view_all.+)'/); fixTitleAndPicEnhance2(params[1],$a,$it,aid); } }); } // 修复标题和海报 增强 - 2 function fixTitleAndPicEnhance2(param,$a,$it,aid){ GM_xmlhttpRequest({ method: 'GET', url: "https://backup.biliplus.com"+param, responseType:"json", onload: function(response){ var res = response.response; // 找到了 if(res.code==0){ $a.text(res.data.info.title); $a.attr("title",$a.text()); isLoad(res.data.info.pic,function(){ var $img = $it.find("img"); $img.attr("src",res.data.info.pic); }); }else{// 未找到 $a.text($a.text()+"("+aid+")"); $a.attr("title",$a.text()); } } }); } // 判断一个url是否可以访问 function isLoad(url,fun){ $.ajax({ url: url, type: 'GET', success: function(response) { fun(); }, error:function(e){} }); } // 显示详细 function showDetail($lis){ var fidRegex = window.location.href.match(/fid=(\d+)/); var fid; if(fidRegex){ fid = fidRegex[1]; }else{ fid = $("div.fav-item.cur").attr("fid"); } var pn = $("ul.be-pager li.be-pager-item.be-pager-item-active").text(); $.ajax({ url: "https://api.bilibili.com/medialist/gateway/base/spaceDetail?media_id="+fid+"&pn="+pn+"&ps=20&keyword=&order=mtime&type=0&tid=0&jsonp=jsonp", success: function(json){ var $medias = json.data.medias; $lis.each(function(i,it){ var aid = $(it).attr("data-aid"); var $mediaF = $medias.filter(function(it){ if(it.id==aid){ return it; } }); var $media = $mediaF[0]; var $a = $(it).find("a"); var titles = ""; if($media.pages){ var $titlesM = $media.pages.map(function(it,i,arry){ return it.title; }); titles = $titlesM.join("、"); } var content = "av:"+aid+"\nP数:"+$media.page+"\n子P:"+titles+"\n简介:"+$media.intro $($a[0]).attr("title",content); }); } }); }