Compare commits

...

4 Commits

Author SHA1 Message Date
Tykayn ae33a57bf4 add agenda du libre IDF events 2023-03-03 19:16:59 +01:00
Tykayn dec093393b group days for adl events 2023-03-03 18:55:05 +01:00
Tykayn c633f547de group days for adl events 2023-03-03 18:54:50 +01:00
Tykayn eddf735722 script agenda du libre osm 7 jours 2023-03-03 17:52:10 +01:00
14 changed files with 10951 additions and 21 deletions

View File

@ -1,7 +0,0 @@
#!/bin/bash
nvm use 16
#cd /home/tykayn/www/multi-account-post-schedule-mastodon
wget --no-check-certificate --no-directories -O ./documents/agendadulibre_openstreetmap.json https://www.agendadulibre.org/events.json?city=&near%5Blocation%5D=&near%5Bdistance%5D=&region=&tag=openstreetmap
#node helpers/agendadulibre_coming_osm.mjs --force | tee -a /home/tykayn/log_autopost.txt 2>&1
node helpers/agendadulibre_coming_osm.mjs | tee -a /home/tykayn/log_autopost.txt 2>&1

View File

@ -0,0 +1,6 @@
#!/bin/bash
nvm use 16
#cd /home/tykayn/www/multi-account-post-schedule-mastodon
wget --no-check-certificate --no-directories -O ./documents/agendadulibre_coming_openstreetmap.json https://www.agendadulibre.org/events.json?city=&near%5Blocation%5D=&near%5Bdistance%5D=&region=&tag=openstreetmap
node helpers/agendadulibre_coming_osm.mjs --force | tee -a /home/tykayn/log_autopost.txt 2>&1

View File

@ -0,0 +1,6 @@
#!/bin/bash
nvm use 16
#cd /home/tykayn/www/multi-account-post-schedule-mastodon
wget --no-check-certificate --no-directories -O ./documents/agendadulibre.json https://www.agendadulibre.org/events.json
node helpers/floss_idf.mjs --force | tee -a /home/tykayn/log_autopost.txt 2>&1

File diff suppressed because one or more lines are too long

BIN
assets/floss_default.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
assets/floss_default_1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

BIN
assets/floss_default_1.xcf Normal file

Binary file not shown.

