Bilibili 标题和链接分享

为 Bilibili 网页版视频标题尾部增加一个小按钮,点击后可以复制当前视频的标题和链接(会去除链接中 ? 之后的查询参数)。

目前为 2022-08-20 提交的版本。查看 最新版本

// ==UserScript==
// @name         Bilibili 标题和链接分享
// @namespace    https://zhaoji.wang/
// @version      0.1
// @description  为 Bilibili 网页版视频标题尾部增加一个小按钮,点击后可以复制当前视频的标题和链接(会去除链接中 ? 之后的查询参数)。
// @author       Zhaoji Wang
// @match        *://*.bilibili.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bilibili.com
// @run-at       document-end
// @grant        unsafeWindow
// @license      Apache-2.0
// ==/UserScript==

;(() => {
  const mount = async () => {
    const waitForTitle = () => {
      return new Promise((resolve) => {
        const checkTitle = () => {
          const $h1 = document.querySelector('h1.video-title')
          if ($h1 && $h1.innerText) {
            resolve($h1)
          } else {
            setTimeout(checkTitle, 100)
          }
        }
        checkTitle()
      })
    }
    const $h1 = await waitForTitle()
    console.log('Test:', $h1.innerText)
    const url = `${location.origin}${location.pathname}`
    const title = $h1.innerText
    const textToCopy = `【${title}】\n${url}`

    const $btn = document.createElement('span')
    $btn.id = 'bilibili-title-and-url-share-btn'
    $btn.title = '复制当前视频标题和链接'
    $btn.style.cursor = 'pointer'
    $btn.innerText = '🏷️'
    $btn.addEventListener('click', () =>
      navigator.clipboard.writeText(textToCopy).then(
        () => {
          console.info(`Share link copied to clipboard:\n${textToCopy}`)
        },
        (err) => {
          alert(err)
        }
      )
    )

    $h1.append($btn)
  }

  const ward = async () => {
    const $btn = document.querySelector('#bilibili-title-and-url-share-btn')
    if (!$btn) {
      await mount()
    }
    setTimeout(ward, 100)
  }

  ward()
})()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址