# 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 --- 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 ``` --- projet en nodejs, pour le faire fonctionner, installer les node modules avec ``` npm i ``` ajouter un cronjob qui exécute régulièrement (une fois par jour) ```bash ts-node importers/adl.ts ``` # 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 ` # data import to mobilizon 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: --- author: tykayn