summaryrefslogtreecommitdiff
path: root/xc.lua
diff options
context:
space:
mode:
authorDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2025-05-20 09:14:12 -0700
committerDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2025-05-20 09:14:12 -0700
commit55ade5ac655953bef1a7efeeb7fa91ec0fd47a77 (patch)
tree7b739c40eed2792ce87e60a6ae15fe0b1649352c /xc.lua
parent5df562dbadb762ee66a09fdd633a44d0fc1c1260 (diff)
downloadmpv-iptv-menu-55ade5ac655953bef1a7efeeb7fa91ec0fd47a77.tar.gz
mpv-iptv-menu-55ade5ac655953bef1a7efeeb7fa91ec0fd47a77.tar.xz
move XC code to a separate file
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