通过本工具可以将统一的时间轴自动转换到不同的录播笔记。
首先,请确保准备好配置文件和数据文件。通过执行根目录的 init.cmd
或 init.sh
可展开示例数据。
- 新建存放原始文本轴的文本文件(一般放在
data
目录下) - 修改
config/gen_timeline.json
, 填入这些文本文件的路径和这些分p对应的偏移量,同时填入输出文件路径 - 执行
python gen_timeline.py
即可生成转换的时间轴文件(csv
或pbf
) - 如果配置文件在其他位置,执行
python gen_timeline.py <配置文件路径>
{
"$schema": "../schema/gen_timeline.schema.json",
"offsets": [-585, 2344],
"parts": ["./data/p1.txt", "./data/p2.txt"],
"out": "./data/timeline.csv"
}
$schema
: 配置文件格式规范。仅在编辑此文件时生效;有或没有此项、此项内容如何均不会影响程序的正常功能。但在有此项的情况下,使用 Visual Studio Code 等编辑器对配置文件进行编辑时,可以自动弹出每项内容的说明并自动补齐部分项目。offsets
: 参考视频每个分P开始时刻对应的统一时间轴时刻,单位为秒。注意,此处的值可能为负数(比如果统一时间轴以开场对齐,但视频中包含OP时)parts
: 每个视频文本轴的路径out
: 输出时间轴路径。当路径以.pbf
结尾时,会生成适配 PotPlayer 的事件轴文件;其他情况会生成csv
文件,用于后续进一步操作
09:45 《Next Level》
12:04 枝江gamer们的自我介绍
13:04 本次游戏的最大奖品竟然是她?*
14:12 四位参赛选手的赛前采访
15:44 分 赃 现 场*
1,开场
10,这是一个简单的时间轴的示例
11,用于时间轴的自动化上传测试
20,第一列表示时间戳对应的时刻
21,单位为秒,如这行表示第21秒
22,文件中的时间戳基于开场时刻
23,假设这个分p 的op的长10秒
24,那么第 8行则会显示为第31秒
30,第二列为时间戳对应显示内容
43,重要标记用红色加粗形式显示
50,笔记测试结束了,大家晚安啦
60,回马枪
在csv中的一些条目后可以添加mask,表示隐藏部分时间标签。数字0,1,2,...对应于不同的token
1,开场
10,这是一个mask示例,10
如上述示例csv,假设存在3个token,那么开场
条目将显示全部三个时间标签,这是一个mask示例
条目将只会显示第三个时间标签(因为序号0和1的时间标签均被隐藏了)
另外注意,由于Excel的编辑机制,在添加时间标签时推荐将数字0后置
可在轴文本中增加一些控制指令,单独调整每个部分的配置。 例如,设置轴内容为
[B|#ee230d]笔记功能大更新[N|R]现在支持[N|N]换行[N|N]设置[B] 粗体 [R|I] 斜体 [R|#ee230d]多[#ff654e]种[#f8ba00]颜[#017001]色
显示效果为
控制指令放在方框内,使用竖线进行分隔,指令具体包括
指令名 | 含义 |
---|---|
B | 粗体 |
I | 斜体 |
U | 下划线 |
S | 删除线 |
AL | 左对齐(默认) |
AC | 居中 |
AR | 右对齐 |
#123456 | 字体颜色(见颜色表) |
b#123456 | 背景颜色(见颜色表) |
s17 | 设置字号大小(可选17/18/20/22/24) |
i123456 | 图片id(使用image_uplpader.py上传) |
u123.jpg | 本地图片文件名 |
R | 将颜色、粗体、斜体等重置为默认值。注意:不会重置对齐方式 |
l链接名 | 下一个链接显示的名称 |
N | 插入换行符 |
除非被新的指令替代,字体样式指令的作用范围将持续到轴条目的末尾
#000000 #333333 #494949 #a5a5a5 #cccccc
#89d4ff #73fdea #89fa4e #fff359 #ff968d
#ffa0d0 #0b84ed #18e7cf #60d837 #fbe231
#ff654e #ea0077 #0176ba #068f86 #1db100
#f8ba00 #ee230d #cb297a #004e80 #017c76
#017001 #ff9201 #b41700 #99195e #ffffff
- 确保已拥有主时间轴的 csv 文件(一般放在
data
目录下) - 修改
config/pub_timeline.json
, 填入 cookie 和视频信息等 - 执行
python pub_timeline.py
将时间轴发布至B站 - 如果配置文件在其他位置,执行
python pub_timeline.py <配置文件路径>
- cookie 可使用
F12
开发人员工具从 Bilibili 网页端抓包 - 有了 cookie 能操作B站账号的大部分功能,切勿泄露或分享出去
- 请确保 cookie 中包含
SESSDATA
和bili_jct
两项 - 为防广告,一些小号可能没有发布笔记的功能,请先在网页端进行发布笔记的测试
- 每人每天最多发布 5 篇笔记
{
"$schema": "../schema/pub_timeline.schema.json",
"cookie": "SESSDATA=<SESSDATA>; bili_jct=<CSRF>",
"bvid": "BV15U4y1d7TX",
"timeline": "./data/timeline.csv",
"template": "./data/template.rst",
"tokens": [
{
"key": "弹幕",
"offsets": [-52, "auto"],
"marker": "弹",
"jumpOpDesc": "🪂点此跳过OP (弹幕版)"
},
{
"offsets": [-52, "auto"],
"jumpOpDesc": "🪂点此跳过OP (纯净版)"
}
],
"ignoreThreshold": 600,
"cover": "这是一个多P自动发布笔记的测试\n欢迎进入笔记打轴的自动化时代",
"publish": true,
"autoComment": true,
"watch": false,
"confirm": false,
"hidePart": false,
"hidePartTitle": false,
"titlePrefix": "[AC|b#fff359|s18]",
"titlePostfix": "",
"subTitlePrefix": "[AC|B]",
"subTitlePostfix": "",
"songDanceTitle": "[AC|B|b#ffa0d0|s18] 本场歌舞快速导航 ",
"legacyCommentStyle": false
}
注意:2023年1月8日更新后移除了offsets和danmakuOffsets两个选项,转而使用tokens配置。旧版本配置文件将不兼容,请注意修改
注意:2023年1月21日更新后移除了文档结构配置选项,转而使用template配置。旧版本配置文件将不兼容,请注意修改
$schema
: 配置文件格式规范。仅在编辑此文件时生效;有或没有此项、此项内容如何均不会影响程序的正常功能。但在有此项的情况下,使用 Visual Studio Code 等编辑器对配置文件进行编辑时,可以自动弹出每项内容的说明并自动补齐部分项目。cookie
: 发送笔记用户的cookie,必须包含SESSDATA
和bili_jct
两项bvid
: 目标视频BV号timeline
: 时间轴文件路径template
: 笔记模板文件路径tokens
: 视频分P的不同类别key
: 用来识别这个类别的关键词offsets
: 目标视频每个分P开始时刻对应的统一时间轴时刻,单位为秒。注意,此处的值可能为负数(比如果统一时间轴以开场对齐,但视频中包含OP时)。 在offsets中也可以标记auto
或skip
,auto
表示自动叠加上一p的累计时长,skip
表示跳过这一pmarker
: 在时间胶囊中显示的内容jumpOpDesc
: 跳过OP按钮显示的内容
ignoreThreshold
: 时间短于此值的分P将被忽略,单位为秒,默认为600(即10分钟)。此参数用于处理占位视频。被忽略的视频不会参与到offsets
和danmakuOffsets
的推断中cover
: 视频转制通过时发送至评论区的文案publish
: 是否自动发布autoComment
: 笔记发布后是否自动发评论watch
: 是否监控视频和笔记更新。设置为true
将自动监控视频分P和笔记文件的变化,每次目标视频分P变化或笔记文件更新时将自动更新笔记。当视频总分P数量等于offset设定值,并且笔记文件2小时未更新,则监控自动结束、程序退出confirm
: 是否弹出确认选项hidePart
: 隐藏时间标签中的分P标识。推荐在超过3个时间标签或者纯净/弹幕各1P时打开此项hidePartTitle
: 隐藏时间轴中的分P标签条。如果设置了此项,建议在template文件中手动添加总标题条。titlePrefix
等:控制轴内标题样式和歌舞导航标题样式。Prefix
为前缀,Postfix
为后缀legacyCommentStyle
: 是否使用传统评论区样式。开启后评论区将不显示图片,但点击蓝字可以打开可跳转面板
template文件为笔记内容的模板,样例如下
.. jump_op
[B|#ff654e]欢迎大家来看今天的直播!
[i124497]
.. song_dance
[AC|B|b#ffa0d0|s18]快速链接
.. abstract
.. body
[i124497]
[#cccccc]作者:AS042971
其中,.. jump_op
、.. song_dance
、.. body
、.. abstract
四个模块在程序运行时会被替换为跳过OP按钮、歌舞导航区、笔记主体区和精简笔记区;其余的行按照先前的富文本规则解析。
精简笔记区内轴文本的首行会直接合并进时间胶囊
执行 python comment_monitor.py <目标视频BVID> <监测用户名> <pushplus_token>
即可在被监测用户发评论时收到通知
- 特别提示
- pushplus_token不是必须参数,选填该参数可以激活微信推送
- pushplus_token从 此处申请并绑定微信
- 接口限制:1分钟内接收5次请求,1小时3次重复信息,1天200条推送