nuxt-alt-generator
Version:
Nuxt module that generates alt text for images using AI
35 lines (34 loc) • 1.1 kB
JavaScript
import * as cheerio from "cheerio";
import { generateAltTextFromImage } from "../utils/generateAltTextFromImage.js";
import { defineNitroPlugin } from "#imports";
const addAltToImagesFromHtmlBody = async (htmlBody, event) => {
const promises = htmlBody.map(async (root) => {
const $ = cheerio.load(root);
const images = $("img").toArray();
const altPromises = images.map(async (image) => {
const src = $(image).attr("src");
if (!src || $(image).attr("alt")) {
return;
}
try {
const response = await generateAltTextFromImage(
{
src
},
event
);
$(image).attr("alt", response);
} catch {
console.warn("Error generating alt text for image:", src, "\nContinuing...");
}
});
await Promise.all(altPromises);
return $.html();
});
return await Promise.all(promises);
};
export default defineNitroPlugin((nitroApp) => {
nitroApp.hooks.hook("render:html", async (html, { event }) => {
html.body = await addAltToImagesFromHtmlBody(html.body, event);
});
});