diff --git a/README.md b/README.md index baca991..1ad10ef 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ # Event feeder de Mobilizon + Script nodejs permettant de lire un flux RSS présentant des évènements et de les ajouter à une base de données postgresql d'une instance mobilizon. Veillez à bien configurer les accès postgres dans la config du script. Actuellement ce script permet d'importer depuis: -* l'agenda du libre +- l'agenda du libre --- @@ -18,7 +19,8 @@ https://www.agendadulibre.org/events.rss?tag=openstreetmap --- projet en nodejs, pour le faire fonctionner, installer les node modules avec -``` + +``` npm i ``` @@ -27,6 +29,7 @@ ajouter un cronjob qui exécute régulièrement (une fois par jour) ```angular2html node index.ts ``` -------- + +--- author: tykayn diff --git a/index.ts b/index.ts index 7c3f4ea..0302dbf 100644 --- a/index.ts +++ b/index.ts @@ -17,21 +17,40 @@ const config = { console.log("configMobilizon", config); -let localMobilizonEvents = []; +let localMobilizonEventsByTitle = []; +// trouver si un évènement existe déjà par son titre +// TODO à affiner au delà du titre const doesThisEventAlreadyExistInLocalEvents = (rssEvent) => { - // TODO trouver si un évènement existe déjà par son titre - // return localMobilizonEvents.find(rssEvent); - return true; + console.log("doesThisEventAlreadyExistInLocalEvents", rssEvent.title); + const eventAlreadyExists = + -1 !== localMobilizonEventsByTitle.indexOf(rssEvent.title); + if (!eventAlreadyExists) { + console.log("ajouter l event ", rssEvent.title); + console.log(" ", rssEvent.content); + addEventQuery(rssEvent); + } }; -const createEventQueries = ""; +let createEventQueries = ""; +let counterOfEventsToAdd = 0; const addEventQuery = (rssEvent) => { - re; + if (!createEventQueries) { + createEventQueries = + "INSERT INTO events(title, description, organizer_actor_id) VALUES "; + } + if (counterOfEventsToAdd) { + createEventQueries += ` , `; + } + createEventQueries += `(${rssEvent.title}, ${rssEvent.content}, ${config.feeder_mobilizon_user_id})`; + + counterOfEventsToAdd++; }; const runCreationQuery = async () => { if (createEventQueries) { - const res = await client.query("SELECT * from events"); + console.log("⚙️ createEventQueries", createEventQueries); + + // const res = await client.query(createEventQueries+';'); } }; @@ -43,34 +62,43 @@ const client = new Client({ }); (async () => { - console.log("lecture du flux rss : " + config.rss_feed_url); + console.log("⌛ interroger la BDD mobilizon postgresql"); + + await client.connect(); + console.log("✅ OK connecté à postgresql"); + console.log(" "); + const res = await client.query("SELECT * from events"); + console.log("💾 évènements enregistrés dans mobilizon : ", res.rows.length); // Hello world! + + res.rows.forEach((item) => { + localMobilizonEventsByTitle.push(item.title); + + console.log(" 🟢 ", item.begins_on, item.ends_on, item.title, item.url); + }); + + console.log("⌛ lecture du flux rss : " + config.rss_feed_url); let feed = await parser.parseURL(config.rss_feed_url); - console.log("flux rss obtenu"); + console.log("✅ flux rss obtenu"); console.log(feed.title); - console.log("interprétation des évènements"); + console.log("⚙️ interprétation des évènements"); + console.log( + "⌛ trouver les évènements qui ne font pas partie de la BDD mobilizon postgresql" + ); feed.items.forEach((rssEvent) => { console.log(rssEvent.title); // console.log('item', item) doesThisEventAlreadyExistInLocalEvents(rssEvent); }); - console.log("interroger la BDD mobilizon postgresql"); + console.log("➕ rajouter les évènements manquants à la base mobilizon"); - await client.connect(); - console.log("OK connecté à postgresql"); - console.log(" "); - const res = await client.query("SELECT * from events"); - console.log("évènements enregistrés dans mobilizon : ", res.rows.length); // Hello world! + runCreationQuery(); - res.rows.forEach((item) => { - console.log(item.begins_on, item.ends_on, item.title, item.url); - }); + console.log(" ---------- "); + console.log(counterOfEventsToAdd, " évènements ajoutés "); + console.log(" ---------- "); + console.log("✅ ça c'est fait "); await client.end(); - - console.log( - "trouver les évènements qui ne font pas partie de la BDD mobilizon postgresql" - ); - console.log("rajouter les évènements manquants à la base mobilizon"); })(); diff --git a/node_modules/event_example.json b/node_modules/event_example.json index 2e6be57..3de04bb 100644 --- a/node_modules/event_example.json +++ b/node_modules/event_example.json @@ -4,12 +4,8 @@ description: '

