Mind+Python bilibili播放次数提醒灯

2021-12-195551
AI 快速预览详细 收起
本项目通过Mind+Python和Arduino实现bilibili视频播放次数的实时提醒。使用BeautifulSoup库抓取bilibili视频播放量,并通过Pinpong库控制LED灯带和OLED屏。项目适用于STEM教育场景,帮助学生理解数据抓取和硬件控制。


Mind+Python bilibili播放次数提醒灯图2

【项目背景】
最近在论坛发了一个“光传声”小实验的帖子,视频上传到bilibili上,没想到播放量几日便接近20W。近几日又上传了几个视频,播放量就不行了,但我还是挺关注的,但也不能一直关注着。所以想通过灯光提醒,小屏幕显示播放次数有变化。
【项目设计】
在Mind+Python模式中,使用BeautifulSoup库对网页数据进行抓取分析,提取出播放量。再通过Pinpong库,让Arduino控制LED灯带及OLED屏。Mind+Python bilibili播放次数提醒灯图3

【程序设计】
  1. from bs4 import BeautifulSoup
  2. import re
  3. import requests
  4. import time
  5. from pinpong.board import Board,NeoPixel,Pin
  6. from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C #导入ssd1306库
  7. Board("uno").begin()               #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
  8. oled=SSD1306_I2C(width=128, height=64) #初始化屏幕,传入屏幕像素点数
  9. NEOPIXEL_PIN = Pin(Pin.D2)
  10. PIXELS_NUM = 60 #灯数
  11. np = NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)
  12. html='https://www.bilibili.com/video/BV1Wb4y1q7ZU'
  13. tem_num=0
  14. np.clear()
  15. oled.fill(0) #全部填充熄灭,清屏
  16. oled.show() #显示生效
  17. while(1):
  18.   res = requests.get(html)
  19.   res.encoding = 'utf-8'
  20.   bs = BeautifulSoup(res.text,"html.parser")
  21.   pl_list=bs.find_all(id=re.compile("viewbox_report"))  #寻找id="viewbox_report"  
  22.   bs2 = BeautifulSoup(str(pl_list),"html.parser")#寻找浏览个数所在“span”
  23.   view=bs2.find('span', class_='view')
  24.   view=str(view)
  25.   view=view.replace("播放","")
  26.   view=view.replace("·","")
  27.   
  28.   bs2 = BeautifulSoup(view,"html.parser")
  29.   data=int(bs2.span.text)
  30.   
  31.   if tem_num==0:#判断浏览量是否有增加
  32.      tem_num=data
  33.   if data>tem_num:   
  34.       tem_num=data
  35.       #因暂时编译有错误,不显示中文,暂时用以下英文“点赞”代替
  36.       oled.text("Look it",8,8)
  37.       oled.text(data,8,20) #指定位置显示文字,
  38.       oled.show()  #显示生效
  39.       np.rainbow(0,60,0,0x0000FF)
  40.    
  41.       time.sleep(3)
  42.       oled.fill(0) #全部填充熄灭,清屏
  43.       oled.show() #显示生效
  44.       np.clear()
  45.   else:
  46.     time.sleep(10)   
复制代码


使用的bilibili页面是:https://www.bilibili.com/video/BV1Wb4y1q7ZU,有人点击播放,就有灯光和显示提示。
【效果图】

Mind+Python bilibili播放次数提醒灯图4


Mind+Python bilibili播放次数提醒灯图1


【演示视频】


【Dfrobot浏览量提醒】
我一开始是做的“Dfrobot浏览量提醒”,但论坛存在“增加浏览量”的问题,之前我反应过,但到现在还没有处理好。通过以下程序,并不能实现以上功能,因为程序循环一次,页面浏览量就增加1次(作弊)。
代码放在下面:

from bs4 import BeautifulSoup
import re
import requests
import time
from pinpong.board import Board,NeoPixel,Pin
from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C #导入ssd1306库
Board("uno").begin()               #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别

oled=SSD1306_I2C(width=128, height=64) #初始化屏幕,传入屏幕像素点数
NEOPIXEL_PIN = Pin(Pin.D2)
PIXELS_NUM = 7 #灯数

np = NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)
html='https://mc.dfrobot.com.cn/thread-311681-1-1.html'

tem_num=0
np.clear()
oled.fill(0) #全部填充熄灭,清屏
oled.show() #显示生效
while(1):
  res = requests.get(html)
  res.encoding = 'utf-8'
  bs = BeautifulSoup(res.text,"html.parser")
  pl_list=bs.find_all(id=re.compile("recommendv_add"))#寻找id="recommendv_add"
  
  bs2 = BeautifulSoup(str(pl_list[1]),"html.parser")#寻找浏览个数所在“span”
  data=bs2.span.text.strip("浏览")#去除“浏览”
  print(pl_list)
  
  if tem_num==0:#判断浏览量是否有增加
     tem_num=data
  if data>tem_num:   
      tem_num=data
      #因暂时编译有错误,不显示中文,暂时用以下英文“点赞”代替
      oled.text("Look it",8,8)
      oled.text(data,8,20) #指定位置显示文字,
      oled.show()  #显示生效
      for j in range(60):#60灯亮红
          np[j]=(255,0,0)
   
      time.sleep(3)
      oled.fill(0) #全部填充熄灭,清屏
      oled.show() #显示生效
      np.clear()
  else:
    time.sleep(10)




创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(9)
花生编程
花生编程
赞啊!!
花生编程
花生编程
厉害厉害
三春牛-创客
三春牛-创客
不错!!
三春牛-创客
三春牛-创客回复云天
哦。。。
云天
云天
作者
回复三春牛-创客
悄悄,不要张扬
三春牛-创客
三春牛-创客
不错啊!
三春牛-创客
三春牛-创客
这个厉害
云天
云天
作者
[backcolor=rgb(255, 255, 254)][font=Consolas, "]from bs4 import BeautifulSoup
import re
import requests
import time

html='https://mc.dfrobot.com.cn/thread-314339-1-1.html'

tem_num=0

while(1):
res = requests.get(html)
res.encoding = 'utf-8'
bs = BeautifulSoup(res.text,"html.parser")
pl_list=bs.find_all(id=re.compile("recommendv_add"))#寻找id="recommendv_add"

bs2 = BeautifulSoup(str(pl_list[1]),"html.parser")#寻找浏览个数所在“span”
data=bs2.span.text.strip("浏览")#去除“浏览”
print(pl_list)

if tem_num==0:#判断浏览量是否有增加
tem_num=data
if data>tem_num:
tem_num=data


time.sleep(0.2)

else:
time.sleep(0.2)
[/font][/backcolor]
木子哦
木子哦
这个有趣欸,云天老师真是抓住了生活里好多细节~太赞了
CPJ
CPJ
强哇强哇(๑•̀ㅂ•́)و✧
pATAq
pATAq
这个好玩~
- 没有更多了 -