可删除未发言用户
parent
5a6e5c6820
commit
cec4fb1469
11
js/custom.js
11
js/custom.js
|
@ -153,7 +153,7 @@ function exitEv(id){
|
|||
$(`${id}`).remove();
|
||||
}
|
||||
// 进入广场
|
||||
function peopleObj(name,uid,say,action){
|
||||
function peopleObj(name,uid,say,action,active_time){
|
||||
let yspHtml = '';
|
||||
let yspData = [
|
||||
{
|
||||
|
@ -166,11 +166,12 @@ function peopleObj(name,uid,say,action){
|
|||
peopleImg:`people-img0${Math.floor(Math.random()*6+1)}`,//人物图片
|
||||
ying_guang:`stick-0${Math.floor(Math.random()*5+1)}`,//荧光棒
|
||||
dancin:action,
|
||||
active_time: active_time
|
||||
}
|
||||
]
|
||||
$.each(yspData, function (commentIndex, comment) {
|
||||
yspHtml += `
|
||||
<div id="${comment.uid}" class="dance-people data${peopleId}" style="top: ${comment.top}; left: ${comment.left};">
|
||||
<div id="${comment.uid}" data-time="${comment.active_time}" class="dance-people data${peopleId}" style="top: ${comment.top}; left: ${comment.left};">
|
||||
<div class="speak ">${comment.say}</div>
|
||||
<div class="people-img ${comment.peopleImg} ${comment.dancin}">
|
||||
<div class="stick ${comment.ying_guang}"></div>
|
||||
|
@ -227,6 +228,12 @@ $(function(){
|
|||
changeMusic()
|
||||
}, false);
|
||||
}
|
||||
|
||||
// 60s检测一次 十分钟没发言的删除
|
||||
setInterval(function () {
|
||||
delExpireDiv()
|
||||
}, 60000)
|
||||
|
||||
//烟花
|
||||
// setInterval(()=>{
|
||||
// setTimeout(function() {
|
||||
|
|
70
js/handle.js
70
js/handle.js
|
@ -1,4 +1,13 @@
|
|||
// 对象uid=>最近弹幕时间
|
||||
let uidObj = {}
|
||||
|
||||
// 歌曲库地址
|
||||
let musicUrl = 'https://bili.scdxtc.cn'
|
||||
|
||||
// 自动删除不说话用户
|
||||
let autoDel = true
|
||||
// 多少秒不说话删除
|
||||
let speakExpireTime = 10*60
|
||||
// 歌曲列表
|
||||
var musicList = []
|
||||
|
||||
|
@ -79,22 +88,22 @@ function getLeader() {
|
|||
}
|
||||
|
||||
function music() {
|
||||
$.get('https://bili.scdxtc.cn', function (res) {
|
||||
$.get(musicUrl, function (res) {
|
||||
musicList = res
|
||||
if (musicList.length > 0) {
|
||||
$('#music source').attr('src', 'https://bili.scdxtc.cn/music/'+musicList[0])
|
||||
$('#music source').attr('src', musicUrl+'/music/'+musicList[0])
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 切歌
|
||||
function changeMusic() {
|
||||
$.get('https://bili.scdxtc.cn', function (res) {
|
||||
$.get(musicUrl, function (res) {
|
||||
musicList = res
|
||||
if (musicList.length > 0) {
|
||||
let index = Math.floor(Math.random()*(musicList.length-1))
|
||||
$('#music').data('song', musicList[index])
|
||||
$('#music source').attr('src', 'https://bili.scdxtc.cn/music/'+musicList[index])
|
||||
$('#music source').attr('src', musicUrl+'/music/'+musicList[index])
|
||||
$('#music')[0].load()
|
||||
}
|
||||
})
|
||||
|
@ -107,10 +116,24 @@ function peopleHan(val){
|
|||
function dancer(val){
|
||||
return allEventList.includes(val);
|
||||
}
|
||||
|
||||
// 删除久未说话的人
|
||||
function delExpireDiv() {
|
||||
if (!autoDel) {
|
||||
return false
|
||||
}
|
||||
|
||||
let timestamp = parseInt(new Date().getTime()/1000)
|
||||
let delList = $(".dance-people").filter(function() {
|
||||
return $(this).attr("data-time") < timestamp - speakExpireTime;
|
||||
})
|
||||
console.log(delList.length, speakExpireTime+'秒未说话人数')
|
||||
delList.remove();
|
||||
}
|
||||
|
||||
// 接受消息处理
|
||||
function receiveMessage(event)
|
||||
{
|
||||
|
||||
// console.log(event.data, '接受弹幕')
|
||||
// 我们能信任信息来源吗?
|
||||
if (event.origin !== "https://live.bilibili.com") {
|
||||
|
@ -119,7 +142,9 @@ function receiveMessage(event)
|
|||
|
||||
let dataList = JSON.parse(event.data)
|
||||
let data = dataList.dm
|
||||
let adminList = dataList.admin
|
||||
// 目前硬编码大航海列表
|
||||
// let adminList = dataList.admin
|
||||
adminList = ['内有猛犬小心','热心市民阿狄呐','流域_墨绿绿'];
|
||||
|
||||
if (data.length <= 0) {
|
||||
return false
|
||||
|
@ -129,7 +154,6 @@ function receiveMessage(event)
|
|||
if (data.ct === '') {
|
||||
return false
|
||||
}
|
||||
adminList = ['内有猛犬小心','热心市民阿狄呐','流域_墨绿绿'];
|
||||
|
||||
// 大航海列表
|
||||
if (adminList.length > 0) {
|
||||
|
@ -164,10 +188,15 @@ function receiveMessage(event)
|
|||
// uid是否存在 不存在则存入uidObj
|
||||
let isNew = 0
|
||||
// console.log(uidObj[data.uid],'uidObj[data.uid]');
|
||||
if (!uidObj[data.uid]) {
|
||||
let speakTime = uidObj[data.uid];
|
||||
if (!speakTime) {
|
||||
isNew = 1
|
||||
uidObj[data.uid] = data.uname
|
||||
} else if (autoDel && speakTime < parseInt(new Date().getTime()/1000) - speakExpireTime){
|
||||
//存在 但是最近弹幕时间已在过期时间外。
|
||||
isNew = 1;
|
||||
}
|
||||
// 记录uid最近弹幕时间
|
||||
uidObj[data.uid] = data.ts
|
||||
|
||||
// console.log(isNew, data.uname + ' 是否存在')
|
||||
|
||||
|
@ -180,7 +209,7 @@ function receiveMessage(event)
|
|||
let isLeader = data.uname == leaderInfo ? 1 : 0
|
||||
let dm = {text: data.danmaku, uid: data.uid, uname: data.uname,
|
||||
event: eventName,
|
||||
is_new: isNew, is_admin: 0, is_leader: isLeader}
|
||||
is_new: isNew, is_admin: 0, is_leader: isLeader,active_time: data.ts}
|
||||
let leader = {
|
||||
uid: 0, uname: leaderInfo, text: '', event: ''
|
||||
}
|
||||
|
@ -196,11 +225,13 @@ function receiveMessage(event)
|
|||
// 新用户
|
||||
if(dm.is_new==1){
|
||||
// if(dm.uname!=leader.uname){//如果弹幕的人的名字不等于领舞者的名字,就创建一个人物
|
||||
peopleObj(dm.uname,dm.uid,dm.text,dm.event);
|
||||
peopleObj(dm.uname,dm.uid,dm.text,dm.event,dm.active_time);
|
||||
// }
|
||||
} else {
|
||||
// 老用户
|
||||
$(`#${dm.uid} .speak`).html(dm.text);
|
||||
//更新最近时间
|
||||
$(`#${dm.uid}`).attr('data-time', dm.active_time);
|
||||
$(`#${dm.uid} .speak`).removeClass("dn");
|
||||
setTimeout(()=>{
|
||||
$(`#${dm.uid} .speak`).addClass("dn");
|
||||
|
@ -211,6 +242,10 @@ function receiveMessage(event)
|
|||
}
|
||||
}
|
||||
num++;
|
||||
|
||||
// console.log(Object.keys(uidObj).length, 'uid 长度')
|
||||
// console.log(uidObj, 'uid')
|
||||
// console.log(num, '人物渲染个数')
|
||||
// 显示领舞的昵称
|
||||
$('.lingname').text(leader.uname);
|
||||
if (!isLeader) {
|
||||
|
@ -264,19 +299,6 @@ function receiveMessage(event)
|
|||
}
|
||||
}
|
||||
// -------------------- 每条弹幕处理 end -----------------------
|
||||
|
||||
// event.source 就当前弹出页的来源页面
|
||||
// event.data 是 "hello there!"
|
||||
|
||||
// 假设你已经验证了所受到信息的origin (任何时候你都应该这样做), 一个很方便的方式就是把event.source
|
||||
// 作为回信的对象,并且把event.origin作为targetOrigin
|
||||
// event.source.postMessage("hi there yourself! the secret response " +
|
||||
// "is: rheeeeet!",
|
||||
// event.origin);
|
||||
|
||||
// 数据是否为空
|
||||
// 弹幕类型判断 事件弹幕、内容弹幕
|
||||
|
||||
}
|
||||
|
||||
music();
|
||||
|
|
Loading…
Reference in New Issue