通过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"]);
    }
}

猜你喜欢

转载自blog.csdn.net/Ikaros_521/article/details/127320870