summaryrefslogtreecommitdiff
path: root/mpv_scripts/syncpos.lua
blob: 9e5dc84b41a56ab6f679892378d83ec83ae040f5 (plain)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
-- needs lua5.1-socket

function savepos()
	local name = mp.get_property("filename")
	local path = mp.get_property("path")
	local fn = mp.get_property("stream-open-filename")
	local tpos = mp.get_property("time-pos")
	print(name)
	print(tpos)
	print(path)
	print(fn)
	local host, port = "127.0.0.1", 6789
	local socket = require("socket")
	local tcp = assert(socket.tcp())
	local c = tcp:connect(host, port)
	if not c then
		mp.osd_message("syncpos: Couldn't connect")
		return
	end
	local data = "save \"" .. name .. "\" " .. tpos .. "\n"
	print("sending: " .. data)
	tcp:send(data)
	tcp:close()
	mp.osd_message("Saved position " .. tpos .. " to " .. name)
end

function getpos()
	local name = mp.get_property("filename")
	local tpos = mp.get_property("time-pos")
	print(name)
	print(tpos)
	local host, port = "127.0.0.1", 6789
	local socket = require("socket")
	local tcp = assert(socket.tcp())
	local c = tcp:connect(host, port)
	if not c then
		mp.osd_message("syncpos: Couldn't connect")
		return
	end
	local data = "get \"" .. name .. "\"\n"
	print("sending: " .. data)
	local newpos = ""
	tcp:send(data)
	local newpos = tcp:receive("*l")
	tcp:close()
	print(newpos)
	--print(s)
	--print(status)
	--print(partial)
	mp.set_property("time-pos", newpos)
	mp.osd_message("Got position " .. newpos .. " from " .. name)
end

function list()
	local host, port = "127.0.0.1", 6789
	local socket = require("socket")
	local tcp = assert(socket.tcp())
	tcp:settimeout(1)
	local c = tcp:connect(host, port)
	if not c then
		mp.osd_message("syncpos: Couldn't connect")
		return
	end
	local data = "list\n"
	print("sending: " .. data)
	tcp:send(data)
	local li = tcp:receive("*l")
	local msg = ""
	local sep = ""
	print(li)
	while (li ~= nil and li ~= "") do
		print(li)
		msg = msg .. sep .. li
		li = tcp:receive("*l")
		sep = "\n"
	end
	tcp:close()
	print(msg)
	mp.osd_message(msg)
end

mp.add_key_binding("X", "savepos", savepos)
mp.add_key_binding("C", "getpos", getpos)
mp.add_key_binding("y", "list", list)