42 lines
990 B
JavaScript
42 lines
990 B
JavaScript
import exifr from 'exifr';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
const searchDir = '.';
|
|
|
|
async function walk(dir) {
|
|
let files = [];
|
|
const list = fs.readdirSync(dir);
|
|
for (const file of list) {
|
|
if (file === 'node_modules' || file === '.git' || file === '.vscode') continue;
|
|
const fullPath = path.join(dir, file);
|
|
const stat = fs.statSync(fullPath);
|
|
if (stat.isDirectory()) {
|
|
files = files.concat(await walk(fullPath));
|
|
} else {
|
|
if (['.jpg', '.jpeg', '.png'].includes(path.extname(file).toLowerCase())) {
|
|
files.push(fullPath);
|
|
}
|
|
}
|
|
}
|
|
return files;
|
|
}
|
|
|
|
async function run() {
|
|
const images = await walk(searchDir);
|
|
console.log(`Found ${images.length} images to scan...`);
|
|
for (const img of images) {
|
|
try {
|
|
const gps = await exifr.gps(img);
|
|
if (gps) {
|
|
console.log(`FOUND IMAGE WITH GPS: ${img}`, gps);
|
|
}
|
|
} catch (e) {
|
|
// ignore
|
|
}
|
|
}
|
|
console.log('Scan completed.');
|
|
}
|
|
|
|
run();
|