
大部分脚本都以自用优先,所以可能塞了奇怪的功能进去,建议摘取需要的部分自行组织完整代码;
name:「 bilibili 」- 稍后再看导出为.url
desc:将 B 站的稍后再看列表导出为.url 文件
url: https://github.com/wdssmq/userscript/blob/master/bilibili/later.user.js
cdn: https://cdn.jsdelivr.net/gh/wdssmq/userscript@master/bilibili/later.user.js
以及,现在才知道 localStorage 并不能跨子域使用,所以用了 cookie ,其实好像用GM_setValue+GM_getValue也可以;
大会员 B 币领取提醒核心代码:
// @grant GM_notification // @grant GM.openInTab // ==/UserScript== /* jshint esversion:6 */ (function () { "use strict"; // 基础函数或变量 const curUrl = window.location.href; const curDate = new Date(); const $ = window.$ || unsafeWindow.$; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const _log = (...args) => console.log('[bilibili-helper]', ...args); const _warn = (...args) => console.warn('[bilibili-helper]', ...args); const _error = (...args) => console.error('[bilibili-helper]', ...args); function $n(e) { return document.querySelector(e); } function $na(e) { return document.querySelectorAll(e); } // cookie 封装 const ckeObj = { setItem: function (key, value) { const Days = 137; const exp = new Date(); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); document.cookie = key + "=" + encodeURIComponent(value) + ";path=/;domain=.bilibili.com;expires=" + exp.toGMTString(); }, getItem: function (key, def = "") { const reg = new RegExp("(^| )" + key + "=([^;]*)(;|$)"); const arr = document.cookie.match(reg); if (arr) { return arr[2]; } return def; } }; // B 币领取提醒 (() => { const ckeName = "bilibili-helper-bcoin-lstMonth"; const curMOnth= curDate.getMonth() + 1; const lstMOnth= ckeObj.getItem(ckeName, 0); const bcoinUrl = "https://account.bilibili.com/account/big/myPackage"; // 元素变化监听 const fnElChange = (el, fn = () => { }) => { const observer = new MutationObserver((mutationRecord, mutationObserver) => { _log('body attributes changed!!!'); // body attributes changed!!! _log('mutatiOnRecord= ', mutationRecord); // [MutationRecord] _log('mutatiOnObserver=== observer', mutatiOnObserver=== observer); // true fn(mutationRecord, mutationObserver); mutationObserver.disconnect(); }); observer.observe(el, { // attributes: false, // attributeFilter: ["class"], childList: true, // characterData: false, subtree: true, }); } // 通知事件封装 const fnNotify = (title, body) => { GM_notification({ title: title, text: body, timeout: 0, onclick: () => { // window.location.href = bcoinUrl; GM.openInTab(bcoinUrl, false); } }); } // 判断是否已经领取过 const fnCheckByDOM = () => { const $bcoin = $n(".bcoin-wrapper"); _log("---"); // $bcoin && _log($bcoin.innerHTML); if ($bcoin && $bcoin.innerText.includes("本月已领")) { ckeObj.setItem(ckeName, curMonth); return true; } else { fnElChange($n("#app"), fnCheckByDOM); } return false; } // _log($n("body").innerHTML); // _log(lstMonth, curMonth); // 对比 cookie 数据 if (lstMonth != curMonth) { _log(curUrl, bcoinUrl); if (curUrl.indexOf(bcoinUrl) > -1) { fnCheckByDOM(); } else { fnNotify("B 币领取提醒", "点击查看 B 币领取情况"); } } })(); })(); 1 qaweqa 2022-02-06 15:00:57 +08:00 发布在 GreasyFork 之类的网站可能比较好? |
2 lower 2022-02-06 15:55:56 +08:00 有没有屏蔽 b 站指定视频的脚本? 按理说把某个 up 屏蔽了,他的作品也应该自动不推荐出来,可是垃圾 B 站还是乱七八糟一直在首页显示 好歹搞个 ytb 的不喜欢功能啊…… |
3 CallMeReznov 2022-02-06 19:40:09 +08:00 @lower #2 在外面点不推荐该 UP 的选项还是会推荐? |
4 VZEXEZVzzz 2022-02-06 22:36:20 +08:00 感谢楼主让我知道大会员能领 B 币=0= |
5 wlb955 2022-02-10 10:17:06 +08:00 能不能脚本直接给领了,然后给个领取成功 or 失败的反馈 |
6 wdssmq OP userscript/bilibili at master wdssmq/userscript https://github.com/wdssmq/userscript/tree/master/bilibili 源码地址。。 |