油猴脚本——B站收藏夹视频观看记录保存
本帖最后由 水木杉 于 2020-6-22 17:52 编辑相信很多人和我一样在B站上收藏了很多视频,有些视频长时间没看都不知道自己到底看没看过,尤其是一些学习视频,一段时间后就不知道到底看到哪一集了。针对这个问题,我写了一个油猴脚本,帮助你记录收藏夹中视频的观看记录,当你有一天再次打开的时候就能给你提示,帮助你跳转到正确页面。
1、进入B站收藏夹页面,如下图所示,脚本会帮你保存你收藏夹中的视频
2、如果你的视频放在多个收藏夹里,还需要你一个个把收藏夹点开展现在屏幕上,脚本才能查找得到,保存完后会冒出保存了多少视频的提示框。
像这种有很多页的也需要你一页一页的翻动一下(因为第一次接触js,水平实在有限),收藏了新视频也需要重新回到这里保存一遍
3、当你每次从主页的收藏那里点击观看你收藏的视频的时候(如下图),就能在视频左侧看到记录了
这个小窗口不处理的话20s后就会自动关闭,你观看其他集的时候也能自动保存观看到哪一集了
下面是代码,直接粘贴到你的油猴里面吧...
(保存用的是油猴的GM_setValue函数,记录保存在了浏览器内置的 LevelDB)
*****************************************************************************************************
// ==UserScript==
// @name 保存B站收藏夹观看记录
// @namespace http://tampermonkey.net/
// @version 0.1
// @description保存B站收藏夹中视频的观看记录,当你打开视频时会自动定位。
// @author sersan
// @match https://www.bilibili.com/*
// @match https://space.bilibili.com/*
// @require http://code.jquery.com/jquery-1.11.0.min.js
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==
(function()
{
'use strict';
//var url_old = window.location.href;
//console.log(url_old);
//********************************************函数*******************************
//保存收藏夹到Chrome 内置的 LevelDB 中
var saveText = function()
{
//alert('Hello world!');
var text = GM_getValue('myCollect');
var myCollect={};
var len = 0;
if(text != undefined)
{
//console.log(text);
var MyArray = JSON.parse( text );
for(var ever in MyArray)
{
//console.log(ever);
myCollect = MyArray;
len++;
}
}
const $lis = $("ul.fav-video-list.content li.small-item");
for (var i=0;i<$lis.length;i++)
{
//console.log($lis);
//var fireOnThis = document.querySelector('.fav-video-list');
var urlSave = $lis.getElementsByTagName('a').href;
//var textSave = $lis.getElementsByTagName('a').text;
//console.log(urlSave);
var num =1;
var temp = {
'url': urlSave,
'num':num
};
var isexit = false;
for(var ever1 in MyArray)
{
if(MyArray.url == urlSave)
{
isexit = true;
break;
}
}
if(!isexit)
{
myCollect = temp;
len++;
}
}
var myCollectJson = JSON.stringify(myCollect);
GM_setValue('myCollect', myCollectJson);
var str1 = '保存成功! 共保存了 '+ (len+1) + ' 部视频!';
alert(str1);
};
//现在的地址在收藏夹中是否存在
var checkurl = function()
{
//如果只有1集就不再往下了
var lastpage = $('.cur-page');
//console.log(lastpage);
if(lastpage.length == 0)
{
return;
}
var lastnum = lastpage.text().split('/') - '0';
//匹配现在的网址是不是在收藏夹中
var url_now = window.location.href;
var text = GM_getValue('myCollect');
var MyArray = JSON.parse( text );
var page = 1;
var isexit = false;
for(var ever in MyArray)
{
if(url_now == MyArray.url)
{
isexit = true;
page = MyArray.num;
break;
}
}
if(isexit)
{
var body = document.getElementsByTagName("body");
var div = document.createElement("div");
div.id = 'myIdser';
div.style.display = '';
div.style.position = 'fixed';
div.style.top = '420px';
div.style.left = '10px';
div.style.width = '160px';
div.style.height = '80px';
div.style.overflow = 'hidden';
div.style.zIndex = '9999';
div.style.boxShadow = '0 3px 6px #999';
div.onscroll = function ()
{
div.scrollLeft = 0;
div.scrollTop = 0;
};
//新的地址
var url_new = url_now + '?p=' + page;
var url_new_next = url_now + '?p=' + (page+1);
var info = "<p class='pos_fixed'style='font-size:18px;color:red;text-align:center'>发现了观看记录: </p>";
var info1 = "<p class='pos_fixed'style='font-size:18px;color:red;text-align:center'>第 " + page + " 集</p>";
div.innerHTML += info;
div.innerHTML += info1;
var input_ly = document.createElement("input");
input_ly.type = "button";
input_ly.style.position = 'fixed';
input_ly.style.button = '10px';
input_ly.style.left = '15px';
input_ly.setAttribute("class","button");
input_ly.setAttribute("value","跳到该集");
input_ly.addEventListener("click",function(ev){window.location.href=url_new;});
input_ly.setAttribute("left","0px");
input_ly.setAttribute("font-size","12px");
input_ly.setAttribute("height","18px");
input_ly.setAttribute("width","40px");
var input_ly1 = document.createElement("input");
input_ly1.type = "button";
input_ly1.style.position = 'fixed';
input_ly1.style.button = '10px';
input_ly1.style.left = '110px';
input_ly1.setAttribute("class","button");
input_ly1.setAttribute("value","到下一集");
input_ly1.addEventListener("click",function(ev){window.location.href=url_new_next;});
input_ly1.setAttribute("right","0px");
input_ly1.setAttribute("font-size","12px");
input_ly1.setAttribute("height","18px");
input_ly1.setAttribute("width","40px");
div.appendChild(input_ly);
if(page != lastnum)
{
div.appendChild(input_ly1);
}
document.body.appendChild(div);
window.setTimeout(function(){div.remove();},20000);
}
else
{
var div1 = document.getElementById("myIdser");
if(div1)
{
div1.remove();
}
var isNeedSave = false;
for(var everone in MyArray)
{
if(url_now.indexOf(MyArray.url) != -1)
{
if((url_now.split("=")-'0') != MyArray.num)
{
MyArray.num = url_now.split("=") - '0';
isNeedSave = true;
break;
}
break;
}
}
//将新的观看记录保存
if(isNeedSave)
{
isNeedSave = false;
//alert('Hello world!');
var myCollectJson = JSON.stringify(MyArray);
GM_setValue('myCollect', myCollectJson);
//console.log(GM_getValue('myCollect', myCollectJson));
}
}
}
//******************************************入口**********************************
//判断是不是在收藏页,在收藏页面将保存收藏夹信息
const favlistRegex = /https:\/\/space\.bilibili\.com\/\d+\/favlist.*/;
const flag = favlistRegex.test(window.location.href);
//console.log(flag);
if (flag)
{
//监听触发操作
function hashChange()
{
//alert('事件触发了!');
saveText();
}
window.setTimeout(function()
{
saveText();
const $lis = $("ul.fav-video-list.content li.small-item");
var url_inner = $lis.getElementsByTagName('a').href;
//url变化监听器 每3s检测一次
setInterval(function()
{
//var ischanged = window.location.href != url_old;
const $lis = $("ul.fav-video-list.content li.small-item");
var urlSave = $lis.getElementsByTagName('a').href;
var isSureChange = urlSave != url_inner;
if(isSureChange)
{
//url_old = window.location.href;
url_inner = urlSave;
hashChange();
}
}, 3000);
}, 3000);
}
else
{
//不是收藏夹页面
checkurl();
var url_old = window.location.href;
//url变化监听器 每3s检测一次
setInterval(function()
{
var ischanged = window.location.href != url_old;
if(ischanged)
{
url_old = window.location.href;
checkurl();
}
}, 3000);
}
})();
oudaidai 发表于 2020-6-22 19:47
一进入收藏夹就会弹出保存视频的那个窗口吗?我好像弹不出来。。。(无JS基础)
有可能是浏览器设置问题,或者是不兼容,我也不是很懂。。。
孤独无情 发表于 2020-6-22 21:37
能搞个压缩包或者gxs的下载链接吗 纯代码不会用啊 尴尬
点开Tampermonke,点添加新脚本,再粘贴上代码保存就能用了 一般都是收藏夹直接记录 谢谢,吾爱有你更精彩 哆啦A梦好评
谢谢分享。 多谢分享 一进入收藏夹就会弹出保存视频的那个窗口吗?我好像弹不出来。。。(无JS基础) andyle 发表于 2020-6-22 18:02
一般都是收藏夹直接记录
但是收藏夹找起来麻烦啊 油猴真是万能的, 居然可以这么用 。非常棒!
页:
[1]
2