summaryrefslogtreecommitdiff
path: root/xc.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xc.lua')
-rw-r--r--xc.lua54
1 files changed, 54 insertions, 0 deletions
diff --git a/xc.lua b/xc.lua
new file mode 100644
index 0000000..fca88f7
--- /dev/null
+++ b/xc.lua
@@ -0,0 +1,54 @@
+-- Copyright 2025 David Vazgenovich Shakaryan
+
+local utils = require('mp.utils')
+
+local xc = {}
+local mt = {}
+mt.__index = mt
+
+function xc.new(t)
+ assert(t.server)
+ assert(t.user)
+ assert(t.pass)
+
+ return setmetatable(t, mt)
+end
+
+function mt:get(params)
+ local cmd = 'curl -sSfL \'' .. self.server .. '/player_api.php' ..
+ '?username=' .. self.user .. '&password=' .. self.pass
+ for k, v in pairs(params) do
+ cmd = cmd .. '&' .. k .. '=' .. v
+ end
+ cmd = cmd .. '\''
+
+ print('exec: ' .. cmd)
+ local fd = io.popen(cmd)
+ local json = fd:read('*all')
+ fd:close()
+ return utils.parse_json(json)
+end
+
+function mt:get_series_info(id)
+ return self:get({action = 'get_series_info', series_id = id})
+end
+
+function mt:get_vod_info(id)
+ return self:get({action = 'get_vod_info', vod_id = id})
+end
+
+function mt:stream_url(stream_type, stream_id)
+ if stream_type == 'series' then
+ return self.server .. '/series/' ..
+ self.user .. '/' ..
+ self.pass .. '/' ..
+ stream_id .. '.vod'
+ else
+ return self.server .. '/' ..
+ self.user .. '/' ..
+ self.pass .. '/' ..
+ stream_id
+ end
+end
+
+return xc