un script nodejs pour enrichir une instance mobilizon à partir d'un flux rss présentant des évènements. ce script détecte les évènements déjà existants dans l'instance mobilizon et ne crée que ceux qui n'y sont pas encore présent.
Go to file
Tykayn 5924670e17 auth infos 2022-01-15 15:35:20 +01:00
.idea update with ts-node 2022-01-10 10:29:30 +01:00
importers max restant 2022-01-13 15:34:01 +01:00
mocks add compare function for titles ADL 2022-01-13 11:18:44 +01:00
output add compare function for titles ADL 2022-01-13 11:18:44 +01:00
scrapers get json from agenda du libre 2022-01-13 10:04:14 +01:00
sources_examples gather links 2022-01-12 00:29:01 +01:00
.gitignore ignore node modules 2021-01-05 11:17:16 +01:00
LICENCE.md init parsing rss and postgres connection 2021-01-03 14:57:29 +01:00
README.md auth infos 2022-01-15 15:35:20 +01:00
config.ts add place info in description 2022-01-13 15:27:44 +01:00
index.ts hop 2022-01-13 09:35:57 +01:00
package-lock.json get json from agenda du libre 2022-01-13 10:04:14 +01:00
package.json get json from agenda du libre 2022-01-13 10:04:14 +01:00
tsconfig.json ok import but wrong title 2022-01-13 12:02:51 +01:00
utils.ts add place info in description 2022-01-13 15:27:44 +01:00
yarn.lock get json from agenda du libre 2022-01-13 10:04:14 +01:00

README.md

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.

Installation

Configurez les informations de connexion et le bearer token de l'utilisateur Mobilizon dans le fichier config.ts car ces informations ne sont pas demandées de façon interactive ou récupérées de façon automatique pour le moment.

Il faut que le serveur mobilizon soit fonctionnel (et lancé, avec mix phx.server ) et que le script node ait les accès à la base de données postgresql. Voir les paramètres dans [config.ts]. Ensuite on fait fonctionner un importateur, comme celui de l'agenda du libre.

Ce projet utilise nodejs version 16+ et typescript, pour le faire fonctionner, installer les node modules avec:

npm i

Pour comparer les évènements à ajouter et ceux déjà enregistrés, on se connecte à la BDD postgresql de l'installation mobilizon.

ajouter un cronjob qui exécute régulièrement (une fois par jour)

ts-node importers/adl.ts

Sources d'import

Actuellement ce script permet d'importer depuis les sites web suivants:

L'OSM Calendar

  • En cours de réalisation

l'agenda du libre

Prototype fonctionnel, manque les imports de coordonnées géographique ainsi que les url de site web correspondant à l'évènement. Pour s'en servir il faut d'abord récupérer un fichier json qui sera ensuite lu et importé, un par un, toutes les secondes.

Récupération des évènemnts en JSON: ts-node scrapers/ccpl.js


source: - un flux rss de l'agenda du libre, filtré sur les évènements ayant le tag "openstreetmap".

https://www.agendadulibre.org/events.rss?tag=openstreetmap
  • un json de l'API en json

https://www.agendadulibre.org/events.json

qui peut être personnalisé avec des query parameters

https://www.agendadulibre.org/events.json?city=&near%5Blocation%5D=&near%5Bdistance%5D=&region=&tag=openstreetmap


  
---


# Example de requête

Les examples sont mis dans le dossier mocks

- creation

