返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何实现B站UP主小助手
  • 403
分享到

Python如何实现B站UP主小助手

2023-06-29 05:06:16 403人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章给大家分享的是有关python如何实现B站UP主小助手的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言先上效果有弹幕的时候是这样的为什么两张截图的显示器不一样呢?哎,说起来都是眼泪,那天晚上我直播写这个

这篇文章给大家分享的是有关python如何实现B站UP主小助手的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

前言

先上效果

Python如何实现B站UP主小助手

有弹幕的时候是这样的

Python如何实现B站UP主小助手

为什么两张截图的显示器不一样呢?哎,说起来都是眼泪,那天晚上我直播写这个代码写到凌晨2点,代码写完我准备把树莓派和显示屏都塞到一个纸盒子里,这个过程中不知道损坏了哪里,屏幕点不亮了...

不过好在树莓派没问题,闲话不多说,先来看看我对于框架选型的思考

框架选型

为什么最后会选用 Python 这个我并不会的语言呢?因为最终是希望这个程序运行在树莓派上,所以首先调研了几种在树莓派上搭建 GUI界面 的方式。

虽然我对3、4更加熟悉,但毕竟树莓派的性能有限,我只好弃用。1我不熟,但是在我的规划里,我并不需要一些标准化的UI组件。所以最终选择了 pygame 的框架,并且树莓派系统里也默认安装了 pygame 环境,虽从未写过 python ,但对 python 的大名如雷贯耳,早就想学习一下,正好拿这个项目练练手

功能点

  • 显示日期时间

  • 显示树莓派当前局域网IP

  • 显示当前UP主粉丝数

  • 显示B站未读消息

  • 显示B站视频总计播放数

  • 显示视频总计获赞数

  • 显示总计获得充电次数

  • 显示直播间人气值

  • 显示直播间弹幕

  • 将直播间弹幕念出来(TTS)

功能是不是还挺丰富的,从写第一行代码到完成也就花了两天不到的时间,这也证明了使用 python 开发的高效率,下面来说说这些功能开发中我遇到了哪些问题,我又是如何解决的。

pygame框架

Python如何实现B站UP主小助手

pygame官网: https://www.pygame.org/

pygame 是python环境下最流行的游戏开发框架,当我不需要那些常见的UI组件时,使用游戏框架来开发反而更简单。

# 安装pygamepip install pygame

框架基础使用示例

# 引入pygame和sysimport pygame,sys  # 定义一个run_game函数,把初始化的逻辑都放里面def run_game(): # 初始化pygame引擎 pygame.init() # 设置pygame窗口大小,如果设置为0,0则自动识别分辨率,相当于窗口最大化 screen = pygame.display.set_mode((600,400))  # 无限循环,游戏的主循环 while True:  # 监听消息  for event in pygame.event.get():    # 当监听到pygame的退出时,触发sys.exit退出应用   if event.type == pygame.QUIT:    sys.exit()  # 清空屏幕  screen.fill(BG_COLOR)    # 游戏绘制的主逻辑放这里    # 刷新屏幕  pygame.display.update()  # 执行run_game函数run_game()

python对于新程序员可能挺友好的,不会对代码的编写有过多先入为主的观念。但对于已经有其他语言开发经验的我来说,也花了好一阵子才适应它的语法。

pygame加载字体显示文字

Python如何实现B站UP主小助手

# 220是字号my_font = pygame.font.Font("./路径/字体.ttf", 220) # my_font.render(文字内容,是否抗锯齿,文字颜色,文字背景色)text_element = my_font.render("文字内容", 1, (255,255,255)) # 计算文本渲染后的宽度高度text_width, text_height = my_font.size("文字内容") # 将文本元素绘制到屏幕指定坐标(元素左上角为原点)screen.blit(text_element, (100,100)

python获取日期时间

Python如何实现B站UP主小助手

import time def getTime(): # 获取系统本地时间 localtime = time.localtime()  # 将本地时间格式化为年月日 date_str = time.strftime("%Y 年 %m 月 %d 日", localtime) # 将本地时间格式化为24小时制 hm_str = time.strftime("%H:%M", localtime) # 将本地时间格式化获取秒 second_str = time.strftime("%S", localtime)

在pygame的主循环中调用getTime,并将时间文本绘制到屏幕上,一个小时钟就做好了。

显示树莓派当前局域网IP

为什么要显示当前IP呢,因为大部分时候我不会给树莓派连接鼠标键盘,那显示IP后就可以直接通过VNC或者ssh来连接树莓派了。

网上有Python获取局域网IP的方案。这个是我用下来的最佳方案:p

import Socket def get_host_ip(): try:   s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)   s.connect(('8.8.8.8', 80))   ip = s.getsockname()[0]  finally:   s.close()  return ip

显示B站各类数据

这里最主要就是去抓取B站的各种api接口,这里也有热心网友整理好的一份野生API文档,大家可以自行查看使用自己需要的。

Https://GitHub.com/SocialSisterYi/bilibili-API-collect

这些B站的API中有一些是需要身份认证的,这就需要我们自己去chrome浏览器中提取,主要会用到两个cookie字段

  • SESSDATA

  • CSRF Token(bili_jct)

import requests # 请求直播间弹幕列表res = requests.get('https://api.live.bilibili.com/xlive/WEB-room/v1/dM/gethistory?roomid='+BILI_LIVEID) data = res.JSON()

但是requests是同步执行的,会阻塞主线程的执行。比如在本例中,如果我直接使用requests发起请求,那么在请求时pygame的主逻辑循环就被卡住,这肯定不是我所希望的。网上有很多改异步的教程,我就不赘述了,这里我改用了另一个支持异步的库叫 httpx ,用法和普通requests无比接近

import httpx async with httpx.AsyncClient() as client: res = await client.get('https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory?roomid='+BILI_LIVEID) data = res.json()

然而在我设计里,要请求5个B站接口才能获取到显示的全部数据字段。这个显然也是可以优化的,而我最终选择使用 uniCloud 来开发一个云函数,然后将这个云函数URL化后给python使用,这也是我曾经在视频教程里提到过的,我们可以用uniCloud来开发后端接口,然后前端用Flutter或者其他任意框架,并不需要局限在uniapp。

将直播间弹幕念出来(TTS)

import pyttsx3 pyttsx3.speak("你好")

是的,这个pyttsx3用来做TTS很简单,但它是利用系统自带的服务来完成的。

优点就像前面的代码,使用非常简单。缺点是在各个平台不太统一,跨端也会遇到一些兼容性问题。比如我在mac上开发,在linux上运行,效果是不一样的。这个方法默认也是同步的,就是在播放语音时,是阻塞主线程的,等语音播放结束后,主线程才会继续执行。这个体验就太差了,我要等弹幕结束,弹幕才能在屏幕上跑起来。

解决方案:使用Thread开启子线程执行

from threading import Thread Thread(target=pyttsx3.speak,args=('你好',)).start()

感谢各位的阅读!关于“Python如何实现B站UP主小助手”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Python如何实现B站UP主小助手

