mirror of
https://github.com/DigitalDevices/octonet.git
synced 2023-10-10 13:36:52 +02:00
130 lines
4.8 KiB
Lua
130 lines
4.8 KiB
Lua
|
|
local DataBase = {}
|
|
|
|
local SourceList = {}
|
|
local ChannelList = {}
|
|
|
|
local function AddSource(refid,title,system,src)
|
|
table.insert(SourceList, { refid = refid, title = title, src = src, system = system } )
|
|
end
|
|
|
|
local function AddChannel(sourceid,title,request,tracks)
|
|
table.insert(ChannelList, { refid = sourceid, title = title, request = request, tracks = tracks } )
|
|
end
|
|
|
|
local function ReadFile(sourceid,file,system)
|
|
while true do
|
|
line = file:read()
|
|
if not line then break end
|
|
local cat,title,sys,freq,sr,pol,mtype,bw,ds,plp,t2lite,radio,enc,pids,tracks
|
|
local request = ""
|
|
|
|
if system == "dvbs" or system == "dvbs2" then
|
|
cat,title,sys,freq,sr,pol,radio,enc,pids,tracks = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",(%d+),(%d+),%"(.*)%",(%d+),(%d+),%"P(.*)%",%"A(.*)%"')
|
|
if not tracks then break end
|
|
if sys == "dvbs" or "dvbs2" then
|
|
pids = string.gsub(pids,":",",")
|
|
tracks = string.gsub(tracks,":",",")
|
|
request = "freq="..freq.."&pol="..pol.."&msys="..sys.."&sr="..sr.."&pids=0,"..pids
|
|
end
|
|
elseif system == "dvbc" then
|
|
cat,title,sys,freq,sr,mtype,radio,enc,pids,tracks = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",(%d+),(%d+),%"(.*)%",(%d+),(%d+),%"P(.*)%",%"A(.*)%"')
|
|
if not tracks then break end
|
|
pids = string.gsub(pids,":",",")
|
|
tracks = string.gsub(tracks,":",",")
|
|
local f = string.sub(freq,1,3).."."..string.sub(freq,4,6)
|
|
if sys == "dvbc" then
|
|
request = "freq="..f.."&msys=dvbc&sr="..sr.."&mtype="..mtype.."&pids=0,"..pids
|
|
end
|
|
elseif system == "dvbc2" then
|
|
cat,title,sys,freq,bw,ds,plp,mtype,radio,enc,pids,tracks = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",(%d+),(%d+),(%d+),(%d+),%"(.*)%",(%d+),(%d+),%"P(.*)%",%"A(.*)%"')
|
|
if not tracks then break end
|
|
pids = string.gsub(pids,":",",")
|
|
tracks = string.gsub(tracks,":",",")
|
|
local f = string.sub(freq,1,3).."."..string.sub(freq,4,6)
|
|
if sys == "dvbc" then
|
|
request = "freq="..f.."&msys=dvbc&sr="..bw.."&mtype="..ds.."&pids=0,"..pids
|
|
elseif sys == "dvbc2" then
|
|
request = "freq="..f.."&msys=dvbc2&bw="..bw.."&x_ds="..ds.."&plp="..plp.."&pids=0,"..pids
|
|
end
|
|
elseif system == "dvbt" or system == "dvbt2" then
|
|
cat,title,sys,freq,bw,plp,t2lite,radio,enc,pids,tracks = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",(%d+),(%d+),(%d+),(%d+),(%d+),(%d+),%"P(.*)%",%"A(.*)%"')
|
|
if not tracks then break end
|
|
pids = string.gsub(pids,":",",")
|
|
tracks = string.gsub(tracks,":",",")
|
|
local f = string.sub(freq,1,3).."."..string.sub(freq,4,6)
|
|
if sys == "dvbt" then
|
|
request = "freq="..f.."&msys=dvbt&bw="..bw.."&pids=0,"..pids
|
|
elseif sys == "dvbt2" then
|
|
if bw == "1" then bw = "1.712" end
|
|
request = "freq="..f.."&msys=dvbt2&bw="..bw.."&plp="..plp.."&pids=0,"..pids
|
|
end
|
|
end
|
|
|
|
if request ~= "" then
|
|
if enc ~= "0" then request = request.."&x_pmt="..enc end
|
|
AddChannel(sourceid,title,request, tracks)
|
|
end
|
|
end
|
|
|
|
file:close()
|
|
end
|
|
|
|
local function OpenCSV(name,line1)
|
|
local file = io.open("/config/channels/"..name..".csv","r")
|
|
if file then
|
|
local line = file:read()
|
|
line = string.gsub(line,'"','')
|
|
if string.match(line,line1) then
|
|
return file
|
|
end
|
|
file:close()
|
|
end
|
|
file = io.open("/var/channels/"..name..".csv","r")
|
|
if file then
|
|
local line = file:read()
|
|
end
|
|
return file
|
|
end
|
|
|
|
local srcfile = OpenCSV("sourcelist","KEY,CSVFILE,NAME,SYSTEM,SRC")
|
|
if srcfile then
|
|
while true do
|
|
line = srcfile:read()
|
|
if not line then break end
|
|
local key,csvfile,name,system,src = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",%"(.*)%",(%d+)')
|
|
if not key or not csvfile or not name or not system or not src then
|
|
break
|
|
end
|
|
if system == "dvbs" or system == "dvbs2" then
|
|
AddSource(key,name,system,src)
|
|
elseif system == "dvbc" or system == "dvbc2" or system == "dvbt" or system == "dvbt2" then
|
|
AddSource(key,name,system,nil)
|
|
else
|
|
csvfile = nil
|
|
end
|
|
if csvfile then
|
|
local header = "?"
|
|
if system == "dvbs" or system == "dvbs2" then
|
|
header = "CATEGORY,TITLE,SYSTEM,FREQ,SR,POL,RADIO,ENC,PIDS,TRACKS"
|
|
elseif system == "dvbc" then
|
|
header = "CATEGORY,TITLE,SYSTEM,FREQ,SR,MOD,RADIO,ENC,PIDS,TRACKS"
|
|
elseif system == "dvbc2" then
|
|
header = "CATEGORY,TITLE,SYSTEM,FREQ,BW/SR,DS,PLP,MOD,RADIO,ENC,PIDS,TRACKS"
|
|
elseif system == "dvbt" or system == "dvbt2" then
|
|
header = "CATEGORY,TITLE,SYSTEM,FREQ,BW,PLP,LITE,RADIO,ENC,PIDS,TRACKS"
|
|
end
|
|
|
|
local file = OpenCSV(csvfile,header)
|
|
if file then
|
|
ReadFile(key,file,system)
|
|
end
|
|
end
|
|
end
|
|
srcfile:close()
|
|
end
|
|
|
|
DataBase.SourceList = SourceList
|
|
DataBase.ChannelList = ChannelList
|
|
|
|
return DataBase |