mirror of
https://github.com/slynn1324/tinypin.git
synced 2026-01-23 02:25:08 +00:00
42 lines
1 KiB
JavaScript
42 lines
1 KiB
JavaScript
const fs = require("fs").promises;
|
|
const sharp = require("sharp");
|
|
const betterSqlite3 = require('better-sqlite3');
|
|
|
|
|
|
const DB_PATH = "tinypin.db";
|
|
const IMAGE_PATH = "images";
|
|
|
|
const db = betterSqlite3(DB_PATH);
|
|
|
|
( async () => {
|
|
|
|
|
|
let pins = db.prepare("select * from pins").all();
|
|
|
|
for ( let i = 0; i < pins.length; ++i ){
|
|
|
|
let pin = pins[i];
|
|
|
|
let originalPath = getImagePath(pin.userId, pin.id, 'o');
|
|
|
|
let img = await sharp(originalPath.file);
|
|
|
|
let resizedImg = await img.resize({width: 400, height: 400, fit: 'inside'})
|
|
let buf = await resizedImg.toBuffer();
|
|
|
|
let thumbPath = getImagePath(pin.userId, pin.id, 't');
|
|
await fs.mkdir(thumbPath.dir, {recursive: true});
|
|
await fs.writeFile(thumbPath.file, buf);
|
|
}
|
|
|
|
|
|
|
|
|
|
function getImagePath(userId, pinId, size){
|
|
let paddedId = pinId.toString().padStart(12, '0');
|
|
let dir = `${IMAGE_PATH}/${userId}/images/${size}/${paddedId[11]}/${paddedId[10]}/${paddedId[9]}/${paddedId[8]}`;
|
|
let file = `${dir}/${paddedId}.jpg`;
|
|
return { dir: dir, file: file};
|
|
}
|
|
|
|
})();
|