support new config and playlist format
This commit is contained in:
parent
7499ed9ae2
commit
f9a1828bb7
@ -52,12 +52,16 @@ function modal(btOK, btCan, video, title, content, x, y, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//get date
|
//get date
|
||||||
function get_date(hour, seek_day) {
|
function get_date(t, seek_day) {
|
||||||
var raw_date = moment();
|
var datetime = moment();
|
||||||
if (raw_date.format("H") < parseInt(hour) && seek_day) {
|
var l_time = t.split(":");
|
||||||
return raw_date.add(-1, 'days');
|
l_stamp = parseInt(l_time[0]) * 3600 + parseInt(l_time[1]) * 60 + parseInt(l_time[2]);
|
||||||
|
t_stamp = moment.duration(datetime.format("H:M:S")).asSeconds();
|
||||||
|
|
||||||
|
if (l_stamp > 0 && l_stamp > t_stamp && seek_day) {
|
||||||
|
return datetime.add(-1, 'days');
|
||||||
} else {
|
} else {
|
||||||
return raw_date;
|
return datetime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,12 +141,12 @@ function init_browse_click() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// call php script to navigatge to the selected folder on the server
|
// call php script to navigatge to the selected folder on the server
|
||||||
function browse(current_data) {
|
function browse(c_data) {
|
||||||
$.get("functions.php" + current_data + "&head=get", function(data) {
|
$.get("functions.php" + c_data + "&head=get", function(data) {
|
||||||
$('#browserHead').html(data);
|
$('#browserHead').html(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
$.get("functions.php" + current_data + "&ul=get", function(data) {
|
$.get("functions.php" + c_data + "&ul=get", function(data) {
|
||||||
$('#rootDirectory').html(data);
|
$('#rootDirectory').html(data);
|
||||||
init_browse_click();
|
init_browse_click();
|
||||||
});
|
});
|
||||||
@ -151,13 +155,17 @@ function browse(current_data) {
|
|||||||
// first page load will open the media directory
|
// first page load will open the media directory
|
||||||
window.onload = function() {
|
window.onload = function() {
|
||||||
$.get("resources/list_op.php?clips_root=get", function(result) {
|
$.get("resources/list_op.php?clips_root=get", function(result) {
|
||||||
browse("?dir=" + result);
|
browse("?dir=" + result.replace(/^\//g, ''));
|
||||||
});
|
});
|
||||||
|
|
||||||
$.get("resources/list_op.php?list_start=get", function(result) {
|
$.get("resources/list_op.php?list_start=get", function(result) {
|
||||||
|
var l_time = result.split(":");
|
||||||
|
var l_stamp = parseInt(l_time[0]) * 3600 + parseInt(l_time[1]) * 60 + parseInt(l_time[2]);
|
||||||
|
|
||||||
var list_date = get_date(result, true);
|
var list_date = get_date(result, true);
|
||||||
// write playlist date to list attribute, for later use
|
// write playlist date to list attribute, for later use
|
||||||
$('#playlistBody').attr('listday', list_date.format("YYYY-MM-DD"));
|
$('#playlistBody').attr('listday', list_date.format("YYYY-MM-DD"));
|
||||||
|
$('#playlistBody').attr('liststart', l_stamp);
|
||||||
// read playlist from current day
|
// read playlist from current day
|
||||||
get_json(list_date.format("YYYY-MM-DD"), true);
|
get_json(list_date.format("YYYY-MM-DD"), true);
|
||||||
});
|
});
|
||||||
@ -252,7 +260,8 @@ function reorder_playlist() {
|
|||||||
// get start time from: /etc/ffplayout/ffplayout.conf
|
// get start time from: /etc/ffplayout/ffplayout.conf
|
||||||
$.get("resources/list_op.php?list_start=get", function(result) {
|
$.get("resources/list_op.php?list_start=get", function(result) {
|
||||||
var reorder = document.getElementById("playlistBody").getElementsByClassName("list-item");
|
var reorder = document.getElementById("playlistBody").getElementsByClassName("list-item");
|
||||||
var start_time = parseFloat(result * 3600);
|
var l_time = result.split(":");
|
||||||
|
var start_time = parseFloat(l_time[0]) * 3600 + parseFloat(l_time[1]) * 60 + parseFloat(l_time[2]);
|
||||||
var time_format, cur_in, cur_out;
|
var time_format, cur_in, cur_out;
|
||||||
|
|
||||||
for (var i = 0; i < reorder.length; i++) {
|
for (var i = 0; i < reorder.length; i++) {
|
||||||
@ -281,39 +290,37 @@ function jump_and_colorize_title(jump) {
|
|||||||
var play_begin, play_dur;
|
var play_begin, play_dur;
|
||||||
|
|
||||||
$.get("resources/list_op.php?list_start=get", function(result) {
|
$.get("resources/list_op.php?list_start=get", function(result) {
|
||||||
list_date = get_date(result, true);
|
var list_date = get_date(result, true);
|
||||||
|
|
||||||
if (list_date.format("H") < parseInt(result)) {
|
if (list_date.format("H") < parseInt(result)) {
|
||||||
time_in_seconds += 86400
|
time_in_seconds += 86400
|
||||||
}
|
}
|
||||||
|
|
||||||
$.get("resources/list_op.php?time_shift=get", function(shift) {
|
if ($('#playlistBody').attr('listday') === list_date.format("YYYY-MM-DD")) {
|
||||||
if ($('#playlistBody').attr('listday') === list_date.format("YYYY-MM-DD")) {
|
for (var i = 0; i < play_items.length; i++) {
|
||||||
for (var i = 0; i < play_items.length; i++) {
|
play_begin = parseFloat($(play_items[i]).attr('begin'));
|
||||||
play_begin = parseFloat($(play_items[i]).attr('begin')) - parseFloat(shift);
|
play_dur = parseFloat($(play_items[i]).attr('dur'));
|
||||||
play_dur = parseFloat($(play_items[i]).attr('dur'));
|
if (play_begin + play_dur >= time_in_seconds) {
|
||||||
if (play_begin + play_dur >= time_in_seconds) {
|
// jump to position only after page load
|
||||||
// jump to position only after page load
|
if (jump) {
|
||||||
if (jump) {
|
$('#list-container').animate({
|
||||||
$('#list-container').animate({
|
scrollTop: $('#playlistBody li:nth-child(' + (i-1) + ')').position().top
|
||||||
scrollTop: $('#playlistBody li:nth-child(' + (i-1) + ')').position().top
|
}, 500, "easeOutQuint");
|
||||||
}, 500, "easeOutQuint");
|
|
||||||
}
|
|
||||||
|
|
||||||
// colorize items
|
|
||||||
$(play_items[i]).addClass('current_item');
|
|
||||||
$(play_items[i+1]).addClass('next_item');
|
|
||||||
$('.list-item:gt('+(i+1)+')').addClass('last_items');
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
// colorize items
|
||||||
// scroll to playlist top
|
$(play_items[i]).addClass('current_item');
|
||||||
if (jump) {
|
$(play_items[i+1]).addClass('next_item');
|
||||||
$('#list-container').animate({scrollTop: 0}, 500, "easeOutQuint");
|
$('.list-item:gt('+(i+1)+')').addClass('last_items');
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
} else {
|
||||||
|
// scroll to playlist top
|
||||||
|
if (jump) {
|
||||||
|
$('#list-container').animate({scrollTop: 0}, 500, "easeOutQuint");
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -355,24 +362,24 @@ header functions
|
|||||||
var intervalId = null;
|
var intervalId = null;
|
||||||
|
|
||||||
function get_track_list(interval) {
|
function get_track_list(interval) {
|
||||||
var begin, src, dur, seek, out, time_left;
|
var begin, seek, out, time_left;
|
||||||
|
|
||||||
$.get("resources/player.php?track=get", function(result) {
|
$.get("resources/player.php?track=get", function(result) {
|
||||||
function get_track() {
|
function get_track() {
|
||||||
var moment_time = moment().format('HH:mm:ss');
|
var moment_time = moment().format('HH:mm:ss');
|
||||||
var time_in_seconds = parseFloat(moment.duration(moment_time).asSeconds());
|
var time_in_seconds = parseFloat(moment.duration(moment_time).asSeconds());
|
||||||
var json = $.parseJSON(result);
|
var json = $.parseJSON(result);
|
||||||
var playlist_start = parseFloat(json[0]['start'][0]);
|
var playlist_start = parseFloat($('#playlistBody').attr('liststart'));
|
||||||
|
|
||||||
if (0.0 <= time_in_seconds && time_in_seconds < playlist_start * 3600.0) {
|
if (0.0 <= time_in_seconds && time_in_seconds < playlist_start) {
|
||||||
time_in_seconds += 86400.0;
|
time_in_seconds += 86400.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$.each(json, function (index, value) {
|
begin = playlist_start;
|
||||||
begin = parseFloat(value['begin'][0]);
|
|
||||||
dur = parseFloat(value['dur'][0]);
|
$.each(json, function (_index, value) {
|
||||||
seek = parseFloat(value['in'][0]);
|
seek = parseFloat(value['in']);
|
||||||
out = parseFloat(value['out'][0]);
|
out = parseFloat(value['out']);
|
||||||
|
|
||||||
if (time_in_seconds < begin + out - seek ) {
|
if (time_in_seconds < begin + out - seek ) {
|
||||||
time_left = begin + out - seek - time_in_seconds;
|
time_left = begin + out - seek - time_in_seconds;
|
||||||
@ -380,6 +387,8 @@ function get_track_list(interval) {
|
|||||||
$('#title').html((value['src']));
|
$('#title').html((value['src']));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
begin += out - seek;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (interval) {
|
if (interval) {
|
||||||
@ -387,7 +396,6 @@ function get_track_list(interval) {
|
|||||||
} else {
|
} else {
|
||||||
clearInterval(refreshIntervalId);
|
clearInterval(refreshIntervalId);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -521,7 +529,6 @@ $(document).ready(function() {
|
|||||||
var save_list = [];
|
var save_list = [];
|
||||||
$('#playlistBody li.list-item').each(function(){
|
$('#playlistBody li.list-item').each(function(){
|
||||||
save_list.push({
|
save_list.push({
|
||||||
begin:$(this).attr('begin'),
|
|
||||||
src:$(this).attr('src'),
|
src:$(this).attr('src'),
|
||||||
dur:$(this).attr('dur'),
|
dur:$(this).attr('dur'),
|
||||||
in:$(this).attr('in'),
|
in:$(this).attr('in'),
|
||||||
@ -562,7 +569,6 @@ $(document).ready(function() {
|
|||||||
var save_list = [];
|
var save_list = [];
|
||||||
$('#playlistBody li.list-item').each(function(){
|
$('#playlistBody li.list-item').each(function(){
|
||||||
save_list.push({
|
save_list.push({
|
||||||
begin:$(this).attr('begin'),
|
|
||||||
src:$(this).attr('src'),
|
src:$(this).attr('src'),
|
||||||
dur:$(this).attr('dur'),
|
dur:$(this).attr('dur'),
|
||||||
in:$(this).attr('in'),
|
in:$(this).attr('in'),
|
||||||
@ -581,7 +587,6 @@ $(document).ready(function() {
|
|||||||
modal(null, null, null, "Fill Playlist", "Filling Playlist in progress...", 'auto', 'auto', function(result) {});
|
modal(null, null, null, "Fill Playlist", "Filling Playlist in progress...", 'auto', 'auto', function(result) {});
|
||||||
},
|
},
|
||||||
success: function(result) {
|
success: function(result) {
|
||||||
// console.log(result);
|
|
||||||
$('#dialog-confirm').dialog("close");
|
$('#dialog-confirm').dialog("close");
|
||||||
modal(true, null, null, "Fill Playlist", result + "<br/><b>Filled Time:</b> " + moment.utc(Math.abs(missed_length) * 1000).format('HH:mm:ss'), 'auto', 'auto', function(result) {});
|
modal(true, null, null, "Fill Playlist", result + "<br/><b>Filled Time:</b> " + moment.utc(Math.abs(missed_length) * 1000).format('HH:mm:ss'), 'auto', 'auto', function(result) {});
|
||||||
get_json(date, false);
|
get_json(date, false);
|
||||||
|
@ -5,43 +5,22 @@ read values from ffplayout config file
|
|||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
// get config file
|
// get config file
|
||||||
function get_config() {
|
function get_ini() {
|
||||||
return file_get_contents("/etc/ffplayout/ffplayout.conf");
|
return parse_ini_file("/etc/ffplayout/ffplayout.conf", TRUE, INI_SCANNER_RAW);
|
||||||
}
|
}
|
||||||
|
|
||||||
// get start time
|
// get start time
|
||||||
if(!empty($_GET['list_start'])) {
|
if(!empty($_GET['list_start'])) {
|
||||||
$get_ini = get_config();
|
$ini = get_ini();
|
||||||
$get_start = "/^day_start.*\$/m";
|
echo $ini['PLAYLIST']['day_start'];
|
||||||
preg_match_all($get_start, $get_ini, $matches);
|
|
||||||
$line = implode("\n", $matches[0]);
|
|
||||||
echo explode("= ", $line)[1];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// get clips root directory
|
// get clips root directory
|
||||||
if(!empty($_GET['clips_root'])) {
|
if(!empty($_GET['clips_root'])) {
|
||||||
$get_ini = get_config();
|
$ini = get_ini();
|
||||||
$get_root = "/^clips_root.*\$/m";
|
echo $ini['STORAGE']['path'];
|
||||||
preg_match_all($get_root, $get_ini, $matches);
|
|
||||||
$line = implode("\n", $matches[0]);
|
|
||||||
$root = substr(explode("= ", $line)[1], 1);
|
|
||||||
echo $root;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// get time_shift
|
|
||||||
if (!empty($_GET['time_shift'])) {
|
|
||||||
$get_ini = get_config();
|
|
||||||
$get_shift = "/^time_shift.*\$/m";
|
|
||||||
preg_match_all($get_shift, $get_ini, $shift_arr);
|
|
||||||
$line_shift = implode("\n", $shift_arr[0]);
|
|
||||||
$time_shift = explode("= ", $line_shift)[1];
|
|
||||||
|
|
||||||
if(empty($time_shift)) {
|
|
||||||
echo 0;
|
|
||||||
} else {
|
|
||||||
echo $time_shift;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
json playlist operations
|
json playlist operations
|
||||||
@ -65,19 +44,16 @@ $ext = implode('|', $except);
|
|||||||
if(!empty($_GET['json_path'])) {
|
if(!empty($_GET['json_path'])) {
|
||||||
$json_date = $_GET['json_path'];
|
$json_date = $_GET['json_path'];
|
||||||
$date_str = explode('-', $json_date);
|
$date_str = explode('-', $json_date);
|
||||||
$get_ini = get_config();
|
$ini = get_ini();
|
||||||
$get_dir = "/^playlist_path.*\$/m";
|
$dir = $ini['PLAYLIST']['path'];
|
||||||
preg_match_all($get_dir, $get_ini, $matches);
|
|
||||||
$line = implode("\n", $matches[0]);
|
|
||||||
$path_root = explode("= ", $line)[1];
|
|
||||||
|
|
||||||
$json_path = $path_root . "/" . $date_str[0] . "/" . $date_str[1] . "/" . $json_date . ".json";
|
$json_path = $dir . "/" . $date_str[0] . "/" . $date_str[1] . "/" . $json_date . ".json";
|
||||||
|
|
||||||
if (file_exists($json_path)) {
|
if (file_exists($json_path)) {
|
||||||
$content = file_get_contents($json_path) or die("Error: Cannot create object");
|
$content = file_get_contents($json_path) or die("Error: Cannot create object");
|
||||||
$json = json_decode($content, true);
|
$json = json_decode($content, true);
|
||||||
|
|
||||||
list($hh, $mm, $ss) = explode(":", $json["begin"]);
|
list($hh, $mm, $ss) = explode(":", $ini['PLAYLIST']['day_start']);
|
||||||
list($l_hh, $l_mm, $l_ss) = explode(":", $json["length"]);
|
list($l_hh, $l_mm, $l_ss) = explode(":", $json["length"]);
|
||||||
|
|
||||||
$start = $hh * 3600 + $mm * 60 + $ss;
|
$start = $hh * 3600 + $mm * 60 + $ss;
|
||||||
@ -185,22 +161,15 @@ if(!empty($_POST['save'])) {
|
|||||||
$date = $_POST['date'];
|
$date = $_POST['date'];
|
||||||
$date_str = explode('-', $date);
|
$date_str = explode('-', $date);
|
||||||
// get save path
|
// get save path
|
||||||
$get_ini = get_config();
|
$ini = get_ini();
|
||||||
$get_dir = "/^playlist_path.*\$/m";
|
$dir = $ini['PLAYLIST']['path'];
|
||||||
preg_match_all($get_dir, $get_ini, $matches);
|
$json_path = $dir . "/" . $date_str[0] . "/" . $date_str[1];
|
||||||
$line = implode("\n", $matches[0]);
|
|
||||||
$path_root = explode("= ", $line)[1];
|
|
||||||
$json_path = $path_root . "/" . $date_str[0] . "/" . $date_str[1];
|
|
||||||
$json_output = $json_path . "/" . $date . ".json";
|
$json_output = $json_path . "/" . $date . ".json";
|
||||||
|
|
||||||
$beginRaw = round($raw_arr[0]->begin);
|
|
||||||
$start = sprintf('%02d:%02d:%02d', ($beginRaw/3600),($beginRaw/60%60), $beginRaw%60);
|
|
||||||
|
|
||||||
// prepare header
|
// prepare header
|
||||||
$list = array(
|
$list = array(
|
||||||
"channel" => "Test 1",
|
"channel" => "Test 1",
|
||||||
"date" => $date,
|
"date" => $date,
|
||||||
"begin" => $start,
|
|
||||||
"length" => "24:00:00.000",
|
"length" => "24:00:00.000",
|
||||||
"program" => []
|
"program" => []
|
||||||
);
|
);
|
||||||
@ -232,69 +201,4 @@ if(!empty($_POST['save'])) {
|
|||||||
printf('Save playlist "%s.json" done...', $date);
|
printf('Save playlist "%s.json" done...', $date);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fill playlist to 24 hours
|
|
||||||
if(!empty($_POST['fill_playlist'])) {
|
|
||||||
$list_date = $_POST['fill_playlist'];
|
|
||||||
$diff_len = $_POST['diff_len'];
|
|
||||||
$start_time = $_POST['start_time'];
|
|
||||||
$raw_arr = json_decode(urldecode($_POST['old_list']));
|
|
||||||
|
|
||||||
$get_ini = get_config();
|
|
||||||
$date_str = explode('-', $list_date);
|
|
||||||
$get_dir = "/^playlist_path.*\$/m";
|
|
||||||
preg_match_all($get_dir, $get_ini, $matches);
|
|
||||||
$line = implode("\n", $matches[0]);
|
|
||||||
$path_root = explode("= ", $line)[1];
|
|
||||||
$json_path = $path_root . "/" . $date_str[0] . "/" . $date_str[1];
|
|
||||||
$json_output = $json_path . "/" . $list_date . ".json";
|
|
||||||
|
|
||||||
$fill = shell_exec("./sh/fill.sh '".$diff_len."'");
|
|
||||||
|
|
||||||
$beginRaw = round($raw_arr[0]->begin);
|
|
||||||
$start = sprintf('%02d:%02d:%02d', ($beginRaw/3600),($beginRaw/60%60), $beginRaw%60);
|
|
||||||
|
|
||||||
// prepare header
|
|
||||||
$list = array(
|
|
||||||
"channel" => "Test 1",
|
|
||||||
"date" => $list_date,
|
|
||||||
"begin" => $start,
|
|
||||||
"length" => "24:00:00.000",
|
|
||||||
"program" => []
|
|
||||||
);
|
|
||||||
|
|
||||||
// create json video element
|
|
||||||
foreach($raw_arr as $rawline) {
|
|
||||||
$clipItem = array(
|
|
||||||
"in" => floatval($rawline->in),
|
|
||||||
"out" => floatval($rawline->out),
|
|
||||||
"duration" => floatval($rawline->dur),
|
|
||||||
"source" => $rawline->src
|
|
||||||
);
|
|
||||||
|
|
||||||
$list["program"][] = $clipItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach(preg_split("/((\r?\n)|(\r\n?))/", $fill) as $line){
|
|
||||||
$line_arr = explode('|', $line);
|
|
||||||
|
|
||||||
$clipItem = array(
|
|
||||||
"in" => floatval($line_arr[0]),
|
|
||||||
"out" => floatval($line_arr[1]),
|
|
||||||
"duration" => floatval($line_arr[2]),
|
|
||||||
"source" => $line_arr[3]
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($line_arr[3]) {
|
|
||||||
$list["program"][] = $clipItem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_dir($json_path)) {
|
|
||||||
mkdir($json_path, 0777, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
file_put_contents($json_output, json_encode(
|
|
||||||
$list, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT));
|
|
||||||
printf('Filled and save playlist "%s.json" done...', $list_date);
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// get config file
|
// get config file
|
||||||
function get_config() {
|
function get_ini() {
|
||||||
return file_get_contents("/etc/ffplayout/ffplayout.conf");
|
return parse_ini_file("/etc/ffplayout/ffplayout.conf", TRUE, INI_SCANNER_RAW);
|
||||||
}
|
}
|
||||||
|
|
||||||
// file extension to filter
|
// file extension to filter
|
||||||
@ -20,31 +20,34 @@ $ext = implode('|', $except);
|
|||||||
|
|
||||||
// get current track
|
// get current track
|
||||||
if(!empty($_GET['track'])) {
|
if(!empty($_GET['track'])) {
|
||||||
$get_ini = get_config();
|
$ini = get_ini();
|
||||||
$get_dir = "/^playlist_path.*\$/m";
|
$dir = $ini['PLAYLIST']['path'];
|
||||||
preg_match_all($get_dir, $get_ini, $match_dir);
|
|
||||||
$line = implode("\n", $match_dir[0]);
|
|
||||||
$path_root = explode("= ", $line)[1];
|
|
||||||
|
|
||||||
// list start
|
// list start
|
||||||
$get_start = "/^day_start.*\$/m";
|
$start = $ini['PLAYLIST']['day_start'];
|
||||||
preg_match_all($get_start, $get_ini, $match_start);
|
$st = date_parse($start);
|
||||||
$start_line = implode("\n", $match_start[0]);
|
$start_time = $st['hour'] * 3600 + $st['minute'] * 60 + $st['second'];
|
||||||
$start_hour = explode("= ", $start_line)[1];
|
|
||||||
|
|
||||||
$time = date("H");
|
$t = date_parse(date("H:i:s"));
|
||||||
|
$time = $t['hour'] * 3600 + $t['minute'] * 60 + $t['second'];
|
||||||
|
|
||||||
if ($time < $start_hour) {
|
if ($time < $start_time) {
|
||||||
$date = date("Y-m-d", strtotime( '-1 days' ) );
|
$date = date("Y-m-d", strtotime( '-1 days' ) );
|
||||||
} else {
|
} else {
|
||||||
$date = date("Y-m-d");
|
$date = date("Y-m-d");
|
||||||
}
|
}
|
||||||
|
|
||||||
$date_str = explode('-', $date);
|
$date_str = explode('-', $date);
|
||||||
$xml_path = $path_root . "/" . $date_str[0] . "/" . $date_str[1] . "/" . $date . ".xml";
|
$json_path = $dir . "/" . $date_str[0] . "/" . $date_str[1] . "/" . $date . ".json";
|
||||||
|
|
||||||
if (file_exists($xml_path)) {
|
if (file_exists($json_path)) {
|
||||||
$xml = simplexml_load_file($xml_path) or die("Error: Cannot create object");
|
$content = file_get_contents($json_path) or die("Error: Cannot create object");
|
||||||
|
$json = json_decode($content, true);
|
||||||
|
|
||||||
|
list($hh, $mm, $ss) = explode(":", $json["begin"]);
|
||||||
|
list($l_hh, $l_mm, $l_ss) = explode(":", $json["length"]);
|
||||||
|
$begin = $hh * 3600 + $mm * 60 + $ss;
|
||||||
|
$length = $l_hh * 3600 + $l_mm * 60 + $l_ss;
|
||||||
|
|
||||||
$src_re = array();
|
$src_re = array();
|
||||||
$src_re[0] = '/# [0-9-]+.('.$ext.')$/';
|
$src_re[0] = '/# [0-9-]+.('.$ext.')$/';
|
||||||
@ -54,17 +57,19 @@ if(!empty($_GET['track'])) {
|
|||||||
|
|
||||||
$videos = array();
|
$videos = array();
|
||||||
|
|
||||||
foreach($xml->body[0]->video as $video) {
|
foreach($json["program"] as $video) {
|
||||||
$src = preg_replace('/^\//', '', $video['src']);
|
$src = preg_replace('/^\//', '', $video['source']);
|
||||||
$src_arr = explode('/', $src);
|
$src_arr = explode('/', $src);
|
||||||
$name = preg_replace($src_re, '', end($src_arr));
|
$name = preg_replace($src_re, '', end($src_arr));
|
||||||
$name = str_replace('§', '?', $name);
|
$name = str_replace('§', '?', $name);
|
||||||
$begin = $video['begin'];
|
$dur = $video['duration'];
|
||||||
$dur = $video['dur'];
|
|
||||||
$in = $video['in'];
|
$in = $video['in'];
|
||||||
$out = $video['out'];
|
$out = $video['out'];
|
||||||
|
|
||||||
$videos[] = array('start' => $start_hour, 'begin'=> $begin, 'src' => $name, 'dur' => $dur, 'in' => $in, 'out' => $out);
|
$videos[] = array('start' => $start_time, 'begin'=> $begin, 'src' => $name, 'dur' => $dur, 'in' => $in, 'out' => $out);
|
||||||
|
|
||||||
|
$begin += $out - $in;
|
||||||
}
|
}
|
||||||
|
|
||||||
echo json_encode($videos);
|
echo json_encode($videos);
|
||||||
|
Loading…
Reference in New Issue
Block a user