项目地址
https://github.com/jonssonyan...
开发工具 python 3.7.9
pycharm 2019.3.5 代码
import threading import time import tkinter.simpledialog from tkinter import END, simpledialog, messagebox import requests class Danmu(): def __init__(self, room_id): # 弹幕url self.url = 'https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory' # 请求头 self.headers = { 'Host': 'api.live.bilibili.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0', } # 定义POST传递的参数 self.data = { 'roomid': room_id, 'csrf_token': '', 'csrf': '', 'visit_id': '', } # 日志写对象 self.log_file_write = open('danmu.log', mode='a', encoding='utf-8') # 读取日志 log_file_read = open('danmu.log', mode='r', encoding='utf-8') self.log = log_file_read.readlines() def get_danmu(self): # 暂停0.5防止cpu占用过高 time.sleep(1) # 获取直播间弹幕 html = requests.post(url=self.url, headers=self.headers, data=self.data).json() # 解析弹幕列表 for content in html['data']['room']: # 获取昵称 nickname = content['nickname'] # 获取发言 text = content['text'] # 获取发言时间 timeline = content['timeline'] # 记录发言 msg = timeline + ' ' + nickname + ': ' + text # 判断对应消息是否存在于日志,如果和最后一条相同则打印并保存 if msg + '\n' not in self.log: # 打印消息 listb.insert(END, msg) listb.see(END) # 保存日志 self.log_file_write.write(msg + '\n') # 添加到日志列表 self.log.append(msg + '\n') # 清空变量缓存 nickname = '' text = '' timeline = '' msg = '' def bilibili(delay, room_id): # 创建bDanmu实例 bDanmu = Danmu(room_id) while True: # 暂停防止cpu占用过高 time.sleep(delay) # 获取弹幕 bDanmu.get_danmu() def author(): # 弹出对话框 messagebox.showinfo(title='关于', message='作者:阿壮Jonson\n日期:2021年2月4日\n微信公众号:科技猫') # tkinter GUI window = tkinter.Tk() window.title('BiliBli弹幕查看工具') window.minsize(300, 500) window.geometry('400x600+250+100') # 菜单栏 menubar = tkinter.Menu(window) # Open放在菜单栏中,就是装入容器 menubar.add_command(label='关于', command=author) # 创建菜单栏完成后,配置让菜单栏menubar显示出来 window.config(menu=menubar) # 滚动条 sc = tkinter.Scrollbar(window) sc.pack(side=tkinter.RIGHT, fill=tkinter.Y) # Listbox控件 listb = tkinter.Listbox(window, yscrollcommand=sc.set) # 将部件放置到主窗口中 listb.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=True) # 滚动条动,列表跟着动 sc.config(command=listb.yview) # 获取字符串(标题,提示,初始值) room_id = simpledialog.askstring(title='请输入房间号', prompt='请输入房间号:' , initialvalue='21089733') if room_id is not None: # 创建获取弹幕线程 try: t = threading.Thread(target=bilibili, args=(0.5, str(room_id),)) t.setDaemon(True) t.start() except: print("Error: 启动失败!请检查房间号是否正确") # 进入循环显示 window.mainloop()
编译
使用第三方包:pyinstaller
命令
pyinstaller -F -w bilibli-danmu.py
参数解释
-F,-onefile 产生单个的可执行文件
-w,--windowed,--noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效) PyInstaller 支持的常用选项
补充
执行完命令之后会在项目目录下多出dist文件夹,编译后的文件就在该文件夹下 pyinstaller 不可以跨平台编译,windows平台下只能编译成windows下的执行文件(.exe),同理mac linux也是一样
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“使用python tkinter开发一个爬取B站直播弹幕工具的实现代码”评论...
更新日志
2024年07月03日
2024年07月03日
- 华语流行S.H.E《12CD》2001~2010[APE+CUE][3.7GB]
- 北风之望饮品怎么调配?饮品调酒配方分享
- 原画壁纸及美图第254期,无水印可自取
- 原画壁纸及美图第255期,无水印可自取
- 群星.1991-宝丽金冬日浓情【宝丽金】【WAV+CUE】
- 胡杨林.2006-香水有毒【太格印象】【WAV+CUE】
- 陈晓东.2002-从未忘记2CD【环球】【WAV+CUE】
- 绝区零珂蕾妲阵容怎么搭配好 珂蕾妲队伍搭配攻略
- 绝区零暴击鸣徽有哪些 绝区零暴击鸣徽效果介绍
- 魔兽世界奥格瑞玛法师训练师在哪 奥格瑞玛法师训练师位置介绍
- 《艾尔登法环》dlc带电祷告位置介绍
- 《幻兽帕鲁》泰锋boss坐标位置介绍
- 《山河旅探》6月份更新内容介绍
- 群星.2012《高雄国际Hi-End音响大展纪念发烧金碟(最响宣言)》[WAV分轨].
- 黄宣2021-Beanstalk[否极泰来][WAV+CUE]