83 lines
2.7 KiB
JavaScript

import fs from "fs";
import path from 'path';
import sendPostMastodon, {findFirstImageInContent, randomIntFromInterval, downloadImage} from './utils.mjs'
import Masto from "mastodon";
const __dirname = path.resolve();
const folderBlogPostsPreview = process.cwd() + '/assets/blog_posts_medias/'
const tkpostsjson = JSON.parse(fs.readFileSync(__dirname + "/assets/documents/tykayn_wptkblog_posts.json", 'utf-8'))
let reallySendPost = false;
reallySendPost = true;
export function getRandomElementOfArray(listItems) {
return listItems[Math.floor(Math.random() * listItems.length)]
}
function getRandomLink() {
let filteredLinks = tkpostsjson.filter(elem => elem.post_status === 'publish')
return getRandomElementOfArray(filteredLinks)
}
function postLink() {
let postObject = getRandomLink()
console.log("envoi de post par tykayn")
let filteredExcerpt = postObject.post_content.replace(/<[^>]+>/g, '')
let counterLength = filteredExcerpt.length;
let limitExcerpt = 250
filteredExcerpt = filteredExcerpt.substring(0, limitExcerpt)
if (filteredExcerpt && counterLength > limitExcerpt) {
filteredExcerpt = ' _ ' + filteredExcerpt + '… _'
}
let configPost = {
author: 'tykayn',
image: 'tk_blog_bannieres_oct2010-' + randomIntFromInterval(1, 10) + '.jpg',
message: `# [${postObject.post_title}](${postObject.guid})
* ${postObject.post_date} - ${postObject.guid}
${filteredExcerpt}
* #tykayn #tkblog #blog`,
reallySendPost
}
// ajouter la première image du post de blog
let firstPictureSource = findFirstImageInContent(postObject.post_content);
if (firstPictureSource) {
console.log("firstPictureSource found", firstPictureSource)
downloadImage(firstPictureSource, folderBlogPostsPreview + 'media_post_' + postObject.post_name + '.jpg')
.then((res) => {
// suite du poste avec upload d'image
console.log('on envoie le media et l image')
configPost.image = 'media_post_' + postObject.post_name + '.jpg';
sendPostMastodon(configPost)
},
(err) => {
console.log('pas dimage trouvée pour l URL ', firstPictureSource, err)
sendPostMastodon(configPost)
}
)
.catch((err) => {
console.log('erreur avec cette URL ', firstPictureSource, err)
sendPostMastodon(configPost)
})
} else {
// no image provided
console.log("pas d'image dans le corps du texte")
// on envoie avec l'image par défaut
sendPostMastodon(configPost)
}
}
postLink();