portfolio-valentin-le-moign/ssg_hooks/crawlMedia.js

40 lines
1.2 KiB
JavaScript

import { createDirectus, staticToken, rest, readFiles } from '@directus/sdk';
import fs from 'fs';
export async function crawlMedia(routes) {
const client = createDirectus(process.env.DIRECTUS_URL)
.with(staticToken(process.env.DIRECTUS_API_TOKEN))
.with(rest());
const directusFiles = await client.request(
// le filtre fonctionne pas
readFiles({
/* query: {
filter: {
type: {
_eq: 'image/',
},
},
},
*/ })
);
for (let image of directusFiles) {
if (image.type != "image/heic") {
const fileExists = async (filePath) => !!(await fs.promises.access(filePath, fs.constants.F_OK).then(() => true).catch(() => false));
const filePath = `./public/api/assets/${image.id}`;
const format = image.type === 'video/mp4' ? 'mp4' : 'webp';
fileExists(filePath)
.then(exists => {
if (!exists) {
routes.add(`/api/assets/${image.id}.${format}`);
}
})
.catch(error => console.error('Error:', error));
}
}
}