🏠 返回首頁 

Bilibili 动态页显示当前所有直播

显示当前所有直播

< 脚本Bilibili 动态页显示当前所有直播的反馈

提问/评论

§
发表于:2024-06-09

换了个api用gpt修改了一下,把334-408行function loadContent()函数换成下面的内容,测试过是能用的,可以暂时用着,感谢作者的源码

function loadContent() {
var livepanel = document.querySelector('#sml-livepanel');
livepanel.innerHTML = '';
var titlesp2 = document.querySelector('#sml-titlesp2');
let page = 1;
let pageSize = 29;
let liveUsers = [];
function fetchLiveUsers(page) {
getJSON(`https://api.live.bilibili.com/xlive/web-ucenter/user/following?page=${page}&page_size=${pageSize}`).then(xhr => {
var jsondata = xhr.response.data;
var currentLiveUsers = jsondata.list.filter(user => user.live_status === 1);
liveUsers = liveUsers.concat(currentLiveUsers);
// If all users in the current page have live_status != 1, stop fetching
if (jsondata.list.every(user => user.live_status !== 1) || page >= jsondata.totalPage) {
displayLiveUsers();
} else {
fetchLiveUsers(page + 1);
}
}, xhr => {
var err = document.createElement('p');
err.className = 'sml-center';
err.innerText = "直播数据获取失败!(" + xhr.status + " " + xhr.statusText + ")";
livepanel.appendChild(err);
});
}
function displayLiveUsers() {
titlesp2.innerText = '(' + liveUsers.length + ')'; // 人数
if (liveUsers.length > 0) {
liveUsers.forEach(user => {
// 容器div
let livecontainer = document.createElement('div');
livecontainer.className = 'sml-livecontainer';
// UP主头像a
let a1 = document.createElement('a');
a1.className = 'sml-block sml-a1';
a1.style = 'background-image:url("' + user.face + '@50w_50h.png");';
a1.href = 'https://live.bilibili.com/' + user.roomid;
a1.target = '_blank';
// 直播信息a
let a2 = document.createElement('a');
a2.className = 'sml-block sml-a2';
a2.href = 'https://live.bilibili.com/' + user.roomid;
a2.target = '_blank';
// UP主名称div
let upname = document.createElement('div');
upname.className = 'sml-word sml-block sml-upname';
upname.innerText = user.uname;
// 分区名称div
let areaname = document.createElement('a');
areaname.className = 'sml-word sml-block sml-areaname';
areaname.innerText = user.area_name_v2;
areaname.href = 'https://live.bilibili.com/p/eden/area-tags?parentAreaId=' + user.parent_area_id + '&areaId=' + user.area_id;
areaname.target = '_blank';
// 直播名称div
let livename = document.createElement('div');
livename.className = 'sml-word sml-block sml-livename';
livename.innerText = user.title;
a2.appendChild(upname);
a2.appendChild(areaname);
a2.appendChild(livename);
livecontainer.appendChild(a1);
livecontainer.appendChild(a2);
livepanel.appendChild(livecontainer);
});
} else {
var err = document.createElement('p');
err.className = 'sml-center';
err.innerText = "当前无直播";
livepanel.appendChild(err);
}
}
fetchLiveUsers(page);
}
§
发表于:2024-06-09

感谢,可以了

§
发表于:2024-06-11

亲测可用 感谢

§
发表于:2024-06-14

感谢分享新api!另外捉个虫,分区信息无法正常显示可以在此基础上把“分区名称div”模块的代码修改如下:

                // 分区名称div
let areaname = document.createElement('a');
areaname.className = 'sml-word sml-block sml-areaname';
var roomid = user.roomid;
getJSON('https://api.live.bilibili.com/xlive/web-room/v1/index/getInfoByRoom?room_id=' + roomid).then(xhr => {
var jsondata = xhr.response.data.room_info;
// 获取房间信息
areaname.innerText = jsondata.area_name;
areaname.href = 'https://live.bilibili.com/p/eden/area-tags?parentAreaId=' + jsondata.parent_area_id + '&areaId=' + jsondata.area_id;
areaname.target = '_blank';
}, xhr => { // 房间信息获取失败(非200)
});
§
发表于:2024-06-16

感谢

发表回复

登录以发表回复。