42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
"use strict";
|
||
import { writeFile } from 'fs/promises';
|
||
import fetch from 'node-fetch';
|
||
|
||
async function main() {
|
||
// SET BASE-10 ID HERE
|
||
const id10 = 1248148552;
|
||
|
||
// Convert Decimal ID to Quaternary
|
||
const id4 = toBase(id10, 4);
|
||
|
||
for (let face = 1; face <= 6; face++) {
|
||
// Convert cube face number into quaternary and ensure it's two digits
|
||
const face4 = toBase(face, 4).padStart(2, "0");
|
||
|
||
// Loop though all 8×8=64 tiles.
|
||
for (let position = 0; position < 64; position++) {
|
||
// Convert position into quaternary and ensure it's three digits
|
||
const position4 = toBase(position, 4).padStart(3, "0");
|
||
// Format url with Image ID, Cube Face, and Tile Position, all in quaternary
|
||
const url = `https://t.ssl.ak.tiles.virtualearth.net/tiles/`
|
||
+ `hs${id4}${face4}${position4}.jpg?g=0`;
|
||
|
||
// Download tile
|
||
const response = await fetch(url);
|
||
const imageData = response.body;
|
||
console.log("downloaded: ", url);
|
||
|
||
// Save tile into out directory
|
||
const filename = `out/${face4}${position4}.jpg`;
|
||
await writeFile(filename, imageData);
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
// Function to clarify when base conversions are happening as JavaScript's way of doing this is unintuitive
|
||
function toBase(number, base) {
|
||
return number.toString(base);
|
||
}
|
||
|
||
main(); |