循环监测b站用户粉丝数、舰长数及增量 程序

2023-11-09

前言

开发语言:python(3.8)
功能介绍:循环监测b站用户粉丝数、舰长数及增量,实时打印,并存入数据库中。

使用说明:

运行“双击运行.bat”,输入用户UID 回车,再输入循环周期 回车,即可开始监测。
ps:数据存储是sqlite,可以使用sqlitebrowser来查看所有数据。

项目地址:

https://github.com/Ikaros-521/bili_user_data_monitor
ps:游猴插件版本 https://greasyfork.org/zh-CN/scripts/453169

效果图

在这里插入图片描述

源码

# -*- coding: utf-8 -*-
import json
import time
import random
import sqlite3
import requests
import datetime

# 打包 venv\Scripts\pyinstaller.exe -F 1.py

uid = 0
loop_time = 60
last_fans = 0
last_guard = 0


# 字符串是否是数字
def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass

    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass

    return False


while True:
    uid = input("请输入监测用户UID:")
    if not is_number(uid):
        print("请输入正确的UID")
        continue
    loop_time = input("请输入监测周期(秒):")
    if not is_number(loop_time):
        print("请输入数字")
        continue
    else:
        print("开始运行...")
        break

headers1 = {
    'Accept': 'application/json, text/plain, */*',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'Content-Type': 'text/plain;charset=UTF-8',
    # 'Referer': referer,
    'origin': 'https://live.bilibili.com',
    # 'cookie': 'l=v',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3875.400 QQBrowser/10.8.4492.400'
}


# 配置数据库
def config_db():
    global con, cur
    con = sqlite3.connect("user_data.db")
    cur = con.cursor()
    # 创建表user
    sql = "CREATE TABLE IF NOT EXISTS user(mid TEXT,name TEXT,fans TEXT,guard TEXT,data TEXT)"
    cur.execute(sql)


def get_base_info(uid):
    API_URL = 'https://account.bilibili.com/api/member/getCardByMid?mid=' + uid
    ret = requests.get(API_URL)
    ret = ret.json()
    # nonebot.logger.info(ret)
    return ret


def get_room_id(uid):
    API_URL = 'https://api.live.bilibili.com/room/v2/Room/room_id_by_uid?uid=' + uid
    ret = requests.get(API_URL)
    ret = ret.json()
    room_id = ret['data']['room_id']
    return room_id


def get_guard_info(uid, room_id):
    API_URL = 'https://api.live.bilibili.com/xlive/app-room/v2/guardTab/topList?roomid=' + str(
        room_id) + '&page=1&ruid=' + uid + '&page_size=0'
    ret = requests.get(API_URL)
    ret = ret.json()
    return ret


def get_now_time():
    return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))


def run():
    global last_fans
    global last_guard
    base_info_json = get_base_info(uid)
    room_id = get_room_id(uid)
    guard_info_json = get_guard_info(uid, room_id)
    now_time = get_now_time()
    # 数据插入数据库
    sql = "insert into user(mid, name, fans, guard, data) values (?, ?, ?, ?, ?)"
    cur.execute(sql, (base_info_json['card']['mid'], base_info_json['card']['name'], base_info_json['card']['fans'],
                      guard_info_json['data']['info']['num'], now_time))
    con.commit()

    msg = now_time + ' | 用户名:' + base_info_json['card']['name'] + ' | UID:' + str(base_info_json['card']['mid']) + \
          ' | 房间号:' + str(room_id) + ' | 粉丝增加:' + str(base_info_json['card']['fans'] - last_fans) + ' | 粉丝数:' + \
          str(base_info_json['card']['fans']) + ' | 舰团增加:' + str(guard_info_json['data']['info']['num'] - last_guard) + \
          ' | 舰团数:' + str(guard_info_json['data']['info']['num'])

    print(msg)

    last_fans = base_info_json['card']['fans']
    last_guard = guard_info_json['data']['info']['num']



# 创建数据库
print("创建数据库...")
config_db()
# 首次运行
base_info_json = get_base_info(uid)
room_id = get_room_id(uid)
guard_info_json = get_guard_info(uid, room_id)
last_fans = base_info_json['card']['fans']
last_guard = guard_info_json['data']['info']['num']
now_time = get_now_time()
msg = now_time + ' | 用户名:' + base_info_json['card']['name'] + ' | UID:' + str(base_info_json['card']['mid']) + \
      ' | 房间号:' + str(room_id) + ' | 粉丝增加:0' + ' | 粉丝数:' + str(base_info_json['card']['fans']) + \
      ' | 舰团增加:0' + ' | 舰团数:' + str(guard_info_json['data']['info']['num'])
print(msg)
# 数据插入数据库
sql = "insert into user(mid, name, fans, guard, data) values (?, ?, ?, ?, ?)"
cur.execute(sql, (base_info_json['card']['mid'], base_info_json['card']['name'], base_info_json['card']['fans'],
                  guard_info_json['data']['info']['num'], now_time))
con.commit()


while True:
    time.sleep(int(loop_time))
    run()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环监测b站用户粉丝数、舰长数及增量 程序 的相关文章

