// ==UserScript==
// @name BiliBili直播间本地解析(Miro)
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.5
// @description try to take over the world!
// @author Miro 鸭鸭 github.com/mmyo456/BiliAnalysis
// @match https://live.bilibili.com/*
// @downloadURL https://raw.githubusercontent.com/mmyo456/BiliAnalysis/main/BiliRoomAnalysis.user.js
// @updateURL https://raw.githubusercontent.com/mmyo456/BiliAnalysis/main/BiliRoomAnalysis.user.js
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// @require https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.2.1/jquery.min.js
// ==/UserScript==
(function () {
'use strict';
// 添加提示框的样式
GM_addStyle(`
#notificationBox {
position: fixed;
bottom: -100px; /* 初始位置在视口之外 */
left: 50%;
transform: translateX(-50%);
width: 300px;
padding: 20px;
background-color: #333;
color: #fff;
text-align: center;
border-radius: 10px;
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.3);
opacity: 0;
transition: all 0.5s ease;
z-index: 9999;
}
#notificationBox.show {
bottom: 20px; /* 提示框弹出位置 */
opacity: 1;
}
`);
// 创建提示框元素
const notificationBox = document.createElement('div');
notificationBox.id = 'notificationBox';
notificationBox.innerHTML = `
链接已复制到剪贴板
`; document.body.appendChild(notificationBox); var BiliAnalysisbutton = ``; $("body").append(BiliAnalysisbutton); document.getElementById('BiliAnalysis').addEventListener('click', clickBotton); var BiliAnalysisbutton1 = ``; $("body").append(BiliAnalysisbutton1); document.getElementById('BiliAnalysis1').addEventListener('click', clickBotton); function clickBotton() { var url = window.location.href; var Roomid = /com\/(\d+)/; var Roomid1 = url.match(Roomid)[1]; var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', 'https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?room_id=' + Roomid1 + '&protocol=0,1&format=0,1,2&codec=0,1&qn=10000&platform=web&ptype=8&dolby=5&panorama=1', true); httpRequest.send(); httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4 && httpRequest.status == 200) { var json = JSON.parse(httpRequest.responseText); var host = ""; var baseurl = ""; var extra = ""; var roomurl; if (json.data.playurl_info.playurl.stream[1] && json.data.playurl_info.playurl.stream[1].format[1] && json.data.playurl_info.playurl.stream[1].format[1].codec[0]) { host = json.data.playurl_info.playurl.stream[1].format[1].codec[0].url_info[0].host; baseurl = json.data.playurl_info.playurl.stream[1].format[1].codec[0].base_url; extra = json.data.playurl_info.playurl.stream[1].format[1].codec[0].url_info[0].extra; } else if (json.data.playurl_info.playurl.stream[1] && json.data.playurl_info.playurl.stream[1].format[0] && json.data.playurl_info.playurl.stream[1].format[0].codec[0]) { host = json.data.playurl_info.playurl.stream[1].format[0].codec[0].url_info[0].host; baseurl = json.data.playurl_info.playurl.stream[1].format[0].codec[0].base_url; extra = json.data.playurl_info.playurl.stream[1].format[0].codec[0].url_info[0].extra; } else if (json.data.playurl_info.playurl.stream[0] && json.data.playurl_info.playurl.stream[0].format[0] && json.data.playurl_info.playurl.stream[0].format[0].codec[0]) { host = json.data.playurl_info.playurl.stream[0].format[0].codec[0].url_info[0].host; baseurl = json.data.playurl_info.playurl.stream[0].format[0].codec[0].base_url; extra = json.data.playurl_info.playurl.stream[0].format[0].codec[0].url_info[0].extra; } roomurl = host + baseurl + extra; navigator.clipboard.writeText(roomurl).catch(e => console.error(e)); // 显示弹出提示框 notificationBox.classList.add('show'); // 设置定时器,在10秒后自动隐藏提示框 setTimeout(() => { notificationBox.classList.remove('show'); }, 10000); } }; } })();