用15行以内的Python代码优雅的写出一个弹幕机

爱学习的我最近发现:B站上总是给我推荐诸如Python、C++还有Vue的教学主播,但是我发现他们都一个个的猛讲内容,只有等讲完了才看看弹幕,而且他们都习惯性的把弹幕机放在桌面上。这显然很占地方。

于是我想到了个方法,既可以让这些主播放心的桥他们的代码,也可以在不占用空间的情况下读到

弹幕。

声明!这种方法仅对只教学Python或者对终端依赖度不是特别高的主播有用!

环境准备

这一次的工程相对的较小,因此需要准备的东西也不多,只需要一个Selenium就可以了。

可能聪明的你已经想到了:是的,思路很简单,就是用Selenium不断地去刷新并获取弹幕列表并打印在终端上。

那么,开始写代码吧

首先我们需要先导入所用到的库

from selenium import webdriver
import time

这里为什么要导入time库呢?后文我们慢慢讲

这时我们需要创建一个设置的实例化

#这里我用的是谷歌浏览器,所以在调用函数时用的是ChromeOptions()
#所以在你实际写的时候你需要考虑自己要用的浏览器内核
options = webdriver.ChromeOptions()

 为其添加无头属性属性,这么做可以节省一个浏览器的空间,selenium也不会启动本地的浏览器实例

options.add_argument("--headless")

启动浏览器实例

#启动浏览器内核,使用options参数将option添加进去
driver = webdriver.Chrome(options=options)

获取网页,这里以斗鱼为例

driver.get("http://douyu.com/606118")

通过观察标签树,我们发现所有的弹幕都存在了一个属性为Barrage-List的ul标签下

因此我们的核心也就很明确了:循环遍历这里元素,并打印标签中的文档流即可。

while True:
    #获取弹幕列表
    bullets = driver.find_elements_by_class_name("Barrage-list")
    #循环遍历列表中的每个元素
    for bullets in bullets:
        #使用.text属性打印出文档流
        print(bullets.text)
        #设置两秒一循环,以防止弹幕滚动过快
        time.sleep(2)
    """
    这里等待三秒是因为无论哪个直播平台,弹幕基本都是靠js和Ajax这些东西进行渲染
    #因此等待三秒的目的是为可等js和Ajax把弹幕加载完毕,防止selenium过度访问而没有
    元素的尴尬情况。
    """
    time.sleep(3)

 实际运行效果如下:

怎么样?效果还是相当不错的吧,但是值得提及的一点:就是我们在打印的时候是调用了.text属性进行打印,因此弹幕送出的礼物只能看到数量,看不到具体礼物的名称是什么。暂时我还没有找到什么解决的办法。

那么好了,本期Python直播弹幕机制作的分享就到这里了,喜欢的话记得点赞,打赏转发文章哦。

我是Deahost,我们下期再见!

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
抖音直播弹幕礼物控制游戏,可以使用Python的第三方库`DouyinOpenAPI`来实现。这个库是基于抖音官方的开放API接口实现的,可以方便地获取直播间信息、弹幕、礼物等数据。 首先,需要在抖音开放平台上申请开发者账号,并创建一个应用来获取应用ID和应用Secret。 然后,安装`DouyinOpenAPI`库,可以使用以下命令: ``` pip install DouyinOpenAPI ``` 接下来,可以使用以下代码实现一个简单的抖音直播弹幕礼物控制游戏: ```python from DouyinOpenAPI import Client import time # 应用ID和应用Secret app_id = 'your_app_id' app_secret = 'your_app_secret' # 直播间ID room_id = 'your_room_id' # 创建客户端对象 client = Client(client_key=app_id, client_secret=app_secret) # 获取直播间信息 room_info = client.room.get_info(room_id=room_id) # 直播间标题和主播名字 title = room_info['data']['title'] nickname = room_info['data']['owner']['nickname'] print(f'正在进入直播间:{title},主播:{nickname}。') # 获取直播间弹幕和礼物 while True: # 获取最新的20条弹幕 comments = client.comment.list(room_id=room_id, count=20) for comment in comments['data']: # 输出弹幕内容 print(f'{comment["user"]["nickname"]}:{comment["text"]}') # 如果弹幕包含“礼物”,则发送一条评论 if '礼物' in comment['text']: client.comment.create(room_id=room_id, text='我来送礼物了!') # 获取最新的10条礼物记录 gifts = client.gift.list(room_id=room_id, count=10) for gift in gifts['data']: # 输出礼物信息 print(f'{gift["user"]["nickname"]} 送了 {gift["gift_name"]} x {gift["gift_count"]}') # 如果礼物数量大于等于3,则发送一条评论 if gift['gift_count'] >= 3: client.comment.create(room_id=room_id, text=f'{gift["user"]["nickname"]}送的礼物好给力,我要上车!') # 间隔5秒钟获取弹幕和礼物 time.sleep(5) ``` 这个代码会不断地获取直播间弹幕和礼物,并根据弹幕和礼物数量来发送评论。当然,这只是一个简单的示例,实际情况下可能需要更复杂的逻辑来判断何时发送评论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Day(AKA Elin)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值