Bilibili Old

Use old Bilibili home page and video page

当前为 2023-04-18 提交的版本,查看 最新版本

// ==UserScript==
// @name              Bilibili Old
// @name:zh-CN        旧版 Bilibili
// @version           0.1
// @description       Use old Bilibili home page and video page
// @description:zh-CN 使用旧版 Bilibili 主页和播放页
// @author            GForkMe.L
// @run-at            document-start
// @match             *://www.bilibili.com/*
// @grant             GM_registerMenuCommand
// @namespace https://greasyfork.org/users/12904
// ==/UserScript==

(function () {
  "use strict";

  const MAX_AGE = 60 * 60 * 24 * 365;
  const PLAYER_CONF = "bpx_player_profile";
  const SCRIPT_STAT = "bili_old_video";

  function updateStat({ no_v_autoplay, no_rcmv_autoplay, no_feeds, old_home, old_video }) {
    const STAT = { no_v_autoplay: 0, no_rcmv_autoplay: 0, no_feeds: 0, old_home: 0, old_video: 0 };
    Object.assign(STAT, JSON.parse(localStorage.getItem(SCRIPT_STAT)) ?? STAT);
    STAT.no_v_autoplay += no_v_autoplay ? 1 : 0;
    STAT.no_rcmv_autoplay += no_rcmv_autoplay ? 1 : 0;
    STAT.no_feeds += no_feeds ? 1 : 0;
    STAT.old_home += old_home ? 1 : 0;
    STAT.old_video += old_video ? 1 : 0;
    localStorage.setItem(SCRIPT_STAT, JSON.stringify(STAT));
  }
  function noVideoAutoplay() {
    const CONF = JSON.parse(localStorage.getItem(PLAYER_CONF)) ?? { media: { autoplay: false } };
    if (!CONF.media.autoplay) {
      CONF.media.autoplay = false;
      localStorage.setItem(PLAYER_CONF, JSON.stringify(CONF));
    }
    updateStat({ no_v_autoplay: true });
  }
  function noRcmAutoplay() {
    const CONF = JSON.parse(localStorage.getItem(PLAYER_CONF)) ?? { media: { handoff: 2 } };
    if (CONF.media.handoff != 2) {
      CONF.media.handoff = 2;
      localStorage.setItem(PLAYER_CONF, JSON.stringify(CONF));
    }
    if (localStorage.getItem("recommend_auto_play") !== "close") {
      localStorage.setItem("recommend_auto_play", "close");
    }
    updateStat({ no_rcmv_autoplay: true });
  }

  function noFeed() {
    document.cookie = "i-wanna-go-feeds=-1; path=/; max-age=" + MAX_AGE;
    updateStat({ no_feeds: true });
  }
  function oldHome(useOldHome = true) {
    if (!useOldHome) {
      document.cookie = "i-wanna-go-back=-1; domain=bilibili.com; path=/; max-age=" + MAX_AGE;
    } else {
      document.cookie = "i-wanna-go-back=2; domain=bilibili.com; path=/; max-age=" + MAX_AGE;
      updateStat({ old_home: true });
    }
  }
  function oldVideo() {
    document.cookie = "go_old_video=1; path=/; max-age=" + MAX_AGE;
    updateStat({ old_video: true });
  }

  // Use no feed bilibili homepage, old video page and stop autoplay.
  if (!document.cookie.includes("SESSDATA")) {
    if (!localStorage.getItem(SCRIPT_STAT)) {
      noFeed();
      noVideoAutoplay();
      noRcmAutoplay();
      oldVideo();
    }
  }

  // Context menu
  const mid0 = GM_registerMenuCommand("No Feed", () => {
    noFeed();
  });
  const mid1 = GM_registerMenuCommand("No Video & Recommand Autoplay", () => {
    noVideoAutoplay();
    noRcmAutoplay();
  });
  const mid2 = GM_registerMenuCommand("No Video Autoplay", () => {
    noVideoAutoplay();
  });
  const mid3 = GM_registerMenuCommand("No Recommand Autoplay", () => {
    noRcmAutoplay();
  });
  const mid4 = GM_registerMenuCommand("Old Homepage", () => {
    oldHome(true);
    // location.reload();
  });
  const mid5 = GM_registerMenuCommand("New Homepage", () => {
    oldHome(false);
    // location.reload();
  });
})();