抢救本家直链

把B站视频简介sm号超链接使用的失效短链域名acg.tv替换为nicovideo

当前为 2024-02-05 提交的版本,查看 最新版本

// ==UserScript==
// @name         抢救本家直链
// @namespace    https://memo329.jimdofree.com
// @version      0.1.2
// @description  把B站视频简介sm号超链接使用的失效短链域名acg.tv替换为nicovideo
// @author       永咲みつき
// @match        *.bilibili.com/video/*
// @grant        none
// @run-at       document-end
// @license      GPLv3
// @supportURL   [email protected]
// ==/UserScript==

(function () {
    'use strict';
    const jsName = "抢救本家直链";
    const url_acgtv = /acg.tv\//g;
    const url_nico = "www.nicovideo.jp/watch/";
    const ClassName_desc = "desc-info-text"; //简介的类名
    const ClassName_player = "bpx-player-ctrl-btn-icon"; //播放按钮的类名
    const delay1 = 500; // 检查加载状态的时间间隔
    const delay2 = 1000; // 播放组件基本就绪后延时执行超链接替换

    console.log('【', jsName, '】脚本已就绪,等待页面加载中...');
    var setid = setInterval(function(){
        var element1 = document.getElementsByClassName(ClassName_player)
        if(element1 != null){
            window.setTimeout(replace, delay2); // 执行超链接替换
            clearInterval(setid); //关闭定时器
        }
    }, delay1);

    var element2 = document.getElementsByClassName(ClassName_desc);
    function replace() {
        console.log('【', jsName, '】脚本执行中...');
        for (var i = 0; i < element2.length; i++) {
            var html = element2[i].innerHTML;
            if (url_acgtv.test(html)) { //匹配acg.tv/字符串,替换为www.nicovideo.jp/watch/
                html = html.replace(url_acgtv, url_nico);
                element2[i].innerHTML = html;
                console.log('【', jsName, '】链接替换成功!');
            }
            else{
                console.log('【', jsName, '】未发现链接。');
            }
        }
    }
})();

//参考:  https://greasyfork.org/zh-CN/scripts/473709-b%E7%AB%99bv%E5%8F%B7%E6%B7%BB%E5%8A%A0%E8%B6%85%E9%93%BE%E6%8E%A5
//        https://scriptcat.org/zh-CN/script-show-page/42/code