From e504a95131aac2c438d9ac3fbf504d90df57d9f8 Mon Sep 17 00:00:00 2001 From: HasanAbbadi Date: Sat, 2 Jul 2022 11:57:25 +0300 Subject: Init --- jaSubs.lua | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 jaSubs.lua (limited to 'jaSubs.lua') diff --git a/jaSubs.lua b/jaSubs.lua new file mode 100644 index 0000000..360c7a7 --- /dev/null +++ b/jaSubs.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) -- cgit v1.2.3