能用potplay播放就行
自从网页端从mfm.换成.dm之后,网上就找不到工具了
3条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
要下载Bilibili(B站)视频的弹幕并将其保存为ASS格式,你需要安装一些Python库,并编写一个简单的脚本。这里是一个详细的步骤指南:
-
安装必要的Python库:
- requests:用于发送HTTP请求
- pyquery:用于解析HTML文档
- asslib:用于处理ASS格式的字幕
- fake_useragent:用于设置随机User-Agent,防止被网站识别为机器人
使用pip安装这些库:
pip install requests pyquery asslib fake-useragent -
编写Python脚本来获取视频ID、请求弹幕数据并保存为ASS文件。
以下是完整的Python代码示例:
import requests from bs4 import BeautifulSoup from asslib import AssFile from asslib编剧 import Dialogue import random import re import json import time from fake_useragent import UserAgent # 生成随机User-Agent ua = UserAgent() def get_video_id(url): match = re.search(r"/video/(\d+)", url) if match: return match.group(1) def get_danmu_url(video_id): danmu_url = f"https://api.bilibili.com/x/v2/dm/list.so?oid={video_id}" headers = { "User-Agent": ua.random, } response = requests.get(danmu_url, headers=headers) data = response.json() return data["data"]["dms"] def save_to_ass(danmus, output_file): ass = AssFile() for danmu in danmus: start_time = float(danmu["ctime"])/1000 end_time = start_time + float(danmu["duration"]/1000) text = danmu["content"] dialogue = Dialogue(text=text, start=start_time, end=end_time, layer=0, style="Default", margin_left=0, margin_right=0, margin_top=0, margin_bottom=0) ass.append(dialogue) ass.save(output_file) if __name__ == "__main__": video_url = input("请输入Bilibili视频URL: ") video_id = get_video_id(video_url) danmus = get_danmu_url(video_id) # 将时间戳转换为毫秒 for danmu in danmus: danmu["ctime"] *= 1000 danmu["duration"] *= 1000 output_file = f"{video_id}.ass" save_to_ass(danmus, output_file) print(f"已将弹幕保存到 {output_file} 文件。请在PotPlayer或其他支持ASS的播放器中打开观看。")- 运行脚本:
- 复制上述代码并粘贴到一个新的Python文件中,例如
download_bilibili_danmu.py - 在命令行中运行这个脚本,提供B站视频的URL作为输入:
python download_bilibili_danmu.py - 脚本会自动下载弹幕并保存为
.ass文件,然后提示你在哪里找到这个文件。
- 复制上述代码并粘贴到一个新的Python文件中,例如
注意:这个脚本可能不适用于所有B站视频,因为B站可能会改变其API或页面结构。如果有任何错误,你可能需要根据最新的API或页面结构进行调整。此外,由于B站的反爬虫策略,某些情况下可能需要更复杂的逻辑来处理登录和验证码等问题。
解决 无用评论 打赏 举报 编辑记录-