default handling for osm picture
This commit is contained in:
parent
15bb11bf1e
commit
fc02ef60e3
BIN
assets/icecream.jpg
Normal file
BIN
assets/icecream.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 283 KiB |
BIN
assets/osm_default.jpg
Normal file
BIN
assets/osm_default.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 319 KiB |
BIN
assets/osm_tag.xcf
Normal file
BIN
assets/osm_tag.xcf
Normal file
Binary file not shown.
164
helpers/utils.js
164
helpers/utils.js
@ -1,17 +1,20 @@
|
|||||||
import Masto from "mastodon";
|
import Masto from "mastodon";
|
||||||
import dotenv from "dotenv";
|
import dotenv from "dotenv";
|
||||||
|
import fs from "node-fs";
|
||||||
|
|
||||||
let local_node_env_conf = dotenv.config()
|
let local_node_env_conf = dotenv.config()
|
||||||
|
|
||||||
// console.log("conf", local_node_env_conf)
|
// console.log("conf", local_node_env_conf)
|
||||||
|
|
||||||
export function randomIntFromInterval(min, max) { // min and max included
|
export function randomIntFromInterval(min, max) { // min and max included
|
||||||
return Math.floor(Math.random() * (max - min + 1) + min)
|
return Math.floor(Math.random() * (max - min + 1) + min)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getRandomElementOfArray(listItems) {
|
export function getRandomElementOfArray(listItems) {
|
||||||
return listItems[Math.floor(Math.random() * listItems.length)]
|
return listItems[Math.floor(Math.random() * listItems.length)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let nowDate = new Date()
|
let nowDate = new Date()
|
||||||
|
|
||||||
export let defaultConfigMasto = {
|
export let defaultConfigMasto = {
|
||||||
@ -20,11 +23,17 @@ export let defaultConfigMasto = {
|
|||||||
language: 'fr',
|
language: 'fr',
|
||||||
sensitive: false,
|
sensitive: false,
|
||||||
reallySendPost: false,
|
reallySendPost: false,
|
||||||
|
image: '',
|
||||||
message: "Hey coucou! on est le" + nowDate,
|
message: "Hey coucou! on est le" + nowDate,
|
||||||
scheduled_at: ""
|
scheduled_at: ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function tokenForAuthorIsPresentInDotEnv(author) {
|
||||||
|
console.log(" process.env['TOKEN_' + author.toUpperCase()]", process.env['TOKEN_' + author.toUpperCase()])
|
||||||
|
return process.env['TOKEN_' + author.toUpperCase()];
|
||||||
|
}
|
||||||
|
|
||||||
export function sendPostMastodon(config) {
|
export function sendPostMastodon(config) {
|
||||||
|
|
||||||
// override defaults with input argument
|
// override defaults with input argument
|
||||||
@ -32,71 +41,100 @@ export function sendPostMastodon(config) {
|
|||||||
...defaultConfigMasto,
|
...defaultConfigMasto,
|
||||||
...config,
|
...config,
|
||||||
}
|
}
|
||||||
// require('dotenv').config();
|
|
||||||
|
|
||||||
if(! config.reallySendPost){
|
|
||||||
console.log(" =========== le message ne sera PAS réellement posté sur le compte @" + config.author + "@"+ process.env.INSTANCE_MASTODON +" =========== ")}
|
|
||||||
console.log(" ")
|
|
||||||
if (process.env['TOKEN_' + config.author.toUpperCase()]) {
|
|
||||||
|
|
||||||
let visibility = 'public';
|
|
||||||
let language = 'fr';
|
|
||||||
let sensitive = false;
|
|
||||||
|
|
||||||
let accessToken = process.env['TOKEN_' + config.author.toUpperCase()]
|
|
||||||
const masto = new Masto({
|
|
||||||
access_token: accessToken,
|
|
||||||
api_url: process.env.INSTANCE_MASTODON + '/api/v1/',
|
|
||||||
});
|
|
||||||
|
|
||||||
let params = {
|
|
||||||
status: config.message,
|
|
||||||
visibility,
|
|
||||||
language,
|
|
||||||
sensitive
|
|
||||||
}
|
|
||||||
if (config.cw) {
|
|
||||||
params['spoiler_text'] = config.cw
|
|
||||||
}
|
|
||||||
if (config.scheduled_at && config.scheduled_at_bool) {
|
|
||||||
let dateschedule = new Date(config.scheduled_at)
|
|
||||||
params['scheduled_at'] = dateschedule.toISOString()
|
|
||||||
}
|
|
||||||
console.log(config)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* envoi sans fichier joint
|
|
||||||
*/
|
|
||||||
if (!config.fichier) {
|
|
||||||
|
|
||||||
if (config.reallySendPost) {
|
|
||||||
|
|
||||||
masto.post('statuses', params).then(rep => {
|
|
||||||
// console.log('rep', rep)
|
|
||||||
console.log("posté, yay!")
|
|
||||||
}, err => {
|
|
||||||
console.error(err)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* envoi avec fichier,
|
|
||||||
* on doit d'abord faire un upload du fichier,
|
|
||||||
* puis relier son id de media au nouveau post.
|
|
||||||
*/
|
|
||||||
// if (config.fichier) {
|
|
||||||
//
|
|
||||||
// masto.post('statuses', params).then(rep => {
|
|
||||||
// console.log('rep', rep)
|
|
||||||
// }, err => {
|
|
||||||
// console.error(err)
|
|
||||||
// })
|
|
||||||
// res.render('index', {bodyReq: config})
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
if (!config.reallySendPost) {
|
||||||
|
console.log(" =========== le message ne sera PAS réellement posté sur le compte @" + config.author + "@" + process.env.INSTANCE_MASTODON + " =========== ")
|
||||||
} else {
|
} else {
|
||||||
console.error('pas de token pour ' + config.author, process.env.TOKEN_curator)
|
|
||||||
|
console.log(" ")
|
||||||
|
if (process.env.INSTANCE_MASTODON && tokenForAuthorIsPresentInDotEnv(config.author)) {
|
||||||
|
|
||||||
|
let visibility = 'public';
|
||||||
|
let language = 'fr';
|
||||||
|
let sensitive = false;
|
||||||
|
|
||||||
|
let accessToken = process.env['TOKEN_' + config.author.toUpperCase()]
|
||||||
|
const masto = new Masto({
|
||||||
|
access_token: accessToken,
|
||||||
|
api_url: process.env.INSTANCE_MASTODON + '/api/v1/',
|
||||||
|
});
|
||||||
|
|
||||||
|
let params = {
|
||||||
|
status: config.message,
|
||||||
|
visibility,
|
||||||
|
language,
|
||||||
|
sensitive
|
||||||
|
}
|
||||||
|
if (config.cw) {
|
||||||
|
params['spoiler_text'] = config.cw
|
||||||
|
}
|
||||||
|
if (config.scheduled_at && config.scheduled_at_bool) {
|
||||||
|
let dateschedule = new Date(config.scheduled_at)
|
||||||
|
params['scheduled_at'] = dateschedule.toISOString()
|
||||||
|
}
|
||||||
|
console.log(config)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* envoi sans fichier joint
|
||||||
|
*/
|
||||||
|
if (!config.image) {
|
||||||
|
|
||||||
|
if (config.reallySendPost) {
|
||||||
|
|
||||||
|
masto.post('statuses', params).then(rep => {
|
||||||
|
// console.log('rep', rep)
|
||||||
|
console.log("posté, yay!")
|
||||||
|
}, err => {
|
||||||
|
console.error(err)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* envoi avec fichier,
|
||||||
|
* on doit d'abord faire un upload du fichier,
|
||||||
|
* puis relier son id de media au nouveau post.
|
||||||
|
*/
|
||||||
|
if (config.image) {
|
||||||
|
|
||||||
|
var id;
|
||||||
|
console.log("envoi du média", config.image)
|
||||||
|
if(config.image === 'osm_default.jpg'){
|
||||||
|
id = '108787661095227871';
|
||||||
|
params.media_ids = [id]
|
||||||
|
masto.post('statuses', params).then(rep => {
|
||||||
|
console.log("posté avec l'image osm_default déjà enregistrée")
|
||||||
|
// console.log('rep', rep)
|
||||||
|
}, err => {
|
||||||
|
|
||||||
|
console.error(err)
|
||||||
|
console.log("erreur T_T")
|
||||||
|
})
|
||||||
|
|
||||||
|
}else{
|
||||||
|
// upload new media
|
||||||
|
return masto.post('media', {file: fs.createReadStream('assets/' + config.image)})
|
||||||
|
.then(resp => {
|
||||||
|
id = resp.data.id;
|
||||||
|
params.media_ids = [id]
|
||||||
|
masto.post('statuses', params).then(rep => {
|
||||||
|
console.log('rep', rep)
|
||||||
|
console.log("posté avec une nouvelle image, WOOT")
|
||||||
|
}, err => {
|
||||||
|
console.error(err)
|
||||||
|
|
||||||
|
console.log("erreur T_T")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.error(`pas de token pour l'auteur "${config.author}" ou pas d'instance mastodon définie`)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
// https://www.mediawiki.org/wiki/Manual:Random_page
|
// https://www.mediawiki.org/wiki/Manual:Random_page
|
||||||
|
/**
|
||||||
|
* Post de page aléatoire du wiki osm avec le compte curator
|
||||||
|
*/
|
||||||
import fetch from "node-fetch"
|
import fetch from "node-fetch"
|
||||||
import rp from "request-promise";
|
import rp from "request-promise";
|
||||||
import $ from "cheerio";
|
import $ from "cheerio";
|
||||||
@ -8,13 +11,16 @@ import {randomIntFromInterval, sendPostMastodon} from "./utils.js";
|
|||||||
|
|
||||||
const __dirname = path.resolve();
|
const __dirname = path.resolve();
|
||||||
|
|
||||||
|
// select one line of table to override description
|
||||||
const selectionOverrideOfSectionTable = 2;
|
const selectionOverrideOfSectionTable = 2;
|
||||||
const selectionOverrideOfLineTable = 7;
|
const selectionOverrideOfLineTable = 7;
|
||||||
|
|
||||||
|
// select randomly a line
|
||||||
// const selectionOverrideOfSectionTable = '';
|
// const selectionOverrideOfSectionTable = '';
|
||||||
// const selectionOverrideOfLineTable = '';
|
// const selectionOverrideOfLineTable = '';
|
||||||
|
|
||||||
const reallySendToot = false;
|
const reallySendToot = false;
|
||||||
|
// const reallySendToot = true;
|
||||||
|
|
||||||
function getRandomWikiOSMPage() {
|
function getRandomWikiOSMPage() {
|
||||||
|
|
||||||
@ -202,7 +208,7 @@ function checkExistenceOfWebPage(url) {
|
|||||||
|
|
||||||
function makePostMessageFromObj(result) {
|
function makePostMessageFromObj(result) {
|
||||||
return `
|
return `
|
||||||
# [Le tag OSM du jour : ${result.key}=${result.value}](${result.link})
|
# 🗺️ [Le tag OSM du jour : ${result.key}=${result.value}](${result.link}) 🏷️
|
||||||
${result.description.trim()}
|
${result.description.trim()}
|
||||||
> ${result.long_desc.trim()}
|
> ${result.long_desc.trim()}
|
||||||
#osm #openstreetmap #wiki #rtfw
|
#osm #openstreetmap #wiki #rtfw
|
||||||
@ -259,6 +265,7 @@ const res = getElementCartographique()
|
|||||||
function sendMessageWikiTagOfTheDay(message) {
|
function sendMessageWikiTagOfTheDay(message) {
|
||||||
let configPost = {
|
let configPost = {
|
||||||
author: 'curator',
|
author: 'curator',
|
||||||
|
image: 'osm_default.jpg',
|
||||||
message,
|
message,
|
||||||
// reallySendPost: true,
|
// reallySendPost: true,
|
||||||
reallySendPost: reallySendToot,
|
reallySendPost: reallySendToot,
|
||||||
|
Loading…
Reference in New Issue
Block a user