通过uid对b站用户等级进行划分脚本

前言

开发语言:JS
使用说明:
注意:这个API需要在b站的网站下执行,跨域会被拒绝(很重要哦,另外请求太多可能会被禁请求,需要注意)
1、来到b站页面,按F12打开开发者工具
2、点击“控制台”或者叫 “console”
3、贴入代码,修改uids,填入用户uid的数组,例如:(注意是英文逗号)

var uids = [
1,2,3,4,5
];

4、回车运行即可,等到打印完成后,会输出人数分布。
5、输入 show_level(你想看的对应等级的数字); 然后回车,查看对应等级用户信息。例如:
在这里插入图片描述

效果图

在这里插入图片描述

源码

// 此处填入uid的数组,用,分隔
var uids = [

];
var infos = [];

var url = "https://api.bilibili.com/x/space/acc/info?token=&platform=web&jsonp=jsonp&mid=";

console.log("开始运行");

for(let i = 0; i < uids.length; i++) {
	setTimeout(() => {
        get_baseinfo(url + uids[i], i);
    }, 100 * (i + 1));
}

function get_baseinfo(url, index) {
    var xmlhttp;
    if(window.XMLHttpRequest)
    {
        //code for IE7+,Firefox,Chrome,Opera,Safari
        xmlhttp = new XMLHttpRequest();
    }
    else
    {
        //code for IE6,IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function()
    {
        if(xmlhttp.readyState == 4)
        {
            if(xmlhttp.status == 200)
            {
                var str = xmlhttp.responseText;
                if(str.length == 0)
                {
                    return "";
                }

                //console.log(str);

                var json = JSON.parse(str);
                // console.log(json);

                var info = {"uid": json["data"]["mid"], "name": json["data"]["name"], "level": json["data"]["level"]};
                infos.push(info);

                if(uids.length - 1 == index) {
                    console.log("数据获取完毕,如果相应获取单个level的用户信息,请输入 show_level(你想看的对应等级的数字); 然后回车喵");
                    console.log(infos);
                    show_num();
                }
            }
            else
            {
                //alert(xmlhttp.status);
            }

        }
        else
        {
            //alert(xmlhttp.readyState);
        }
    }
    
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}

function show_num() {
    var level = [0, 0, 0, 0, 0, 0, 0];

    for(var i = 0; i < infos.length; i++) {
        if(infos[i]["level"] < 1) level[0] += 1;
        else if(infos[i]["level"] < 2) level[1] += 1;
        else if(infos[i]["level"] < 3) level[2] += 1;
        else if(infos[i]["level"] < 4) level[3] += 1;
        else if(infos[i]["level"] < 5) level[4] += 1;
        else if(infos[i]["level"] < 6) level[5] += 1;
        else level[6] += 1;
    }

    console.log("用户等级分布统计 0:" + level[0] + " ,1:" + level[1] + " ,2:" + level[2] + " ,3:" + level[3] + " ,4:" + level[4] + " ,5:" + level[5] + " ,6:" + level[6]);
}

function show_level(level) {
    for(var i = 0; i < infos.length; i++) {
        if(infos[i]["level"] == level) console.log("uid:" + infos[i]["uid"], " name:" + infos[i]["name"]);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Love丶伊卡洛斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值