Last active
August 25, 2023 22:50
-
-
Save vgrovestine/6c6cfc10cd6b4f3acbd65a121b54e47e to your computer and use it in GitHub Desktop.
Simple retrieval front-end to browse the archive of PennState Meteorology department's "e-Wall" progs.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>PSU Meteorology E-Wall Archive Browser</title> | |
<style> | |
body, | |
input, | |
select { | |
font-family: sans-serif; | |
font-size: 20px; | |
} | |
body { | |
background-color: #f9f9f9; | |
color: #111; | |
line-height: 1.25em; | |
padding: 1em 2em 2em 2em; | |
} | |
iframe { | |
width: 100%; | |
min-height: 40em; | |
border: 0.1em inset; | |
margin-top: 2em; | |
} | |
a { | |
text-decoration: none; | |
color: #00b; | |
} | |
a:visited { | |
color: #006; | |
} | |
a:active, | |
a:hover { | |
color: #b00; | |
} | |
</style> | |
</head> | |
<body> | |
<h1>PSU Meteorology E-Wall Archive Browser</h1> | |
<?php | |
$prog = array( | |
'AVNCENT_0z' => 'AVNCENT: 00z', | |
'AVNCENT_12z' => 'AVNCENT: 12z', | |
'AVNEAST_0z' => 'AVNEAST: 00z', | |
'AVNEAST_6z' => 'AVNEAST: 06z', | |
'AVNEAST_12z' => 'AVNEAST: 12z', | |
'AVNEAST_18z' => 'AVNEAST: 18z', | |
'AVN_0z' => 'AVN: 00z', | |
'AVN_6z' => 'AVN: 06z', | |
'AVN_12z' => 'AVN: 12z', | |
'AVN_18z' => 'AVN: 18z', | |
'CMCNA_0z' => 'CMCNA: 00z', | |
'CMCNA_12z' => 'CMCNA: 12z', | |
'CMC_12z' => 'CMC: 12z', | |
'ECMWF0.5_0z' => 'ECMWF0.5: 00z', | |
'ECMWF0.5_12z' => 'ECMWF0.5: 12z', | |
'ECMWF_0z' => 'ECMWF: 00z', | |
'ECMWF_12z' => 'ECMWF: 12z', | |
'ENSCMCHGT_0z' => 'ENSCMCHGT: 00z', | |
'ENSCMCPRS_0z' => 'ENSCMCPRS: 00z', | |
'ENSHGTWIDE_0z' => 'ENSHGTWIDE: 00z', | |
'ENSHGTWIDE_12z' => 'ENSHGTWIDE: 12z', | |
'ENSHGT_0z' => 'ENSHGT: 00z', | |
'ENSHGT_12z' => 'ENSHGT: 12z', | |
'ENSPRS_0z' => 'ENSPRS: 00z', | |
'ENSPRS_12z' => 'ENSPRS: 12z', | |
'EXTCOMP_0z' => 'EXTCOMP: 00z', | |
'MOSUS_0z' => 'MOSUS: 00z', | |
'MOSUS_12z' => 'MOSUS: 12z', | |
'MRF_0z' => 'MRF: 00z', | |
'MRF_12z' => 'MRF: 12z', | |
'RADEAST' => 'RADEAST', | |
'RADNWS_US' => 'RADNWS_US', | |
'SFCNE' => 'SFCNE', | |
'SFCUS' => 'SFCUS', | |
'WRFCENT_0z' => 'WRFCENT: 00z', | |
'WRFCENT_12z' => 'WRFCENT: 12z', | |
'WRFEAST_0z' => 'WRFEAST: 00z', | |
'WRFEAST_6z' => 'WRFEAST: 06z', | |
'WRFEAST_12z' => 'WRFEAST: 12z', | |
'WRFEAST_18z' => 'WRFEAST: 18z', | |
'WRF_0z' => 'WRF: 00z', | |
'WRF_6z' => 'WRF: 06z', | |
'WRF_12z' => 'WRF: 12z', | |
'WRF_18z' => 'WRF: 18z' | |
); | |
asort($prog); | |
$xNow = time() - 24 * 60 * 60; | |
$arcpathBase = 'http://www.meteo.psu.edu/ewall/ARC/'; | |
$arcpathDate = false; | |
if (array_key_exists('date', $_GET)) { | |
$arcpathDate = explode('-', $_GET['date']); | |
if (count($arcpathDate) == 3) { | |
if ($arcpathDate[0] >= 2004 && $arcpathDate[0] <= date('Y', $xNow)) { | |
if ($arcpathDate[0] == date('Y', $xNow)) { | |
$arcpathDate = implode('', $arcpathDate); | |
} else { | |
$arcpathDate = $arcpathDate[0] . '/' . implode('', $arcpathDate); | |
} | |
} | |
} | |
} | |
$arcpathProg = false; | |
if (array_key_exists('prog', $_GET) && in_array($_GET['prog'], array_keys($prog))) { | |
$arcpathProg = $_GET['prog']; | |
} | |
if (!empty($arcpathDate) && !empty($arcpathProg)) { | |
$arcpath = $arcpathBase . $arcpathDate . '/' . $arcpathProg . '/'; | |
} else { | |
$arcpath = false; | |
} | |
?> | |
<form action="#" method="get"> | |
<input type="date" id="date" name="date" min="2004-01-01" max="<?php echo date('Y-m-d', $xNow); ?>" value="<?php echo $_GET['date']; ?>"> | |
<select name="prog"> | |
<?php | |
foreach ($prog as $progKey => $progLabel) { | |
echo '<option value="' . $progKey . '"'; | |
if (strcmp($progKey, $arcpathProg) == 0) { | |
echo ' selected'; | |
} | |
echo '>' . $progLabel . '</option>'; | |
} | |
?> | |
</select> | |
<input type="submit" value="Retrieve images"> | |
</form> | |
<?php | |
if (!empty($arcpath)) { | |
$arcpg = file_get_contents($arcpath); | |
$arcpgImg = array(); | |
preg_match_all('/a href="([a-z0-9_\-]+\.(gif|jpg|png))"/i', $arcpg, $arcpgImg); | |
if (empty($arcpgImg)) { | |
echo '<p>No images found in ' . $arcpath . '</p>'; | |
} else { | |
echo '<ul style="columns: 4;">'; | |
foreach ($arcpgImg[1] as $i) { | |
echo '<li><a href="' . $arcpath . $i . '">' . $i . '</a></li>'; | |
} | |
echo '</ul>'; | |
} | |
} | |
?> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment