diff --git a/.gitignore b/.gitignore index 183dcda..cc5a33c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,8 @@ .yarn node_modules mastodon_multi_accounts.db -#assets/documents/*.json +assets/documents/abonnements_tykayn.json +assets/documents/following_accounts.csv #assets/documents/*.rss #assets/documents/*.html assets/pictures/meme/not_published/* diff --git a/helpers/afis_science.mjs b/helpers/afis_science.mjs index 434dce6..d3c0fdd 100644 --- a/helpers/afis_science.mjs +++ b/helpers/afis_science.mjs @@ -3,7 +3,7 @@ import sendPostMastodon, { getArticlesFromDaysInRssFeed, makeTitleContentFromRss, parseRssFeed, -} from "./utils.mjs"; +} from "./libs/utils.mjs"; const afis_rss_feed_url = 'https://afis.org/rss.xml'; const days_back_in_rss_feed = 7; diff --git a/helpers/agendadulibre_coming_osm.mjs b/helpers/agendadulibre_coming_osm.mjs index 2f610b8..5217beb 100644 --- a/helpers/agendadulibre_coming_osm.mjs +++ b/helpers/agendadulibre_coming_osm.mjs @@ -1,7 +1,8 @@ -import sendPostMastodon from "./utils.mjs"; +import sendPostMastodon from "./libs/utils.mjs"; import * as coming_events_json from './../assets/documents/agendadulibre_coming_openstreetmap.json' assert { type: "json" }; -import {getArticlesFromDaysInJson} from "./utils.mjs"; + +import {getArticlesFromDaysInJson} from './libs/rss_management.mjs' const days_filter = 7; diff --git a/helpers/cipherbliss_post.mjs b/helpers/cipherbliss_post.mjs index 8923576..7b00927 100644 --- a/helpers/cipherbliss_post.mjs +++ b/helpers/cipherbliss_post.mjs @@ -5,7 +5,7 @@ import sendPostMastodon, { findFirstImageInContent, findPictureAndSendPost, getRandomElementOfArray -} from './utils.mjs' +} from './libs/utils.mjs' const __dirname = path.resolve(); const tkpostsjson = JSON.parse(fs.readFileSync(__dirname + "/assets/documents/cipherbliss_tkwp_posts.json", 'utf-8')) diff --git a/helpers/floss_idf.mjs b/helpers/floss_idf.mjs index 8f96fee..7635209 100644 --- a/helpers/floss_idf.mjs +++ b/helpers/floss_idf.mjs @@ -1,7 +1,9 @@ import * as coming_events_json from './../assets/documents/idf_agendadulibre_coming.json' assert { type: "json" } ; -import sendPostMastodon, {getArticlesFromDaysInJson, filterRegionAgendaDuLibreEvents, groupEventsByDay} from "./utils.mjs"; +import sendPostMastodon, { filterRegionAgendaDuLibreEvents, groupEventsByDay} from "./libs/utils.mjs"; import moment from 'moment'; -import {diffDaysBetweenTwoDates} from "./utils.mjs"; + +import {getArticlesFromDaysInJson,diffDaysBetweenTwoDates} from './libs/rss_management.mjs' + diff --git a/helpers/get_mentions.mjs b/helpers/get_mentions.mjs index 5e10440..55e4bcd 100644 --- a/helpers/get_mentions.mjs +++ b/helpers/get_mentions.mjs @@ -1,4 +1,4 @@ -import {createMastoFetcherWithAuthorLogin} from "./utils.mjs"; +import {createMastoFetcherWithAuthorLogin} from "./libs/utils.mjs"; import moment from 'moment' moment.locale('fr') @@ -19,6 +19,7 @@ console.log('get mentions on all accounts managed') export async function getMentionsOfAccount(accountToFetch) { + console.log('\n fetching account: ', accountToFetch) const masto = createMastoFetcherWithAuthorLogin(accountToFetch) let results = {} @@ -54,8 +55,9 @@ export async function getMentionsOfAccount(accountToFetch) { const accounts = [ 'qzine', - // 'tykayn', - // 'curator', + 'tykayn', + 'curator', + 'kurator', // 'modominem', 'voixdunucleaire', // 'voicesofnuclear', diff --git a/helpers/configs.js b/helpers/libs/configs.mjs similarity index 100% rename from helpers/configs.js rename to helpers/libs/configs.mjs diff --git a/helpers/describe_picture_folders.mjs b/helpers/libs/describe_picture_folders.mjs similarity index 100% rename from helpers/describe_picture_folders.mjs rename to helpers/libs/describe_picture_folders.mjs diff --git a/helpers/libs/mastodon_wrappers.mjs b/helpers/libs/mastodon_wrappers.mjs new file mode 100644 index 0000000..e69de29 diff --git a/helpers/libs/rss_management.mjs b/helpers/libs/rss_management.mjs new file mode 100644 index 0000000..b8402d8 --- /dev/null +++ b/helpers/libs/rss_management.mjs @@ -0,0 +1,84 @@ + +import Parser from 'rss-parser'; +import {diffDaysBetweenTwoDates} from "./utils"; + + + +/** + * fetch and return a parsed rss feed + * @param url + * @returns {Promise<*>} + */ +export async function parseRssFeed(url){ + let parsedFeed = await parser.parseURL(url); + + console.log(parsedFeed.title); + + parsedFeed.items.forEach((item) => { + console.log(item.title); + }); + return parsedFeed +} + +/** + * get a subset of rss parsed items + * @param parsedRssFeed + * @param days + * @returns {T[]} + */ +export function getArticlesFromDaysInRssFeed(parsedRssFeed , days=7) { + + // return parsedRssFeed.items.splice(0,days); + return parsedRssFeed.items.splice(0,6); +} + + +export function makeTitleContentFromRss(parsedFeed) { + + let content = '' + let counter = 0; + if (!parsedFeed.length) { + return ''; + } + parsedFeed.forEach((item) => { + // if (!counter) { + // console.log('first item', item) + // } + let cleanedTitle= item.title.replace('[','').trim() + cleanedTitle= cleanedTitle.replace(']','').trim() + content += `\n* [${cleanedTitle}](${item.link}) `; + content += `\n ${item.isoDate.substring(0,10)} : ${item.contentSnippet.split('\n')[0]} \n`; + counter++; + }); + return content; +} + +/** + * get a subset of articles in a specified range number of days in the past + * @param json_content + * @param nbOfDays + * @returns {[]} + */ +export function getArticlesFromDaysInJson(json_content,nbOfDays){ + + let today = new Date() + let selectedEvents = []; + + console.log('getArticlesFromDaysInJson: filtre nbOfDays', nbOfDays) + console.log('events ', json_content.length) + json_content.forEach((item) => { + + let differenceDays = diffDaysBetweenTwoDates(new Date(item.start_time) ,today); + + if( differenceDays < nbOfDays){ + console.log('on garde', differenceDays,item.city, item.title) + selectedEvents.push(item) + } + // else{ + // console.log('on ne garde pas', differenceDays,item.city, item.title) + // } + }) + + return selectedEvents +} + diff --git a/helpers/utils.mjs b/helpers/libs/utils.mjs similarity index 76% rename from helpers/utils.mjs rename to helpers/libs/utils.mjs index bd80780..f353b9e 100644 --- a/helpers/utils.mjs +++ b/helpers/libs/utils.mjs @@ -5,6 +5,7 @@ import fs from 'fs'; import https from 'https'; + let local_node_env_conf = dotenv.config() const myArgs = process.argv.slice(2); export const reallySendPost = hasCliArgument('--force'); @@ -26,17 +27,17 @@ export let defaultConfigMasto = { visibility: 'public', language: 'fr', sensitive: false, - disable_slugify:false, + disable_slugify: false, reallySendPost, image: '', folder_image: process.cwd() + '/assets/blog_posts_medias/', message: "Hey coucou! on est le" + nowDate, scheduled_at: "", scheduled_at_bool: false, - content_type: "text/markdown", + content_type: "text/markdown", website: 'qzine', slug: 'default_post_title', - postObject : {}, + postObject: {}, } @@ -49,7 +50,7 @@ export function tokenForAuthorIsPresentInDotEnv(author) { * @param userNickName * @returns {Mastodon} */ -export function createMastoFetcherWithAuthorLogin(userNickName){ +export function createMastoFetcherWithAuthorLogin(userNickName) { let accessToken = process.env['TOKEN_' + userNickName.toUpperCase()] const masto = new Masto({ access_token: accessToken, @@ -57,6 +58,7 @@ export function createMastoFetcherWithAuthorLogin(userNickName){ }); return masto; } + /** * send post to mastodon with config * @param config @@ -132,9 +134,9 @@ export default function sendPostMastodon(config) { else if (config.image) { var id; - console.log("envoi du média", config.folder_image +config.image) + console.log("envoi du média", config.folder_image + config.image) // upload new media - return masto.post('media', {file: fs.createReadStream(config.folder_image +config.image)}) + return masto.post('media', {file: fs.createReadStream(config.folder_image + config.image)}) .then(resp => { id = resp.data.id; params.media_ids = [id] @@ -160,8 +162,7 @@ export default function sendPostMastodon(config) { } // Slugify a string -export function slugify(str) -{ +export function slugify(str) { str = str.replace(/^\s+|\s+$/g, ''); // Make the string lowercase @@ -169,8 +170,8 @@ export function slugify(str) // Remove accents, swap ñ for n, etc var from = "ÁÄÂÀÃÅČÇĆĎÉĚËÈÊẼĔȆÍÌÎÏŇÑÓÖÒÔÕØŘŔŠŤÚŮÜÙÛÝŸŽáäâàãåčçćďéěëèêẽĕȇíìîïňñóöòôõøðřŕšťúůüùûýÿžþÞĐđßÆa·/_,:;"; - var to = "AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa------"; - for (var i=0, l=from.length ; i]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>/); let first = ''; - if(foundPictures && foundPictures[0]){ + if (foundPictures && foundPictures[0]) { - first = foundPictures[0] + first = foundPictures[0] - }else{ + } else { console.log('pas d image trouvée dans le contenu ', htmlContent) } if (first) { result = first.match(/src\=\"(.*)\"/i) - if(result.length && result[0]){ - result = result[0].split('"') - result = result[1] + if (result.length && result[0]) { + result = result[0].split('"') + result = result[1] } } result = clearLink(result) @@ -242,7 +243,7 @@ export function findFirstImageInContent(htmlContent='') { return result; } -function clearLink(linkString){ +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') @@ -250,6 +251,7 @@ function clearLink(linkString){ 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') @@ -262,10 +264,10 @@ function clearLink(linkString){ export function downloadImage(url, filepath) { return new Promise((resolve, reject) => { const options = { - headers: { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.52" } + headers: {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.52"} }; - https.get( url, options, (res) => { + https.get(url, options, (res) => { if (res.statusCode === 200) { res.pipe(fs.createWriteStream(filepath)) .on('error', reject) @@ -297,6 +299,7 @@ export function CropPicture(pictureName, width = 500, height = 300) { if (err) console.log(err); }); } + /** * prendre un post parmi tous ceux du blog, dans ceux qui ont été publiés * @returns {*} @@ -318,7 +321,7 @@ export function getRandomLinkGeneral(tkpostsjson) { * @param postContent * @param configPost */ -export function findPictureAndSendPost(postContent, configPost){ +export function findPictureAndSendPost(postContent, configPost) { let firstPictureSource = findFirstImageInContent(postContent); @@ -329,8 +332,8 @@ export function findPictureAndSendPost(postContent, configPost){ console.log("firstPictureSource found", firstPictureSource) // check if picture already exist - console.log('on envoie le média et l image : ' , filePathForDownloadedImage) - downloadImage(firstPictureSource, filePathForDownloadedImage) + console.log('on envoie le média et l image : ', filePathForDownloadedImage) + downloadImage(firstPictureSource, filePathForDownloadedImage) .then((res) => { // suite du poste avec upload d'image @@ -360,97 +363,22 @@ export function findPictureAndSendPost(postContent, configPost){ } - /** * find cli argument * @param argument * @returns {boolean} */ -export function hasCliArgument(argument){ +export function hasCliArgument(argument) { return myArgs.indexOf(argument) !== -1 } -import Parser from 'rss-parser'; import moment from "moment"; let parser = new Parser(); -/** - * fetch and return a parsed rss feed - * @param url - * @returns {Promise<*>} - */ -export async function parseRssFeed(url){ - let parsedFeed = await parser.parseURL(url); - - console.log(parsedFeed.title); - - parsedFeed.items.forEach((item) => { - console.log(item.title); - }); - return parsedFeed -} - -/** - * get a subset of rss parsed items - * @param parsedRssFeed - * @param days - * @returns {T[]} - */ -export function getArticlesFromDaysInRssFeed(parsedRssFeed , days=7) { - - // return parsedRssFeed.items.splice(0,days); - return parsedRssFeed.items.splice(0,6); -} - - -export function makeTitleContentFromRss(parsedFeed) { - - let content = '' - let counter = 0; - if (!parsedFeed.length) { - return ''; - } - parsedFeed.forEach((item) => { - // if (!counter) { - // console.log('first item', item) - // } - let cleanedTitle= item.title.replace('[','').trim() - cleanedTitle= cleanedTitle.replace(']','').trim() - content += `\n* [${cleanedTitle}](${item.link}) `; - content += `\n ${item.isoDate.substring(0,10)} : ${item.contentSnippet.split('\n')[0]} \n`; - counter++; - }); - return content; -} - - -export function getArticlesFromDaysInJson(json_content,nbOfDays){ - - let today = new Date() - let selectedEvents = []; - - console.log('getArticlesFromDaysInJson: filtre nbOfDays', nbOfDays) - console.log('events ', json_content.length) - json_content.forEach((item) => { - - let differenceDays = diffDaysBetweenTwoDates(new Date(item.start_time) ,today); - - if( differenceDays < nbOfDays){ - console.log('on garde', differenceDays,item.city, item.title) - selectedEvents.push(item) - } - // else{ - // console.log('on ne garde pas', differenceDays,item.city, item.title) - // } - }) - - return selectedEvents -} - -export function diffDaysBetweenTwoDates(date1,date2) { +export function diffDaysBetweenTwoDates(date1, date2) { const a = moment(date1); const b = moment(date2); @@ -459,11 +387,10 @@ export function diffDaysBetweenTwoDates(date1,date2) { } - export function filterRegionAgendaDuLibreEvents(events_list, filter_critera) { let selection = [] - events_list.forEach(item=> { - if( item.region_id == filter_critera){ + events_list.forEach(item => { + if (item.region_id == filter_critera) { selection.push(item) } }) @@ -472,16 +399,16 @@ export function filterRegionAgendaDuLibreEvents(events_list, filter_critera) { moment.locale('fr'); -export function groupEventsByDay(events_list){ +export function groupEventsByDay(events_list) { let selection = {} - events_list.forEach(item=> { + events_list.forEach(item => { let formattedDay = moment(item.start_time).format('dddd DD') - - if( ! selection[formattedDay]){ + + if (!selection[formattedDay]) { selection[formattedDay] = [] } - selection[formattedDay].push(item) + selection[formattedDay].push(item) }) return selection; } \ No newline at end of file diff --git a/helpers/meme_poster_random.mjs b/helpers/meme_poster_random.mjs index 7aa196c..93b4e3a 100644 --- a/helpers/meme_poster_random.mjs +++ b/helpers/meme_poster_random.mjs @@ -1,6 +1,6 @@ import fs from "fs"; import path from 'path'; -import {getRandomElementOfArray, listFilesOfFolder} from './utils.mjs' +import {getRandomElementOfArray, listFilesOfFolder} from './libs/utils.mjs' import Masto from "mastodon"; const __dirname = path.resolve(); diff --git a/helpers/qzine_article.mjs b/helpers/qzine_article.mjs index 1dff3cc..4744601 100644 --- a/helpers/qzine_article.mjs +++ b/helpers/qzine_article.mjs @@ -4,7 +4,7 @@ import sendPostMastodon, { randomIntFromInterval, getRandomElementOfArray, findPictureAndSendPost, getRandomLinkGeneral -} from './utils.mjs' +} from './libs/utils.mjs' const folderBlogPostsPreview = process.cwd() + '/assets/blog_posts_medias/' diff --git a/helpers/tykayn_blog.mjs b/helpers/tykayn_blog.mjs index 1dd1fbc..69df85d 100644 --- a/helpers/tykayn_blog.mjs +++ b/helpers/tykayn_blog.mjs @@ -4,7 +4,7 @@ import { randomIntFromInterval, findPictureAndSendPost, getRandomLinkGeneral, hasCliArgument, slugify -} from './utils.mjs' +} from './libs/utils.mjs' import Masto from "mastodon"; const __dirname = path.resolve(); diff --git a/helpers/wiki_osm.mjs b/helpers/wiki_osm.mjs index 958a940..505380e 100644 --- a/helpers/wiki_osm.mjs +++ b/helpers/wiki_osm.mjs @@ -7,7 +7,7 @@ import rp from "request-promise"; import $ from "cheerio"; import fs from "fs"; import path from 'path'; -import sendPostMastodon, {downloadImage, randomIntFromInterval, slugify} from './utils.mjs' +import sendPostMastodon, {downloadImage, randomIntFromInterval, slugify} from './libs/utils.mjs' import {getSourceOfDescriptorPageContent} from "./osm_get_description_picture.mjs"; const __dirname = path.resolve(); diff --git a/helpers/wip/curation_image_random.mjs b/helpers/wip/curation_image_random.mjs index 4d76bfd..072f799 100644 --- a/helpers/wip/curation_image_random.mjs +++ b/helpers/wip/curation_image_random.mjs @@ -1,13 +1,13 @@ import fs from "fs"; import path from 'path'; -import {getRandomElementOfArray, listFilesOfFolder} from '../utils.mjs' +import {getRandomElementOfArray, listFilesOfFolder} from '../libs/utils.mjs' import Masto from "mastodon"; const __dirname = path.resolve(); // choisir un type de publication au hasard dans les dossiers "picture" -import pictureFolderDescriptions from "../describe_picture_folders.mjs" +import pictureFolderDescriptions from "../libs/describe_picture_folders.mjs" const typeOfFolder = getRandomElementOfArray(Object.keys(pictureFolderDescriptions)) console.log(typeOfFolder) diff --git a/helpers/wip/find_first_picture_of_post.mjs b/helpers/wip/find_first_picture_of_post.mjs index 6b0a7f1..1bd8670 100644 --- a/helpers/wip/find_first_picture_of_post.mjs +++ b/helpers/wip/find_first_picture_of_post.mjs @@ -1,6 +1,6 @@ // let firstimgsource = findFirstImageInContent(postObject.post_content) -import {findFirstImageInContent} from "../utils.mjs"; +import {findFirstImageInContent} from "../libs/utils.mjs"; let myContentHtml = "Protonmail, la fameuse boite email zéro connaissance de la part de l’hébergeur Suisse, développé à source ouverte depuis son origine et par des techos du CERN, permet de supprimer le contenu de pas mal de dossiers, mais pas de la boite de réception principale.\n" + diff --git a/helpers/wip/recommandations_curator.mjs b/helpers/wip/recommandations_curator.mjs new file mode 100644 index 0000000..8a509c1 --- /dev/null +++ b/helpers/wip/recommandations_curator.mjs @@ -0,0 +1,83 @@ + +import sendPostMastodon, { + getArticlesFromDaysInRssFeed, + makeTitleContentFromRss, + parseRssFeed, +} from "./libs/utils.mjs"; + +// const afis_rss_feed_url = 'https://afis.org/rss.xml'; +// const days_back_in_rss_feed = 7; + +async function postLink() { + + + // selectionner un compte parmi les gens suivis dans une liste + + // export des abonnements utilisateur https://mastodon.cipherbliss.com/settings/exports/follows.csv/home/cipherbliss/Nextcloud/inbox/following_accounts.csv + // ; rel="next", ; rel="prev" + // https://mastodon.cipherbliss.com/api/v1/accounts/relationships?id[]=109484382634211819&id[]=109280269336881811&id[]=109280889310776283&id[]=109248504398682634&id[]=109310268216721885&id[]=109916178850231009&id[]=109541053771316772&id[]=151980&id[]=80685&id[]=106835252230809041&id[]=109167546376395742&id[]=109791782092094822&id[]=109770197347890560&id[]=109768052505508503&id[]=108202891614303950&id[]=109749045115736569&id[]=109739290485102920&id[]=109330282577556324&id[]=109280646010767217&id[]=109722335836985403&id[]=109542013632346871&id[]=109278739925137927&id[]=109659515794606337&id[]=109292570383233152&id[]=109660244192213202&id[]=109303521370666602&id[]=109523867267929049&id[]=109643780720044907&id[]=109386436202793665&id[]=109501996699619458&id[]=109632939061534470&id[]=109621031128728719&id[]=109620790782200477&id[]=139144&id[]=109592762903342668&id[]=109603261782470086&id[]=109591788539379136&id[]=109570049875530270&id[]=109381927764082328&id[]=109554213128019255 +// exemple d'account: + /** + { + "id": "109484382634211819", + "username": "GalmeshRosewood", + "acct": "GalmeshRosewood@mastodon.art", + "display_name": "Galmesh Rosewood", + "locked": false, + "bot": false, + "discoverable": true, + "group": false, + "created_at": "2022-12-05T00:00:00.000Z", + "note": "

