aboutsummaryrefslogtreecommitdiff
path: root/lib/util.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lib/util.lua')
-rw-r--r--lib/util.lua82
1 files changed, 41 insertions, 41 deletions
diff --git a/lib/util.lua b/lib/util.lua
index f80ae87..a4d3034 100644
--- a/lib/util.lua
+++ b/lib/util.lua
@@ -1,5 +1,41 @@
#!/usr/bin/env lua
+local table_to_cmd = function (t)
+ local str = ""
+
+ for _, v in ipairs(t) do
+ v = v:gsub("'", "\'")
+ str = str .. " '" .. v .. "' "
+ end
+
+ return str
+end
+
+local run = function (args)
+ local sig, rc, stdout, cmd
+
+ if mp then
+ cmd = mp.command_native({
+ name = 'subprocess',
+ capture_stdout = true,
+ args = args,
+ })
+ if cmd then
+ stdout = cmd.stdout
+ rc = (cmd.status >= 0)
+ end
+ else
+ cmd = io.popen(table_to_cmd(args))
+ if cmd then
+ stdout = cmd:read('*all')
+ _, sig, rc = cmd:close()
+ rc = (sig == 'signal') or (sig == 'exit' and rc == 0)
+ end
+ end
+
+ return stdout or "", rc
+end
+
local table_merge = function (t1, t2)
local t = {}
t1 = t1 or {}
@@ -48,15 +84,15 @@ local table_match_or_any = function (t, key)
end
local zip_ext_first = function (zip, out)
- local dir, rc, srt
+ local dir, rc, srt, findcmd
dir = os.tmpname()
os.remove(dir)
- os.execute('mkdir -p ' .. dir)
+ findcmd = { 'find', dir, '-type', 'f', '-name', '*.srt' }
- rc = os.execute('unzip -qq ' .. zip .. ' -d ' .. dir)
- srt = io.popen('find ' .. dir .. ' -type f -name *.srt'):read('*l')
- os.execute("mv '" .. srt .. "' '" .. out .. "'")
+ _, rc = run({ 'unzip', '-qq', zip, '-d', dir })
+ srt = run(findcmd):match('[^\n]*')
+ run({ 'mv', srt, out })
os.remove(dir)
return rc
@@ -141,42 +177,6 @@ local opensubtitles_hash = function (fileName)
return string.format("%08x%08x", hi,lo), size
end
-local table_to_cmd = function (t)
- local str = ""
-
- for _, v in ipairs(t) do
- v = v:gsub("'", "\'")
- str = str .. " '" .. v .. "' "
- end
-
- return str
-end
-
-local run = function (args)
- local sig, rc, stdout, cmd
-
- if mp then
- cmd = mp.command_native({
- name = 'subprocess',
- capture_stdout = true,
- args = args,
- })
- if cmd then
- stdout = cmd.stdout
- rc = (cmd.status >= 0)
- end
- else
- cmd = io.popen(table_to_cmd(args))
- if cmd then
- stdout = cmd:read('*all')
- _, sig, rc = cmd:close()
- rc = (sig == 'signal') or (sig == 'exit' and rc == 0)
- end
- end
-
- return stdout or "", rc
-end
-
return {
table_merge = table_merge,
table_print = table_print,