tiansh / us-danmaku

Firefox 扩展版本见 https://github.com/tiansh/ass-danmaku ;在线转换见 https://tiansh.github.io/ass-danmaku-online/ ;【用户脚本已停止维护】用户脚本 以ass格式下载 AcFun 和 bilibili 的弹幕
217 stars 47 forks source link

发现一阻碍转换的字符.......... #10

Closed lfjs closed 8 years ago

lfjs commented 8 years ago

经过排查.....发现3000条的弹幕文件转换到这里就停了,只要删掉日文后面的这个符号就没有任何问题......... 本条弹幕包含的字符【おかえりなさい】(网页编码不支持该字符..) 本条弹幕所在位置【 http://pan.baidu.com/s/1mg8BUru 】第19集的xml的大约704行 不知道什么鬼传不了图片....... 原力与你同在!

tiansh commented 8 years ago

跟日文字符没关系,是因为里面有个 \u0013 的字符,所以这个文件不符合 XML 关于字符内容的规范,然后脚本调用浏览器解析 XML 的接口时就出错了。

lfjs commented 8 years ago

=) 不懂.......但是如果发生这种情况的话能报个错就好了,就不用费劲去找了

tiansh commented 8 years ago

简单地说,就是,这个文件不是个正确的 XML 文件,所以处理的时候就挂了……

我看看怎么替代解决一下这问题……

lfjs commented 8 years ago

不愧是大神! 让我们共建社会主义和谐中国!

tiansh commented 8 years ago

你试试,应该好了。 我自动把那个会出问题的字符删掉了……

lfjs commented 8 years ago

没问题了! 我又研究了一下[V4+ Styles]字幕的样式 然后在你的代码里加了点能直观影响弹幕样式的变量 就是后面与你注释风格不一样的部分 这样一来就没有不能改动的.ass的参数了,大神你愿意动弹的话就看看.....在我这边一样一样试过的 var config = { 'playResX': 1440, // 屏幕分辨率宽(像素) 'playResY': 900, // 屏幕分辨率高(像素) 'fontlist': [ // 字形(会自动选择最前面一个可用的) '黑体', 'Microsoft YaHei UI', 'Microsoft YaHei', '文泉驿正黑', 'STHeitiSC', ], 'font_size': 1.13, // 字号(比例) 'r2ltime': 15, // 右到左弹幕持续时间(秒) 'fixtime': 4, // 固定弹幕持续时间(秒) 'opacity': 0.85, // 不透明度(比例) 'space': 0, // 弹幕间隔的最小水平距离(像素) 'max_delay': 2, // 最多允许延迟几秒出现弹幕 'bottom': 130, // 底端给字幕保留的空间(像素) 'use_canvas': null, // 是否使用canvas计算文本宽度(布尔值,Linux下的火狐默认否,其他默认是,Firefox bug #561361) 'debug': false, // 打印调试信息

'_Delaytime': -0,// 弹幕发射延迟、弹幕错位补正(如果‘暂停成功’弹幕出现在视频情节之后,用负数修正)

'_Bold': '1',//是否加粗 '_Italic': '0',//是否斜体 '_Underline': '0',//是否下划线 '_StrikeOut': '0',//是否删除线 '_ScaleX': '100', //横向缩放,默认是100就是100%的意思,如果要变为20%就是20 '_ScaleY': '100', // '_Spacing': '0', //每个字间的距离 ,数值为像素值 '_Angle': '0', //平面旋转,数值为旋转的角度,默认为0.00 '_BorderStyle': '1', //字幕background样式,1为正常无底色,3为有底色 '_Outline': '1', //字体描边程度,像素值 '_Shadow': '0', //阴影偏移的距离,0的话没有阴影,有的话阴影会影响文字的透明度! '_Alignment': '2', //对齐方式,即字幕出现在屏幕中的位置,数值为1-9,与小键盘区排列相同,1为左下,9为右上 '_MarginL': '20', //字幕距左右两边的距离 '_MarginR': '20', // '_MarginV': '130', //字幕高度 下对齐时表示到底部的距离 上对齐时表示到顶部的距离 中对齐时无效 '_Encoding': '0',//编码方式,134=GB2312(简体中文)136=CHINESEBIG5(繁体中文)1=DEFAULT(字幕自己选择) };

      line.type = 'R2L';
      line.stime = pos.time + config._Delaytime;
      line.type = 'Fix';
      line.stime = pos.time + config._Delaytime;

[V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding Style: Fix,{{font}},25,&H{{alpha}}FFFFFF,&H{{alpha}}FFFFFF,&H{{alpha}}000000,&H{{alpha}}000000,{{_Bold}},{{_Italic}},{{_Underline}},{{_StrikeOut}},{{_ScaleX}},{{_ScaleY}},{{_Spacing}},{{_Angle}},{{_BorderStyle}},{{_Outline}},{{_Shadow}},{{_Alignment}},{{_MarginL}},{{_MarginR}},{{_MarginV}},{{_Encoding}} Style: R2L,{{font}},25,&H{{alpha}}FFFFFF,&H{{alpha}}FFFFFF,&H{{alpha}}000000,&H{{alpha}}000000,{{_Bold}},{{_Italic}},{{_Underline}},{{_StrikeOut}},{{_ScaleX}},{{_ScaleY}},{{_Spacing}},{{_Angle}},{{_BorderStyle}},{{_Outline}},{{_Shadow}},{{_Alignment}},{{_MarginL}},{{_MarginR}},{{_MarginV}},{{_Encoding}}

tiansh commented 8 years ago

粗体透明度什么的我可能什么时候开心会做个设置窗口出来,但是现在也没空。 剩下诸如是不是有下划线这样的功能,反正也没什么用,就算了。 字符编码那个UTF8会比较方便,其他的字符编码会很麻烦,所以也不考虑。

lfjs commented 8 years ago

ok=)