zefergergtgh

', organizer_actor_id: '4', physical_address_id: '3', - inserted_at: 2020-12-06T09 - : - 19: 58.000Z, - updated_at: 2020-12-29T16 - : - 47: 42.000Z, + inserted_at: '2020-12-06T09:19: 58.000Z ', + updated_at: '2020-12-29T16 : 47: 42.000Z ', url: 'http://mobilizon.local/events/2e25bad2-d0ea-4e29-95c1-df67dcb44bb2', local: true, uuid: '2e25bad2-d0ea-4e29-95c1-df67dcb44bb2', @@ -19,12 +15,8 @@ visibility: 'public', status: 'confirmed', join_options: 'free', - begins_on: 2020-12-17T22 - : - 00: 00.000Z, - ends_on: 2020-12-17T23 - : - 00: 00.000Z, + begins_on: '2020-12-17T22 : 00: 00.000Z ', + ends_on: '2020-12-17T23 : 00: 00.000Z ', publish_at: null, category: 'meeting', slug: null, diff --git a/rss/events.rss b/rss/events.rss new file mode 100644 index 0000000..0192fb5 --- /dev/null +++ b/rss/events.rss @@ -0,0 +1,74 @@ + + + + L'Agenda du Libre + Software, Arts, Data, Hardware, Contents, Commons, Internet... + https://www.agendadulibre.org/ + fr + https://www.agendadulibre.org/ + + + + + + + + + + + + 23132@agendadulibre.org + 2021-01-19T18:30:00Z + 45.7637 4.85393 + Lyon: OpenStreetMap, rencontre mensuelle (virtuelle), On Tuesday 19 January 2021 from 18h30 to 20h00. + https://www.agendadulibre.org/events/23132 + <div class="description"><p>Discussion entre contributeurs lyonnais du projet OSM et acteurs intéressés.<img style="float: right;" src="https://s14-eu5.startpage.com/cgi-bin/serveimage?url=http%3A%2F%2Ft0.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcRKcDs0W2r3RXrACBdppzKQ2Cw0uhVU_NsKFbqvRQ20ly_oLw6l&amp;sp=0761befdfdcd8210ab196d5acdc8bb6b&amp;anticache=760091" width="132" height="132" /></p><p>Toute personne intéressée par OpenStreetMap peut s'intégrer à cette rencontre, tout particulièrement les débutants qui souhaiteraient des conseils pour se lancer.</p><p><strong>En raison de la pandémie, il n'est pas possible de se réunir au Tuba : la réunion aura lieu en ligne sur Jitisi Meet à partir de 18h30.</strong></p><p><strong>&gt;&gt; <a href="https://wiki.openstreetmap.org/wiki/FR:Lyon/R%C3%A9union_19_janvier_2021">Ordre du jour de la réunion sur le wiki OSM </a></strong></p></div> + +

Discussion entre contributeurs lyonnais du projet OSM et acteurs intéressés.

Toute personne intéressée par OpenStreetMap peut s'intégrer à cette rencontre, tout particulièrement les débutants qui souhaiteraient des conseils pour se lancer.

En raison de la pandémie, il n'est pas possible de se réunir au Tuba : la réunion aura lieu en ligne sur Jitisi Meet à partir de 18h30.

