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: 1e6bc397c8b57d695e5b2bdfdb3e560759e051da
Parent: 3cb4fcca6771c9704b2207ab4c7cbcf659aabc9b
Author: Ren Tatsumoto
Date:   Sun, 20 Dec 2020 12:05:54 +0300

group functions for adding and updating notes together

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

diff --git a/subs2srs.lua b/subs2srs.lua @@ -322,25 +322,6 @@ local function get_time_pos() return string.format('%.3f', mp.get_property_number("time-pos", 0)) end -local function export_to_anki(gui) - local sub = subs.get() - if sub == nil then - notify("Nothing to export.", "warn", 1) - return - end - if not gui and is_empty(sub['text']) then - sub['text'] = string.format([[<span id="mpv%s">mpvacious wasn't able to grab subtitles</span>]], os.time()) - end - local snapshot_filename, audio_filename = construct_media_filenames(sub) - - encoder.create_snapshot(get_time_pos(), snapshot_filename) - encoder.create_audio(sub['start'], sub['end'], audio_filename) - - local note_fields = construct_note_fields(sub['text'], snapshot_filename, audio_filename) - ankiconnect.add_note(note_fields, gui) - subs.clear() -end - local function join_media_fields(new_data, stored_data) for _, field in pairs { config.audio_field, config.image_field } do new_data[field] = table.get(stored_data, field, "") .. table.get(new_data, field, "") @@ -348,40 +329,6 @@ local function join_media_fields(new_data, stored_data) return new_data end -local function update_last_note(overwrite) - local sub = subs.get() - local last_note_id = ankiconnect.get_last_note_id() - - if sub == nil or is_empty(sub['text']) then - notify("Nothing to export. Have you set the timings?", "warn", 2) - return - end - - if last_note_id < minutes_ago(10) then - notify("Couldn't find the target note.", "warn", 2) - return - end - - local snapshot_filename, audio_filename = construct_media_filenames(sub) - - local create_media = function() - encoder.create_snapshot(get_time_pos(), snapshot_filename) - encoder.create_audio(sub['start'], sub['end'], audio_filename) - end - - local new_data = construct_note_fields(sub['text'], snapshot_filename, audio_filename) - local stored_data = ankiconnect.get_note_fields(last_note_id) - if stored_data then - new_data = append_forvo_pronunciation(new_data, stored_data) - if not overwrite then - new_data = join_media_fields(new_data, stored_data) - end - end - - ankiconnect.append_media(last_note_id, new_data, create_media) - subs.clear() -end - local validate_config do local function is_webp_supported() @@ -557,6 +504,66 @@ local filename_factory = (function() end)() ------------------------------------------------------------ +-- front for adding and updating notes + +local function export_to_anki(gui) + local sub = subs.get() + if sub == nil then + notify("Nothing to export.", "warn", 1) + return + end + + if not gui and is_empty(sub['text']) then + sub['text'] = string.format([[<span id="mpv%s">mpvacious wasn't able to grab subtitles</span>]], os.time()) + end + + local snapshot_filename = filename_factory.make_snapshot_filename(get_time_pos()) + local audio_filename = filename_factory.make_audio_filename(sub['start'], sub['end']) + + encoder.create_snapshot(get_time_pos(), snapshot_filename) + encoder.create_audio(sub['start'], sub['end'], audio_filename) + + local note_fields = construct_note_fields(sub['text'], snapshot_filename, audio_filename) + ankiconnect.add_note(note_fields, gui) + subs.clear() +end + +local function update_last_note(overwrite) + local sub = subs.get() + local last_note_id = ankiconnect.get_last_note_id() + + if sub == nil or is_empty(sub['text']) then + notify("Nothing to export. Have you set the timings?", "warn", 2) + return + end + + if last_note_id < minutes_ago(10) then + notify("Couldn't find the target note.", "warn", 2) + return + end + + local snapshot_filename = filename_factory.make_snapshot_filename(get_time_pos()) + local audio_filename = filename_factory.make_audio_filename(sub['start'], sub['end']) + + local create_media = function() + encoder.create_snapshot(get_time_pos(), snapshot_filename) + encoder.create_audio(sub['start'], sub['end'], audio_filename) + end + + local new_data = construct_note_fields(sub['text'], snapshot_filename, audio_filename) + local stored_data = ankiconnect.get_note_fields(last_note_id) + if stored_data then + new_data = append_forvo_pronunciation(new_data, stored_data) + if not overwrite then + new_data = join_media_fields(new_data, stored_data) + end + end + + ankiconnect.append_media(last_note_id, new_data, create_media) + subs.clear() +end + +------------------------------------------------------------ -- seeking: sub seek, sub rewind local function _(params)