-
Notifications
You must be signed in to change notification settings - Fork 4
/
subs_to_clipboard.lua
69 lines (58 loc) · 2.15 KB
/
subs_to_clipboard.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
--- ___Usage___:
--- toggle-copy-subs: Automatically copy subtitles to clipboard as they appear. Works on mac 10.13 and windows 10
_G.autocopysubs = false
--- platform detection taken from: github.com/rossy/mpv-repl/blob/master/repl.lua
function detect_platform()
local o = {}
if mp.get_property_native('options/vo-mmcss-profile', o) ~= o then
return 'windows'
elseif mp.get_property_native('options/cocoa-force-dedicated-gpu', o) ~= o then
return 'macos'
end
return 'linux'
end
_G.platform = detect_platform()
if _G.platform == 'windows' then
_G.utils = require 'mp.utils'
end
--- end platform detection code
function escape(s)
return (s:gsub('\'', '\'\\\'\''))
end
function copy_sub(prop, subtext)
if subtext and subtext ~= '' then
if _G.platform == 'macos' then
os.execute("export LANG=en_US.UTF-8; echo '" .. escape(subtext) .. "' | pbcopy")
elseif _G.platform == 'windows' then
--windows copy taken from hsyong, github.com/mpv-player/mpv/issues/4695
local escapedtext = string.gsub(mp.get_property("sub-text"), "'", "")
local res = _G.utils.subprocess({ args = {
'powershell', '-NoProfile', '-Command', string.format([[& {
Trap {
Write-Error -ErrorRecord $_
Exit 1
}
Add-Type -AssemblyName PresentationCore
[System.Windows.Clipboard]::SetText('%s')
}]], escapedtext)
} })
elseif _G.platform == 'linux' then
os.execute("echo '" .. escape(subtext) .. "' | xclip -selection clipboard -i")
end
end
end
function stop_auto_copy_subs()
mp.osd_message("Auto-copy subs disabled", 1)
mp.unobserve_property(copy_sub)
_G.autocopysubs = false
end
function toggle_subs_to_clipboard()
if _G.autocopysubs then
stop_auto_copy_subs()
return
end
mp.osd_message("Auto-copy subs enabled", 1)
mp.observe_property("sub-text", "string", copy_sub)
_G.autocopysubs = true
end
mp.add_key_binding(nil, "toggle-subs-to-clipboard", toggle_subs_to_clipboard)