>> Ordre du jour de la réunion sur le wiki OSM

]]> +
+
+ + 23073@agendadulibre.org + 2021-01-27T17:30:00Z + 48.6633 6.17287 + Vandoeuvre-lès-Nancy: Rencontre : OpenStreetMap, On Wednesday 27 January 2021 from 17h30 to 20h00. + https://www.agendadulibre.org/events/23073 + <p style="margin-bottom: 0cm; line-height: 100%;" align="left">Le groupe local Nancy - Meurthe-et-Moselle d’OpenStreetMap France, <strong>vous propose de participer aux réunions mensuelles ouvertes à tou·te·s</strong> !</p><p style="margin-bottom: 0cm; line-height: 100%;" align="left"><img style="display: block; min-width: 20px !important; min-height: 20px !important; border: 1px solid rgba(0, 0, 0, 0.1) !important; background: #ffffff url('/img_99070424511608111600034_0') repeat scroll 0% 0% !important; margin-left: auto; margin-right: auto;" src="https://fccl-vandoeuvre.fr/divers/communication/associations/affiche_openstreetmap_nancy.jpg" alt="Affiche d'OSM Nancy" width="283" height="400" /></p><p style="margin-bottom: 0cm; line-height: 100%;" align="left">Avec <a href="https://www.openstreetmap.org" target="_blank" rel="noopener">OpenStreetMap</a>, participez à la construction d’une carte en ligne libre et gratuite, partagée avec le monde entier!</p><p><strong>Inscription aux ateliers</strong></p><p>La participation est limitée au nombre de places. Pré-inscription possible depuis le site web <a title="Site web FCCL" href="https://fccl-vandoeuvre.fr" target="_blank" rel="noopener">FCCL</a>.</p><p><strong>Accès locaux</strong></p><p>Le bâtiment est fermé au public à partir de 18 h, téléphonez au 03 83 51 80 40 en arrivant sur place.</p> + + Le groupe local Nancy - Meurthe-et-Moselle d’OpenStreetMap France, vous propose de participer aux réunions mensuelles ouvertes à tou·te·s !

Affiche d'OSM Nancy

Avec OpenStreetMap, participez à la construction d’une carte en ligne libre et gratuite, partagée avec le monde entier!

Inscription aux ateliers

La participation est limitée au nombre de places. Pré-inscription possible depuis le site web FCCL.

Accès locaux

Le bâtiment est fermé au public à partir de 18 h, téléphonez au 03 83 51 80 40 en arrivant sur place.

]]> +
+
+ + 22016@agendadulibre.org + 2021-03-12T19:00:00Z + 48.8153 2.32051 + Montrouge: OpenstreetMap réunion mensuelle, On Friday 12 March 2021 from 19h00 to 22h30. + https://www.agendadulibre.org/events/22016 + <div class="description"><p><strong><img style="float: right;" src="https://s14-eu5.startpage.com/cgi-bin/serveimage?url=https%3A%2F%2Fencrypted-tbn0.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcSc1fpwBjFifHIxK4jangmwnjwaQdP50p6hreBwHQQZx0QD8eVl%26s&amp;sp=c9c66d95d6fa8ef6272f4a1501519022&amp;anticache=713313" width="88" height="88" />Tous les seconds jeudi du mois</strong> a lieu la rencontre mensuelle des contributeurs <strong>habitants Montrouge et alentours</strong> au <a href="https://osm.org/node/4554276739"><span title="browse node 4554276739">Schmilblick</span></a> à partir de 19h.</p><p>Ce bar solidaire est situé au 94 avenue Henri Ginoux (station Vélib et parking vélo juste en face, bus 128 et 68 et métro Mairie de Montrouge à 4 min à pied).</p><p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://lh3.googleusercontent.com/x7hxZEmgtAb6Pi2T7PBORp79erKblIB_kiexjhwJ8WFeGJQTGFsIKbhTvwb2SWS6v7EbntCsS4virqOJgk6iFsguXQp1k5TBwmNPIIoJ-yT_rZeszxC8BGd0B2-k5z1R0Dl3ZWlsy5A=w797-h445-no" alt="" width="650" height="363" /></p><p>Cette rencontre permettra de discuter des projets en cours et d'envisager des projets locaux dont la coordination se déroule depuis plus d'un an sur la page <a title="Montrouge" href="https://wiki.openstreetmap.org/wiki/Montrouge">Montrouge</a> et sur la <a title="Talk:Montrouge" href="https://wiki.openstreetmap.org/wiki/Talk:Montrouge">page de discussion associée</a>.</p><p>Comme toujours, les débutants et simples curieux sont les bienvenus.</p><p>--</p><p>Agenda des événements à venir : <a href="https://wiki.openstreetmap.org/wiki/Montrouge#Rencontres_locales">https://wiki.openstreetmap.org/wiki/Montrouge#Rencontres_locales</a></p><p>Mailing-list OpenStreetMap Paris Sud : <a href="https://listes.openstreetmap.fr/wws/info/local-paris-sud">https://listes.openstreetmap.fr/wws/info/local-paris-sud</a> (moins de 10 messages par mois)</p></div> + +

