阿b的弹幕如何获取?这个可以帮到你!

news2024/11/16 5:20:07

弹幕

前几天,做了一个b站弹幕的爬取,只需要输入一个bv号,就可以查看这个视频的弹幕,并且提供了一种可以写入到文件的方法。但是有人反应,这种使用仍然非常困难,应该提供一个更加友好的用户界面。

因此本期我们就根据之前的爬取b站弹幕,制作一个简单的用户界面。
上期地址: https://blog.csdn.net/you_fan/article/details/141883957

用户界面

制作用户界面的方式有很多种,本次我们采用的是python自带的tkinter,它可以在大多数支持python的图形系统中使用,因此非常的方便。

我们的用户界面需要包括一个输入框,支持用户输入bv号,还有一个搜索按钮,支持用户提交请求。然后需要一个文本框,用于显示得到的弹幕。

由于一个视频中的弹幕可能很多,所以说,我们需要有一个可以下拉的文本框,不然,没有办法将其全部显示出来。当我们点击搜索按钮的时候,实际上,程序会根据现在输入框中的内容(bv号),发起对应的b站弹幕请求,然后将结果写入到文本框,这就是我们程序的主要流程。

import tkinter as tk


from tkinter import messagebox, scrolledtext
from bili import crawl_danmaku  # 这是我们之前的程序中提供的函数,可以参考之前的文章获取




# 创建程序的主要窗口
root = tk.Tk()
root.title("视频弹幕显示器")


# 设置窗口大小
root.geometry("600x400")


# 创建标签和输入框(用于接受视频地址)
label = tk.Label(root, text="输入视频bv号:")
label.pack(pady=10)


entry = tk.Entry(root, width=50)
entry.pack()


# 创建滚动(可下拉的)文本框(用于显示弹幕)
text_area = scrolledtext.ScrolledText(root, wrap=tk.WORD, height=10, width=60)
text_area.pack(pady=10)


# 设置一个搜索按钮(用于用户提交确认)
button = tk.Button(root, text="获取弹幕", command=lambda: show_danmaku(entry, text_area))
button.pack(pady=10)


# 获取并显示弹幕的函数
def show_danmaku(entry, text_area):
    video_url = entry.get()
    if not video_url.strip():
        messagebox.showerror("错误", "请输入视频bv号")
        return
    danmaku_data = crawl_danmaku(video_url)
    text_area.delete('1.0', tk.END) 
    for danmaku in danmaku_data:
        text_area.insert(tk.END, f"{danmaku['弹幕发送时间']} - {danmaku['弹幕内容']}\n")


root.mainloop()

实际使用中,我们输入bv号,然后点击按钮,就可以得到结果了

img

修改DANMAKU列表的排序

可以发现,由于之前我们使用的是列表的默认排序,所以显示的弹幕有些混乱,因此,我们可以考虑对弹幕重新排序。

实际上,弹幕顺序有两个重要的参考,一个是弹幕出现在视频中的时间,也就是,弹幕在视频的第几秒被发送出来。这往往是和视频当前的内容有关系的,因为,弹幕往往会发送和视频当前有关的内容。

还有一种排序方式是,根据弹幕被发送的时间,也就是,这个弹幕在现实时间中,是在哪一年,哪一月,哪一天中被发送的。这样做的好处,是对于一些较长时间之前的视频可以轻松的观察到,这个视频以前的弹幕和现在的弹幕有什么区别。比如说,某个up主在2020年的时候,是热门的百大up主,弹幕内容可能都是鼓励和夸奖的,而由于其在2021年的时候“翻车了”,那么等到2024年的时候,发送的弹幕可能就变成了讽刺和批判的。

下面,我们就通过简单的修改列表顺序,将其改为通过弹幕的发送时间进行排序:

def show_danmaku(entry, text_area):
    video_url = entry.get()
    if not video_url.strip():
        messagebox.showerror("错误", "请输入视频bv号")
        return
    danmaku_data = crawl_danmaku(video_url)
    text_area.delete('1.0', tk.END)
    for danmaku in sorted(danmaku_data, key=lambda x: x["弹幕发送时间"]):
        text_area.insert(tk.END, f"{danmaku['弹幕发送时间']} - {danmaku['弹幕内容']}\n")

此时,我们就可以根据时间顺序,看出弹幕的变化了,比如说在2023年9月5日的时候:

img

