-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinjected_code.js
62 lines (52 loc) · 2.13 KB
/
injected_code.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
59
60
61
62
// This file runs directly on the webpage, rather than isolated within the extension.
console.log("it is running");
var most_dbg = {};
var args = JSON.parse(document.currentScript.dataset.params);
languages = args.languages;
// Make Viki load the required languages; keep the references.
var tracks_source = player.subtitleManager.videojs.tech_.textTracks_;
var tracks = most_dbg.tracks = {};
var old_language = player.getCurrentSubtitle();
for (var i = 0; i < languages.length; i++) {
player.subtitleManager.cleanup();
player.subtitleManager.setLanguage(languages[i]);
if (tracks_source.length == 1
&& tracks_source[0] !== undefined
&& tracks_source[0].language == languages[i]) {
tracks[i] = tracks_source[0];
} else {
alert('subtitles are unavailable for language ' + languages[i]);
}
}
player.subtitleManager.cleanup();
player.subtitleManager.setLanguage(old_language);
// Without this configuration the listeners wouldn't get notified.
for (var i = 0; i < languages.length; i++) {
if (!(tracks[i] === undefined) && (tracks[i].mode === 'disabled')) {
tracks[i].mode = 'hidden'; // known modes: disabled, hidden, showing
}
}
// Register cue listeners for each language.
for (var i = 0; i < languages.length; i++) {
// Html entry for subtitles in one language.
var element = document.createElement("div");
element.className = "most-subtitles most-" + languages[i];
document.getElementById("most-overlay").appendChild(element);
// Cue listener.
if (!(tracks[i] === undefined)) {
addCueListener(element, languages[i], tracks[i]);
}
function addCueListener(element, language, track) {
console.log("adding listener for: " + language);
track.addEventListener('cuechange', function() {
//console.log("> cue change (" + language + ") <");
// Get the new subtitle page, or else an empty string.
var cue = "";
if (track.activeCues[0]) {
cue = track.activeCues[0].text;
}
// Show the new subtitle page.
element.innerHTML = cue;
});
}
}