Tous les seconds jeudi du mois a lieu la rencontre mensuelle des contributeurs habitants Montrouge et alentours au Schmilblick à partir de 19h.

Ce bar solidaire est situé au 94 avenue Henri Ginoux (station Vélib et parking vélo juste en face, bus 128 et 68 et métro Mairie de Montrouge à 4 min à pied).

Cette rencontre permettra de discuter des projets en cours et d'envisager des projets locaux dont la coordination se déroule depuis plus d'un an sur la page Montrouge et sur la page de discussion associée.

Comme toujours, les débutants et simples curieux sont les bienvenus.

--

Agenda des événements à venir : https://wiki.openstreetmap.org/wiki/Montrouge#Rencontres_locales

Mailing-list OpenStreetMap Paris Sud : https://listes.openstreetmap.fr/wws/info/local-paris-sud (moins de 10 messages par mois)

]]> +
+
+ + 22015@agendadulibre.org + 2021-02-12T19:00:00Z + 48.8153 2.32051 + Montrouge: OpenstreetMap réunion mensuelle, On Friday 12 February 2021 from 19h00 to 22h30. + https://www.agendadulibre.org/events/22015 + <div class="description"><p><strong><img style="float: right;" src="https://s14-eu5.startpage.com/cgi-bin/serveimage?url=https%3A%2F%2Fencrypted-tbn0.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcSc1fpwBjFifHIxK4jangmwnjwaQdP50p6hreBwHQQZx0QD8eVl%26s&amp;sp=c9c66d95d6fa8ef6272f4a1501519022&amp;anticache=713313" width="88" height="88" />Tous les seconds jeudi du mois</strong> a lieu la rencontre mensuelle des contributeurs <strong>habitants Montrouge et alentours</strong> au <a href="https://osm.org/node/4554276739"><span title="browse node 4554276739">Schmilblick</span></a> à partir de 19h.</p><p>Ce bar solidaire est situé au 94 avenue Henri Ginoux (station Vélib et parking vélo juste en face, bus 128 et 68 et métro Mairie de Montrouge à 4 min à pied).</p><p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://lh3.googleusercontent.com/x7hxZEmgtAb6Pi2T7PBORp79erKblIB_kiexjhwJ8WFeGJQTGFsIKbhTvwb2SWS6v7EbntCsS4virqOJgk6iFsguXQp1k5TBwmNPIIoJ-yT_rZeszxC8BGd0B2-k5z1R0Dl3ZWlsy5A=w797-h445-no" alt="" width="650" height="363" /></p><p>Cette rencontre permettra de discuter des projets en cours et d'envisager des projets locaux dont la coordination se déroule depuis plus d'un an sur la page <a title="Montrouge" href="https://wiki.openstreetmap.org/wiki/Montrouge">Montrouge</a> et sur la <a title="Talk:Montrouge" href="https://wiki.openstreetmap.org/wiki/Talk:Montrouge">page de discussion associée</a>.</p><p>Comme toujours, les débutants et simples curieux sont les bienvenus.</p><p>--</p><p>Agenda des événements à venir : <a href="https://wiki.openstreetmap.org/wiki/Montrouge#Rencontres_locales">https://wiki.openstreetmap.org/wiki/Montrouge#Rencontres_locales</a></p><p>Mailing-list OpenStreetMap Paris Sud : <a href="https://listes.openstreetmap.fr/wws/info/local-paris-sud">https://listes.openstreetmap.fr/wws/info/local-paris-sud</a> (moins de 10 messages par mois)</p></div> + +

Tous les seconds jeudi du mois a lieu la rencontre mensuelle des contributeurs habitants Montrouge et alentours au Schmilblick à partir de 19h.

