【已失效】Bilibili 黄嘉琪小助手

生成评论区伪装链接

// ==UserScript==
// @name         【已失效】Bilibili 黄嘉琪小助手
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  生成评论区伪装链接
// @author       as042971
// @include      *://www.bilibili.com/video/av*
// @include      *://www.bilibili.com/video/BV*
// @license MIT
// @grant        none
// @esversion    8
// ==/UserScript==

(function() {
    'use strict';
    const solveInput = function(input) {
        const reg = /BV[A-Za-z0-9]{10}/;
        const result = reg.exec(input);
        if (result) {
            const bvID = result[0];
            const avID = window.aid;
            const link = 'http://b23.tv/av' + avID + '?' + bvID;

            // 复制到剪贴板
            let aux = document.createElement("input");
            aux.setAttribute("value", link);
            document.body.appendChild(aux);
            aux.select();
            document.execCommand("copy");
            document.body.removeChild(aux);
        }
    }

    const inject = function(box) {
        let fakeDiv = document.createElement('div');
        fakeDiv.setAttribute('class','share-link');
        let fakeInput = document.createElement('input');
        fakeInput.setAttribute('type','text');
        fakeInput.setAttribute('placeholder', '在这里粘贴封面视频地址…');
        let fakeBtn = document.createElement('span');
        fakeBtn.setAttribute('class','btn');
        fakeBtn.innerHTML = '生成诈骗链接';

        fakeBtn.onclick = () => {
            solveInput(fakeInput.value);
        }

        fakeDiv.appendChild(fakeInput);
        fakeDiv.appendChild(fakeBtn);
        box.appendChild(fakeDiv);
    };

    const injectOld = function(box) {
        let fakeLi = document.createElement('li');
        let fakeTitle = document.createElement('span');
        fakeTitle.setAttribute('class','name');
        fakeTitle.innerHTML = '诈骗链接';
        let fakeInput = document.createElement('input');
        fakeInput.setAttribute('type','text');
        fakeInput.setAttribute('placeholder', '在这里粘贴封面视频地址…');
        let fakeBtn = document.createElement('span');
        fakeBtn.setAttribute('class','btn');
        fakeBtn.innerHTML = '生成';
        fakeBtn.onclick = () => {
            solveInput(fakeInput.value);
        }
        fakeLi.appendChild(fakeTitle);
        fakeLi.appendChild(fakeInput);
        fakeLi.appendChild(fakeBtn);
        box.appendChild(fakeLi);
    }

    let body = document.body;
    let observerOptions = {
      childList: true,
      attributes: false,
      subtree: false
    };

    let observer = new MutationObserver((mutation_records) => {
        let box = document.querySelector('.box-left');
        if (box) {
            inject(box);
            observer.disconnect();
        }
        let oldBox = document.querySelector('.share-address');
        if (oldBox) {

            injectOld(oldBox.childNodes[2]);
            observer.disconnect();
        }
    });
    observer.observe(body, observerOptions);
})();