而到了2024年,我们可以发现这个视频发送弹幕的人明显变少了,但是还是偶尔有人会重新回来观看:

img

总结

我们本期的内容通过了python的tkinter库构建了一个基础的图形用户界面,使用户能够更便捷地查看到b站视频的弹幕。这比起之前的保存文件形式确实好了很多,使用上更加方便,查看起来也更加容易。

当然,对于这个基础的图形用户界面来说,这些功能还很简单,只能作为一个起点,还有很多功能可以进一步拓展,比如说,添加不同排序方式的切换,或者添加弹幕搜索等功能。总之,希望这些分享能为需要使用类似功能的朋友们提供一些帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2168731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

共享单车轨迹数据分析:以厦门市共享单车数据为例(八)

副标题:基于POI数据的站点综合评价——以厦门市为例(三) 什么是优劣解距离法(TOPSIS)? 优劣解距离法(Technique for Order Preference by Similarity to Ideal Solution,简称TOPSI…

借用连接2-得到主库或从库池子连接

二、借用连接--AbstractRoutingDataSource类 目的:基于look up data,然后从目标数据源借用连接 注look up key确定走主 or 从数据库连接池代码开发: 1.定义子类继承AbstractRoutingDataSource,并覆写determineCurrentLookupKey方…

Vue3+Element-UI Plus登录静态页

<script setup> import {reactive, ref} from "vue";const formRefref() const formModelreactive({username:,password: }) const formRulesreactive({username:[{required:true,message:请输入账号,trigger:blur}],password:[{required:true,message:请输入密…

深圳前湾地铁附近的13元一份的工地盒饭

因为深圳前海这边有很多工地&#xff0c;所以也存在很多的工地餐厅。发现价格出奇统一&#xff0c;都是13元一份。主打一个量大管饱还下饭&#xff0c;每次都吃得有些撑。前海写字楼下的底商也很多打工人的干饭餐厅&#xff0c;但是工作餐均价都要30。如果不在餐厅吃&#xff0…

高通AI应用程序开发3:网络模型(一)

1. 支持的网络模型 Qualcomm神经处理SDK支持下表所列的网络模型。 有关支持的运行时和单个图层类型的限制和约束的详细信息&#xff0c;请参阅 限制 。 GPU运行时中支持的所有层对两种GPU模式都有效&#xff1a;GPU_FLOAT32_16_HYBRID和GPU_FLAAT16。GPU_FLOAT32_16_HYBRID-…

3分钟!手把手教你学会如何无损放大图片

我们常常遇到需要放大图片却又不希望损失画质的尴尬境地。无论是为了打印大幅海报、在线展示高清细节&#xff0c;还是想要修复珍贵的老照片&#xff0c;无损放大图片成为了许多人的迫切需求。下面给大家分享一款最新无损放大图片软件&#xff0c;高效且实用&#xff0c;一起来…

VMware搭建DVWA靶场

目录 1.安装phpstudy 2.搭建DVWA 本次搭建基于VMware16的win7系统 1.安装phpstudy 下载windows版本&#xff1a;小皮面板-好用、安全、稳定的Linux服务器面板&#xff01; 安装后先开启mysql再开启apache&#xff0c;遇到mysql启动不了的情况&#xff0c;最后重装了phpstud…

如何在Windows和Linux之间实现粘贴复制

第一步 sudo apt-get autorremove open-vm-tools第二步 sudo apt-get update第三步 sudo apt-get install open-vm-tools-desktop第四步 一直按Y&#xff0c;希望执行 Y第四步 重启 reboot然后可以实现粘贴复制。

国内外AI大模型对比,国产AI的优势是什么?非常详细收藏我这一篇就够了

AI正在以惊人的速度改变各行各业的运作方式。 热点趋势解读之AI系列&#xff0c;将通过多篇文章探讨如何利用AI驱动创新、提升效率&#xff0c;并为未来的商业和社会发展提供无限可能。 篇章五&#xff1a;国内外AI大模型哪家强&#xff1f; > 设为星标公众号&#xff0c…

我校教师当选为中国计算机学会(CCF)杰出会员

近日&#xff0c;中国计算机学会&#xff08;CCF&#xff09;会员评选委员会发来贺信&#xff0c;祝贺我校信息技术学院大数据技术科研创新团队负责人陈天伟老师当选CCF杰出会员(CCF Distinguished Membership)&#xff0c;并高度评价了陈天伟的专业造诣和长期以来对CCF发展的贡…

Navicat连接数据库

一、MySQL地卸载&#xff1a; 二、Navicat连接数据库&#xff1a; 安装navicat的安装&#xff1a; 错误解决方法&#xff1a; 实验过程&#xff1a; 在本地sql数据库可以访问&#xff0c;说明数据库开启 用navicat连接&#xff1a;出现问题&#xff1a; 将mysql用户登录的加密…

欧洲欧盟药品数据库:EMA、HMA、EDQM-一键查询

在过去的一段时间里&#xff0c;我坚持不懈地每天下午都向那些精通欧洲法规注册的同事请教&#xff0c;学习EU的注册法规&#xff0c;收获颇丰。作为一个对知识充满渴望的求学者&#xff0c;今天我愿意将我学到的心得体会分享给大家&#xff0c;希望你们能够喜欢。 几个月前&a…

App推广新利器:Xinstall应用间跳转,转化效率翻倍

在移动互联网时代&#xff0c;App已成为我们生活中不可或缺的一部分。然而&#xff0c;随着App数量的不断增加&#xff0c;用户在使用过程中经常需要在多个应用之间切换&#xff0c;这不仅影响了用户体验&#xff0c;还降低了App的转化效率。今天&#xff0c;就让我们一起了解一…

多层感知机——pytorch与paddle实现多层感知机

多层感知机——pytorch与paddle实现多层感知机 本文将深入探讨多层感知机的理论基础&#xff0c;并通过PyTorch和PaddlePaddle两个深度学习框架来展示如何实现多层感知机模型。我们将首先介绍多层感知机、优化的基本概念&#xff0c;这些数学工具是理解和实现多层感知机的基础…

Spring CloudAlibaba AI 问世了

Spring CloudAlibaba AI 问世了 背景介绍Spring AI 简介Spring Cloud Alibaba AI 简介 第一个Spring AI应用开发新建maven 项目添加依赖配置spring ai 的核心依赖仓库 参考 背景介绍 SpringAI 是Spring 官方社区项目&#xff0c;旨在简化 Java AI 应用程序开发&#xff0c;让 J…

【微服务即时通讯系统】——brpc远程过程调用、百度开源的RPC框架、brpc的介绍、brpc的安装、brpc使用和功能测试

文章目录 brpc1. brpc的介绍1.1 rpc的介绍1.2 rpc的原理1.3 grpc和brpc 2. brpc的安装3. brpc使用3.1 brpc接口介绍 4. brpc使用测试4.1 brpc同步和异步调用 brpc 1. brpc的介绍 1.1 rpc的介绍 RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;是一…

铝壳电阻是什么?

铝壳电阻是常见的电子元件&#xff0c;广泛应用于各种电子设备和电路中。它的主要功能是将电能转化为热能&#xff0c;从而实现对电流的调节和控制。铝壳电阻具有许多优点&#xff0c;如稳定性好、散热性能优越、耐腐蚀等&#xff0c;因此在电子行业中得到了广泛的应用。 铝壳…

ERNIESpeed-128K在线智能聊天机器人项目(附源码)

本项目是基于百度千帆的智能聊天模型ERNIESpeed-128K开发的 一、技术栈 后端&#xff1a;java8springboot2.6.13 数据库&#xff1a;MongoDB 前端&#xff1a;vue2element-uimarked&#xff08;md格式&#xff09; 二、MongoDB与对话存储的设计 使用MongoDB来储存对话&am…

使用Ruby进行视频内容的自动化分析

在数字化时代&#xff0c;视频内容的爆炸性增长为数据分析带来了新的挑战和机遇。视频不仅是一种流行的娱乐形式&#xff0c;也是传递信息和知识的重要媒介。自动化视频内容分析能够为企业提供洞察力&#xff0c;帮助他们优化内容策略、提高用户参与度和增强市场竞争力。本文将…

基于二分查找的动态规划 leetcode 300.最长递增子序列(续)

封面解释&#xff1a;你看那一口口剑&#xff0c;像不像一个个子序列【狗头】 一。前置条件 阅读本文之前&#xff0c;建议先看一下上一篇文章&#xff1a; 基于二分查找的动态规划 leetcode 300.最长递增子序列-CSDN博客 起码把对应的leetcode题目、以及对应的官方题解二&a…