2554| 11
|
Mind+Python bilibili播放次数提醒灯 |
本帖最后由 云天 于 2021-12-19 14:21 编辑 【项目背景】 最近在论坛发了一个“光传声”小实验的帖子,视频上传到bilibili上,没想到播放量几日便接近20W。近几日又上传了几个视频,播放量就不行了,但我还是挺关注的,但也不能一直关注着。所以想通过灯光提醒,小屏幕显示播放次数有变化。 【项目设计】 在Mind+Python模式中,使用BeautifulSoup库对网页数据进行抓取分析,提取出播放量。再通过Pinpong库,让Arduino控制LED灯带及OLED屏。 【程序设计】
使用的bilibili页面是:https://www.bilibili.com/video/BV1Wb4y1q7ZU,有人点击播放,就有灯光和显示提示。 【效果图】 【演示视频】 【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) |
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) |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed