body[0]->video as $video) {
$src = preg_replace('/^\//', '', $video['src']);
$src_arr = explode('/', $src);
$name = preg_replace($src_re, '', end($src_arr));
$name = str_replace('ยง', '?', $name);
$clipBegin = $video['begin'];
$begin = gmdate("H:i:s", intval($clipBegin));
$dur = $video['dur'];
$duration = gmdate("H:i:s", intval($dur));
$in = $video['in'];
$in_p = gmdate("H:i:s", intval($in));
$out = $video['out'];
$out_p = gmdate("H:i:s", intval($out));
$play = '';
printf('
',
$clipBegin, $src, $dur, $in, $out,
$begin, $name, $play, $duration, $in_p, $out_p
);
}
} else {
printf('
',
"...", "No Playlist for this Day", "...", "...", "...", "...", "..."
);
}
}
// generate object from dragged item
if(!empty($_GET['li_path'])) {
$path = urldecode($_GET['li_path']);
$src_re = array();
$src_re[0] = '/# [0-9-]+.('.$ext.')$/';
$src_re[1] = '/^[0-9]+ # /';
$src_re[2] = '/.('.$ext.')$/';
$src_re[3] = '/^# /';
$src = preg_replace('/^\//', '', $path);
$src_arr = explode('/', $src);
$name = preg_replace($src_re, '', end($src_arr));
$play = '';
$duration = preg_replace("/\n\n|\n|\n/",'',shell_exec("ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 '".$path."'"));
$dur_time = gmdate("H:i:s", $duration);
printf('
',
"0", $src, $duration, "0", $duration,
"00:00:00", $name, $play, $dur_time, "00:00:00", $dur_time
);
}
// save modified list
if(!empty($_POST['save'])) {
// get json string
$raw_arr = json_decode(urldecode($_POST['save']));
$date = $_POST['date'];
$date_str = explode('-', $date);
// get save path
$get_ini = get_config();
$get_dir = "/^playlist_path.*\$/m";
preg_match_all($get_dir, $get_ini, $matches);
$line = implode("\n", $matches[0]);
$path_root = explode("= ", $line)[1];
$xml_path = $path_root . "/" . $date_str[0] . "/" . $date_str[1];
$xml_output = $xml_path . "/" . $date . ".xml";
// create xml head
$xml_str = sprintf('
%s', $date_str[0], $date, "\n");
// create xml video element
foreach($raw_arr as $rawline) {
$formated_src = str_replace('&', '&', $rawline->src);
$xml_str .= sprintf(' %s', $formated_src, $rawline->begin, $rawline->dur, $rawline->in, $rawline->out, "\n");
}
// crate xml end
$xml_str .= " \n\n";
if (!is_dir($xml_path)) {
mkdir($xml_path, 0777, true);
}
file_put_contents($xml_output, $xml_str);
printf('Save playlist "%s.xml" 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];
$xml_path = $path_root . "/" . $date_str[0] . "/" . $date_str[1];
$xml_output = $xml_path . "/" . $list_date . ".xml";
$fill = shell_exec("./sh/fill.sh '".$list_date."' '".$diff_len."' '".$start_time."'");
// create xml head
$xml_str = sprintf('
%s', $date_str[0], $list_date, "\n");
// create xml video element
foreach($raw_arr as $rawline) {
$formated_src = str_replace('&', '&', $rawline->src);
$xml_str .= sprintf(' %s', $formated_src, $rawline->begin, $rawline->dur, $rawline->in, $rawline->out, "\n");
}
// add filled clips
$xml_str .= $fill;
// crate xml end
$xml_str .= " \n\n";
if (!is_dir($xml_path)) {
mkdir($xml_path, 0777, true);
}
file_put_contents($xml_output, $xml_str);
printf('Filled and save playlist "%s.xml" done...', $list_date);
}
?>