C++B站粉丝计数器

B站粉丝计数器

 

原理

通过粉丝API下载统计数据,然后通过ifstream读取文件,再通过find函数和substr函数得到统计数据,并将其输出

 

代码

#include <cstdio>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <windows.h>
#include <urlmon.h>
#include <ctime>

#pragma comment(lib, "urlmon.lib")

using namespace std;

void main()
{
	CreateDirectory("./files", NULL);  //创建文件夹

start:
	/*获取系统时间*/
	time_t timer;
	time(&timer);
	tm *t_tm = localtime(&timer);

	/*下载API(mid=后加你的UID号,可根据需求更改).*/
	URLDownloadToFile(NULL, "https://api.bilibili.com/x/relation/stat?vmid=387312095", "./files/Fans", 0, 0);
	bool Dw = false;  //是否下载稿件统计API
	if (t_tm->tm_hour == 12&&Dw == false) {
		/*因为粉丝数据是实时更新,稿件统计数据是12点更新。所以只需在12时
		下载一次即可。*/
		URLDownloadToFile(NULL, "https://api.bilibili.com/x/space/upstat?mid=387312095", "./files/Contributions", 0, 0);
		Dw = true;
	}		
	system("cls");

	/*读取API*/
	ifstream ifs,ifs2;
	string buf, buf2;  
	ifs.open("./files/Fans", ios::in);
	if (!ifs.is_open())
	{
		printf("打开粉丝API文件失败!\n\a");
		exit(0);
	}
	while (getline(ifs, buf))  //关注
	{
		//切割字符串,下同。
		cout << buf.substr(buf.find("follower"),buf.find("}}")- buf.find("follower") )<<endl;  
	}
	
	ifs2.open("./files/Contributions", ios::in);
	if (!ifs2.is_open())
	{
		printf("打开稿件统计API文件失败!\n\a");
		exit(0);
	}
	while (getline(ifs2, buf2))
	{
		cout << buf2.substr(buf2.find("view"),buf2.find("}")- buf2.find("view") )<< endl;  //播放量
		cout << buf2.substr(buf2.find("like"), buf2.find("}}") - buf2.find("like")) << endl;  //点赞
	}
	Sleep(1000);
	DeleteFileA("./files/Fans");
	DeleteFileA("./files/Contributions");
	goto start;
}

演示效果

可用Ctrl+滚轮来调整大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值