Json php backend for new ajax version
Technical documentation
03/11/2010
Here are the php backend specs to develop for future version:
Method:
backend.php?action={call}&{post}
- call: getGlobals
post:
return:{ "streamdev_server": "http://127.0.0.1:3000", "rec_path": "/video/", "video_path": "/mnt/media/Video/", "audio_path": "/mnt/media/Music/" }
- call: getRunningSessions
post:
return:
{
"broadcast":
[
{
"session": "1",
"name": "TF1",
"type": "tv",
},
{
"session": "2",
"name": "Turbo",
"type": "rec",
},
{
"session": "3",
"name": "Movie.avi",
"type": "vid",
}
]
}
- call: getTvCat
post:
return:{ "categories": [ { "name": "Nationales&TNT", "channels": "17" },{ "name": "Divertissements", "channels": "12" },{ "name": "Information", "channels": "6" } ] }
- call: getFullChanList
post:
retunr:{ "category": [ { "name": "Nationales&TNT", "channel": [ { "name": "TF1", "number": "1" },{ "name": "FRANCE 2", "number": "2" },{ "name": "FRANCE 3", "number": "3" } ] }, { "name": "Divertissement", "channel": [ { "name": "Paris Première", "number": "10" },{ "name": "RTL Télévision", "number": "11" } ] } ] } - call: getTvChan
post: cat=[category]
return:{ "channel": [ { "name": "TF1", "number": "1", "now_title": "Journal de 13h", },{ "name": "FRANCE 2", "number": "2", "now_title": "Tournez manège", },{ "name": "FRANCE 3", "number": "3", "now_title": "Journal régional" } ] }
- call: getChanInfo
post: chan=[channel]
return:{ "program": { "name": "TF1", "number": "1", "now_time": "13h00-13h30", "now_title": "Journal de 13h", "now_desc": "Les informations de 13h... Blahblah..", "next_time": "13h35-13h45", "next_title": "Météo", "next_desc": "Le bulletin météo de la journée." } }
- call: getRecInfo
post: rec=[recfolder]
return:{ "program": { "name": "Journal de 13h", "channel": "TF1", "recorded": "2010-02-02 at 19h30", "desc": "Les informations de 13h..." } } - call: getVidInfo
post: file=[vidfile]
return:{ "program": { "name": "My_video.avi", "desc": "", "duration": "1:41:55", "format": "avi", "video": "XviD MPEG-4", "audio": "MPEG Layer 3", "resolution": "608x256" } }
- call: getStreamInfo
post: session=[session_number]
return:
if Tv:{ "stream": { "session": "1", "type": "tv", "name": "TF1", "mode": "3G", "now_time": "13h00-13h30", "now_title": "Journal de 13h", "now_desc": "Les informations de 13h...", "next_time": "13h35-13h45", "next_title": "Météo", "next_desc": "Le bulletin météo de la journée.", "thumbwidth": "80", "thumbheight": "80" } }
if Rec:{ "stream": { "session": "1", "type": "rec", "name": "Journal de 13h", "channel": "TF1", "recorded": "2010-02-02 at 19h30", "desc": "Les informations de 13h...", "mode": "3G", "thumbwidth": "80", "thumbheight": "80" } }
if Video:
{
"stream":
{
"session": "1",
"type": "vid",
"name": "Mavideo.avi",
"desc": "",
"duration": "1:41:55",
"format": "avi",
"video": "XviD MPEG-4",
"audio": "MPEG Layer 3",
"resolution": "608x256"
"mode": "3G",
"thumbwidth": "180",
"thumbheight": "100"
}
}
- call: startBroadcast
post: type=[streamtype]&url=[sourceurl]
return:{ "session": "1" }
- call: StopBroadcast
post: session=[session]
return:{ "status": "ok", "message": "Successfully stopped broadcast" }
or{ "status": "error", "message": "There was an error stopping broadcast" }
- call: getStreamStatus
post: session=[session]&msg=[previousmessagereceived]
return:
{"status": "wait","message": "Requesting streamdev channel","url": ""}
or
{"status": "wait","message": "Requesting video file","url": ""}
or
{"status": "wait","message": "Starting encoding","url": ""}
or
{"status": "ready","message": "3G Broadcast ready", "url": "ram/session0/stream.m3u8"}
or
{"status": "error","message": "Error: Couldn't open channel", "url": ""}
or
{"status": "error","message": "Error: Couldn't encode channel", "url": ""}
or
{"status": "error","message": "Error: Couldn't encode file", "url": ""}
- call: getTimers
post:
return:
{
"timer":
[
{
"id": "1",
"name": "Timername",
"active": "1",
"channumber": "2",
"channame": "FRANCE 2",
"date": "2010-03-10",
"starttime": "2030",
"endtime": "2230",
"running": "0"
}
{
"id": "2",
"name": "Timername2",
"active": "0",
"channumber": "3",
"channame": "FRANCE 3",
"date": "2010-05-10",
"starttime": "1030",
"endtime": "1230",
"running": "0"
}
]
}
* call: editTimerpost: id=[id]&name=[name]&active=[active]&channumber=[channumber]&date=[date]&starttime=[starttime]
&endtime=[endtime]
return:
{ "status": "ok", "message":"Timer edited successfully" }
or
{ "status": "error", "message":"Timer can't be edited" }
- call: addTimer
post: name=[name]&active=[active]&channumber=[channumber]&date=[date]&starttime=[starttime]&endtime=[endtime]
return:
{ "status": "ok", "message":"Timer created successfully" }
or
{ "status": "error", "message":"Timer can't be created" }
- call: delTimer
post: id=[id]
return:
{ "status": "ok", "message":"Timer successfully deleted" }
or
{ "status": "error", "message":"Timer can't be deleted" }
- call: browseFolder
post: path=[path] ( video path )
return:
{
"list":
[
{
"type": "folder",
"name": "movie1",
"path": "/mnt/videos/movie1"
},
{
"type": "folder",
"name": "movie2",
"path": "/mnt/videos/movie2"
},
{
"type": "video",
"name": "videofile.avi",
"path": "/mnt/videos/videofile.avi"
}
]
}
- Call: browseFolder
post: path=[path] ( recording path )
return:
{
"list":
[
{
"type": "folder",
"name": "rec1",
"path": "/video/rec1"
},
{
"type": "folder",
"name": "rec2",
"path": "/video/rec2"
}
]
}
or
{
"list":
[
{
"type": "rec",
"name": "2010/02/25 at 23h21",
"path": "/video/rec1/2010-02-25.23.21.3-0.rec"
},
{
"type": "rec",
"name": "2010/02/26 at 22h35",
"path": "/video/rec1/2010-02-26.22.35.3-0.rec"
}
]
}
- call: browseFolder
post: path=[path] ( audio path )
return:
{
"list":
[
{
"type": "folder",
"name": "album1",
"path": "/mnt/music/album1"
},
{
"type": "folder",
"name": "album2",
"path": "/mnt/music/album2"
},
{
"type": "audio",
"name": "audiofile.mp3",
"nnumber": "tracknumber",
"length": "3.30",
"path": "/mnt/music/audiofile.mp3"
}
]
}
- call: streamAudio
post: path=[path]&file=[file]
return:
{
"track":
[
{
"file": "/istreamdev/playlist/track1.mp3"
},
{
"file": "/istreamdev/playlist/track2.mp3"
},
{
"file": "/istreamdev/playlist/track3.mp3"
}
]
}
- call: getEpg
post: channel&[channumber or "all"]&time=[hour+minutes]&day=[value from today (0) to lastday (ex: 6 if 6 days of epg) ]&programs=[numberofprogramtoget]
example: channel=all&time=1300&day=0&programs=2
return:
{
"category": [
{
"name": "NATIONALES&TNT",
"channel":
[
{
"name": "TF1",
"number": "1",
"epg":
[
{
"time": "13h00-13h30",
"title": "Attention à la marche"
},{
"time": "13h30-14h00",
"title": "Tournez manège"
}
]
},{
"name": "FRANCE 2",
"number": "2",
"epg":
[
{
"time": "12h55-13h25",
"title": "Informations"
},{
"time": "13h25-14h00",
"title": "Météo"
}
]
}
]
},
{
"name": "DIVERTISSEMENT",
"channel":
[
{
"name": "RTL",
"number": "10",
"epg":
[
{
"time": "13h00-13h30",
"title": "Attention à la marche"
},{
"time": "13h30-14h00",
"title": "Tournez manège"
}
]
},{
"name": "PARIS PREMIERE",
"number": "11",
"epg":
[
{
"time": "12h55-13h25",
"title": "Informations"
},{
"time": "13h25-14h00",
"title": "Météo"
}
]
}
]
]
}
call: getEpgInfo
post: channel&[channame or "all"]&time=[hour+minutes]&day=[value from today (0) to lastday (ex: 6 if 6 days of epg) ]
in this example: channel=1&time=1300&day=0
{
"program:
{
"name": "TF1",
"number": "1",
"date": "2010-03-24",
"time": "12h45-13h30",
"title": "Informations",
"desc": "Les informations de 13h...",
"running": "no"
}
}