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:
M | subs2srs.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)