[Fw] Add Bilibili get fans count fuction.

This commit is contained in:
稚晖 2021-01-22 14:16:15 +08:00
parent 8c3673431e
commit e97da51439
3 changed files with 104 additions and 54 deletions

View File

@ -1,10 +1,9 @@
#include <WiFi.h>
#include <HTTPClient.h>
#include "display.h"
#include "imu.h"
#include "rgb_led.h"
#include "ambient.h"
#include "network.h"
#include "sd_card.h"
#include "rgb_led.h"
#include "lv_port_indev.h"
#include "lv_cubic_gui.h"
@ -17,6 +16,7 @@ IMU mpu;
Pixel rgb;
Ambient ambLight;
SdCard tf;
Network wifi;
void setup()
{
@ -26,76 +26,33 @@ void setup()
screen.init();
screen.setBackLight(0.2);
/*** Init IMU as input device ***/
lv_port_indev_init();
mpu.init();
/*** Init on-board RGB ***/
rgb.init();
rgb.setBrightness(0.1).setRGB(0, 122, 204);
/*** Init ambient-light sensor ***/
ambLight.init(ONE_TIME_L_RESOLUTION_MODE);
/*** Init micro SD-Card ***/
tf.init();
String ssid = tf.readFileLine("/wifi.txt", 1); // line-1 for WiFi ssid
String password = tf.readFileLine("/wifi.txt", 2); // line-2 for WiFi password
/*** Read WiFi info in SD-Card, then scan & connect WiFi ***/
String ssid = tf.readFileLine("/wifi.txt", 1);
String password = tf.readFileLine("/wifi.txt", 2);
Serial.println("scan start");
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0)
{
Serial.println("no networks found");
}
else
{
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i)
{
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " " : "*");
delay(10);
}
}
Serial.println("");
Serial.print("Connecting: ");
Serial.print(ssid.c_str());
Serial.print(" @");
Serial.println(password.c_str());
WiFi.begin(ssid.c_str(), password.c_str());
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
wifi.init(ssid, password);
/*** Inflate GUI objects ***/
//lv_demo_benchmark();
lv_demo_encoder();
//lv_demo_encoder();
lv_holo_cubic_gui();
Serial.println(wifi.getBilibiliFans("http://api.bilibili.com/x/relation/stat?vmid=20259914"));
/*tf.listDir("/", 0);
tf.createDir("/mydir");
@ -122,7 +79,7 @@ void loop()
mpu.update(200);
rgb.setBrightness(ambLight.getLux() / 500.0);
//Serial.println(ambLight.getLux());
Serial.println(ambLight.getLux());
delay(10);
}

View File

@ -0,0 +1,75 @@
#include "network.h"
void Network::init(String ssid, String password)
{
Serial.println("scan start");
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0)
{
Serial.println("no networks found");
}
else
{
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i)
{
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " " : "*");
delay(10);
}
}
Serial.println("");
Serial.print("Connecting: ");
Serial.print(ssid.c_str());
Serial.print(" @");
Serial.println(password.c_str());
WiFi.begin(ssid.c_str(), password.c_str());
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
unsigned int Network::getBilibiliFans(String url)
{
String fansCount = "";
HTTPClient http;
http.begin(url);
// start connection and send HTTP headerFFF
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0)
{
// file found at server
if (httpCode == HTTP_CODE_OK)
{
String payload = http.getString();
int pos = (payload.indexOf("follower"));
fansCount = payload.substring(pos + 10, payload.length() - 2);
}
}
else
{
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
return atol(fansCount.c_str());
}

View File

@ -0,0 +1,18 @@
#ifndef NETWORK_H
#define NETWORK_H
#include <WiFi.h>
#include <HTTPClient.h>
class Network
{
private:
public:
void init(String ssid, String password);
unsigned int getBilibiliFans(String url);
};
#endif