-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsubtitle-loader.js
58 lines (49 loc) · 1.42 KB
/
subtitle-loader.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
const parserMap = { srt: srtParser };
const jumpStart = port => {
const inputElement = document.getElementById("file-input");
const subtitle = {
subscribers: [],
subscribe: function(fn) {
this.subscribers.push(fn);
},
_content: {},
set content(content) {
this._content = content;
this.subscribers.forEach(subscriber => subscriber(content));
},
};
inputElement.addEventListener("change", function(event) {
const file = event.target.files[0];
const fileExtension = getExtension(file.name);
const parser = parserMap[fileExtension];
if (!parser) {
alert('Not supported file type!');
inputElement.value = '';
return;
}
fr = new FileReader();
fr.readAsText(file);
fr.addEventListener("load", function(event) {
subtitle.content = parser(event.target.result);
});
fr.onerror = (error) => { };// console.log(error);
}, false);
const getExtension = (fileName) => {
const destructredFileName = fileName.split('.');
return destructredFileName[destructredFileName.length - 1];
}
subtitle.subscribe((newSubtitle) => {
const event = {
from: 'Subtitle Substitute' /* Need to find a secure way */,
type: 'NEW_SUBTITLE',
content: newSubtitle
};
port.postMessage(event);
});
};
const spark = setInterval(() => {
if (window.port) {
clearInterval(spark);
jumpStart(window.port);
}
}, 300);