Ce bar solidaire est situé au 94 avenue Henri Ginoux (station Vélib et parking vélo juste en face, bus 128 et 68 et métro Mairie de Montrouge à 4 min à pied).

Cette rencontre permettra de discuter des projets en cours et d'envisager des projets locaux dont la coordination se déroule depuis plus d'un an sur la page Montrouge et sur la page de discussion associée.

Comme toujours, les débutants et simples curieux sont les bienvenus.

--

Agenda des événements à venir : https://wiki.openstreetmap.org/wiki/Montrouge#Rencontres_locales

Mailing-list OpenStreetMap Paris Sud : https://listes.openstreetmap.fr/wws/info/local-paris-sud (moins de 10 messages par mois)

]]> +
+
+ + 22014@agendadulibre.org + 2021-01-12T19:00:00Z + 48.8153 2.32051 + Montrouge: OpenstreetMap réunion mensuelle, On Tuesday 12 January 2021 from 19h00 to 22h30. + https://www.agendadulibre.org/events/22014 + <div class="description"><p><strong><img style="float: right;" src="https://s14-eu5.startpage.com/cgi-bin/serveimage?url=https%3A%2F%2Fencrypted-tbn0.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcSc1fpwBjFifHIxK4jangmwnjwaQdP50p6hreBwHQQZx0QD8eVl%26s&amp;sp=c9c66d95d6fa8ef6272f4a1501519022&amp;anticache=713313" width="88" height="88" />Tous les seconds jeudi du mois</strong> a lieu la rencontre mensuelle des contributeurs <strong>habitants Montrouge et alentours</strong> au <a href="https://osm.org/node/4554276739"><span title="browse node 4554276739">Schmilblick</span></a> à partir de 19h.</p><p>Ce bar solidaire est situé au 94 avenue Henri Ginoux (station Vélib et parking vélo juste en face, bus 128 et 68 et métro Mairie de Montrouge à 4 min à pied).</p><p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://lh3.googleusercontent.com/x7hxZEmgtAb6Pi2T7PBORp79erKblIB_kiexjhwJ8WFeGJQTGFsIKbhTvwb2SWS6v7EbntCsS4virqOJgk6iFsguXQp1k5TBwmNPIIoJ-yT_rZeszxC8BGd0B2-k5z1R0Dl3ZWlsy5A=w797-h445-no" alt="" width="650" height="363" /></p><p>Cette rencontre permettra de discuter des projets en cours et d'envisager des projets locaux dont la coordination se déroule depuis plus d'un an sur la page <a title="Montrouge" href="https://wiki.openstreetmap.org/wiki/Montrouge">Montrouge</a> et sur la <a title="Talk:Montrouge" href="https://wiki.openstreetmap.org/wiki/Talk:Montrouge">page de discussion associée</a>.</p><p>Comme toujours, les débutants et simples curieux sont les bienvenus.</p><p>--</p><p>Agenda des événements à venir : <a href="https://wiki.openstreetmap.org/wiki/Montrouge#Rencontres_locales">https://wiki.openstreetmap.org/wiki/Montrouge#Rencontres_locales</a></p><p>Mailing-list OpenStreetMap Paris Sud : <a href="https://listes.openstreetmap.fr/wws/info/local-paris-sud">https://listes.openstreetmap.fr/wws/info/local-paris-sud</a> (moins de 10 messages par mois)</p></div> + +

Tous les seconds jeudi du mois a lieu la rencontre mensuelle des contributeurs habitants Montrouge et alentours au Schmilblick à partir de 19h.

Ce bar solidaire est situé au 94 avenue Henri Ginoux (station Vélib et parking vélo juste en face, bus 128 et 68 et métro Mairie de Montrouge à 4 min à pied).

Cette rencontre permettra de discuter des projets en cours et d'envisager des projets locaux dont la coordination se déroule depuis plus d'un an sur la page Montrouge et sur la page de discussion associée.

Comme toujours, les débutants et simples curieux sont les bienvenus.

--

Agenda des événements à venir : https://wiki.openstreetmap.org/wiki/Montrouge#Rencontres_locales

Mailing-list OpenStreetMap Paris Sud : https://listes.openstreetmap.fr/wws/info/local-paris-sud (moins de 10 messages par mois)

]]> +
+
+