I'm Galmesh Rosewood and I want to be a lewd artist. (It's a Monkey Island ref). Male from France. Some content won't be family-friendly.

", + "url": "https://mastodon.art/@GalmeshRosewood", + "avatar": "https://mastodon.cipherbliss.com/system/cache/accounts/avatars/109/484/382/634/211/819/original/4d3c4ded9ae95202.jpg", + "avatar_static": "https://mastodon.cipherbliss.com/system/cache/accounts/avatars/109/484/382/634/211/819/original/4d3c4ded9ae95202.jpg", + "header": "https://mastodon.cipherbliss.com/system/cache/accounts/headers/109/484/382/634/211/819/original/5b1822520e4ae3b3.png", + "header_static": "https://mastodon.cipherbliss.com/system/cache/accounts/headers/109/484/382/634/211/819/original/5b1822520e4ae3b3.png", + "followers_count": 762, + "following_count": 195, + "statuses_count": 327, + "last_status_at": "2023-03-04", + "emojis": [], + "fields": [ + { + "name": "Linktree", + "value": "https://linktr.ee/galmeshrosewood", + "verified_at": null + } + ] + } + */ + + // faire un repost de média + // POST /api/v1/statuses/109965725969165853/reblog + + // autre action: + // faire une liste de recommandation de 3 gens à follow au hasard pris dans cette liste, + // avec en image attachée un des médias postés par les comptes en question + + +// console.log("envoi de post des articles afis sciences publiés depuis " + days_back_in_rss_feed + " jours par le compte afis91") +// +// let parsedFeed = await parseRssFeed(afis_rss_feed_url) +// let articles = await getArticlesFromDaysInRssFeed(parsedFeed, days_back_in_rss_feed) +// console.log('articles', articles) +// let contentOfPost = 'Articles des ' + days_back_in_rss_feed + ' derniers jours sur le site web de l\'AFIS: \n' +// + makeTitleContentFromRss(articles) +// +// let configPost = { +// author: 'afis91', +// website: 'afis.org', +// // disable_slugify: true, +// slug: "afis_picture", +// content_type: "text/markdown", +// folder_image: process.cwd() + '/assets/', +// image: "afis_picture_of_the_day.jpg", +// message: `# ${contentOfPost} +// +// #afis #science #pseudoScience #hebdo`, +// } +// sendPostMastodon(configPost) +} + +postLink(); \ No newline at end of file diff --git a/helpers/wip/tykayn_art_random.mjs b/helpers/wip/tykayn_art_random.mjs index f73db4b..0a7da71 100644 --- a/helpers/wip/tykayn_art_random.mjs +++ b/helpers/wip/tykayn_art_random.mjs @@ -1,6 +1,6 @@ import fs from "fs"; import path from 'path'; -import {getRandomElementOfArray, listFilesOfFolder} from '../utils.mjs' +import {getRandomElementOfArray, listFilesOfFolder} from '../libs/utils.mjs' import Masto from "mastodon"; const __dirname = path.resolve(); diff --git a/routes/index.js b/routes/index.js index 74e1cb9..0ab689b 100644 --- a/routes/index.js +++ b/routes/index.js @@ -2,7 +2,7 @@ var express = require('express'); var router = express.Router(); var sqlite3 = require('sqlite3'); var Masto = require('mastodon'); -// import accounts_to_select from '../src/configs.js' +// import accounts_to_select from '../src/configs.mjs' const accounts_to_select = [ {