diff --git a/assets/documents/tykayn_wptkblog_posts.json b/assets/documents/tykayn_wptkblog_posts.json
index 24679c7..d7ea6fd 100644
--- a/assets/documents/tykayn_wptkblog_posts.json
+++ b/assets/documents/tykayn_wptkblog_posts.json
@@ -179,7 +179,7 @@
"post_author": 1,
"post_date": "2015-11-22 20:42:54",
"post_date_gmt": "2015-11-22 19:42:54",
- "post_content": "
\nUne ptite illu sur qzine pour ma part aujourdhui. Je l'ai aussi mise sur mon deviantart si vous voulez voir d'autres de mes gribouilles :3\nhttp://qzine.fr/blog/maitriser-les-langues/\nD'ailleurs sur qzine.fr on se prépare avec plein d'artistes pour le projet foufou de publier un calendrier de l'avent qui va réchauffer l'hiver, ça va être beau *-*
",
+ "post_content": "\nUne ptite illu sur qzine pour ma part aujourdhui. Je l'ai aussi mise sur mon deviantart si vous voulez voir d'autres de mes gribouilles :3\nhttp://qzine.fr/blog/maitriser-les-langues/\nD'ailleurs sur qzine.fr on se prépare avec plein d'artistes pour le projet foufou de publier un calendrier de l'avent qui va réchauffer l'hiver, ça va être beau *-*
",
"post_title": "une rousse une langue",
"post_excerpt": "",
"post_status": "publish",
diff --git a/helpers/cipherbliss_post.mjs b/helpers/cipherbliss_post.mjs
index abd6790..fb7990a 100644
--- a/helpers/cipherbliss_post.mjs
+++ b/helpers/cipherbliss_post.mjs
@@ -1,11 +1,11 @@
import fs from "fs";
import path from 'path';
-import sendPostMastodon, {randomIntFromInterval, findFirstImageInContent} from './utils.mjs'
+import sendPostMastodon, {randomIntFromInterval, findFirstImageInContent, findPictureAndSendPost} from './utils.mjs'
const __dirname = path.resolve();
const tkpostsjson = JSON.parse(fs.readFileSync(__dirname + "/assets/documents/cipherbliss_tkwp_posts.json", 'utf-8'))
let reallySendPost = false;
- reallySendPost = true;
+ // reallySendPost = true;
export function getRandomElementOfArray(listItems) {
@@ -35,12 +35,14 @@ function postLink() {
let configPost = {
author: 'tykayn',
+ website: 'cipherbliss',
+ slug: postObject.post_name,
+ postObject,
+ folder_image: folderBlogPostsPreview,
image: 'cipherbliss_post_' + randomIntFromInterval(1 , 3) + '.jpg',
message: `# [${postObject.post_title}](https://www.cipherbliss.com/${postObject.post_name})
-* ${postObject.post_date}
-
-> ${filteredExcerpt}
+" ${filteredExcerpt} "
* #tykayn #cipherbliss #blog`,
reallySendPost
}
@@ -48,7 +50,7 @@ function postLink() {
console.log("configPost.image", configPost.image)
- sendPostMastodon(configPost)
+ findPictureAndSendPost(postObject.content.rendered, configPost)
console.log("post ID: ", postObject.ID)
}
diff --git a/helpers/qzine_article.mjs b/helpers/qzine_article.mjs
index 8f09a72..009c6c4 100644
--- a/helpers/qzine_article.mjs
+++ b/helpers/qzine_article.mjs
@@ -1,7 +1,13 @@
import fs from "fs";
import path from 'path';
-import sendPostMastodon, {randomIntFromInterval, findFirstImageInContent} from './utils.mjs'
+import sendPostMastodon, {
+ randomIntFromInterval,
+ findFirstImageInContent,
+ downloadImage,
+ findPictureAndSendPost
+} from './utils.mjs'
+const folderBlogPostsPreview = process.cwd() + '/assets/blog_posts_medias/'
/**
*
@@ -18,7 +24,7 @@ import sendPostMastodon, {randomIntFromInterval, findFirstImageInContent} from '
const __dirname = path.resolve();
const list_posts_json = JSON.parse(fs.readFileSync(__dirname + "/assets/documents/qzine_posts_all.json", 'utf-8'))
let reallySendPost = false;
-reallySendPost = true;
+// reallySendPost = true;
export function getRandomElementOfArray(listItems) {
@@ -26,14 +32,14 @@ export function getRandomElementOfArray(listItems) {
}
-function getRandomLink() {
+function getRandomLinkQzine() {
let filteredLinks = list_posts_json.filter(elem => elem.status === 'publish')
return getRandomElementOfArray(filteredLinks)
}
function postLink() {
- let postObject = getRandomLink()
+ let postObject = getRandomLinkQzine()
console.log("envoi de post par le compte Qzine - post n°" ,postObject.id)
let filteredExcerpt = postObject.excerpt.rendered.replace(/<[^>]+>/g, '')
@@ -47,17 +53,21 @@ function postLink() {
let configPost = {
author: 'qzine',
- // image: 'qzine_default.jpg',
+ website: 'qzine',
+ slug: postObject.title.rendered,
+ postObject,
+ folder_image: folderBlogPostsPreview,
image: 'qzine_post_' + randomIntFromInterval(1 , 4) + '.jpg',
- message: `# [ !Qzine - ${postObject.title.rendered}](${postObject.link})
+ message: `!Qzine - ${postObject.title.rendered}
-* ${postObject.date} - ${postObject.link}
+* ${postObject.link}
${filteredExcerpt}
* #qzine #qzineblog #blog #sexe #relations #éducation #plaisir #sociologie`,
reallySendPost
}
- // console.log("configPost.message", configPost.message)
- sendPostMastodon(configPost)
+
+ // console.log('postContent' , postContent)
+ findPictureAndSendPost(postObject.content.rendered, configPost)
}
postLink();
\ No newline at end of file
diff --git a/helpers/tykayn_blog.mjs b/helpers/tykayn_blog.mjs
index e016bab..56216e3 100644
--- a/helpers/tykayn_blog.mjs
+++ b/helpers/tykayn_blog.mjs
@@ -1,6 +1,9 @@
import fs from "fs";
import path from 'path';
-import sendPostMastodon, {findFirstImageInContent, randomIntFromInterval, downloadImage} from './utils.mjs'
+import {
+ randomIntFromInterval,
+ findPictureAndSendPost, getRandomLinkGeneral
+} from './utils.mjs'
import Masto from "mastodon";
const __dirname = path.resolve();
@@ -9,22 +12,13 @@ const tkpostsjson = JSON.parse(fs.readFileSync(__dirname + "/assets/documents/ty
let reallySendPost = false;
-reallySendPost = true;
+// 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()
+ let postObject = getRandomLinkGeneral(tkpostsjson)
console.log("envoi de post par tykayn")
let filteredExcerpt = postObject.post_content.replace(/<[^>]+>/g, '')
@@ -37,47 +31,20 @@ function postLink() {
let configPost = {
author: 'tykayn',
+ website: 'tykayn_blog',
+ slug: postObject.guid,
+ postObject,
+ folder_image: folderBlogPostsPreview,
image: 'tk_blog_bannieres_oct2010-' + randomIntFromInterval(1, 10) + '.jpg',
message: `# [${postObject.post_title}](${postObject.guid})
-* ${postObject.post_date} - ${postObject.guid}
-${filteredExcerpt}
+* ${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.folder_image = folderBlogPostsPreview;
- 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)
- }
-
+ findPictureAndSendPost(postObject.post_content, configPost)
}
diff --git a/helpers/utils.mjs b/helpers/utils.mjs
index a1a7392..de5f6cc 100644
--- a/helpers/utils.mjs
+++ b/helpers/utils.mjs
@@ -25,10 +25,13 @@ export let defaultConfigMasto = {
sensitive: false,
reallySendPost: false,
image: '',
- folder_image: 'assets/',
+ folder_image: process.cwd() + '/assets/blog_posts_medias/',
message: "Hey coucou! on est le" + nowDate,
scheduled_at: "",
- content_type: "text/markdown"
+ content_type: "text/markdown",
+ website: 'qzine',
+ slug: 'default_post_title',
+ postObject : {},
}
@@ -37,6 +40,11 @@ export function tokenForAuthorIsPresentInDotEnv(author) {
return process.env['TOKEN_' + author.toUpperCase()];
}
+/**
+ * send post to mastodon with config
+ * @param config
+ * @returns {*}
+ */
export default function sendPostMastodon(config) {
// override defaults with input argument
@@ -128,6 +136,32 @@ export default function sendPostMastodon(config) {
}
}
+// Slugify a string
+export function slugify(str)
+{
+ str = str.replace(/^\s+|\s+$/g, '');
+
+ // Make the string lowercase
+ str = str.toLowerCase();
+
+ // Remove accents, swap ñ for n, etc
+ var from = "ÁÄÂÀÃÅČÇĆĎÉĚËÈÊẼĔȆÍÌÎÏŇÑÓÖÒÔÕØŘŔŠŤÚŮÜÙÛÝŸŽáäâàãåčçćďéěëèêẽĕȇíìîïňñóöòôõøðřŕšťúůüùûýÿžþÞĐđßÆa·/_,:;";
+ var to = "AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa------";
+ for (var i=0, l=from.length ; i]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>/)[0];
+ let foundPictures = htmlContent.match(/]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>/);
+ let first = '';
+ if(foundPictures && foundPictures[0]){
+
+ first = foundPictures[0]
+
+ }else{
+ console.log('pas d image trouvée dans le contenu ', htmlContent)
+ }
if (first) {
result = first.match(/src\=\"(.*)\"/i)
if(result.length && result[0]){
@@ -172,12 +214,18 @@ export function findFirstImageInContent(htmlContent) {
result = result[1]
}
}
- console.log(result)
- result = result.replace('http:', 'https:')
- result = result.replace('https://www.ailesse.info/~tykayn/bazar/kotlife', 'https://www.tykayn.fr/wp-content/uploads/i/kotlife')
+ result = clearLink(result)
+ console.log('clearLink', result)
return result;
}
+function clearLink(linkString){
+ linkString = linkString.replace('http:', 'https:')
+ linkString = linkString.replace('https://www.ailesse.info/~tykayn/bazar/kotlife', 'https://www.tykayn.fr/wp-content/uploads/i/kotlife')
+ linkString = linkString.replace('https://blog.artlemoine.com/public/i', 'https://www.tykayn.fr/wp-content/uploads/i')
+
+ return linkString
+}
/**
* usage:
* downloadImage('https://upload.wikimedia.org/wikipedia/en/thumb/7/7d/Lenna_%28test_image%29.png/440px-Lenna_%28test_image%29.png', 'lena.png')
@@ -220,4 +268,62 @@ export function CropPictue(pictureName, width = 500, height = 300) {
.toFile('thumb_' + pictureName, function (err) {
if (err) console.log(err);
});
+}
+/**
+ * prendre un post parmi tous ceux du blog, dans ceux qui ont été publiés
+ * @returns {*}
+ */
+export function getRandomLinkGeneral(tkpostsjson) {
+ let filteredLinks = []
+ if (tkpostsjson[0].post_status) {
+
+ filteredLinks = tkpostsjson.filter(elem => elem.post_status === 'publish')
+ } else if (tkpostsjson[0].status) {
+ filteredLinks = tkpostsjson.filter(elem => elem.status === 'publish')
+ }
+ return getRandomElementOfArray(filteredLinks)
+}
+
+export function getRandomElementOfArray(listItems) {
+ return listItems[Math.floor(Math.random() * listItems.length)]
+}
+
+
+/**
+ * trouver l'image du contenu si il y en a
+ * @param postContent
+ * @param configPost
+ */
+export function findPictureAndSendPost(postContent, configPost){
+
+ let firstPictureSource = findFirstImageInContent(postContent);
+ let filePathImage = `${configPost.folder_image}_${configPost.website}_media_post_${slugify(configPost.slug)}.jpg`
+ if (firstPictureSource) {
+ console.log("firstPictureSource found", firstPictureSource)
+
+ downloadImage(firstPictureSource, filePathImage)
+ .then((res) => {
+ // suite du poste avec upload d'image
+ console.log('on envoie le media et l image' , filePathImage)
+
+ 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", configPost.image)
+ // on envoie avec l'image par défaut
+ sendPostMastodon(configPost)
+ }
}
\ No newline at end of file