entêtes: { "POST": { "scheme": "http", "host": "localhost:4000", "filename": "/api", "remote": { "Adresse": "127.0.0.1:4000" } } } { "En-têtes de la requête (2,286 Ko)": { "headers": [ { "name": "Accept", "value": "/" }, { "name": "Accept-Encoding", "value": "gzip, deflate" }, { "name": "Accept-Language", "value": "fr,en-US;q=0.7,en;q=0.3" }, { "name": "authorization", "value": "Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJtb2JpbGl6b24iLCJleHAiOjE2NDE4MDg1ODIsImlhdCI6MTY0MTgwNzY4MiwiaXNzIjoibW9iaWxpem9uIiwianRpIjoiYTk5YzE3OTQtNThjZS00YmFhLWJhMTktMjcwYWJjNzFkMGI4IiwibmJmIjoxNjQxODA3NjgxLCJzdWIiOiJVc2VyOjEiLCJ0eXAiOiJhY2Nlc3MifQ.9w7JaWQo7j-xHrDspWF5HqnlRBw2U0uyUxNfYbSc6NihyRLTrKFZSMAGNnR2lgZYPO8I-SgiK043wSWau1GnNQ" }, { "name": "Cache-Control", "value": "no-cache" }, { "name": "Connection", "value": "keep-alive" }, { "name": "Content-Length", "value": "4454" }, { "name": "content-type", "value": "application/json" }, { "name": "Cookie", "value": "Phpstorm-bbc0ac47=545e6b0c-6c8b-4445-b724-49644b98bd77; ph_mqkwGT0JNFqO-zX2t0mW6Tec9yooaVu7xCBlXtHnt5Y_posthog=%7B%22distinct_id%22%3A%2217c3271b31913d-00bfbf13648a128-30634644-4b9600-17c3271b31a468%22%2C%22%24device_id%22%3A%2217c3271b31913d-00bfbf13648a128-30634644-4b9600-17c3271b31a468%22%7D; BetterErrors-has-used-console=true; _session_id=eyJfcmFpbHMiOnsibWVzc2FnZSI6IklqWTNNV0ZrTVRWaVlXSm1PR1UzWkdKalpqTmlPR0k1WmpZd01qRmhObUU1SWc9PSIsImV4cCI6IjIwMjItMTEtMThUMTc6MzY6MjUuNDY0WiIsInB1ciI6ImNvb2tpZS5fc2Vzc2lvbl9pZCJ9fQ%3D%3D--dede57510dc24f4a60db7864eebd7cc14e4b957a; c1ef4f9f9c63250f85741095ba5caaee=m38cfqt2k3ulmdhvbbtk497hde; f8caea90b77b67b82dd50df996d8d229=drm4t2vb5oqa6nlj0odsmsanse; 5ae7feae4c8f8e8d33845d20924ad9ba=itfhk9eumbgthphqrgrs2gpqi2; BetterErrors-2.9.1-CSRF-Token=18e3c443-00f4-4fe1-a9a0-c65a69915fbb; _mastodon_session=K11iR4Tod4FhspHo1Bxe66Ri%2BYqvWb%2F%2BnoO9WXgbpzsmdLMM%2BV6Vso0AjUz96Tu%2BhzK2Wq8KeZxR4VBKUuFNE8v%2FSdfHX9V0cwhxDU7q%2FwDVEJsgQ8xlKiL3W0v9ab%2BPkI7tLZ7SpsJTfxdLG%2BPonKhR9zApU03Q0ep80%2Fxf6F8JUfqFAsIvBMcko2mHaK%2BU9dGcQtYAFCbijSmEegrzmV0hH57w6dKxrGONmGLNTillxvTL%2BVZagOL7xB93s31jCTIGwtp%2FwVl5GN4LO44f79s3X7kVRh74wKOC8poNyvckfMvERCxj48mnn0Vw8fIj2R341fyOmsYKFoNbeGy3Oh0yFvZxQOBKK05z8%2Bi3O%2BbkFYOYPlGGawrSRQM0cOtqq%2FPV4EZxetKDuKZsTv9og%2FvsmEJwafUekbjL2G%2BsEHf4X9js8bquVaOJH2prOWV8kgBsCH7qnggWk9T5pEjVLvRj36AbsSE627iHz8IdRp646SHKz82uO5SMEgUIsMg7dAJ8fhXIHaMvvisNNwGwkEnzNYWLSLnC3Lpxzn0%3D--cmlZi7NsmOxVoFfx--RyGe8OvwX03BezCSH9bs8g%3D%3D" }, { "name": "Host", "value": "localhost:4000" }, { "name": "Origin", "value": "http://localhost:4000" }, { "name": "Pragma", "value": "no-cache" }, { "name": "Referer", "value": "http://localhost:4000/events/create" }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0" } ] } }

---

# data scraping
Fait avec puppeteer, lancer la commande:
`
ts-node scrapers/ccpl.js
`

Pour l'agenda du libre on récupère un fichier json:

`
ts-node scrapers/adl.js
`
on peut aussi filtrer l'agenda par un certain tag en mettant un argument en plus à la commande
`
ts-node scrapers/adl.js openstreetmap
` 

# Futur
- se servir d'open event database
- pouvoir utiliser OSM Cal
- import correct des lieux depuis l'agenda du libre

---
Liens

https://www.agendadulibre.org
https://framagit.org/agenda-libre/agenda-libre-ruby

https://osmcal.org/events.ics?in=Franc
https://osmcal.org/events.rss?in=France
https://osmcal.org/events.rss
https://osmcal.org/events.ics

https://www.cc-paysdelimours.fr/agenda

https://github.com/openeventdatabase
http://api.openeventdatabase.org/event

author: tykayn https://www.cipherbliss.com/
https://mastodon.cipherbliss.com/web/@tykayn