import fs from "fs"; import { err } from "$lib/logging"; import got from "got"; import { g, s } from "$lib/db"; import { fields, pick } from "$lib/utils"; export let getLocations = async () => { try { let locations = await got( "https://api.btcmap.org/v2/elements?updated_since=2022-09-19T00:00:00Z", ).json(); locations = locations.filter( (l) => l["osm_json"].tags && l["osm_json"].tags["payment:coinos"] === "yes", ); locations.map((l) => { let { bounds, lat, lon } = l["osm_json"]; l["osm_json"].lat = lat || (bounds.minlat + bounds.maxlat) / 2; l["osm_json"].lon = lon || (bounds.minlon + bounds.maxlon) / 2; }); for await (let l of locations) { let username = l.tags["payment:coinos"]; if (username) { let uid = await g(`user:${username}`); let user = await g(`user:${uid}`); if (user) l["osm_json"].tags.user = pick(user, fields); } } await s("locations", locations); } catch (e) { err("problem fetching locations", e); } setTimeout(getLocations, 60000); };