Greasy Fork

Greasy Fork is available in English.

B站封面获取

B站视频和番剧播放页添加获取封面的按钮

当前为 2020-03-27 提交的版本,查看 最新版本

// ==UserScript==
// @id             BilibiliCover@Laster2800
// @name           B站封面获取
// @version        2.0
// @namespace      laster2800
// @author         Laster2800
// @description    B站视频和番剧播放页添加获取封面的按钮
// @include        *://www.bilibili.com/video/*
// @include        *://www.bilibili.com/bangumi/play/*
// @grant          GM_addStyle
// ==/UserScript==

(function() {
    var interval = 100
    var timeout = 5000
    var maxCnt = timeout / interval
    var cnt = 0
    var tid = setInterval(() => {
        var app = document.querySelector('#app')
        var vueLoad = app && app.__vue__
        if (++cnt > maxCnt) {
            clearInterval(tid)
        } else if (vueLoad) {
            clearInterval(tid)
            if (/\/video\//.test(location.href)) {
                addVideoBtn()
            } else { // /\/bangumi\/play\//.test(location.href)
                addBangumiBtn()
            }
        }
    }, interval)
})();

function addVideoBtn() {
    var atr = document.querySelector('#arc_toolbar_report')
    if (atr) {
        var coverMeta = document.querySelector('head meta[itemprop=image]')
        var coverUrl = coverMeta && coverMeta.content
        var cover = document.createElement('a')
        var errorMsg = '获取失败,若非网络问题请提供反馈'
        cover.innerText = '获取封面'
        cover.onclick = () => coverUrl ? window.open(coverUrl) : alert(errorMsg)
        cover.title = coverUrl || errorMsg
        cover.className = 'appeal-text'
        atr.appendChild(cover)
    }
}

function addBangumiBtn() {
    var tm = document.querySelector('#toolbar_module')
    if (tm) {
        GM_addStyle(`
        .cover_btn {
            float: right;
            cursor: pointer;
            font-size: 12px;
            margin-right: 16px;
            line-height: 36px;
            color: #505050;
        }
        .cover_btn:hover {
            color: #00a1d6;
        }`)
        var coverMeta = document.querySelector('head meta[property="og:image"]')
        var coverUrl = coverMeta && coverMeta.content
        var cover = document.createElement('a')
        var errorMsg = '获取失败,若非网络问题请提供反馈'
        cover.innerText = '获取封面'
        cover.onclick = () => coverUrl ? window.open(coverUrl) : alert(errorMsg)
        cover.title = coverUrl || errorMsg
        cover.className = 'cover_btn'
        tm.appendChild(cover)
    }
}