随机推荐

  • Yolov3计算准确率、误报率、漏检率等

    思想很简单 将标注的yolo数据转下格式 转为 类别 xmin ymin xmax ymax 转换valid后的信息 两个信息进行对比 完事 具体的 在终端执行 darknet detector valid cfg voc data cfg
  • 【SSM框架】之Spring

    SSM框架笔记 自用 Spring Spring Framework系统架构 Spring程序开发步骤 核心概念 IoC Inversion of Control 控制反转 使用对象时 由主动new产生对象转换为由外部提供对象 此过程中对象
  • 计算机毕业设计看这篇就够了(二)毕设流程

    本篇将为大家介绍计算机专业毕业设计流程 提前了解毕设流程可以让同学们从宏观角度去看毕设要做些什么样的事情 大概知道每个阶段要去做哪些工作 为后续毕设任务的真正开展打下心理预期 也不至于一脸懵 计算机毕设分为以下主流程 选题 确定导师 完成前
  • 【Proteus仿真】【STM32单片机】基于stm32的智能书桌设计

    文章目录 一 功能简介 二 软件设计 三 实验现象 联系作者 一 功能简介 系统运行后 默认为手动模式 当检测有人 可通过K2键开关灯 如果姿势不对 警示灯亮 否则灭 可通过K3和K4键调节桌子高度 按下K1键切换为自动模式 此时有人 且光
  • Sentinel原理与Demo

    Sentinel 是什么 随着微服务的流行 服务和服务之间的稳定性变得越来越重要 Sentinel 以流量为切入点 从流量控制 熔断降级 系统负载保护等多个维度保护服务的稳定性 Sentinel 具有以下特征 丰富的应用场景 Sentine
  • 【FreeRTOS(三)】任务状态

    文章目录 任务状态 任务挂起 vTaskSuspend 取消任务挂起 vTaskResume 挂起任务调度器 vTaskSuspendAll 取消挂起任务调度器 xTaskResumeAll 代码示例 任务挂起 取消任务挂起 代码示例 挂起
  • Docker help帮助文档

    1 查看 docker help 帮助 docker help 2 用法 docker 选项 命令 3 选项 客户端配置文件的配置字符串位置 默认为 root docker D 启用调试模式 H 要连接的主机列表守护进程套接字 l 设置日志
  • Centos7.3安装和配置Mysql5.7

    第一步 获取mysql YUM源 进入mysql官网获取RPM包下载地址 https dev mysql com downloads repo yum 点击 下载 右击 复制链接地址 https dev mysql com get mysq
  • 源码剖析transformer、self-attention

    原文链接 首先给大家引入一个github博客 这份代码是我在看了4份transformer的源码后选出来的 这位作者的写法非常易懂 代码质量比较高 GitHub Separius BERT keras Keras implementatio
  • 一步一步教你用idea上交代码到gitee(图文解释)

    一步一步教你用idea上交代码到gitee 图文解释 文章目录 一步一步教你用idea上交代码到gitee 图文解释 工具准备 具体操作 结语 工具准备 首先 我们进行代码的提交需要两个工具包 在我的上一篇中有讲 大家可以自行去提取 2条消
  • .net 批量注册服务

    假设我们需要注册xxxQuery服务 例如下图中的BarQuery和FooQuery 传统的做法是 services TryAddScoped
  • vscode 运行和调试 javascript 代码

    安装node 安装vscode 扩展包 code runer 配置vs code下有关F5的操作的文件 参考地址
  • 【Zabbix实战之运维篇】Zabbix监控Docker容器配置方法

    Zabbix实战之运维篇 Zabbix监控Docker容器配置方法 一 检查Zabbix监控平台状态 1 检查Zabbix各组件容器状态 2 奸诈Zabbix server状态 二 下载监控模板 1 进入Zabbix官网下载页面 2 查看下
  • 微信小程序中识别html标签的方法

    rich text组件 在微信小程序中有一个组件rich text可以识别文本节点或是元素节点 具体入下 需要识别的数据放在data中 然后放在nodes属性中即可
  • 编写程序:5类员工有对应封装类,创建Employee数组,若干不同的Employee对象,并实现增删改查功能(《黑马程序员》P144编程题加强版)

    文章目录 Employee类 SalariedEmployee类 HourlyEmployee类 SalesEmployee类 BasePlusSalesEmployee类 Test类 实现增删改查 原题 1 Employee 这是所有员工
  • 【python】深入了解Selenium-PageObject

    1 PageObject 定义 Page Object 简称PO 模式 是Selenium实战中最为流行 并且是自动化测试中最为熟悉和推崇的一种设计模式 在设计自动化测试时 把页面元素和元素的操作方法按照页面抽象出来 分离成一定的对象 然后
  • Sophus使用记录

    sophus库是一个基于Eigen的C 李群李代数库 可以用来方便地进行李群李代数的运算 头文件 主要用到以下两个头文件 include
  • 基于水文规约SL651-2014的“定时报”解析

    一 概述 水文监测数据通信规约SL651 2014规定了水文监测系统中前端传感器与遥测终端以及中心站之间的数据通信协议 本文将以M21F系列RTU为例 详细描述符合SL651 2014数据通信规约标准的遥测站终端与中心站之间的 定时报 报文
  • Go开源库Excelize介绍,电子Excel表格操作强大的库

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库 基于 ECMA 376 ISO IEC 29500 国际标准 项目作者是续 日 现任阿里巴巴软件工程师 曾就职百度 奇虎360公司 前百度Go语言编程委员
  • 循环监测b站用户粉丝数、舰长数及增量 程序

    前言 开发语言 python 3 8 功能介绍 循环监测b站用户粉丝数 舰长数及增量 实时打印 并存入数据库中 使用说明 运行 双击运行 bat 输入用户UID 回车 再输入循环周期 回车 即可开始监测 ps 数据存储是sqlite 可以使