「GM 脚本」大会员 B 币领取提醒

吐槽/反馈/建议:我的咸鱼心  爱发电-@wdssmq  FeedsPub-wdssmq

大部分脚本都以自用优先,所以可能塞了奇怪的功能进去,建议摘取需要的部分自行组织完整代码;

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也可以;

相关推荐

「折腾」GM_脚本修改 bilibili 番剧链接为我的追番_电脑网络_沉冰浮水

「折腾」使用 rollup.js 模块化编写 GM 脚本_电脑网络_沉冰浮水


已改用rollup.js构建脚本,具体见上方推荐;

「B 币领取提醒」部分的 Git 查看:https://github.com/wdssmq/userscript/blob/master/bilibili/src/_bcoin.js

以下仅为参考,并不能直接使用:

// @grant        GM_notification
// @grant        GM.openInTab

// ==/UserScript==
/* jshint esversion:6 */
import { curUrl, curDate, _log, $n, fnElChange } from './_base.js';

// 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 decodeURIComponent(arr[2]);
    }
    return def;
  }
};

// 日期转字符串
const getDateStr = (date) => {
  const options = { year: 'numeric', month: '2-digit', day: '2-digit' };
  return date.toLocaleDateString("zh-CN", options);
}

// 判断日期间隔
const diffDateDays = (date1, date2) => {
  const diff = date1.getTime() - date2.getTime();
  return diff / (1000 * 60 * 60 * 24);
}

// B 币领取提醒
(() => {
  const ckeName = "bilibili-helper-bcoin-nxtDateStr";
  const curDateStr = getDateStr(curDate);
  const nxtDateStr = ckeObj.getItem(ckeName, curDateStr);
  const bcoinUrl = "https://account.bilibili.com/account/big/myPackage";

  _log(`当前日期: ${curDateStr}`);
  _log(`下次领取: ${nxtDateStr}`);

  // 通知事件封装
  const notify = (title, body) => {
    _log(`通知标题: ${title}`);
    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("fnCheckByDOM", $bcoin);
    // $bcoin && _log("fnCheckByDOM", $bcoin.innerHTML);
    if ($bcoin && $bcoin.innerText.includes("本次已领")) {
      const match = $bcoin.innerText.match(/\d{4}\/\d+\/\d+/);
      if (match && match[0] !== nxtDateStr) {
        ckeObj.setItem(ckeName, match[0]);
        _log("已领取过,更新下次领取日期", match[0]);
        return true;
      }
    } else {
      fnElChange($n("#app"), fnCheckByDOM);
    }
    return false;
  }

  // _log($n("body").innerHTML);
  // _log(nxtDateStr, curMonth);

  // 对比日期
  const iniDiff = diffDateDays(curDate, new Date(nxtDateStr));
  if (iniDiff > 0) {
    _log(curUrl, "\n", bcoinUrl);
    if (curUrl.indexOf(bcoinUrl) > -1) {
      fnCheckByDOM();
    } else {
      notify("B 币领取提醒", "点击查看 B 币领取情况");
    }
  }
})();

爱发电

本文标题:《「GM 脚本」大会员 B 币领取提醒》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20141219446.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

沉冰浮水 沉冰浮水 发布于 2014-12-21 20:38:48  
https://www.wdssmq.com
[godsay4-不明觉厉]
回复
发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

搜索

本周旧文

2024 年了,姑且备份下嘟特存档。。

……,一个不知名的小众样式库 + 内联样式混写这种入坑姿势确实很有槽点,但是,「已经开始学」并且能够持续是绝对值得肯定的。。

在贴吧看过很多提问了,就有种错觉:好多人为了提一个问题专门注册了贴吧,问题本身可能得到有效回答,也可能没有(和提问的点及具体姿势有关。。但无论如何,之后就和注销了账号一样没有然后了,好像之后永远不用学相应的东西一样。。

《恶魔娃娃》

- 他们正研究你究竟是真正的大人,还是伪装成大人的小孩

- 我自己都研究很久了

乐高 DC 里,(基本就蝙蝠侠家,,年龄最小的那个无论是谁感觉人设都会变得一样 - -

所以,就感觉和祥林嫂一样,每天都需要向外「签到」自己的情绪感受,然而又并没有什么「需要」我这样的签到……

只要梦里出现学校的概念,形式和反抗好像也都不重要了,,天还没亮,骑自行车去上学,没走多远「想起来」并不需要上学的,下来搬起车原地调头然后推回家。。

《K 星异客》里,「青鸟」真的是等来的,或者说是突然出现然后引发改变的外部因素。。。

梦的最后也是又一次意识到教室里的同学只是幻境中的投影,被困住的只有我;虽然也终于总结出,在梦里从来没有和同学的投影有过冲突和争执,甚至还附和我反驳「管理者」身份被进一步放大并不特指某一个人的老师。。

就和大脑会突然播放某一首歌一样,「讨厌自己」这句话也是自己突然就会播放一次,然后频率更高。。

学校,学校,学校,总是梦到学校,,就好像灵魂被诅咒禁固一样。。

爱发电支持者

最新留言

友情链接

  • 订阅本站的 RSS 2.0 新闻聚合
召唤伊斯特瓦尔