获取粉丝数需要知道API调用接口
怎么获得调用的API接口呢?
以罗翔老师的bilibili账号为例子。
本人用的Firefox浏览器,其他浏览器操作与Firefox类似,在此只是提供获取API的途径,不想了解可以直接下滑找到API连接复制即可。
在此界面按下F12,打开开发调试工具。
选择网络,有的浏览器显示network
刷新当前浏览器界面
在这个界面可以看到所以的网络请求
需要什么功能可以挨着点开看看。
本次只需要获取粉丝数
只需要找到这个请求即可
请求方式是GET
直接双击会跳转页面
单击之后选择响应(response)也可。
看到follower2000多万 ~ 嗯! 没错了,这就是想要的API
所需要的就是这一条了
https://api.bilibili.com/x/relation/stat?vmid=517327498&jsonp=jsonp
后面&jsonp=jsonp是解决浏览器跨域数据访问的,咱这要粉丝数用不上
最后的最后
https://api.bilibili.com/x/relation/stat?vmid=你的UID
只需要用esp32向这个地址发送请求即可获得粉丝数啦~
需要用到的函数
ArduinoJson库有三个
函数解释:ESP32超详细学习记录:JSON解析(利用ArduinoJson库)_喜暖知寒的博客-CSDN博客
DynamicJsonDocument doc(capacity);
deserializeJson(doc, json);
String nameStr = doc["name"].as();
//返回字符串形式
int numberInt = doc["number"].as();
//返回整数的形式
HTTPClient库用到四个
函数解释:
ESP32超详细学习记录:对HTTP进行请求(简单)_喜暖知寒的博客-CSDN博客
HTTPClient.begin(String url);
HTTPClient.GET();
HTTPClient.getString();
HTTPClient.end();
对获取bilibili粉丝相关功能单独放在了文件内
文件夹内包含文件:main.ino、GitFans.cpp 、GitFans.h 、UserWiFi.cpp 、UserWiFi.h
GitFans.cpp
#include "GitFans.h"
HTTPClient http; //创建HTTPClient 实例
String url_bilibiliFans = ""; //资源定位符
long Fansnumber = 0; //粉丝数
String GitFans::GitURL(String uid) //拼接资源定位符,获取API链接
{
url_bilibiliFans = "https://api.bilibili.com/x/relation/stat?vmid=";
url_bilibiliFans += uid;
return url_bilibiliFans;
}
void GitFans::ParseFans(String url)
{
DynamicJsonDocument doc(1024); //分配内存
http.begin(url); //请求网址
int httpGet = http.GET(); //获得服务器状态码
if(httpGet > 0)
{
Serial.printf("HTTPGET is %d",httpGet); //打印服务器状态码
if(httpGet == HTTP_CODE_OK) //判断是否请求成功
{
String json = http.getString(); //获得响应体信息
Serial.println(json); //打印响应体信息
deserializeJson(doc, json); //Json解析
Fansnumber = doc["data"]["follower"]; //获得粉丝数,整形
}
else
{
Serial.printf("ERROR1!!");
}
}
else
{
Serial.printf("ERROR2!!");
}
http.end();
}
GitFans.h
#ifndef __GITFANS_H__
#define __GITFANS_H__
#include <ArduinoJson.h> //引用两个需要的库
#include <HTTPClient.h>
extern long Fansnumber;
class GitFans
{
public:
void ParseFans(String url);
String GitURL(String uid);
private:
};
#endif
main.ino
#include "UserWiFi.h"
#include "GitFans.h"
const char * ID = "NATCAP_0E35";
const char * PASSWORD = "88888888";
String UID = "517327498";
String FansURL;
UserWiFi userwifi;
GitFans gitfans;
void setup()
{
Serial.begin(115200);
FansURL = gitfans.GitURL(UID); //获得API
userwifi.WiFiConnect(ID,PASSWORD);
}
void loop()
{
Serial.println("连接成功!");
gitfans.ParseFans(FansURL); //处理粉丝数据
Serial.println(Fansnumber); //打印粉丝数
delay(5000);
}
其余为WIFI连接相关函数,参考ESP32超详细学习记录:wifi连接最基础方法_喜暖知寒的博客-CSDN博客
简化为一个函数
(已验证!可直接复制编译)
#include <WiFi.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
const char * ID = "NATCAP_0E35";
const char * PASSWORD = "88888888";
//fans相关参数
String UID = "517327498";
String FansURL = "0";
String url_bilibiliFans = "";
long Fansnumber = 0;
/* 创建实例 */
HTTPClient http;
String GitURL(String uid)
{
url_bilibiliFans = "https://api.bilibili.com/x/relation/stat?vmid=";
url_bilibiliFans += uid;
return url_bilibiliFans;
}
void ParseFans(String url)
{
DynamicJsonDocument doc(1024); //分配内存,动态
http.begin(url);
int httpGet = http.GET();
if(httpGet > 0)
{
Serial.printf("HTTPGET is %d",httpGet);
if(httpGet == HTTP_CODE_OK)
{
String json = http.getString();
Serial.println(json);
deserializeJson(doc, json);
Fansnumber = doc["data"]["follower"];
}
else
{
Serial.printf("ERROR1!!");
}
}
else
{
Serial.printf("ERROR2!!");
}
http.end();
}
void setup()
{
Serial.begin(115200);
FansURL = GitURL(UID);
//==================wifi连接==================
Serial.println("WiFi:");
Serial.println(ID);
Serial.println("PASSWORLD:");
Serial.println(PASSWORD);
WiFi.begin(ID,PASSWORD);
while(WiFi.status()!=WL_CONNECTED)
{
delay(500);
Serial.println("正在连接...");
}
Serial.println("连接成功!");
//==================wifi连接==================
}
void loop()
{
Serial.println("连接成功!");
ParseFans(FansURL);
Serial.println(Fansnumber);
delay(5000);
}
其实不难
最终串口打印数据
粉丝数22525863 ~ 大佬就是大佬
读天气、新闻其他的之类的都可以由这个框架更改的。
一些错误信息判断功能都没有添加上去,要是应用下来还是需要添加的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)