使用Blinker及Json V6库获取B站粉丝数-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2338|回复: 4

[分享] 使用Blinker及Json V6库获取B站粉丝数

[复制链接]
发表于 2021-7-2 11:48 | 显示全部楼层 |阅读模式
本帖最后由 问题有点大 于 2021-7-2 11:11 编辑

本人小白,看到网上的获取B站粉丝数教程基本都是用的Arduino Json V5的库,而V6相对于V5有一定的改动,故尝试用V6库获取
IMG_20210702_110553.jpg
发表于 2021-8-25 15:17 | 显示全部楼层
很棒,补一句

StaticJsonDocument<1024> doc;

单片机空间上寸土寸金,这句1024可以在 https://arduinojson.org/v6/assistant/ 上填入json生成,解这个json只要256,省点
 楼主| 发表于 2021-7-2 11:49 | 显示全部楼层
#define BLINKER_WIFI

#include <Blinker.h>

StaticJsonDocument<1024> doc;

char auth[] = "";//改成自己的
char ssid[] = "";
char pswd[] = "";

//B站API网址
String UID  = "";  //改成自己的UID
String followerUrl = "http://api.bilibili.com/x/relation/stat?vmid=" + UID;   // 粉丝数、关注数

int follower = 0;   // 粉丝数
int following = 0;  // 关注数

// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");

// 按下按键即会执行该函数
void button1_callback(const String & state){
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data){
    BLINKER_LOG("Blinker readString: ", data);
}

void setup(){
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();

    U8G2_begin();
   
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

    Button1.attach(button1_callback);
}

void loop() {
    Blinker.run();
    getFollower(followerUrl);
    Blinker.delay(10000);
}

void getFollower(String url){//获取 B 站粉丝数
  HTTPClient http;
  client.setTimeout(10000);
  
  http.begin(url);

  int httpCode = http.GET();
  Serial.printf("[HTTP] GET... code: %d\n", httpCode);

  if (httpCode == 200)
  {
    Serial.println("Get OK");
    String resBuff = http.getString();
    Serial.println(resBuff);
    DeserializationError error = deserializeJson(doc, resBuff);
//    if (error)
//    {
//      Serial.println(F("deserializeJson() failed: "));
//      return;
//    }

    following = doc["data"]["following"];
    Serial.print("following: ");
    Serial.println(following);
   
    follower = doc["data"]["follower"];
    Serial.print("followers: ");
    Serial.println(follower);
  }
  else
  {
    Serial.println("[HTTP] GET... failed");
  }

  http.end();
}
 楼主| 发表于 2021-7-2 11:51 | 显示全部楼层
这个是串口打印信息
[HTTP] GET... code: 200
Get OK
{"code":0,"message":"0","ttl":1,"data":{"mid":698018684,"following":337,"whisper":0,"black":0,"follower":11880}}
following: 337
followers: 11880
 楼主| 发表于 2021-11-16 09:28 | 显示全部楼层
Cp0204 发表于 2021-8-25 15:17
很棒,补一句

StaticJsonDocument doc;

感谢补充
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 11:41 , Processed in 0.109179 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表