diff --git a/archive.js b/archive.js index 9546c86411cb999bada6b8e083fe6b51ce3e0b45..6844e6ed7bc09e27f0199607fcb913efaa037498 100755 --- a/archive.js +++ b/archive.js @@ -290,24 +290,48 @@ function setDate() document.getElementById("nav-dayname").firstChild.data = days[d.getDay()]; - var image = d.getFullYear()+zPad((d.getMonth()+1).toString())+"/"+zPad(d.getDate().toString())+"/"+zPad(d.getHours().toString())+"/"+zPad(d.getMinutes().toString())+".jpg"; - updateWebcam ("webcam1", "/archive/colour/" + image); - //updateWebcam ("webcam1-datetime", "/archive/colour/" + image); - updateWebcam ("webcam2", "/archive/colour1/" + image); - updateWebcam ("webcam3", "/archive/colour3/" + image); - updateWebcam ("webcam4", "/archive/bw/" + image); - updateWebcam ("uvc1", "/archive/uvc1/" + image); - updateWebcam ("ipcamera1", "/archive/ipcamera1/" + image); - updateWebcam ("ipcamera2", "/archive/ipcamera2/" + image); - updateWebcam ("ipcamera3", "/archive/ipcamera3/" + image); - updateWebcam ("ipcamera4", "/archive/ipcamera4/" + image); - updateWebcam ("ipcamera5", "/archive/ipcamera5/" + image); - updateWebcam ("ipcamera6", "/archive/ipcamera6/" + image); - updateWebcam ("ipcamera9", "/archive/ipcamera9/" + image); - updateWebcam ("ipcamera10", "/archive/ipcamera10/" + image); - updateWebcam ("ipcamera7", "/archive/ipcamera7/" + image); - updateWebcam ("ipcamera8", "/archive/ipcamera8/" + image); - //setTimeout("clearText()",1000); + if( false ) + { + var image = d.getFullYear()+zPad((d.getMonth()+1).toString())+"/"+zPad(d.getDate().toString())+"/"+zPad(d.getHours().toString())+"/"+zPad(d.getMinutes().toString())+".jpg"; + updateWebcam ("webcam1", "/archive/colour/" + image); + //updateWebcam ("webcam1-datetime", "/archive/colour/" + image); + updateWebcam ("webcam2", "/archive/colour1/" + image); + updateWebcam ("webcam3", "/archive/colour3/" + image); + updateWebcam ("webcam4", "/archive/bw/" + image); + updateWebcam ("uvc1", "/archive/uvc1/" + image); + updateWebcam ("ipcamera1", "/archive/ipcamera1/" + image); + updateWebcam ("ipcamera2", "/archive/ipcamera2/" + image); + updateWebcam ("ipcamera3", "/archive/ipcamera3/" + image); + updateWebcam ("ipcamera4", "/archive/ipcamera4/" + image); + updateWebcam ("ipcamera5", "/archive/ipcamera5/" + image); + updateWebcam ("ipcamera6", "/archive/ipcamera6/" + image); + updateWebcam ("ipcamera9", "/archive/ipcamera9/" + image); + updateWebcam ("ipcamera10", "/archive/ipcamera10/" + image); + updateWebcam ("ipcamera7", "/archive/ipcamera7/" + image); + updateWebcam ("ipcamera8", "/archive/ipcamera8/" + image); + //setTimeout("clearText()",1000); + } + else + { + var timestamp = d.getFullYear()+zPad((d.getMonth()+1).toString())+zPad(d.getDate().toString())+"-"+zPad(d.getHours().toString())+zPad(d.getMinutes().toString()); + updateWebcam ("webcam1", "archive.php?camera=colour×tamp=" + timestamp); + //updateWebcam ("webcam1-datetime", "archive.php?camera=colour×tamp=" + image); + updateWebcam ("webcam2", "archive.php?camera=colour1×tamp=" + timestamp); + updateWebcam ("webcam3", "archive.php?camera=colour3×tamp=" + timestamp); + updateWebcam ("webcam4", "archive.php?camera=bw×tamp=" + timestamp); + updateWebcam ("uvc1" , "archive.php?camera=uvc1×tamp=" + timestamp); + updateWebcam ("ipcamera1", "archive.php?camera=ipcamera1×tamp=" + timestamp); + updateWebcam ("ipcamera2", "archive.php?camera=ipcamera2×tamp=" + timestamp); + updateWebcam ("ipcamera3", "archive.php?camera=ipcamera3×tamp=" + timestamp); + updateWebcam ("ipcamera4", "archive.php?camera=ipcamera4×tamp=" + timestamp); + updateWebcam ("ipcamera5", "archive.php?camera=ipcamera5×tamp=" + timestamp); + updateWebcam ("ipcamera6", "archive.php?camera=ipcamera6×tamp=" + timestamp); + updateWebcam ("ipcamera9", "archive.php?camera=ipcamera9×tamp=" + timestamp); + updateWebcam ("ipcamera10", "archive.php?camera=ipcamera10×tamp=" + timestamp); + updateWebcam ("ipcamera7", "archive.php?camera=ipcamera7×tamp=" + timestamp); + updateWebcam ("ipcamera8", "archive.php?camera=ipcamera8×tamp=" + timestamp); + //setTimeout("clearText()",1000); + } } function setMinutes(mins) diff --git a/archive.php b/archive.php old mode 100755 new mode 100644 index f1841897a4f2a429574db90edee796ce088d42e9..bbdd5e101934167108c04536e38b4012aa876c12 --- a/archive.php +++ b/archive.php @@ -25,17 +25,42 @@ "uvc1", ); - $camera = ($_GET['camera']?$_GET['camera']:'nocamera'); + $camera = (isset($_GET['camera']) ? $_GET['camera'] : 'nocamera'); + $timestamp = (isset($_GET['timestamp']) ? DateTime::createFromFormat("Ymd-Hi", $_GET['timestamp']) : null); // check camera is approved - mtearle if (!in_array($camera,$approved)) $camera = 'nocamera'; - $imagelocation="archive/"; - $file = $imagelocation.strtolower($camera).".jpg"; - header("Expires: ".gmdate("D, d M Y H:i:s", time())." GMT"); + if( $timestamp === FALSE ) { + $file = "nocamera.jpg"; + } + else if( $timestamp === null ) { + $file = "../".strtolower($camera).".jpg"; + header("Expires: ".gmdate("D, d M Y H:i:s", time())." GMT"); + } + else { + $month_folder = "archive/" . $camera . "/" . $timestamp->format("Ym") . "/"; + $vid_file = $month_folder . $timestamp->format("Ymd").".mkv"; + //header("X-WebcamVideo: {$vid_file}"); + if( is_readable($vid_file) ) { + // A video for this day exists. + $frame = ($timestamp->format("H") + 0) * 60 + ($timestamp->format("i") + 0); + header("Content-Type: image/jpeg"); + header("Last-Modified: ".gmdate("D, d M Y H:i:s", filectime($vid_file))." GMT"); + $cmd = "ffmpeg -loglevel fatal -i {$vid_file} -vf select='eq(n\,{$frame})' -f singlejpeg -"; + //header("X-WebcamCommmand: {$cmd}"); + passthru($cmd); + exit(); + } + $file = $month_folder . $timestamp->format("d/H/") . $timestamp->format("i").".jpg"; + //header("X-WebcamFile: {$file}"); + } + // If the image isn't available, emit "nocamera.jpg" with a 404 code + // - The 404 makes the archive.html page work properly if (!is_readable($file)) { - $file="nocamera.jpg"; + http_response_code("404"); + $file = "nocamera.jpg"; } header("Content-Type: image/jpeg"); header("Content-Length: ".filesize($file));