nih scraper biar kalian tau suhu di kota kalian biar pas keluar tempat mantan gak kedinginan di luar karena di tolak balikan ๐น
Note
test dulu nya soalnya kadang output data ya kadang acak
Contributed by
@vorx4 contributions
vorx
javascript
4
1
โ
13 Jul 2026
Code
/* Informasi BMKG
๐น๐biar kagak kedinginan wkwkw
by: vorx
tags: info, search
*/
const axios = require('axios');
const cheerio = require('cheerio');
function resolve(data, value, seen = new Set()) {
if (typeof value === 'number') {
if (seen.has(value)) return value;
seen.add(value);
return resolve(data, data[value], seen);
}
if (Array.isArray(value)) {
return value.map(v => resolve(data, v, new Set(seen)));
}
if (value && typeof value === 'object') {
const obj = {};
for (const [k, v] of Object.entries(value)) {
obj[k] = resolve(data, v, new Set(seen));
}
return obj;
}
return value;
}
async function bmkgWeather() {
try {
const { data: html } = await axios.get(
'https://www.bmkg.go.id/',
{
headers: {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'
}
}
);
const $ = cheerio.load(html);
const raw =
$('#__NUXT_DATA__').html() ||
$('script#__NUXT_DATA__').html();
const nuxt = JSON.parse(raw);
const root = nuxt.find(
x =>
x &&
typeof x === 'object' &&
typeof x.weather === 'number'
);
if (!root) {
throw new Error('Weather data tidak ditemukan');
}
const weather = resolve(
nuxt,
nuxt[root.weather]
);
const result = (weather.present || [])
.map(item => ({
kodeWilayah: item.adm4,
kota: item.nama,
cuaca: item.weather_desc,
waktu: item.local_datetime,
zonaWaktu: item.time_zone,
suhu:
typeof item.t === 'number'
? item.t
: null,
kualitasUdara:
typeof item.t === 'object'
? item.t.KONDISI || null
: null
}));
return {
status: true,
total: result.length,
data: result
};
} catch (e) {
return {
status: false,
message: e.message
};
}
}
bmkgWeather()
.then(console.log)
.catch(console.error);Rating
Gimana snippet ini menurutmu?
Embed ke website / blog
<iframe src="https://qrtzcode.vercel.app/api/embed/news/informasi-news-bmkg" style="width:100%;height:400px;border:none;border-radius:12px;"></iframe>