mirror of
https://git.roussel.pro/public-website/singapore_rain_radar.git
synced 2026-02-09 02:20:17 +01:00
added possibility to download latest images
This commit is contained in:
55
generate.mjs
Normal file
55
generate.mjs
Normal file
@@ -0,0 +1,55 @@
|
||||
import fs from 'fs';
|
||||
import client from 'https';
|
||||
|
||||
function getTimeString(count) {
|
||||
let date = new Date(Date.now() - count * 60000 * 5);
|
||||
return (
|
||||
date.getFullYear().toString()
|
||||
+ (date.getMonth() + 1).toString().padStart(2, "0")
|
||||
+ date.getDate().toString().padStart(2, "0")
|
||||
+ date.getHours().toString().padStart(2, "0")
|
||||
+ (date.getMinutes() - date.getMinutes() % 5).toString().padStart(2, "0")
|
||||
);
|
||||
}
|
||||
|
||||
function downloadImage(time_string, filepath) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let options = {
|
||||
hostname: 'www.nea.gov.sg',
|
||||
port: 443,
|
||||
path: `/docs/default-source/rain-area/dpsri_70km_${time_string}0000dBR.dpsri.png`,
|
||||
headers: {
|
||||
'Host': 'www.nea.gov.sg',
|
||||
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0',
|
||||
'Accept': 'image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5',
|
||||
'Accept-Language': 'en-US,en;q=0.5',
|
||||
}
|
||||
}
|
||||
client.get(options, (res) => {
|
||||
console.log(`Downloading ${time_string}`);
|
||||
if (res.statusCode === 200) {
|
||||
res.pipe(fs.createWriteStream(filepath))
|
||||
.on('error', reject)
|
||||
.once('close', () => resolve(filepath));
|
||||
} else {
|
||||
// Consume response data to free up memory
|
||||
res.resume();
|
||||
reject(new Error(`Request Failed With a Status Code: ${res.statusCode}`));
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export async function initImages(count) {
|
||||
for (let i = count; i >= 0; i--) {
|
||||
let time_string = getTimeString(i);
|
||||
let filename = `images/${time_string}.png`;
|
||||
try {
|
||||
await downloadImage(time_string, filename)
|
||||
} catch (error) {
|
||||
//Response 302, we've reached the latest available image
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user