// ==UserScript== // @name B站动态首页展示所有正在直播列表 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 直接在动态首页展示所有的正在直播名单,而不是默认10个 // @author tuntun // @match https://t.bilibili.com/* // @icon https://www.google.com/s2/favicons?domain=bilibili.com // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; const API = { // 封装get方法 Get: async (props) => { const { url: baseUrl, params = {} } = props; let pStr = Object.keys(params).map((key) => { return `${key}=${params[key]}`; }).join('&'); let url = `${baseUrl}${pStr !== '' ? '?' : ''}${pStr}`; try { let res = await fetch(url, { credentials: "include" }); return (await res.json()).data; } catch (error) { console.error('Get Error', error); } }, // 通过关键词获取视频数据 getLiver: async (num = 0) => { try { let params = {}; if (num !== 0) { params = { size: num } } let res = await API.Get({ url: 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_live_users', params, }); return res; } catch (error) { console.log('getVideo', error); } }, } const Tool = { // 字符串转DOM s2d: (string) => { return new DOMParser().parseFromString(string, 'text/html').body .childNodes[0] }, } const getListItemTemplete = (prop) => { return `
${prop.uname}
${prop.title}
` } const init = async () => { let firstGet = await API.getLiver(); let liverNum = firstGet.count; if (liverNum > 10) { let liveUpListDom = document.querySelector('.live-up-list'); let allLiver = await API.getLiver(liverNum); let addLiverItem = allLiver.items.slice(10); addLiverItem.forEach(item => { liveUpListDom.appendChild(Tool.s2d(getListItemTemplete(item))); }); } } window.addEventListener( 'load', async () => { await init(); }, ) })();