位置导航: 首页 / 物联网平台 / ESP8266哔哩哔哩应用 / 本页
为了简化您的开发流程,提高开发效率。我们为您编写了一个专门用于ESP8266获取哔哩哔哩API信息的库。
本节课里,我们将向您讲解使用ESP8266-BiliBili库的具体方法。
1.准备工作
1.1 获取哔哩哔哩用户ID和视频ID
使用本库前需要先要完成一系列的准备工作。包括获取哔哩哔哩用户ID,视频ID等。假如您不确定如何操作,可以点击这里进入我们制作的说明页面。
1.2 下载ESP8266-BiliBili库
请通过以下方式中的任何一种,来将ESP8266-BiliBili库下载到您的电脑中。
蓝奏云:https://wwa.lanzous.com/itSxZe1d5ib
GitHub: https://github.com/taichi-maker/ESP8266-BiliBili
码云:https://gitee.com/taijichuangke/ESP8266-BiliBili
1.3 将ESP8266-BiliBili库安装到Arduino IDE中
假如您不太确定如何操作,可以点击这里前往我们制作的图文教程页面。
1.4 将ArduinoJson库安装到Arduino IDE中
ArduinoJson库可通过以下渠道下载:
本站下载地址:太极创客网站下载页Arduino / ESP8266-NodeMCU第三方库下载部分
GitHub: https://github.com/bblanchon/ArduinoJson
2. 使用ESP8266-BiliBili库
ESP8266-BiliBili库可通过哔哩哔哩API获取以下免费信息:
– 粉丝信息 (UP有多少个粉丝数量、UP关注了多少个B站UP主的数量、UP的黑名单数量)
– 视频播放信息(视频播放量、弹幕数量、收藏数量、投币量、分享次数、点赞次数)
– UP信息(UP的全部视频播放数、UP的全部专栏文章阅读数、UP的全部作品获赞数)
接下来我们将提供三段示例程序的基本介绍。这三段示例程序分别用于实现以上列表中的三种功能。虽然是三段示例程序,但是程序实现的过程非常相似。我们将重点介绍以上列表中的第一个功能示例,也就是通过哔哩哔哩API获取粉丝信息。
2.1 获取哔哩哔哩粉丝信息示例程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : fans_info 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 初版建立时间20200619 程序目的/Purpose : 使用ESP8266_BiliBili库通过哔哩哔哩API获取粉丝信息 UP有多少个粉丝数量(long getFansNumber) UP关注了多少个B站UP主的数量(int getFollowing) UP的黑名单数量(int getBlack) ----------------------------------------------------------------------- 本程序所属仓库网址 GitHub: https://github.com/taichi-maker/ESP8266-BiliBili Gitee: https://gitee.com/taijichuangke/ESP8266-BiliBili ***********************************************************************/ #include <ESP8266WiFi.h> #include "ESP8266_BiliBili.h" const char* ssid = "taichimaker"; // 连接WiFi名(此处使用taichimaker为示例) // 请将您需要连接的WiFi名填入引号中 const char* password = "12345678"; // 连接WiFi密码(此处使用12345678为示例) // 请将您需要连接的WiFi密码填入引号中 FansInfo fansInfo("XXXXXXXXX"); // 建立对象用于获取粉丝信息 // 括号中的参数是B站的UUID void setup(){ Serial.begin(9600); Serial.println(""); connectWiFi(); // 连接wifi } void loop(){ if(fansInfo.update()){ // 更新信息成功 Serial.println("Update OK"); Serial.print("Server Response: "); Serial.println(fansInfo.getServerCode()); Serial.print(F("Fans Number: ")); Serial.println(fansInfo.getFansNumber()); Serial.print(F("Guan Zhu: ")); Serial.println(fansInfo.getFollowing()); Serial.print(F("Hei Ming Dan: ")); Serial.println(fansInfo.getBlack()); } else { // 更新失败 Serial.println("Update Fail..."); Serial.print("Server Response: "); Serial.println(fansInfo.getServerCode()); } Serial.println(F("======================")); delay(3000); } // 连接WiFi void connectWiFi(){ WiFi.begin(ssid, password); // 启动网络连接 Serial.print("Connecting to "); // 串口监视器输出网络连接信息 Serial.print(ssid); Serial.println(" ..."); // 告知用户NodeMCU正在尝试WiFi连接 int i = 0; // 这一段程序语句用于检查WiFi是否连接成功 while (WiFi.status() != WL_CONNECTED) { // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。 delay(1000); // 如果WiFi连接成功则返回值为WL_CONNECTED Serial.print(i++); Serial.print(' '); // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值 } // 同时NodeMCU将通过串口监视器输出连接时长读秒。 // 这个读秒是通过变量i每隔一秒自加1来实现的。 Serial.println(""); // WiFi连接成功后 Serial.println("Connection established!"); // NodeMCU将通过串口监视器输出"连接成功"信息。 Serial.print("IP address: "); // 同时还将输出NodeMCU的IP地址。这一功能是通过调用 Serial.println(WiFi.localIP()); // WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。 } |
以上示例程序是ESP8266-BiliBili库example目录中的fans_info程序。
首先我们要对ESP8266联WiFi信息进行配置。请在第20行和22行处输入联网所需的网络名称和密码。
第25行程序 FansInfo fansInfo("XXXXXXXXX");
我们通过FansInfo来建立对象获取UP主的粉丝信息,该语句的参数为UP主的哔哩哔哩用户id。
假如您不清楚如何获取用户ID信息,请点击这里进入说明页面。
在程序第38行使用update函数实现ESP8266开发板通过哔哩哔哩API获取UP主的粉丝信息。此函数返回值为bool型。在ESP8266成功连接哔哩哔哩API获服务器并且服务器返回响应状态码为200时,此函数将会返回真,否则会返回假。
程序的第41行使用了getServerCode()函数来获取哔哩哔哩API服务器响应状态码。当用户通过ESP8266向哔哩哔哩API服务器发送的请求存在问题时(如用户id错误、请求信息格式错误等),服务器会通过响应状态码告知用户问题具体原因。
程序43,45,47行分别使用了一系列函数用来获取API服务器响应信息具体内容。这些函数的作用请见以下列表。
– UP有多少个粉丝数量 (返回值类型:long): fansInfo.getFansNumber()
– UP关注了多少个B站UP主的数量 (返回值类型:int): fansInfo.getFollowing()
– UP的黑名单数量 (返回值类型:int): fansInfo.getBlack()
2.2 获取视频信息示例程序
以下示例程序与2.1 获取粉丝信息在结构上非常相似。这里我们将着重讲解程序中的不同部分。
首先程序第30行建立获取视频信息的对象名称使用的语句是VideoInfo videoInfo(“XXXXXXXXX”);。这一点与以上程序有所区别。此语句参数为视频BV号。假如您不清楚如何获取视频BV号,请点击这里进入说明页面。
另外在获取视频信息所使用的函数也与以上程序不同,以下列出了这一系列函数的具体用途:
– 视频播放量(返回值类型:long) videoInfo.getPlay()
– 弹幕数量(返回值类型:long) videoInfo.getDanmu()
– 评论数量 (返回值类型:long) videoInfo.getReply()
– 收藏数量(返回值类型:long) videoInfo.getFavorite()
– 投币量(返回值类型:long) videoInfo.getCoin()
– 分享次数(返回值类型:long) videoInfo.getShare()
– 点赞次数(返回值类型:long) videoInfo.getLikes()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : video_info 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 初版建立时间20200619 程序目的/Purpose : 使用ESP8266_BiliBili库通过哔哩哔哩API获取视频播放信息,这些信息包括: 视频播放量(long getPlay) 弹幕数量(long getDanmu) 评论数量(long getReply) 收藏(long getFavorite) 投币量(long getCoin) 分享次数(long getShare) 点赞次数(long getLikes) ----------------------------------------------------------------------- 本程序所属仓库网址 GitHub: https://github.com/taichi-maker/ESP8266-BiliBili Gitee: https://gitee.com/taijichuangke/ESP8266-BiliBili ***********************************************************************/ #include <ESP8266WiFi.h> #include "ESP8266_BiliBili.h" const char* ssid = "taichimaker"; // 连接WiFi名(此处使用taichimaker为示例) // 请将您需要连接的WiFi名填入引号中 const char* password = "12345678"; // 连接WiFi密码(此处使用12345678为示例) // 请将您需要连接的WiFi密码填入引号中 VideoInfo videoInfo("XXXXXXXXX"); // 建立对象用于获取视频信息 // 括号中的参数是B站的UUID void setup(){ Serial.begin(9600); Serial.println(""); connectWiFi(); // 连接wifi } void loop(){ if(videoInfo.update()){ // 更新信息成功 Serial.println("Update OK"); Serial.print("Server Response: "); Serial.println(videoInfo.getServerCode()); Serial.print("Bo Fang: "); Serial.println(videoInfo.getPlay()); Serial.print("Dan Mu: "); Serial.println(videoInfo.getDanmu()); Serial.print("Ping Lun: "); Serial.println(videoInfo.getReply()); Serial.print("Shou Cang: "); Serial.println(videoInfo.getFavorite()); Serial.print("Tou Bi: "); Serial.println(videoInfo.getCoin()); Serial.print("Fen Xiang: "); Serial.println(videoInfo.getShare()); Serial.print("Huo Zan: "); Serial.println(videoInfo.getLikes()); } else { // 更新失败 Serial.println("Update Fail..."); Serial.print("Server Response: "); } Serial.println(F("======================")); delay(3000); } // 连接WiFi void connectWiFi(){ WiFi.begin(ssid, password); // 启动网络连接 Serial.print("Connecting to "); // 串口监视器输出网络连接信息 Serial.print(ssid); Serial.println(" ..."); // 告知用户NodeMCU正在尝试WiFi连接 int i = 0; // 这一段程序语句用于检查WiFi是否连接成功 while (WiFi.status() != WL_CONNECTED) { // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。 delay(1000); // 如果WiFi连接成功则返回值为WL_CONNECTED Serial.print(i++); Serial.print(' '); // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值 } // 同时NodeMCU将通过串口监视器输出连接时长读秒。 // 这个读秒是通过变量i每隔一秒自加1来实现的。 Serial.println(""); // WiFi连接成功后 Serial.println("Connection established!"); // NodeMCU将通过串口监视器输出"连接成功"信息。 Serial.print("IP address: "); // 同时还将输出NodeMCU的IP地址。这一功能是通过调用 Serial.println(WiFi.localIP()); // WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。 } |
2.3 UP主信息示例程序
以下示例程序中的结构与操作方法都与以上示例程序非常相似,我们就不再赘述它的具体内容了,而只列出主要函数的功能用途:
– 获取UP的全部视频播放次数(返回值类型:long) upInfo.getPlay()
– 获取UP的全部专栏文章阅读次数(返回值类型:long) upInfo.getRead()
– 获取UP的全部作品获赞总数 (返回值类型:long) upInfo.getLikes()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : up_info 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 初版建立时间20200620 程序目的/Purpose : 使用ESP8266_BiliBili库通过哔哩哔哩API获取UP主信息 获取全部视频播放次数: getPlay() 获取全部专栏文章阅读次数: getRead() 获取全部作品获赞总数: getLikes() ----------------------------------------------------------------------- 本程序所属仓库网址 GitHub: https://github.com/taichi-maker/ESP8266-BiliBili Gitee: https://gitee.com/taijichuangke/ESP8266-BiliBili ***********************************************************************/ #include <ESP8266WiFi.h> #include "ESP8266_BiliBili.h" const char* ssid = "taichimaker"; // 连接WiFi名(此处使用taichimaker为示例) // 请将您需要连接的WiFi名填入引号中 const char* password = "12345678"; // 连接WiFi密码(此处使用12345678为示例) // 请将您需要连接的WiFi密码填入引号中 UpInfo upInfo("XXXXXXXXXXXXX"); // 建立对象用于获取粉丝信息 // 括号中的参数是B站的UUID void setup(){ Serial.begin(9600); Serial.println(""); connectWiFi(); // 连接wifi } void loop(){ if(upInfo.update()){ // 更新信息成功 Serial.println("Update OK"); Serial.print("Server Code = "); Serial.println(upInfo.getServerCode()); Serial.print("Bo Fang = "); Serial.println(upInfo.getPlay()); Serial.print("Yue Du = "); Serial.println(upInfo.getRead()); Serial.print("Zan = "); Serial.println(upInfo.getLikes()); } else { // 更新失败 Serial.println("Update Fail..."); Serial.print("Server Response: "); Serial.println(upInfo.getServerCode()); } Serial.println(F("======================")); delay(3000); } // 连接WiFi void connectWiFi(){ WiFi.begin(ssid, password); // 启动网络连接 Serial.print("Connecting to "); // 串口监视器输出网络连接信息 Serial.print(ssid); Serial.println(" ..."); // 告知用户NodeMCU正在尝试WiFi连接 int i = 0; // 这一段程序语句用于检查WiFi是否连接成功 while (WiFi.status() != WL_CONNECTED) { // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。 delay(1000); // 如果WiFi连接成功则返回值为WL_CONNECTED Serial.print(i++); Serial.print(' '); // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值 } // 同时NodeMCU将通过串口监视器输出连接时长读秒。 // 这个读秒是通过变量i每隔一秒自加1来实现的。 Serial.println(""); // WiFi连接成功后 Serial.println("Connection established!"); // NodeMCU将通过串口监视器输出"连接成功"信息。 Serial.print("IP address: "); // 同时还将输出NodeMCU的IP地址。这一功能是通过调用 Serial.println(WiFi.localIP()); // WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。 } |