B站粉丝计数器 | ESP32轻松学(Arduino版)

B站粉丝计数器
本文介绍如何使用Arduino和ESP32开发板制作一个B站粉丝计数器,通过调用B站API获取粉丝数、播放数和获赞数,并在OLED屏幕上实时显示。
部署运行你感兴趣的模型镜像

众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板。大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython、Mind+ 等。但是,既然掌控板是基于 ESP32 芯片的,所以我们也可以用 Arduino 软件对其编程。所以,有时间的话,我准备给大家分享一系列用 Arduino 代码对掌控板(ESP32)编程的教程:用 Arduino 玩转掌控版(ESP32)系列

本期给大家带来的是:B 粉计数器(B站粉丝计数器)
封面

前言

如果大家有在玩一些自媒体平台的话,比如微信公众号、B站、知乎、抖音等,那么相信大家对自己的粉丝数、阅读数或者播放量等相关的数据会比较关注,但是每次手动去查看又比较麻烦。

那么有没有简单一些的方法呢?在创客技术宅眼里,万物皆可自动化!

今天就以 B 站为例,手把手教大家做一个桌面 B 站粉丝计数器!为什么是 B 站呢?因为 B 站做起来最简单啊……(哭……)

先来看一下效果,我用 Arduino 软件分别将程序上传至掌控板(ESP32)和 NodeMCU(ESP8266),看到的效果基本是一样的。本来还想做个外壳的,无奈被疫情隔离在家,设备不多,只能做个简易版了,大家将就看看吧。
掌控板(ESP32)显示效果
NodeMCU(ESP8266)显示效果

纳尼!粉丝数竟然那么少!丢脸丢脸,还不赶紧三连支持一下喽

干啥啥不行,骗粉第一名!

下面开始正式教程。

获取 B 站 API

首先用**谷歌浏览器(推荐)**打开 B 站个人主页,如下图所示,重点关注我圈出来的几个地方,分别是:关注数、粉丝数、点赞数、播放分数,这几个数据的含义,大家一看就明白了,就不解释了。另外还要关注右下角的 UID,这是一串数字,在 B 站中就是你的唯一 ID,这个数字很重要,后面会用到。
B站个人主页然后在键盘上按下 F12 或者 Ctrl+Shift+I 进入浏览器调试模式,刷新一下 B 站个人主页,然后就会在 Network(网络)标签页下看到一堆返回的数据,从中我们可以看到数据请求的方法(比如 GET),以及对应的 Domain(网址域名)。这里我们要重点关注几行数据,那就是 Domain 为 api.bilibili.com 的几行,下图中我已经圈出来了。
B站网页调试我们逐一点进去排查,切换到 Response 标签页,在这里我们看到了 2 个熟悉的数据:following(102)和 follower(133),这不正是我们在 B 站个人主页看到的我的关注数(102)和粉丝数(133)么?
粉丝数Response我们在切换到 Headers 标签页,看到请求的网址(Request URL)如下,请求方法为 GET。
粉丝数Headers

我们将这个网址复制出来观察一下:

https://api.bilibili.com/x/relation/stat?vmid=224425204&jsonp=jsonp&callback=__jp4

其中有一段 vmid=224425204,这后面的数字,不正是我们前面提到的 UID 么?后面的 jsonp、callback 应该是对应的一些回调函数,我们将这些删除,只保留前面部分:

https://api.bilibili.com/x/relation/stat?vmid=224425204

并将它复制到浏览器地址栏去访问一下,看到什么了?是不是只留下一堆最简单的数据,里面包含了我们的关注数与粉丝数?而且这对数据是 JSON 格式的。

粉丝数API调用

我们将这些数据格式化一下,方便我们查看。这里使用了 VS Code,或者你也可以使用网上其他的 JSON 在线格式化工具,这里不展开了。

粉丝数JSON

同样的方法,我们去查一下播放数和获赞数在哪里可以查到。

相信你很快就找到了,如下图所示,先找到数据位置:

播放数与点赞数Response

再查看相应的 API 网址:

https://api.bilibili.com/x/space/upstat?mid=224425204&jsonp=jsonp&callback=__jp5

播放数与点赞数Headers
将末尾无关参数删除后:

https://api.bilibili.com/x/space/upstat?mid=224425204

然后再将这个网址在浏览器中打开,我们就看到了熟悉的播放数(view:9047)和获赞数(likes:57)。

播放数与点赞数API调用

在 VS Code 中将数据格式化,方便查看。

播放数与点赞数JSON

代码编写

联网设置

要去获取 B 站的数据,当然要联网啦。我们在程序的最开头,引入一堆联网相关的头文件。这里有一个比较特殊的地方,就是我们同时引入了 ESP32 和 ESP8266 对应的头文件,这样在编译程序的时候,就会根据所选择的的开发板,自动编译对应部分,而不会报错,做到了一套程序兼容两种开发板(ESP32 和 ESP8266)的目的。

#if defined(ESP32)
    #include <WiFi.h>
    #include <HTTPClient.h>
#elif defined(ESP8266)
    #include <ESP8266WiFi.h>
    #include <ESP8266HTTPClient.h>
#else
    #error "Please check your mode setting,it must be esp8266 or esp32."
#endif

#include <Wire.h>

// Wi-Fi
const char *ssid = "wifi_name";
const char *password = "wifi_password";

void setup()
{
   
   
    Serial.begin(115200);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED)
    {
   
   
        delay(500);
        Serial.print(".");
    }
    Serial.println(""</

您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值