aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2021-07-13 22:43:13 +0300
committerRblSb <msrblsb@gmail.com>2021-07-13 22:43:13 +0300
commit8b16bfc888e801cf3f8d57378459f59b382388fa (patch)
tree8d9b14097c762ce8b31bb864c78ac5ff27b1020a
parentdf23feb49cbfe2c5a930abc2a26846046ac6c2d7 (diff)
Show subs correctly
-rw-r--r--res/client.js31
-rw-r--r--src/client/players/RawSubs.hx18
2 files changed, 29 insertions, 20 deletions
diff --git a/res/client.js b/res/client.js
index bb1b703..016a4e4 100644
--- a/res/client.js
+++ b/res/client.js
@@ -417,15 +417,6 @@ StringTools.lpad = function(s,c,l) {
buf_b += s == null ? "null" : "" + s;
return buf_b;
};
-StringTools.rpad = function(s,c,l) {
- if(c.length <= 0) {
- return s;
- }
- var buf_b = "";
- buf_b = "" + (s == null ? "null" : "" + s);
- while(buf_b.length < l) buf_b += c == null ? "null" : "" + c;
- return buf_b;
-};
StringTools.replace = function(s,sub,by) {
return s.split(sub).join(by);
};
@@ -2773,7 +2764,9 @@ client_players_RawSubs.parseAss = function(video,url) {
var matchFormat = new EReg("^Format:","");
var matchDialogue = new EReg("^Dialogue:","");
var blockTags_r = new RegExp("\\{\\\\[^}]*\\}","g".split("u").join(""));
- var tags_r = new RegExp("\\\\[^ ]+","g".split("u").join(""));
+ var spaceTags_r = new RegExp("\\\\(n|h)","g".split("u").join(""));
+ var newLineTag_r = new RegExp("\\\\N","g".split("u").join(""));
+ var manyNewLineTags_r = new RegExp("\\\\N(\\\\N)+","g".split("u").join(""));
var drawingMode = new EReg("\\\\p[124]","");
var eventStart = false;
var formatFound = false;
@@ -2821,7 +2814,15 @@ client_players_RawSubs.parseAss = function(video,url) {
text = "";
}
text = text.replace(blockTags_r,"");
- text = text.replace(tags_r,"");
+ text = text.replace(spaceTags_r," ");
+ text = text.replace(manyNewLineTags_r,"\\N");
+ if(StringTools.startsWith(text,"\\N")) {
+ text = HxOverrides.substr(text,"\\N".length,null);
+ }
+ if(StringTools.endsWith(text,"\\N")) {
+ text = HxOverrides.substr(text,0,text.length - 2);
+ }
+ text = text.replace(newLineTag_r,"\n");
subs.push({ counter : subsCounter, start : client_players_RawSubs.convertAssTime(result[ids_h["Start"]]), end : client_players_RawSubs.convertAssTime(result[ids_h["End"]]), text : text});
++subsCounter;
}
@@ -2840,13 +2841,13 @@ client_players_RawSubs.parseAss = function(video,url) {
};
client_players_RawSubs.convertAssTime = function(time) {
if(!client_players_RawSubs.assTimeStamp.match(time)) {
- return "" + StringTools.lpad("" + 0,"0",2) + ":" + StringTools.lpad("" + 0,"0",2) + ":" + StringTools.lpad("" + 0,"0",2) + "." + HxOverrides.substr(StringTools.rpad("" + 0,"0",3),0,3);
+ return "" + StringTools.lpad("" + 0,"0",2) + ":" + StringTools.lpad("" + 0,"0",2) + ":" + StringTools.lpad("" + 0,"0",2) + "." + HxOverrides.substr(StringTools.lpad("" + 0,"0",3),0,3);
}
var h = Std.parseInt(client_players_RawSubs.assTimeStamp.matched(1));
var m = Std.parseInt(client_players_RawSubs.assTimeStamp.matched(2));
var s = Std.parseInt(client_players_RawSubs.assTimeStamp.matched(3));
- var ms = Std.parseInt(client_players_RawSubs.assTimeStamp.matched(4));
- return "" + StringTools.lpad("" + h,"0",2) + ":" + StringTools.lpad("" + m,"0",2) + ":" + StringTools.lpad("" + s,"0",2) + "." + HxOverrides.substr(StringTools.rpad("" + ms,"0",3),0,3);
+ var ms = Std.parseInt(client_players_RawSubs.assTimeStamp.matched(4)) * 10;
+ return "" + StringTools.lpad("" + h,"0",2) + ":" + StringTools.lpad("" + m,"0",2) + ":" + StringTools.lpad("" + s,"0",2) + "." + HxOverrides.substr(StringTools.lpad("" + ms,"0",3),0,3);
};
client_players_RawSubs.onParsed = function(video,name,dataUrl) {
var trackEl = window.document.createElement("track");
@@ -2854,8 +2855,8 @@ client_players_RawSubs.onParsed = function(video,name,dataUrl) {
trackEl.kind = "subtitles";
trackEl.src = dataUrl;
trackEl.default = true;
- trackEl.track.mode = "showing";
video.appendChild(trackEl);
+ trackEl.track.mode = "showing";
};
var client_players_Youtube = function(main,player) {
this.matchSeconds = new EReg("([0-9]+)S","");
diff --git a/src/client/players/RawSubs.hx b/src/client/players/RawSubs.hx
index 5d1dff0..88a2f03 100644
--- a/src/client/players/RawSubs.hx
+++ b/src/client/players/RawSubs.hx
@@ -82,7 +82,9 @@ class RawSubs {
final matchFormat = ~/^Format:/;
final matchDialogue = ~/^Dialogue:/;
final blockTags = ~/\{\\[^}]*\}/g;
- final tags = ~/\\[^ ]+/g;
+ final spaceTags = ~/\\(n|h)/g;
+ final newLineTag = ~/\\N/g;
+ final manyNewLineTags = ~/\\N(\\N)+/g;
final drawingMode = ~/\\p[124]/;
var eventStart = false;
var formatFound = false;
@@ -115,7 +117,12 @@ class RawSubs {
var text = list[ids["Text"]];
if (drawingMode.match(text)) text = "";
text = blockTags.replace(text, "");
- text = tags.replace(text, "");
+ text = spaceTags.replace(text, " ");
+ final nTag = "\\N";
+ text = manyNewLineTags.replace(text, nTag);
+ if (text.startsWith(nTag)) text = text.substr(nTag.length);
+ if (text.endsWith(nTag)) text = text.substr(0, text.length - 2);
+ text = newLineTag.replace(text, "\n");
subs.push({
counter: subsCounter,
start: convertAssTime(list[ids["Start"]]),
@@ -131,6 +138,7 @@ class RawSubs {
data += '${sub.start} --> ${sub.end}\n';
data += '${sub.text}\n\n';
}
+ // trace(data);
final textBase64 = "data:text/plain;base64,";
final url = textBase64 + Base64.encode(Bytes.ofString(data));
onParsed(video, "ASS subtitles", url);
@@ -151,7 +159,7 @@ class RawSubs {
final h:Int = Std.parseInt(assTimeStamp.matched(1));
final m:Int = Std.parseInt(assTimeStamp.matched(2));
final s:Int = Std.parseInt(assTimeStamp.matched(3));
- final ms:Int = Std.parseInt(assTimeStamp.matched(4));
+ final ms:Int = Std.parseInt(assTimeStamp.matched(4)) * 10;
return toVttTime({
h: h,
m: m,
@@ -174,9 +182,9 @@ class RawSubs {
trackEl.kind = "subtitles";
trackEl.src = dataUrl;
trackEl.default_ = true;
+ video.appendChild(trackEl);
final track = trackEl.track;
track.mode = SHOWING;
- video.appendChild(trackEl);
}
static inline function encodeURI(data:String):String {
@@ -187,7 +195,7 @@ class RawSubs {
final h = '${time.h}'.lpad("0", 2);
final m = '${time.m}'.lpad("0", 2);
final s = '${time.s}'.lpad("0", 2);
- final ms = '${time.ms}'.rpad("0", 3).substr(0, 3);
+ final ms = '${time.ms}'.lpad("0", 3).substr(0, 3);
return '$h:$m:$s.$ms';
}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage