热门搜索:软件下载

b站怎样有粉丝牌子(我做了一个B站粉丝显示屏)

首页教程b站怎样有粉丝牌子更新时间:2023-05-14 11:53:07

前段时间逛B站发现我解锁了一个20人关注的成就,这个Lv5的账号终于20人关注了,还挺不容易......,之后我就想要不要好好运营一下B站,毕竟咱也有一个百大的梦嘛,所以我就想先来制作一个B站粉丝统计牌。首先我翻出了家中必备的esp8266开发板和一块oled小屏幕,这些东西淘宝十几块钱就能买到,长这样:

b站怎样有粉丝牌子,我做了一个B站粉丝显示屏(1)

这样的话硬件基本就齐活了,软件方面我选择了Arduino编译器和NodeMCU,毕竟咱也是前端出身肯定选择更适合前端的方式

b站怎样有粉丝牌子,我做了一个B站粉丝显示屏(2)

首先我们先测试一下oled的屏幕显示功能,这里我用到了OLEDDisplayUi这个库,这算是一个比较强大的oled显示库了,代码比较长我这里展示一下核心代码:

// 设置绘制文字的方式为左对齐 display->setTextAlignment(TEXT_ALIGN_LEFT); // 设置字体为ArialMT_Plain_10,并在屏幕(0,10)的位置绘制Hello World! display->setFont(ArialMT_Plain_10); display->drawString(0 x, 10 y, "Hello World!"); // 设置字体为ArialMT_Plain_16,并在屏幕(0,20)的位置绘制Hello World! display->setFont(ArialMT_Plain_16); display->drawString(0 x, 20 y, "Hello World!"); // 设置字体为ArialMT_Plain_16,并在屏幕(0,34)的位置绘制Hello World! display->setFont(ArialMT_Plain_24); display->drawString(0 x, 34 y, "Hello World!");

之后进行编译上传就会发现oled屏幕上出现了三种字体大小的"Hello World!",这样就说明我这块oled屏幕没有问题,接下来我们就能开始搞粉丝牌了。

b站怎样有粉丝牌子,我做了一个B站粉丝显示屏(3)

这里的话在B站和网上就有很多的教程了,也有很多的代码可以参考,我这里先完成一个基本的功能,就是显示个人的B站数据,这个粉丝数对前端来说是很容易就能拿到的,通过简单查找我发现了一个api :

"http://api.bilibili.com/x/relation/stat?vmid=自己的uid"

用这个api就能拿到自己的B站数据,接下来就是通过esp8266请求这个api拿到数据然后打印到oled屏幕上,下面是我用到的库:

#if defined(ESP32) //ESP32 #include <WiFi.h> #include <httpClient.h> #include <WebServer.h> #include <ESPmDNS.h> #elif defined(ESP8266) //ESP8266 #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #else #error "Please check your mode setting,it must be esp8266 or esp32." #endif #include <ArduinoJson.h> #include <U8g2lib.h> #include <Wire.h> #include <Ticker.h>

这里多说一句,其实esp32和esp8266都差不多,只不过esp32多了一个蓝牙功能

剩下的就是先连接wifi,之后用一个定时器每隔一分钟请求一下api,然后把请求到的数据打印出来就行了,然后这里面有一些坑要提前说明一下

DynamicJsonBuffer jsonBuffer(256);

这里的话要把ArduinoJson库切换成V5版本的,这个库默认是V6的版本,不切换的话是会报错的,另外还有这个请求:

HTTPClient http; http.begin(url); //改成这样: WiFiClient client; HTTPClient http; http.begin(client,url);

其他基本上就没什么了,之后进行编译上传,当esp8266连接上wifi时就会显示粉丝数量,一般网上的教程到这里就完了...

b站怎样有粉丝牌子,我做了一个B站粉丝显示屏(4)

但是我感觉这里还缺点东西,配网,这里缺少了配网。

b站怎样有粉丝牌子,我做了一个B站粉丝显示屏(5)

这里的网络是直接将wifi名称和密码写了进去,然后开发板启动直接搜索连接了,如果没有这个WiFi的话它就连接不上网络,这个功能自然也就不能使用了,如果每次更换场景就修改代码的话那太麻烦了,所以我这里要增加一个配网功能,这里我选用了WiFiManager库,这个库支持页面设置以及汉化功能,因为这个功能只是偶尔使用我也就不进行什么花里胡哨的设置了,就直接用最基础的版本就行了,以下就是这个库的基本代码:

#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #include <DNSServer.h> #include <ESP8266WebServer.h> #include <WiFiManager.h> // 测试HTTP请求用的URL。注意网址前面必须添加"http://" #define URL "http://www.example.com" void setup() { Serial.begin(9600); WiFiManager wifiManager; // 自动连接WiFi。以下语句的参数是连接ESP8266时的WiFi名称 wifiManager.autoConnect("AutoConnectAP"); Serial.print("WiFi Connected!"); HTTPClientRequest(); } void loop() {} // 发送HTTP请求并且将服务器响应通过串口输出 void httpClientRequest(){ HTTPClient httpClient; httpClient.begin(URL); Serial.print("URL: "); Serial.println(URL); int httpCode = httpClient.GET(); Serial.print("Send GET request to URL: "); Serial.println(URL); if (httpCode == HTTP_CODE_OK) { // 使用getString函数获取服务器响应体内容 String responsePayload = httpClient.getString(); Serial.println("Server Response Payload: "); Serial.println(responsePayload); } else { Serial.println("Server Respose Code:"); Serial.println(httpCode); } httpClient.end();

最后我只需要在配网成功服务器返回正确信息时调用获取B站粉丝api进行数据打印就行了,这样我们就可以随时看到自己的B站粉丝数据了。

b站怎样有粉丝牌子,我做了一个B站粉丝显示屏(6)

额......

b站怎样有粉丝牌子,我做了一个B站粉丝显示屏(7)

之后的话我打算使用自己的服务器做一个中转,来整合各个地方的数据,这样我就能显示更多的信息了,当然大家有什么好的想法可以给我留言,我会考虑去实现的。

在下边链接可以拿到这个项目的完整代码:

b站怎样有粉丝牌子,我做了一个B站粉丝显示屏(8)

wan。。。

,
软件推荐