目前支持在文件名这个参数中直接使用bv或者av号,此时不要求本地提前准备xml文件。
支持在有分P的视频里选择性下载某个分P的xml和读取该分P的弹幕轴:
例如输入文件名为:BV19t411K7Kn,2
则会查看BV19t411K7Kn视频中的P2的弹幕轴
可以选择在处理在线视频的轴时是否顺便下载xml到本地
通过滑动窗口优化了范围内弹幕统计速度。
增加了wpscott写的可视化功能
植入最新最IN的bug,我也不知道在哪。
原理是这样子的: 不妨假设观众的弹幕是大众趣味的正确反馈,那么在精彩时刻就会有大量特定弹幕,
那么,可以反向通过统计一段时间内特定弹幕的数量(或者浓度),来识别出一个长视频中受欢迎的部分。
统计是通过输入关键词来进行的,例如日式视频观众对于特别有趣的片段,倾向于发送“草”这一特定弹幕。
假设在一段时间内,草的弹幕超出了预设的限制(limit),工具应当记下该时间轴,并提供给剪辑者一个参考时间轴。
在一段时间内,由于网络延迟的问题,弹幕的出现不是同步的,
观众见证一个亮点时刻时,作为反应的弹幕也会分散在数秒之中。
因此将统计的范围放到当前时刻开始的5秒之内。只要总计的弹幕达到了阈值(limit) 就记下当前时刻,
并且从20秒间隔(interval)后重新开始新一轮判定。
若当前时刻并不达标,将当前时间往后推进1秒。
同时,在一次记轴后,设置了20秒的冷却间隔(interval),
是为了减少重复记轴—— 精彩镜头从来不是瞬间,而是从某个时间点开始的时间段
如果不设置冷却时间,那么相邻的数秒都会被纳入统计。
这样输出的结果不仅冗长,其参考意义是很有限的。
统计开始容易,统计结束位置很难,但是结束位置可以人为判断,未必要越厨代庖。
通常剪辑者缺乏足够的时间遍历整个视频,但是很好判断精彩内容的结束位置。
因此这个工具旨在提供一个“精彩片段的开始大致时间”,
给剪辑者、补长视频的观众作为跳转参考。
这样一来,工具的运行时间也能一定程度上减少。
- 可以自己准备xml文件保存到本地进行读轴分析。如果视频在B站上,同时支持不提前下载xml文件,直接通过BV号获得读轴结果。如果一个视频有多个分P,则通过","指定分p,
- 搜索对象不区分大小写,输入和输出文件名可以自己添加执行路径,如'D:\KaguraMea\video\1.xml'。若不加路径,则默认在同级文件夹内。文件后缀名可省略,将分别强制转.xml和.txt。
- 如不定义输出文件的名字,则输出和输入文件同名的txt文件。
- 根据弹幕池的浓度,可以自行调整limit的大小,越浓limit可以设得越高。如果没有得到搜索结果,请勾选仅作弹幕定位来确认弹幕池中是否有所选弹幕。若有,请降低limit,以达到满意的效果。
这个应该不需要介绍。
一般地,如果有完整的相关库,请使用guitest.py打开用户图形界面。
如果电脑没有pyside2相关库,guitest是无执行和编译的。因此建议直接从release里下载guitest.exe这个文件。
下载链接参考:https://www.bilibili.com/read/cv6140515
里面有更为详细的GUI介绍。
如果不使用guitest这个界面,也可以直接用命令行执行程序。
调用命令形如:
read_kksk_from_text.exe -i D:\Ccode\readthekkskfromtxt\readthekkskfromtxt\20190527_220250.xml -o 1.txt -w 草 -l 20
或
read_kksk_from_text.py -i D:\Ccode\readthekkskfromtxt\readthekkskfromtxt\20190527_220250.xml -o 1.txt -w 草 -l 20
-o 1.txt -w 草 -l 20这部分是自定义参数,如果不指定则会使用默认值
可选参数有参考下面的代码,default表示默认值:
```python
parser.add_option('-i', '--input', dest='xml_file', default='danmu.xml', help='输入文件名,可包含后缀和指定路径')
parser.add_option('-o', '--output', dest='out_file', default='', help='输出文件名,可包含后缀和指定路径')
parser.add_option('-w', '--word', dest='target', default = 'kksk', help = '查询关键字')
parser.add_option('-l', '--limit', dest='limit', default = 14, help = '纳入统计的最小阈值')
parser.add_option('-v', '--interval', dest='interval', default = 20, help = '统计最小间隔')
parser.add_option('-g', '--group', dest='group', default = 5, help = '从当前时间轴开始向前读group秒,若达到规定阈值,则将结果记录,并跳过interval秒')
parser.add_option('-f', '--flag', dest='flag', default = 0, help = '被gui调用时的标志,此时回传时间轴总长度scale和输出轴的秒制时间')
parser.add_option('-d', '--download', dest='task_type', default=0, help='如果是从已存在的B站视频中读入轴进行分析,是否顺带保存到本地')
```
其中,倒数第二项仅用于和Gui进行交互而使用,如果是直接用命令行执行可以不考虑使用这个参数
最后,感谢wpscott在项目中贡献了完整弹幕测试.py
,
本身是python脚本,可以直接执行,和其他项目组件暂时没有关系
支持一定程度上的数据可视化。
如果想要用这个脚本获取某个视频的弹幕信息,则复制其av号或者BV号,改动第46行内的值。
感谢他提供的代码和思路。
比如同义词字典,将相似的关键词重新定向。
虽然还不太理解全角转半角等部分的涵义,未来将学习这部分内容。
今后大概想实现的就是关键词复选、通过字典进行关键词的模糊识别(也就是大佬写给我的那段)
用爬虫读取在线的弹幕文件,降低使用门槛(不需要自己持有xml文件)
之前问了同学的意见,他觉得普通观众是不善于使用合适的关键词进行搜索的
把无差别弹幕统计分析做出来可能会有点帮助。
柱状图将放到次级需求上延后实现,目前的想法是在柱顶显示具体时间。
(毕竟我们和阿b的那个热点图还是有区别的,阿b的热点轴可以直接跳转……而且我之前观察时不是很理解他的设计原理)
因为目前主要任务还是适应手头工作,暂时先搁置更新。
将在工作稳定后试着融合wpscott提供的代码,以实现更为便利的功能。
项目一时兴起,兴趣持续一年,工具仅作学习使用,与工作内容无关。