Greasy Fork is available in English.
定时获取奖池情况,自动兑换物品
当前为
// ==UserScript==
// @name Bilibili直播小红包自动兑换|2018春节活动进击的汪酱
// @namespace http://greasyfork.icu/users/155548
// @version 0.3
// @description 定时获取奖池情况,自动兑换物品
// @match http://api.live.bilibili.com/exchange
// @require https://code.jquery.com/jquery-3.2.1.min.js
// @icon https://static.hdslb.com/images/favicon.ico
// @grant GM_notification
// ==/UserScript==
(function() {
//不兑换id列表
var _black_list = ["gift-113","danmu-gold","stuff-3"];
var title = new RegExp('title-'), title_max = 1001;//头衔的最大兑换红包单价
var gift = new RegExp('gift-'), gift_max = 500;//礼物的最大兑换红包单价(常见灯笼15喵娘233B坷拉450)
var stuff = new RegExp('stuff-'), stuff_max = 500;//经验石的最大兑换红包单价(原石15曜石233贤者1888)
var all_max = 5;//所有物品的兑换最大数量(为保证能够抢到,一次只兑换一个(因为写多了一个也换不到),分多次同时兑换。如果兑换太过频繁有封禁IP的风险,请不要填写过大的上限数量)
//刷新间隔(秒),默认1秒获取一次当前奖池情况
var timer = 1;
//刷新奖池的浏览器右下角通知,1为通知,其他值则不通知
var notice = 1;
//看到这里就可以了,没有需要改动的了
var _owned_badge = [];
$.get('http://api.live.bilibili.com/i/api/ajaxTitleInfo?normal=0&special=0&keyword=&had=1&page=1&pageSize=130',function(data){
$.each(data.data.list,function(i,e){
_owned_badge.push(e.id+'');
});
});
var info;
var times = 0, dif_times = 0, sub_total = 0, success_count = 0, red_bag_num = '-', _extra = '';
$('title').html('自动换红包');
$('.error-container').html('<input class=_refresh value="开始" type=button /> 已获取 <font style="font-size:18px;" class=_times>'+times+'</font> 次。 期间奖池刷新了 <font style="font-size:18px;" class=dif_times>'+dif_times+'</font> 次。 提交了 <font style="font-size:18px;" class=sub_total>'+sub_total+'</font> 次兑换请求。 其中成功兑换了 <font style="font-size:18px;color:#0eff0a" class=success_count>'+success_count+'</font> 次。 剩余红包 <font style="font-size:18px;color:#ff0a0a" class=red_bag_num>'+red_bag_num+'</font> 个<p>-------------------------------------------------</p><p>当前奖池(第<font class="_round"> - </font>轮)<font class="_time"></font>:</p><p style="color:#ff2ee5" class=_info></p><p>-------------------------------------------------</p><p>兑换记录:</p>');
$('.error-container').on('click','._refresh',function(){
window.t1 = self.setInterval(function(){_start();},timer*1000);
$(this).removeClass('_refresh').addClass('_stop');
$(this).val('停止');
});
$('.error-container').on('click','._stop',function(){
window.clearInterval(window.t1);
$(this).removeClass('_stop').addClass('_refresh');
$(this).val('继续');
});
function _start(){
$.get('http://api.live.bilibili.com/activity/v1/NewSpring/redBagPool?_='+Date.now(),function(data){
info = '';times++;
$.each(data.data.pool_list,function(i,e){
_extra='';
if($.inArray(e.award_id,_black_list) < 0){
if(title.test(e.award_id)){
if(e.price < title_max){
var title_id = e.award_id.replace(title,'');
if($.inArray(title_id,_owned_badge) < 0){
_extra = '[未拥有]';
if(e.stock_num > 0){submit(e.award_id,1,e.award_name,1);}
}else{
_extra = '[已拥有]';
}
}
}else if(gift.test(e.award_id)){
if(e.price < gift_max){
var n = Math.min(e.stock_num,e.exchange_limit,e.user_exchange_count,all_max);
if(e.stock_num > 0){submit(e.award_id,n,e.award_name,1);}
}
}else if(stuff.test(e.award_id)){
if(e.price < stuff_max){
var n = Math.min(e.stock_num,e.exchange_limit,e.user_exchange_count,all_max);
if(e.stock_num > 0){submit(e.award_id,n,e.award_name,1);}
}
}
}
info += '(剩余:'+e.stock_num+')'+e.award_name+_extra+'<br>';
});
var now=new Date(), h=now.getHours(), m=now.getMinutes(), s=now.getSeconds();
$('._time').html('['+h+':'+m+':'+s+']');
$('._times').html(times);
if($('._info').html()!=info && $('._info').html()!=''){
dif_times++;$('.dif_times').html(dif_times);
if(notice==1){
GM_notification('奖池刷新了,快去看看抢到了什么吧!','小红包自动兑换提醒','https://static.hdslb.com/images/favicon.ico');
}
$('.error-container').append('['+h+':'+m+':'+s+'] <p style="color:#0a83ff">检测到奖池刷新!</p>');
}
$('._info').html(info);
$('.red_bag_num').html(data.data.red_bag_num);
$('._round').html(data.data.round);
});
}
function submit(a,b,c,d){
var now=new Date(), h=now.getHours(), m=now.getMinutes(), s=now.getSeconds();
$('.error-container').append('<p>['+h+':'+m+':'+s+'] 发起兑换请求,'+c+'(ID:'+a+') x '+d+'个(根据可兑换数量共'+b+'次请求)</p>');
sub_total++;
$('.sub_total').html(sub_total);
for(var i=0;i<b;i++){
$.get('http://api.live.bilibili.com/activity/v1/NewSpring/redBagExchange?award_id='+a+'&exchange_num='+d,function(data){
if(data.code==0){
$('.error-container').append('<p style="color:#0eff0a">['+h+':'+m+':'+s+'] 成功兑换'+c+'(ID:'+a+')('+d+'个) 剩余'+data.data.red_bag_num+'红包</p>');
success_count++;
$('.success_count').html(success_count);
if(title.test(a)){
var z = e.award_id.replace(title,'');
_owned_badge.push(z+'');
}
}else{
$('.error-container').append('['+h+':'+m+':'+s+'] <p style="color:#ff860a">'+data.message+'('+c+'(ID:'+a+'))</p>');
}
});
}
}
})();