summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app/utils
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-11-09 17:50:42 +0100
committerJules Laplace <julescarbon@gmail.com>2020-11-09 17:50:42 +0100
commit634abd7cec252e61dd171ffbbaa83dec87062bd1 (patch)
tree2141f45cdd3ea3427636ffeaa7baabf15fbb3583 /animism-align/frontend/app/utils
parent1b4da06342d36e5db84f2c6a6c0904c1a20be028 (diff)
subtitles in transcript. clicking them seeks video
Diffstat (limited to 'animism-align/frontend/app/utils')
-rw-r--r--animism-align/frontend/app/utils/transcript.utils.js22
-rw-r--r--animism-align/frontend/app/utils/viewer.utils.js1
2 files changed, 22 insertions, 1 deletions
diff --git a/animism-align/frontend/app/utils/transcript.utils.js b/animism-align/frontend/app/utils/transcript.utils.js
index 258afa1..115eace 100644
--- a/animism-align/frontend/app/utils/transcript.utils.js
+++ b/animism-align/frontend/app/utils/transcript.utils.js
@@ -150,3 +150,25 @@ const getParagraphType = (annotation, paragraph) => {
}
return paragraph.type
}
+
+const REGEXP_ALL_COMMAS = new RegExp(',', 'g')
+
+export const parseSubtitles = (mediaItem, timeOffset) => {
+ if (!mediaItem || !mediaItem.settings.subtitles) return
+ const groups = mediaItem.settings.subtitles.split("\n\n")
+ const subtitles = groups.map((group) => {
+ if (!group) return
+ const lines = group.trim().split("\n")
+ if (!lines.length || !parseInt(lines[0])) {
+ return null
+ }
+ let ts_parts = lines[1].replace(REGEXP_ALL_COMMAS, '.').split(" --> ").map(timestampToSeconds)
+ return {
+ id: parseInt(lines[0]),
+ start_ts: ts_parts[0] + timeOffset,
+ end_ts: ts_parts[1] + timeOffset,
+ lines: lines.slice(2),
+ }
+ }).filter(a => !!a)
+ return subtitles
+}
diff --git a/animism-align/frontend/app/utils/viewer.utils.js b/animism-align/frontend/app/utils/viewer.utils.js
index 9cf8e8f..efb50d6 100644
--- a/animism-align/frontend/app/utils/viewer.utils.js
+++ b/animism-align/frontend/app/utils/viewer.utils.js
@@ -39,4 +39,3 @@ export const groupColumns = (lines, cols) => {
}
return columns
}
-