本文链接: https://lsjlt.com/news/322802.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python如何实现B站UP主小助手
    这篇文章给大家分享的是有关Python如何实现B站UP主小助手的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言先上效果有弹幕的时候是这样的为什么两张截图的显示器不一样呢?哎,说起来都是眼泪,那天晚上我直播写这个...
    99+
    2023-06-29
  • Python实现B站UP主小助手详解开发流程
    功能点 显示日期时间显示树莓派当前局域网IP显示当前UP主粉丝数显示B站未读消息显示B站视频总计播放数显示视频总计获赞数显示总计获得充电次数显示直播间人气值显示直播间弹幕将直播间弹幕...
    99+
    2024-04-02
  • Python实现B站UP主自动监控功能详解
    目录开发工具环境搭建原理简介1.确定小目标2.模拟登录3.自动关注4.实时监控效果展示众所周知,B站有很多有趣的UP主,可以教大家一些"实用"的知识: 但是他们...
    99+
    2024-04-02
  • vbs如何实现百度小助手
    这篇文章主要为大家展示了“vbs如何实现百度小助手”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vbs如何实现百度小助手”这篇文章吧。运行它直接选择: 1.我要回答;2.歌曲搜索;3,新闻搜索;...
    99+
    2023-06-08
  • 基于Python实现西西成语接龙小助手
    目录介绍爬虫模块前缀树搜索提示成语接龙介绍 代码地址:https://github.com/taishan1994/chinese_chengyujielong 读完该文,你可以收获...
    99+
    2024-04-02
  • 如何使用批处理实现一个系统小助手
    小编给大家分享一下如何使用批处理实现一个系统小助手,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!包括 ECHO 1. 显示或隐藏文件 ECHO...
    99+
    2023-06-09
  • python实现获取b站主播直播间粉丝牌信息的方法
    前言 用于实现通过牌子逆向查主播信息这个功能。插件基于Nonebot2开发,链接:https://github.com/Ikaros-521/nonebot_plugin_searc...
    99+
    2023-02-02
    python获取b站主播直播间粉丝牌信息 python获取b站主播直播间信息 python获取b站直播间粉丝牌信息 python直播间信息
  • Python如何实现文件操作帮助类
    今天小编给大家分享一下Python如何实现文件操作帮助类的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、业务需求在使用Py...
    99+
    2023-07-05
  • vbs如何实现输入助手执行调用进程
    这篇文章将为大家详细讲解有关vbs如何实现输入助手执行调用进程,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。On Error Resume Next Set Arg...
    99+
    2023-06-08
  • 如何利用ChatGPT PHP快速实现智能AI助手
    如何利用ChatGPT PHP快速实现智能AI助手引言:在现代社会中,人们越来越依赖智能助手来帮助他们处理工作和日常事务。智能AI助手能够理解自然语言并提供个性化的帮助。本文将向您介绍如何利用ChatGPT PHP库来快速实现一个智能AI助...
    99+
    2023-10-26
    ChatGPT PHP 实现
  • css如何实现a标签有小手状和无小手状
    这篇文章将为大家详细讲解有关css如何实现a标签有小手状和无小手状,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。有小手状:<a href="##...
    99+
    2024-04-02
  • 大数据如何帮助ASP网站实现异步编程?
    随着互联网的发展,ASP网站已经成为了许多企业和个人网站的首选开发平台。然而,ASP网站的一个问题就是在高并发的情况下,会出现请求阻塞的情况,导致网站响应变慢,用户体验不佳。为了解决这个问题,大数据技术的异步编程成为了一个很好的解决方案。 ...
    99+
    2023-11-07
    大数据 异步编程 http
  • 如何为 PHP 网站实现主题和模板
    通过以下步骤为 php 网站实现主题和模板:创建主题文件夹,包含 css、js 和模板子目录。创建 style.css 文件,包含网站的视觉样式。根据需要创建 script.js 文件,...
    99+
    2024-05-02
    模板 主题 css wordpress
  • python如何实现首字母小写
    小编给大家分享一下python如何实现首字母小写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首字母小写如下方法将令给定字符串的第一个字符统一为小写。def&nb...
    99+
    2023-06-27
  • Python如何实现电影购票网站
    本篇内容介绍了“Python如何实现电影购票网站”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 用户功能同前面所有项目的用户功能,利用Aja...
    99+
    2023-06-02
  • 如何实现虚拟主机申请网站备案
    本篇内容主要讲解“如何实现虚拟主机申请网站备案”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现虚拟主机申请网站备案”吧!  1、从右上角登录会员中心:  2、点击管理,在管理界面点击提交备...
    99+
    2023-06-10
  • 微信小程序如何实现手写签名
    这篇文章主要介绍了微信小程序如何实现手写签名的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序如何实现手写签名文章都会有所收获,下面我们一起来看看吧。效果wxml<view class=&...
    99+
    2023-07-02
  • 如何利用ChatGPT和Python实现个人助理功能
    如何利用ChatGPT和Python实现个人助理功能概述:在现代社会,随着人们生活节奏的加快,个人助理的需求也变得日益重要。ChatGPT 是一种基于深度学习的对话生成模型,它可以帮助我们实现个人助理的功能。在本文中,我们将介绍如何使用 C...
    99+
    2023-10-24
    ChatGPT Python 个人助理
  • Python如何实现过迷宫小游戏
    小编给大家分享一下Python如何实现过迷宫小游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发工具Python版本: 3.6.4相关模块:pygame模块;以及一些Python自带的模块。环境搭建安装Python并添...
    99+
    2023-06-22
  • 如何实现贪吃蛇Python小游戏
    这篇文章主要介绍“如何实现贪吃蛇Python小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何实现贪吃蛇Python小游戏”文章能帮助大家解决问题。贪吃蛇Python小游戏(源码+注释+粘贴即...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作