mpv2oboeru

mpv helpers to create flashcards from movies and TV shows
git clone anongit@rnpnr.xyz:mpv2oboeru.git
Log | Files | Refs | Feed | README | LICENSE

Commit: 54f86daaf07dabbb5fa244d89fe85185bdf2a372
Parent: 79c92b917683fc07442958596ad89664094b70c2
Author: Ren Tatsumoto
Date:   Sat, 19 Dec 2020 19:44:16 +0300

move subs helper classes

Diffstat:
Msubs2srs.lua | 117+++++++++++++++++++++++++++++++++++++++++---------------------------------------
1 file changed, 60 insertions(+), 57 deletions(-)

diff --git a/subs2srs.lua b/subs2srs.lua @@ -432,6 +432,66 @@ do end ------------------------------------------------------------ +-- utility classes + +local function new_timings() + local self = { ['start'] = -1, ['end'] = -1, } + local is_set = function(position) + return self[position] >= 0 + end + local set = function(position) + self[position] = mp.get_property_number('time-pos') + end + local get = function(position) + return self[position] + end + return { + is_set = is_set, + set = set, + get = get, + } +end + +local function new_sub_list() + local subs_list = {} + local _is_empty = function() + return next(subs_list) == nil + end + 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 insert = function(sub) + if sub ~= nil and not table.contains(subs_list, sub) then + table.insert(subs_list, find_i(sub), sub) + return true + end + return false + end + return { + get_time = get_time, + get_text = get_text, + is_empty = _is_empty, + insert = insert + } +end + +------------------------------------------------------------ -- seeking: sub seek, sub rewind local function _(params) @@ -942,63 +1002,6 @@ end ------------------------------------------------------------ -- subtitles and timings -local function new_timings() - local self = { ['start'] = -1, ['end'] = -1, } - local is_set = function(position) - return self[position] >= 0 - end - local set = function(position) - self[position] = mp.get_property_number('time-pos') - end - local get = function(position) - return self[position] - end - return { - is_set = is_set, - set = set, - get = get, - } -end - -local function new_sub_list() - local subs_list = {} - local _is_empty = function() - return next(subs_list) == nil - end - 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 insert = function(sub) - if sub ~= nil and not table.contains(subs_list, sub) then - table.insert(subs_list, find_i(sub), sub) - return true - end - return false - end - return { - get_time = get_time, - get_text = get_text, - is_empty = _is_empty, - insert = insert - } -end - subs = { dialogs = new_sub_list(), user_timings = new_timings(),