summaryrefslogtreecommitdiff
path: root/config/mpv/scripts/subs2srsa/subtitles/sub_list.lua
diff options
context:
space:
mode:
Diffstat (limited to 'config/mpv/scripts/subs2srsa/subtitles/sub_list.lua')
-rw-r--r--config/mpv/scripts/subs2srsa/subtitles/sub_list.lua74
1 files changed, 74 insertions, 0 deletions
diff --git a/config/mpv/scripts/subs2srsa/subtitles/sub_list.lua b/config/mpv/scripts/subs2srsa/subtitles/sub_list.lua
new file mode 100644
index 0000000..de7e1c2
--- /dev/null
+++ b/config/mpv/scripts/subs2srsa/subtitles/sub_list.lua
@@ -0,0 +1,74 @@
+--[[
+Copyright: Ren Tatsumoto and contributors
+License: GNU GPL, version 3 or later; http://www.gnu.org/licenses/gpl.html
+
+Subtitle list remembers selected subtitle lines.
+]]
+
+local h = require('helpers')
+
+local new_sub_list = function()
+ local subs_list = {}
+
+ local find_i = function(sub)
+ for i, v in ipairs(subs_list) do
+ if sub < v then
+ return i
+ end
+ end
+ return #subs_list + 1
+ end
+ local get_time = function(position)
+ local i = position == 'start' and 1 or #subs_list
+ return subs_list[i][position]
+ end
+ local get_text = function()
+ local speech = {}
+ for _, sub in ipairs(subs_list) do
+ table.insert(speech, sub['text'])
+ end
+ return table.concat(speech, ' ')
+ end
+ local get_n_text = function(sub, n_lines)
+ local speech = {}
+ local end_sub = sub
+ for _, v in ipairs(subs_list) do
+ if v['start'] - end_sub['end'] >= 20 then
+ break
+ end
+ if v >= sub and #speech < n_lines then
+ table.insert(speech, v['text'])
+ end_sub = v
+ end
+ end
+ return table.concat(speech, ' '), end_sub
+ end
+ local insert = function(sub)
+ if sub ~= nil and not h.contains(subs_list, sub) then
+ table.insert(subs_list, find_i(sub), sub)
+ return true
+ end
+ return false
+ end
+ local get_subs_list = function()
+ local copy = {}
+ for key, value in pairs(subs_list) do
+ copy[key] = value
+ end
+ return copy
+ end
+ return {
+ get_subs_list = get_subs_list,
+ get_time = get_time,
+ get_text = get_text,
+ get_n_text = get_n_text,
+ insert = insert,
+ is_empty = function()
+ return h.is_empty(subs_list)
+ end,
+ }
+end
+
+return {
+ new = new_sub_list,
+}