BIN
assets/floss_default_2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@ -9,9 +9,14 @@ function makeTitleContentFromAgendaDulibre(articles) {
let content = '';
if(! articles.length ){
return '- Aucun évènement prévu. T_T'
}
articles.forEach(item=>{
content += `\n* ${item.city} - ${item.title}` ;
content += `\n* <${item.start_time} -- ${item.end_time}>` ;
let start = new Date(item.start_time)
let end = new Date(item.end_time)
content += `\n <${start} -- ${end}>` ;
})
return content;
}
@ -19,11 +24,12 @@ function makeTitleContentFromAgendaDulibre(articles) {
async function postLink() {
console.log("curator: résumé des prochains évènements de l'agenda du libre en ile de france dans les " + days_filter + " jours")
let events_list = coming_events_json.default;
coming_events_json = getArticlesFromDaysInJson(coming_events_json);
events_list = getArticlesFromDaysInJson(events_list,days_filter);
let contentOfPost = 'Prochains évènements OpenStreetMap dans les ' + days_filter + ' prochains jours: \n'
+ makeTitleContentFromAgendaDulibre(coming_events_json)
+ makeTitleContentFromAgendaDulibre(events_list)
let configPost = {
author: 'curator',
@ -32,7 +38,7 @@ async function postLink() {
slug: "osm_event_picture",
content_type: "text/markdown",
folder_image: process.cwd() + '/assets/',
image: "osm.jpg",
image: "osm_default.jpg",
message: `# ${contentOfPost}
#agenda #floss #openstreetmap #hebdo`,
@ -40,4 +46,4 @@ async function postLink() {
sendPostMastodon(configPost)
}
postLink();
postLink();

77
helpers/floss_idf.mjs Normal file
View File

@ -0,0 +1,77 @@
import * as coming_events_json from './../assets/documents/idf_agendadulibre_coming.json' assert { type: "json" } ;
import sendPostMastodon, {getArticlesFromDaysInJson, filterRegionAgendaDuLibreEvents, groupEventsByDay} from "./utils.mjs";
import moment from 'moment';
import {diffDaysBetweenTwoDates} from "./utils.mjs";
let event_date_format = 'hh:mm'
const days_filter = 7;
moment.locale('fr')
function makeTitleContentFromAgendaDulibre(articles) {
let content = '';
if (!articles.length) {
return '- Aucun évènement prévu. T_T'
}
articles = groupEventsByDay(articles);
let sortedDays = Object.keys(articles)
sortedDays.forEach((dayOfEvents, index) => {
// console.log('item', item, articles[item])
console.log('item', dayOfEvents)
content += `\n## ${dayOfEvents}` ;
articles[dayOfEvents].forEach(event =>{
console.log('event.title', event.title)
let tags = '#'+event.tags.split(' ').join(' #')
let eventUrl = event.url.replace('.json', '')
// content += `\n* [${event.title}](${eventUrl})` ;
content += `\n* [${event.city} - ${event.title}](${eventUrl})` ;
content += `\n* ${tags}` ;
let start = moment(new Date(event.start_time)).format(event_date_format)
let end = moment(new Date(event.end_time)).format(event_date_format)
content += `\n ${start} -- ${end}` ;
})
content += `\n`;
})
return content;
}
async function postLink() {
console.log("curator: résumé des prochains évènements de l'agenda du libre en ile de france dans les " + days_filter + " jours")
let events_list = coming_events_json.default;
events_list = filterRegionAgendaDuLibreEvents(events_list, "12");
events_list = getArticlesFromDaysInJson(events_list, days_filter);
let contentOfPost = 'Prochains évènements libristes en île de France dans les ' + days_filter + ' prochains jours: \n'
+ makeTitleContentFromAgendaDulibre(events_list)
let configPost = {
author: 'curator',
website: 'openstreetmap.fr',
slug: "floss_event_picture",
content_type: "text/markdown",
folder_image: process.cwd() + '/assets/',
image: "floss_default.jpg",
message: `# ${contentOfPost}
#agenda #floss #openstreetmap #hebdo`,
}
sendPostMastodon(configPost)
}
postLink();

View File

@ -63,8 +63,8 @@ export default function sendPostMastodon(config) {
if (!config.reallySendPost) {
console.log("\n\n =========== le message ne sera PAS réellement posté sur le compte @" + config.author + "@" + process.env.INSTANCE_MASTODON + " =========== \n")
console.log('configPost.folder_image', config.folder_image)
console.log('config', config)
// console.log('configPost.folder_image', config.folder_image)
console.log('config', config.message)
} else {
console.log(" ")
@ -354,12 +354,12 @@ export function findPictureAndSendPost(postContent, configPost){
* @returns {boolean}
*/
export function hasCliArgument(argument){
console.log('myArgs: ', myArgs);
return myArgs.indexOf(argument) !== -1
}
import Parser from 'rss-parser';
import moment from "moment";
let parser = new Parser();
@ -419,13 +419,19 @@ 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>0 && differenceDays < nbOfDays){
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
@ -433,10 +439,36 @@ export function getArticlesFromDaysInJson(json_content,nbOfDays){
export function diffDaysBetweenTwoDates(date1,date2) {
const diffTime = Math.abs(date2 - date1);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
// console.log(diffTime + " milliseconds");
console.log(diffDays + " days");
return diffDays;
const a = moment(date1);
const b = moment(date2);
return a.diff(b, 'days');
}
export function filterRegionAgendaDuLibreEvents(events_list, filter_critera) {
let selection = []
events_list.forEach(item=> {
if( item.region_id == filter_critera){
selection.push(item)
}
})
return selection;
}
moment.locale('fr');
export function groupEventsByDay(events_list){
let selection = {}
events_list.forEach(item=> {
let formattedDay = moment(item.start_time).format('dddd DD')
if( ! selection[formattedDay]){
selection[formattedDay] = []
}
selection[formattedDay].push(item)
})
return selection;
}

View File

@ -16,6 +16,7 @@
"http-errors": "~1.6.3",
"jade": "~1.11.0",
"mastodon": "^1.2.2",
"moment": "^2.29.4",
"morgan": "~1.9.1",
"node-fs": "^0.1.7",
"nodemon": "^2.0.19",

11
wget-log Normal file
View File

@ -0,0 +1,11 @@
--2023-03-03 17:53:55-- https://www.agendadulibre.org/events.json?city=
Résolution de www.agendadulibre.org (www.agendadulibre.org)… 176.9.141.91
Connexion à www.agendadulibre.org (www.agendadulibre.org)|176.9.141.91|:443… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : non indiqué [application/json]
Sauvegarde en : « ./assets/documents/idf_agendadulibre_coming.json »
./assets/documents/idf_agendadulibre_coming.json [<=> ] 0 --.-KB/s ./assets/documents/idf_agendadulibre_coming.json [ <=> ] 463,07K 2,25MB/s ./assets/documents/idf_agendadulibre_coming.json [ <=> ] 890,10K 2,37MB/s ds 0,4s
2023-03-03 17:53:57 (2,37 MB/s) - « ./assets/documents/idf_agendadulibre_coming.json » sauvegardé [911459]

View File

@ -2121,6 +2121,7 @@ __metadata:
https: ^1.0.0
jade: ~1.11.0
mastodon: ^1.2.2
moment: ^2.29.4
morgan: ~1.9.1
node-fetch: ^3.2.10
node-fs: ^0.1.7
@ -2354,6 +2355,13 @@ __metadata:
languageName: node
linkType: hard
"moment@npm:^2.29.4":
version: 2.29.4
resolution: "moment@npm:2.29.4"
checksum: 0ec3f9c2bcba38dc2451b1daed5daded747f17610b92427bebe1d08d48d8b7bdd8d9197500b072d14e326dd0ccf3e326b9e3d07c5895d3d49e39b6803b76e80e
languageName: node
linkType: hard
"morgan@npm:~1.9.1":
version: 1.9.1
resolution: "morgan@npm:1.9.1"