import Client from './base/media/client.mjs' const client = new Client() function fetch(page = 1) { return client.get(`http://fasteignir.visir.is/api/search?onpage=100&page=${page}`) .then(data => { return data.map(listing => { if (listing.bathrooms === null) { listing.bathrooms = 0 listing.invalid = true } listing.rooms = Number(listing.rooms) listing.bedrooms = Number(listing.bedrooms) listing.bathrooms = Number(listing.bathrooms) listing.zip.zip = Number(listing.zip.zip) listing.price = Number(listing.price) listing.size = listing.size.split(',')[0] return listing }) }) } async function parseAll() { let page = 1 let data = [] while (page <= 10) { console.log(`Fetching page ${page}`) let add = await fetch(page) if (add.length === 0) { break } page += 1 data = data.concat(add) } console.log(`finished, got total ${data.length} listings`) return data } parseAll().then((data) => { for (let i = 0; i < data.length && i < 100; i++) { let listing = data[i] if (listing.invalid || listing.rooms === 0 || listing.zip.zip >= 950 || listing.bathrooms === 0 || listing.price === 0) { let prefix = '' if (listing.invalid && listing.rooms > 0) { prefix += '[Invalid] ' } if (listing.bathrooms === 0 && listing.rooms > 0) { prefix += '[No bath] ' } if (listing.price === 0) { prefix += '[TilboĆ°] ' } console.log(`${prefix}http://fasteignir.visir.is/property/${listing.id} : ${listing.street_name} ${listing.street_number}, ${listing.zip.zip} (${listing.sale_or_rent}). ${listing.rooms} rooms, ${listing.bedrooms} bedrooms, ${listing.bathrooms} baths. ${listing.size} m2 = ${listing.price} kr.`) } } }) // http://fasteignir.visir.is/api/search?onpage=1000&page=1&zip=103