ESP32超详细学习记录:获取B站粉丝数

2023-05-16

获取粉丝数需要知道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(使用前将#替换为@)

ESP32超详细学习记录:获取B站粉丝数 的相关文章

  • Python与C/C++相互调用

    https www cnblogs com yanzi meng p 8066944 html
  • HAL库开启串口空闲中断

    串口接收数据时 xff0c 开启空闲中断后可在接收完成触发中断 xff0c 再去做进一步处理 xff0c 但找了半天没找掉HAL库的使能某中断的函数 xff0c 以及判断是哪个中断触发的函数 xff0c 原来在stm32f4xx hal u
  • debug成长记录

    提示 xff1a 今天编译代码时 xff0c 出现了错误 function definition is not allowed here 描述 xff1a 在函数调用时也找不到已经定义的函数 但明明已经定义了 xff0c 并且路径也没有问题
  • 【rotors】多旋翼无人机仿真(五)——多无人机仿真

    rotors 多旋翼无人机仿真 xff08 一 xff09 搭建rotors仿真环境 rotors 多旋翼无人机仿真 xff08 二 xff09 设置飞行轨迹 rotors 多旋翼无人机仿真 xff08 三 xff09 SE3控制 roto
  • linux分区不该把/usr独立分出来

    manjaro arch 安装完成后重启报错 xff1a Root device mounted successfully but sbin init does not exist 前言 这个问题是我的大佬同学赖拐发现的 xff0c 估计也
  • Linux与Windows 10用grub引导教程

    前言 去年暑假的时候 xff0c 写了一篇如何装 Linux 和 Windows 10 双系统的文章发在了简书上 xff0c 我写这篇文章的原因是当初装双系统确实是折腾了许久 xff0c 网上也找不到一篇详尽的教程 由于去年对于写教程还不是
  • 如何在Ubuntu 20.04上安装Wine 5.0

    如何在Ubuntu 20 04上安装Wine 5 0 Wine是一款开源的应用程序 xff0c 它提供了在类似Unix的操作系统上运行为微软Windows开发的软件的兼容性 在Wine的帮助下 xff0c 你可以在Linux系统上运行Win
  • 如何在Ubuntu 20.04上安装Kvm

    在继续安装之前 xff0c 请确保您的Ubuntu主机支持KVM虚拟化 系统应具有带VT x xff08 vmx xff09 的Intel处理器或具有AMD V xff08 svm xff09 技术支持的AMD处理器 运行以下grep命令以
  • 安装KVM+安装虚拟机+配置桥接网络

    由于很久没有玩虚拟机了 xff0c 有些生疏 xff0c 百度了一下 xff0c 结果百度出来的文章动不动就让安装一大堆东西 xff0c 不管用上用不 xff0c 而且我还惊奇的发现这些让安装一大堆东西的博客基本都相同 xff0c 你说奇不
  • win10通过pe修复uefi引导后bootmanage出现两个引导项很烦人

    解决办法 xff1a 1 xff0c 进入win10桌面后按win 43 r召唤出运行窗口 2 xff0c 输入msconfig 按回车 3 xff0c 删除不想要的引导选项 重启应该就可以直接进入系统了
  • 安装黑苹果遇到的问题(为什么出现禁止符号,为什么无法从硬盘启动)

    博客网址 xff1a https macx top 10442 html
  • macOS原生支持NTFS读写的方法

    详细流程 xff1a 插上硬盘后 xff0c 查看你的硬盘名称 xff0c 这里假设名称是AngleDisk 打开Applications的Terminal在终端输入sudo nano etc fstab 敲击回车 现在你看到了一个编辑界面
  • Mac M1 安装brew 国内源

    1 command 43 space 打开搜索 2 输入terminal找到终端点击打开 3 拷贝以下代码放置到终端并回车 bin zsh c 34 curl fsSL https gitee com huwei1024 HomebrewC
  • 日语的-自-他动词区分

  • Sophus库安装和使用

    1 前言 Sophus库是一个较好的李群和李代数的C 43 43 库 xff0c 它很好的支持了SO 3 so 3 SE 3 和se 3 Sophus库是基于Eigen基础上开发的 xff0c 继承了Eigen库中的定义的各个类 因此在使用
  • 打开cmd后默认进入conda的base环境的解决办法

    解决方案 xff1a 命令行执行 xff1a xff08 取消默认加载环境 xff09 conda config set auto activate base false 次级解决方案 xff1a 修改 vim xff5e bashrc x
  • 数据库范式的一些理解

    一 假设一个表R 61 X xff0c Y xff0c Z xff0c 其中X Y Z是三个属性组 xff0c X是码 再假设R不符合3NF xff0c 即 xff1a X gt Y xff0c Y gt Z xff0c 其中Y不是码 xf
  • matlab修改默认当前文件夹

    操作步骤 找到 matlabrc m 文件 cd 39 Matalb的安装路径 39 cd toolbox local 编辑 matlabrc m 文件 在文件末尾添加打开时要转到的目录 xff0c 比如 xff1a cd 39 C Use
  • nvm下载各node版本时使用淘宝的镜像

    在nvm安装目录下的settings txt里 xff0c 添加如下两行代码 xff1a node mirror https npm taobao org mirrors node npm mirror https npm taobao o
  • conda清除无用安装包

    conda clean p 删除缓存 conda clean y all 删除pkgs目录下所有的无用安装包及cache

随机推荐