200行Python代码实现B站UP主小助手(显示视频播放数、粉丝数等)

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

功能点

===

  • 显示日期时间

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

  • 显示当前UP主粉丝数

  • 显示B站未读消息

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

  • 显示视频总计获赞数

  • 显示总计获得充电次数

  • 显示直播间人气值

  • 显示直播间弹幕

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

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

pygame框架

========

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

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

安装pygame

pip install pygame

框架基础使用示例

引入pygame和sys

import 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加载字体显示文字

==============

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获取日期时间

============

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/SocialSister Yi/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无比接近

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

dnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值