BiliBili换一换,换回来

点击换一换后推荐的内容就再也找不到了? 没关系既然能换走,现在也能换回来

目前為 2023-10-29 提交的版本,檢視 最新版本

// ==UserScript==
// @name         BiliBili换一换,换回来
// @namespace    http://tampermonkey.net/
// @version      0.1.0
// @description  点击换一换后推荐的内容就再也找不到了? 没关系既然能换走,现在也能换回来
// @author       CNGEGE
// @match        https://www.bilibili.com/
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license      Apache 2
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @run-at      document-end
// ==/UserScript==

(function() {
    'use strict';
    // 全局变量
    /* 换一换 按钮 */
    let roll_btn = $("button.primary-btn.roll-btn"); // 自然 一开始是没有的
    let back_btn = {};   // 脚本创建的按钮
    let historyItem = [];// 用于记录的历史视频
    let currentBatch = 0;
    let rotete = 0;      // 用于旋转动画的 记录的旋转角度

    main();

    /* 主方法 */
    function main(){
        // 首先我要延迟循环去查找 换一换按钮, 因为这个按钮是JS动态载入的
      let loopid = setInterval(()=>{
        // 获取
        roll_btn = $("button.primary-btn.roll-btn svg path");
        if(roll_btn.length > 0){
          roll_btn = $("button.primary-btn.roll-btn");
          roll_btn_load();
          clearInterval(loopid);
        }
      },500);

    }

    /* 原始的换一换按钮载入了 */
    function roll_btn_load(){
      // 两件事
      /* 1. 复制按钮*/
      back_btn = roll_btn.clone();
      back_btn.addClass("back-btn");
      back_btn.css("margin-top","10px");
      back_btn.find("span").text("换回来");
      roll_btn.after(back_btn);
      /* 2. 监听原始按钮点击*/
      roll_btn.click(roll_btn_click);
      /* 3. 监听复制后按钮的点击 */
      back_btn.click(back_btn_click);
    }

    /* 原始的换一换按钮点击事件 */
    function roll_btn_click(event){
      //在切换前将项目记录下来
      let olditem = $("div.container").find(".feed-card");
      if(olditem.length > 0){
          for(let i=0;i<olditem.length;i++){
            historyItem[currentBatch * olditem.length + i] = $(olditem[i]).find(".bili-video-card").clone();
          }
          currentBatch++;
      }
      else{
          console.error("准备记录时,没有找到视频节点");
      }
    }

    /* 复制后的换回来按钮的点击事件 */
    function back_btn_click(event){
      // 反向旋转图标
      rotete-=720;
      back_btn.find("svg").css("transform","rotate("+rotete+"deg)");

      //复原项目
      if(historyItem.length > 0){
        if(currentBatch > 0) currentBatch--;
        let olditem = $("div.container").find(".feed-card");
        for(let i=0;i<olditem.length;i++){
          // 先把原来的remove掉
          $(olditem[i]).find(".bili-video-card").remove();
          $(olditem[i]).append(historyItem[currentBatch * olditem.length + i]);
        }
      }
    }
    // Your code here...
})();