summaryrefslogtreecommitdiff
path: root/main.lua
diff options
context:
space:
mode:
Diffstat (limited to 'main.lua')
-rw-r--r--main.lua143
1 files changed, 143 insertions, 0 deletions
diff --git a/main.lua b/main.lua
new file mode 100644
index 0000000..360c7a7
--- /dev/null
+++ b/main.lua
@@ -0,0 +1,143 @@
+-- v. 2.7
+-- Interactive subtitles for `mpv` for language learners.
+--
+-- default keybinding to start/stop: F5
+-- default keybinding to hide/show: F6
+-- if jaSubs start automatically - mpv won't show notification
+--
+-- dirs in which jaSubs will start automatically; part of path/filename will also work; case insensitive; regexp
+-- autostart_in = {'German', ' ger ', '%.ger%.', 'Deutsch', 'Hebrew'}
+autostart_in = {'Japanese'}
+
+-- for Mac change python3 to python or pythonw
+start_command = 'python3 "%s" "%s" "%s"'
+
+-- recomend to have these in tmpfs, or at least ssd.
+sub_file = '/tmp/mpv_sub'
+mpv_socket = '/tmp/mpv_socket'
+
+keybinding = 'F3'
+keybinding_hide = 'F6'
+
+pyname = '~/.config/mpv/scripts/jaSubs/jaSubs.py'
+
+------------------------------------------------------
+
+debug = false
+-- debug = true
+
+if debug == true then
+ start_command = ''
+ start_command = 'terminator -e \'python3 "%s" "%s" "%s"; sleep 33\''
+end
+
+------------------------------------------------------
+
+function s1()
+ if running == true then
+ s_rm()
+ return
+ end
+
+ running = true
+ mp.msg.warn('Starting jaSubs...')
+ mp.register_event("end-file", s_rm)
+ rnbr = math.random(11111111, 99999999)
+
+ if debug == true then
+ rnbr = ''
+ end
+
+ mpv_socket_2 = mpv_socket .. '_' .. rnbr
+ sub_file_2 = sub_file .. '_' .. rnbr
+
+ -- setting up socket to control mpv
+ mp.set_property("input-ipc-server", mpv_socket_2)
+
+ -- without visible subs won't work
+ sbv = mp.get_property("sub-visibility")
+ mp.set_property("sub-visibility", "yes")
+ mp.set_property("sub-ass-override", "force")
+
+ sub_color1 = mp.get_property("sub-color", "1/1/1/1")
+ sub_color2 = mp.get_property("sub-border-color", "0/0/0/1")
+ sub_color3 = mp.get_property("sub-shadow-color", "0/0/0/1")
+ mp.set_property("sub-color", "0/0/0/0")
+ mp.set_property("sub-border-color", "0/0/0/0")
+ mp.set_property("sub-shadow-color", "0/0/0/0")
+
+ start_command_2 = start_command:format(pyname:gsub('~', os.getenv('HOME')), mpv_socket_2, sub_file_2)
+ os.execute(start_command_2 .. ' &')
+
+ mp.observe_property("sub-text", "string", s2)
+end
+
+function s2(name, value)
+ if type(value) == "string" then
+ file = io.open(sub_file_2, "w")
+ file:write(value)
+ file:close()
+ end
+end
+
+function s_rm()
+ running = false
+ hidden = false
+ mp.msg.warn('Quitting jaSubs...')
+
+ mp.set_property("sub-visibility", sbv)
+ mp.set_property("sub-color", sub_color1)
+ mp.set_property("sub-border-color", sub_color2)
+ --~ mp.set_property("sub-shadow-color", sub_color3)
+
+ os.execute('pkill -f "' .. mpv_socket_2 .. '" &')
+ os.execute('(sleep 3 && rm "' .. mpv_socket_2 .. '") &')
+ os.execute('(sleep 3 && rm "' .. sub_file_2 .. '") &')
+end
+
+function started()
+ if mp.get_property("sub") == 'no' then
+ return true
+ end
+
+ hidden = false
+
+ for kk, pp in pairs(autostart_in) do
+ if mp.get_property("path"):lower():find(pp:lower()) or mp.get_property("working-directory"):lower():find(pp:lower()) then
+ s1()
+ break
+ end
+ end
+end
+
+function s1_1()
+ if running == true then
+ s_rm()
+ mp.command('show-text "Quitting jaSubs..."')
+ else
+ if mp.get_property("sub") == 'no' then
+ mp.command('show-text "Select subtitles before starting jaSubs."')
+ else
+ s1()
+ mp.command('show-text "Starting jaSubs..."')
+ end
+ end
+end
+
+function hide_show()
+ if running == true then
+ if hidden == true then
+ os.execute('rm "' .. mpv_socket_2 .. '_hide" &')
+ mp.osd_message("Showing jaSubs.", .8)
+ hidden = false
+ else
+ os.execute('touch "' .. mpv_socket_2 .. '_hide" &')
+ mp.osd_message("Hiding jaSubs.", .8)
+ hidden = true
+ end
+ end
+end
+
+mp.add_forced_key_binding(keybinding, "start-stop-jaSubs", s1_1)
+mp.add_forced_key_binding(keybinding_hide, "hide-show-jaSubs", hide_show)
+mp.register_event("file-loaded", started)