您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
看番时让B站显示单集的的播放量和弹幕量
// ==UserScript== // @name Bilibili番剧显示单集信息 // @namespace http://tampermonkey.net/ // @version 3.0 // @include http*://www.bilibili.com/bangumi/play/ss* // @include http*://www.bilibili.com/bangumi/play/ep* // @description 看番时让B站显示单集的的播放量和弹幕量 // @author ementt // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; const url = 'https://api.bilibili.com/x/web-interface/view'; let all_view; async function getBvid(ep_id) { try { const res = await fetch(`https://api.bilibili.com/pgc/view/web/season?ep_id=${ep_id}`); const data = await res.json(); const ep = data.result.episodes.find(e => e.ep_id == ep_id); console.log("当前 bvid:", ep.bvid); return ep.bvid; // 可以返回给调用方 } catch (err) { console.error(err); } } function search() { const mediaCount = document.querySelector('.mediainfo_mediaDesc__jjRiB'); if (!mediaCount) { console.log("media count not found"); return}; const _view = mediaCount.textContent.split('·')[0]; if (!all_view) { all_view = _view.substring(0, _view.length - 4) + '总播放'; } (async () => { const ep_id = location.pathname.match(/ep(\d+)/)[1]; const bvid = await getBvid(ep_id); console.log("拿到 bvid:", bvid); fetch(`${url}?bvid=${bvid}`) .then(res => res.json()) .then(response => { const data = response.data; console.log(data); const view = Number(data.stat.view); const danmaku = Number(data.stat.danmaku); const coin = Number(data.stat.coin); let view_write = '--'; if (view) { view_write = view < 10000 ? view : Math.floor(view / 10000) + '万'; } let danmu_write = '--'; if (danmaku) { danmu_write = danmaku < 10000 ? danmaku : Math.floor(danmaku / 10000) + '万'; } const coinSpan = document.querySelector('#toolbar_module > div.coin-info > span'); if (coinSpan) { coinSpan.textContent = coin; } const text2 = mediaCount.textContent.split('·')[2] || ''; mediaCount.textContent = `${view_write}播放 · ${danmu_write}弹幕 ·${text2} · ${all_view}`; }) .catch(err => { console.error('请求失败:', err); }); })(); } function bind() { const aidElement = document.querySelector("#__next > div.home-container > div.main-container > div.plp-l.sticky > div > div.mediainfo_mediaInfoWrap__nCwhA > div > div:nth-child(3) > span:nth-child(4) > span > a"); if (!aidElement) return; // 监听 DOM 变化 const observer = new MutationObserver(() => { console.log("find new episode") search(); }); observer.observe(aidElement, { childList: true, attributes: true, characterData: true, subtree: true}); } bind(); setTimeout(search, 2000) setTimeout(bind, 2000) })();