mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-03-24 00:37:46 +00:00
basic cues find alghorithm implemented
This commit is contained in:
parent
1bee511055
commit
5a7604bc08
2 changed files with 6823 additions and 21 deletions
|
|
@ -1,38 +1,29 @@
|
|||
module.exports = function(cues, time) {
|
||||
var timeInSeconds = time / 1000;
|
||||
var cuesForTime = [];
|
||||
var middleCueIndex = -1;
|
||||
var left = 0;
|
||||
var right = cues.length - 1;
|
||||
var lastCueIndex = -1;
|
||||
while (left <= right) {
|
||||
var middle = Math.floor((left + right) / 2);
|
||||
if (cues[middle].endTime < timeInSeconds) {
|
||||
if (cues[middle].startTime === timeInSeconds) {
|
||||
lastCueIndex = middle;
|
||||
left = middle + 1;
|
||||
} else if (cues[middle].startTime > timeInSeconds) {
|
||||
right = middle - 1;
|
||||
} else {
|
||||
middleCueIndex = middle;
|
||||
break;
|
||||
left = middle + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (middleCueIndex !== -1) {
|
||||
cuesForTime.push(cues[middleCueIndex]);
|
||||
for (var i = middleCueIndex - 1; i >= 0; i--) {
|
||||
if (cues[i].startTime > timeInSeconds || cues[i].endTime < timeInSeconds) {
|
||||
break;
|
||||
}
|
||||
|
||||
cuesForTime.push(cues[i]);
|
||||
var cueIndex = lastCueIndex !== -1 ? lastCueIndex : right;
|
||||
while (cueIndex >= 0) {
|
||||
if (cues[cueIndex].startTime > timeInSeconds || cues[cueIndex].endTime < timeInSeconds) {
|
||||
break;
|
||||
}
|
||||
|
||||
for (var i = middleCueIndex + 1; i < cues.length; i++) {
|
||||
if (cues[i].startTime > timeInSeconds || cues[i].endTime < timeInSeconds) {
|
||||
break;
|
||||
}
|
||||
|
||||
cuesForTime.push(cues[i]);
|
||||
}
|
||||
cuesForTime.push(cues[cueIndex]);
|
||||
cueIndex--;
|
||||
}
|
||||
|
||||
return cuesForTime.sort(function(c1, c2) {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue