fix
This commit is contained in:
52
dist/server/chunks/images_DSuHPXn1.mjs
vendored
Normal file
52
dist/server/chunks/images_DSuHPXn1.mjs
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
import { existsSync, mkdirSync } from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import sharp from 'sharp';
|
||||
|
||||
const uploadDirectory = path.join(process.cwd(), "public", "uploads");
|
||||
const thumbnailDirectory = path.join(uploadDirectory, "thumbs");
|
||||
const ensureUploadDirectories = () => {
|
||||
if (!existsSync(uploadDirectory)) {
|
||||
mkdirSync(uploadDirectory, { recursive: true });
|
||||
}
|
||||
if (!existsSync(thumbnailDirectory)) {
|
||||
mkdirSync(thumbnailDirectory, { recursive: true });
|
||||
}
|
||||
};
|
||||
const storeImageBuffer = async (sourceBuffer) => {
|
||||
ensureUploadDirectories();
|
||||
const id = randomUUID();
|
||||
const imageName = `${id}.webp`;
|
||||
const thumbnailName = `${id}-thumb.webp`;
|
||||
const imagePath = path.join(uploadDirectory, imageName);
|
||||
const thumbnailPath = path.join(thumbnailDirectory, thumbnailName);
|
||||
await sharp(sourceBuffer).rotate().resize({ width: 1400, withoutEnlargement: true }).webp({ quality: 82 }).toFile(imagePath);
|
||||
await sharp(sourceBuffer).rotate().resize(420, 260, { fit: "cover" }).webp({ quality: 76 }).toFile(thumbnailPath);
|
||||
return {
|
||||
image: `/uploads/${imageName}`,
|
||||
thumbnail: `/uploads/thumbs/${thumbnailName}`
|
||||
};
|
||||
};
|
||||
const downloadAndStoreImage = async (url) => {
|
||||
try {
|
||||
const response = await fetch(url, {
|
||||
headers: {
|
||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
||||
accept: "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",
|
||||
referer: "https://tass.ru/"
|
||||
}
|
||||
});
|
||||
if (!response.ok) {
|
||||
return null;
|
||||
}
|
||||
const contentType = response.headers.get("content-type") ?? "";
|
||||
if (!contentType.startsWith("image/")) {
|
||||
return null;
|
||||
}
|
||||
return storeImageBuffer(Buffer.from(await response.arrayBuffer()));
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
export { downloadAndStoreImage as d, storeImageBuffer as s };
|
||||
Reference in New Issue
Block a user