Greasy Fork

Greasy Fork is available in English.

记录视频刷新历史(bilibili)

记录每次刷新的视频, 可以方便的回溯之前错过的视频

目前为 2023-10-28 提交的版本。查看 最新版本

// ==UserScript==
// @name          记录视频刷新历史(bilibili)
// @namespace     http://greasyfork.icu/zh-CN/users/1196880-ling2ling4
// @version       1.0.0
// @author        Ling2Ling4
// @description   记录每次刷新的视频, 可以方便的回溯之前错过的视频
// @license MIT
// @icon data:image/png;base64,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
// @match         *://www.bilibili.com/
// @match         *://www.bilibili.com/?*
// @run-at        document-end
// @grant         GM_setValue
// @grant         GM_getValue
// @grant         GM_registerMenuCommand
// @compatible    chrome
// @compatible    edge
// @compatible    firefox
// ==/UserScript==

(function () {
  ("use strict");

  const info = {
    maxHistory: 5, // 历史视频的记录次数, 每次刷新出的视频算一次, 5
    base_maxHistory: 5,
    size: 20, // 按钮尺寸
    index: -1, // 当前历史视频的组的索引
    hoverColor: "#e3e5e7", // 按钮的hover颜色, #f5e3c1
    hasCurVideos: false, // 最大索引位的那组视频是否存在, 通过该属性判断在计算时是否需要给最后一组视频占位
    // waitTime: 2000, // 刷新后记录刷新视频的时间间隔
  };
  const txt = {
    storageMaxHist: "setting_maxHistory",
    lBtnTt: "返回上一组视频",
    rBtnTt: "切换下一组视频",
    maxHistory: `设置历史视频的记录次数, 默认: `,
    // settingSize: `设置按钮尺寸`,
  };
  const classList = {
    vBox: "container", // 视频区域 的容器元素
    video: "feed-card", // 换一换的视频 (一般是前十个)
    btnBox: "feed-roll-btn", // 按钮的父元素
    btn: "roll-btn", // 右侧换一换按钮
  };
  const doms = {};
  const vHistory = []; // 历史视频的记录, [[vdom1, vdom2, ...], [vdom1, ...], ...]
  function initValue() {
    info.maxHistory = GM_getValue(txt.storageMaxHist) || info.maxHistory;
  }
  function getDoms() {
    doms.vBox = document.querySelector("." + classList.vBox);
    // doms.btnBox = document.querySelector("." + classList.btnBox);
    // doms.btn = doms.btnBox && doms.btnBox.querySelector("." + classList.btn);
  }
  function getMaxIndex() {
    return vHistory.length - 1 + (info.hasCurVideos ? 0 : 1);
  }
  // 更新视频历史记录
  function updateHistory() {
    doms.curVideos = [].slice.call(
      doms.vBox.querySelectorAll("." + classList.video)
    );
    if (
      vHistory[vHistory.length - 1] &&
      doms.curVideos[0] === vHistory[vHistory.length - 1][0]
    ) {
      return;
    }
    vHistory.push(doms.curVideos);
    if (info.index === vHistory.length - 1) {
      info.hasCurVideos = true;
    }
    if (vHistory.length > info.maxHistory) {
      vHistory.splice(0, 1); // 过长删除第一项
      info.index--;
    }
  }
  // 删除当前这组视频
  function delCurVideos() {
    const vArr = [].slice.call(
      doms.vBox.querySelectorAll("." + classList.video)
    );
    // const delArr = [];
    vArr.forEach((ele) => {
      ele.remove();
      // delArr.push(doms.vBox.removeChild(ele));
    });
    // return delArr;
  }
  // 切换 上一组/下一组 视频
  function historyChange(f = "left") {
    if (!info.hasCurVideos && info.index === vHistory.length - 1 + 1) {
      updateHistory();
    }
    if (f === "right") {
      // 下一组
      info.index++;
      if (info.index > vHistory.length - 1) {
        info.index = vHistory.length - 1;
        return;
      }
    } else {
      // 上一组
      info.index--;
      if (info.index < 0) {
        info.index = 0;
        return;
      }
    }
    delCurVideos();
    const twoVideo = doms.vBox.children[1];
    // 将历史视频插入最前面
    vHistory[info.index].forEach((ele) => {
      doms.vBox.insertBefore(ele, twoVideo);
    });
  }
  // 增加历史视频切换按钮
  function createBtns() {
    const dom = document.createElement("div");
    dom.innerHTML = `<div id="vHistory-box" style="display:flex;width:100%;line-height:${
      info.size - 3
    }px;margin-top:10px">
  <style>.vHistoryBtn {width:${info.size}px;height:${
      info.size
    }px;text-align:center;border-radius:${info.size / 5}px;cursor:pointer;}
    .vHistoryBtn:hover {background:${info.hoverColor};}</style>
  <div class="left-historyBtn vHistoryBtn" title="${txt.lBtnTt}">
    <svg t="1698507568902" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
      p-id="918" xmlns:xlink="http://www.w3.org/1999/xlink" width="${
        info.size - 6
      }" height="${info.size - 6}">
      <path d="M796.444444 113.777778c0 17.066667-5.688889 34.133333-17.066666 45.511111L409.6 472.177778c-5.688889 11.377778-11.377778 17.066667-11.377778 34.133333 0 5.688889 5.688889 22.755556 11.377778 28.444445l364.088889 329.955555c22.755556 22.755556 22.755556 56.888889 5.688889 79.644445-22.755556 22.755556-56.888889 22.755556-79.644445 5.688888l-364.088889-329.955555c-34.133333-28.444444-51.2-73.955556-51.2-119.46666699s22.755556-85.333333 56.888889-119.46666601l364.088889-312.888889c22.755556-22.755556 56.888889-17.066667 79.644445 5.688889 5.688889 11.377778 11.377778 28.444444 11.377777 39.822222z" fill="#999999" p-id="919"></path>
    </svg>
  </div>
  <div class="right-historyBtn vHistoryBtn" title="${txt.rBtnTt}">
    <svg t="1698507574371" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
      p-id="1067" xmlns:xlink="http://www.w3.org/1999/xlink" width="${
        info.size - 6
      }" height="${info.size - 6}">
      <path d="M227.555556 910.222222c0-17.066667 5.688889-34.133333 17.066666-45.511111L614.4 551.822222c5.688889-11.377778 11.377778-17.066667 11.377778-34.133333 0-5.688889-5.688889-22.755556-11.377778-28.444445l-364.088889-329.955555c-22.755556-22.755556-22.755556-56.888889-5.688889-79.644445 22.755556-22.755556 56.888889-22.755556 79.644445-5.688888l364.088889 329.955555c34.133333 28.444444 51.2 73.955556 51.2 119.46666699s-22.755556 85.333333-56.888889 119.46666601l-364.088889 312.888889c-22.755556 22.755556-56.888889 17.066667-79.644445-5.688889-5.688889-11.377778-11.377778-28.444444-11.377777-39.822222z" fill="#999999" p-id="1068"></path>
    </svg>
  </div>
</div>`;
    doms.btnBox.appendChild(dom);
    doms.lBtn = doms.btnBox.querySelector(".left-historyBtn");
    doms.rBtn = doms.btnBox.querySelector(".right-historyBtn");
  }
  // 历史按钮的相关函数
  function historyBtns() {
    const timer = setInterval(() => {
      doms.btnBox = document.querySelector("." + classList.btnBox);
      doms.btn = doms.btnBox && doms.btnBox.querySelector("." + classList.btn);
      if (!doms.btnBox || !doms.btn) {
        return;
      }
      createBtns();
      if (!doms.lBtn || !doms.rBtn) {
        return;
      }
      bindEvents();
      clearInterval(timer);
    }, 1000);
  }
  function showSetting() {
    let newMaxHistory = +prompt(
      txt.maxHistory + info.base_maxHistory,
      GM_getValue(txt.storageMaxHist) || info.base_maxHistory
    );
    if (newMaxHistory < 0) {
      newMaxHistory = 5;
    } else if (!newMaxHistory) {
      newMaxHistory = info.base_maxHistory;
    }
    GM_setValue(txt.storageMaxHist, newMaxHistory);
    info.maxHistory = newMaxHistory;
  }
  function bindEvents() {
    doms.btn.addEventListener("click", () => {
      const maxIndex = getMaxIndex(); // 历史视频数组的最大索引
      if (info.index !== maxIndex) {
        vHistory.splice(info.index, maxIndex - info.index); // 不在最后则删除后面几组视频
        info.index = getMaxIndex();
        info.hasCurVideos = true;
      }
      if (info.index === getMaxIndex()) {
        info.index++;
        info.hasCurVideos = false;
      }
      updateHistory(); // 记录旧的一组视频
    });
    doms.lBtn.addEventListener("click", () => {
      historyChange("left");
    });
    doms.rBtn.addEventListener("click", () => {
      historyChange("right");
    });
    // window.addEventListener("click", (e) => {
    //   if (e.target.classList.contain(classList.btnBox)) {
    //     // 获取按钮
    //   }
    // })
  }
  function main() {
    initValue();
    getDoms();
    if (!doms.vBox) {
      return;
    }
    info.index++;
    // updateHistory();
    historyBtns();
    GM_registerMenuCommand("设置", () => {
      showSetting();
    });
  }
  main();
})();