qrtzcode
HomeDocsAPILeaderboardChangelog
Contribute
Docs

qrtzcode

Kumpulan gist & snippet pribadi โ€” anime, AI tools, scraper, dan randomness.

Navigate

HomeDocsAPI Reference

Links

ยฉ 2026 qrtz. All snippets welcome.

ESC

Navigate

Links

News

Informasi News BMKG

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

Creator

vorx

Language

javascript

Views

4

Copies

1

Base

โ€”

Updated

13 Jul 2026

#search#info#news

Code

41
bmkg.js
/* 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

โ€”(0)

Gimana snippet ini menurutmu?

</> Embed

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>