android bilibili弹幕技术解析,bilibili弹幕定位

这是一个Tampermonkey用户脚本,用于在B站视频中定位并管理弹幕。脚本会从评论服务器抓取弹幕XML,然后允许用户通过关键词搜索、标记和过滤弹幕。用户可以快速标记特定词汇如'233'和'666',并进行批量处理,如举报。警告:大量举报可能引起账号封禁。
摘要由CSDN通过智能技术生成

// ==UserScript==

// @name bilibili弹幕定位

// @namespace http://tampermonkey.net/

// @version 1.3

// @description 在进度条上定位弹幕

// @author mscststs

// @match www.bilibili.com/video/*

// @grant non

// ==/UserScript==

(function () {

'use strict';

var danmu = [];

var ava = 0;

var result = [];

var good_count = 0;

var err_code = "弹幕扫描完毕 就是这样~喵";

var mark_233=0;

var mark_666=0;

function search(tkey){

let res = [];

$.each(danmu,function(i,a){

if(a.text.indexOf(tkey)>=0){

res.push(a);

}

});

if(res.length>0){

ava = 1;

}else{

ava = 0;

}

info("搜索完毕,共找到"+res.length+"条弹幕");

return res;

}

function pushArray(obj){

danmu.push(obj);

}

function ArraySort(){

danmu.sort(function(a,b){

return a.time-b.time;

});

init();

//数据初始化完毕,do something here

}

function saveXml(xml){

$(xml).find("d").each(function(i)

{

var vas = $(this).attr("p").split(',');

var time = vas[0];

var dmid = vas[7];

var text = $(this).text();

var odanmu = new Object();

odanmu.time = time;

odanmu.dmid = dmid;

odanmu.text = text;

pushArray(odanmu);

});

ArraySort();

}

function StandardTaxRate()

{

$.ajax({

url: "https://comment.bilibili.com/"+cid+".xml",

dataType: 'xml',

type: 'GET',

timeout: 4000,

error: function(xml)

{

err_code = "弹幕异常,这里是奇怪の领域";

//alert("弹幕定位助手初始化失败,弹幕链接"+"https://comment.bilibili.com/"+cid+".xml"+" 错误信息:"+xml.find("d").text());

saveXml(xml);

},

success: function(xml)

{

saveXml(xml);

}

});

}

StandardTaxRate();

function info(text){

$("#helper_info").text(text);

}

function creatPanal(){

$(".player-wrapper").prepend('

$("#helper_tools").css({

"position":"fixed",

"background-color":"rgba(255,255,255,0.7)",

"left":"5px",

"top":"200px",

"width":"120px",

"height":"300px",

"z-index":"10000",

"box-shadow":"0px 0px 6px rgba(0,0,0,0.6)"

});

}

function creatTool(){

$("#helper_tools").append('

$("#helper_message").css({

"position":"absolute",

"line-height":"20px",

"left":"0px",

"top":"0px",

"color":"white",

"font-family":"console",

"font-size":"15px",

"padding":"5px",

"width":"110px",

"height":"40px",

"background-color":"#ffafc9"

});

//console.log(err_code);

$("#helper_message").text(err_code);

$("#helper_tools").append('');

$("#helper_tools").append('

$("#helper_tools").append('233');

$("#helper_tools").append('666');

$("#helper_tools").append('爱一下');

$("#helper_tools").append('邪恶一下');

$("#helper_233").css({

"position":"absolute",

"left":"6px",

"top":"195px",

"font-family":"console",

"font-size":"18px",

"width":"50px",

"height":"30px",

"border":"1px solid #FFAA00",

"background-color":"white",

"color":"#FFAA00",

"border-radius": "4px"

});

$("#helper_666").css({

"position":"absolute",

"left":"65px",

"top":"195px",

"font-family":"console",

"font-size":"18px",

"width":"50px",

"height":"30px",

"border":"1px solid #726dde",

"background-color":"white",

"color":"#726dde",

"border-radius": "4px"

});

$("#helper_input").css({

"position":"absolute",

"left":"0px",

"top":"50px",

"font-family":"console",

"font-size":"16px",

"width":"118px",

"height":"25px"

});

$("#helper_info").css({

"position":"absolute",

"left":"0px",

"line-height":"20px",

"top":"80px",

"color":"white",

"font-family":"console",

"font-size":"15px",

"padding":"5px",

"width":"110px",

"height":"140px",

"background-color":"#ffafc9"

});

$("#helper_love").css({

"position":"absolute",

"left":"2px",

"top":"235px",

"font-family":"console",

"font-size":"18px",

"width":"116px",

"height":"30px",

"background-color":"white",

"color":"#f25d8e",

"border":"1px solid #f25d8e"

});

$("#helper_love").hover(function(){

$("#helper_love").css({"background-color":"#f25d8e","color":"white"});

},function(){

$("#helper_love").css({"background-color":"white","color":"#f25d8e"});

});

$("#helper_eval").css({

"position":"absolute",

"left":"2px",

"top":"267px",

"font-family":"console",

"font-size":"18px",

"width":"116px",

"height":"30px"

});

info("先输入关键词,再进行操作。一次举报大量弹幕可能会导致封号!");

}

function mark(res,color="#f25d8e",flag="helper"){

$("."+flag).remove();

var pro = $(".bilibili-player-video-progress-buffer");

var atime = $("span.bilibili-player-video-time-total").text().split(":");

var altime = atime[0]*60+atime[1];

var pwidth = pro.css("width")-30;

var pheight = pro.css("height");

$.each(res,function(i,a){

var le = (a.time+25)/altime*100*100;

le = le*0.93+2;

if(le>60){

le=le+1;

}

// console.log(le);

var $div = $('

$div.css({

"position":"absolute",

"width":"1px",

"height":pheight,

"left":le+"%",

"background-color":color,

"padding":"0",

"margin":"0",

"z-index":"100"

});

pro.append($div);

});

}

function eval_send(dmid) {

$.ajax({

//提交数据的类型 POST GET

type: "POST",

//提交的网址

url: "https://api.bilibili.com/x/dm/report/add",

//提交的数据

data: {cid:cid,

dmid:dmid,

reason:1,

content:""},

//返回数据的格式

datatype: "JSONP",//"xml", "html", "script", "json", "jsonp", "text".

//在请求之前调用的函数

//beforeSend:function(){$("#msg").html("logining");},

//成功返回之后调用的函数

success: function (data) {

},

xhrFields: {

withCredentials: true

},

crossDomain: true,

complete: function () {

//HideLoading();

},

//调用出错执行的函数

error: function () {

//请求出错处理

}

});

}

function init(){

creatPanal();

creatTool();

$("#helper_love").click(function(){

if(ava==1){

}else{

result = search("空降");

}

mark(result);

});

$(document).on("click","button#helper_eval",function(){

//alert("hello");

if(ava==1){

good_count = 0;

if(confirm("大量恶意举报可能导致封号!!是否继续")){

$.each(result,function(i,a){

//console.log(a.dmid);

eval_send(a.dmid);

good_count++;

info("已处理:"+good_count+" / "+result.length);

delay(100);

});

info("处理完毕:"+good_count+" / "+result.length);

}

}

});

$("#helper_input").bind("input propertychange",function(){

var tkey = $(this).val();

//console.log(tkey);

if(tkey.length>0){

ava = 1;

result = search(tkey);

}else{

ava = 0;

info("先输入关键词,再进行操作。一次举报大量弹幕可能会导致封号!");

}

});

$("#helper_233").click(function(){

if(mark_233===0){

mark_233=1;

mark(search("233"),"#FFAA00","helper_233");

mark(search("hhh"),"#FFAA00","helper_233");

mark(search("哈哈哈"),"#FFAA00","helper_233");

}else{

mark_233=0;

$(".helper_233").remove();

}

});

$("#helper_666").click(function(){

if(mark_666===0){

mark_666=1;

mark(search("666"),"#726dde","helper_666");

}else{

mark_666=0;

$(".helper_666").remove();

}

});

}

})();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值