// import sendPostMastodon from "./libs/utils.mjs"; import axios from "axios" import sharp from "sharp" import path from "path" import fs from "fs" import os from "os" import {downloadImage} from "./libs/utils.mjs"; /** * créer un message de comptes à recommander récupérer la liste des abonnés de ces comptes sur mastodon à partir des abonnés du json documents/recommendations_abonnements.json https://mastodon.cipherbliss.com/api/v1/accounts/2974/following prendre 3 comptes au hasard, récupérer leurs profils, en tirer une présentation et un assemblage des photos de profil. */ // Largeur totale de l'image combinée const totalWidth = 800; // Hauteur totale de l'image combinée const totalHeight = 600; // Créer un dossier temporaire pour stocker les images téléchargées const TEMP_DIR_NAME = 'tmp'; const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), TEMP_DIR_NAME)); async function makePicture() { // Noms des images à combiner const names = ['Image 1', 'Image 2', // 'Image 3' ]; console.log('tempDir:', tempDir) Promise.all(urls.map((url, index) => { // Télécharger l'image return downloadImage(url, tempDir) })) .then((filePaths) => { // Combiner les images en une seule image return sharp(filePaths[0]) .resize(totalWidth / 3, totalHeight) .append([ sharp(filePaths[1]).resize(totalWidth / 3, totalHeight), sharp(filePaths[2]).resize(totalWidth / 3, totalHeight) ]) .toBuffer(); }) .then((buffer) => { // Enregistrer l'image combinée const outputFilePath = path.join(tempDir, 'combined.jpg'); return new Promise((resolve, reject) => { fs.writeFile(outputFilePath, buffer, (error) => { if (error) { reject(error); } else { resolve(outputFilePath); } }); }); }) .then((outputFilePath) => { // Afficher l'image combinée console.log(`Combined image saved to ${outputFilePath}`); }) .catch((error) => { console.error(error); }); } async function getFollowers(username, instance) { const url = `https://${instance}/api/v1/accounts/${username}/following`; try { const response = await axios.get(url); return response.data; } catch (error) { console.error(error); } } async function main() { // prendre les abonnements d'un json donné dans les documents console.log('followers', followers.length) // // const randomFollowers = followers.sort(() => Math.random() - 0.5) // // const selection = randomFollowers.slice(0, 3) // console.log('Random followers:', randomFollowers.length); // // selection.forEach(elem => { // console.log('selection', elem.username, elem.avatar_static) // }) } // makePicture(); console.log("recommandations du curateur, 3 comptes") // console.log('urls[0]', urls[0]) // // downloadImage(urls[0], tempDir) main();