geekks / kerlandrier

3 stars 0 forks source link

Kerlandrier

Le Kerlandrier est un site affiche. Il a vocation à agréger et mettre à disposition les événements sur le territoire de la CCA (et plus si affinités). Ce dépôt stocke du code utile pour un administrateur du projet. Ce sont essentiellement des aides à la mise à jour du contenu du projet Kerlandrier.


Le Kerlandrier utilise un calendrier Openagenda et son api pour générer son contenu à chaque ouverture de la page.

alt text

Contexte

La mise à disposition des événements se veut numérique et physique. Numérique via la page web statique du Kerlandrier. Physique via un usage Web2Print qui permet d'imprimer le contenu sur un format papier (A5, A4, A4, A0 pour les plus ambitieux).

L'agrégation des événements est l'obstacle principal à la réussite du projet.

Freins à l'agrégation

Outils du dépôt

Import via ICS (export Google Agenda, Facebook events...)

Import via csv

Détermination de location_uid via location_name

_OpenAgenda oblige à fournir un location_uid à la création d'un événement (pour les événements dits physiques)._ _Dans le cadre d'un importics (Ga, Fb events) ou d'un import csv, on ne dispose que d'un location_name_ On expérimente des fonctionnalités pour trouver le lieu dans le base de données OpenAgenda correspondant au nom du lieu trouvé dans la nature.

TODO: Apprivoiser Fuse.js, sa configuration (location, distance, threshold, ignoreLocation... ) et l'interprétation du score pour éviter les faux positifs e.g. "Fuse.js fait matcher Médiathèque Tourc'h avec Médiathèque Tregunc parce que Médiathèque Tourc'h n'existe pas dans OpenAgenda"

Import via Google doc

[TO DO]

Validation de Lieux

Installation

Installer les librairies

$ npm i

Charger les credentials

Demander à une bonne âme un .env

Pour les secrets Open Agenda (API pub & secret keys):

Utilisation

$ node ics/import_ics.js
$ node validation_locations.js
$ node csv/import_csv.js filename.csv

node ics/import_ics.js

Script qui prend l'URL d'un calendrier au format .ics/.ical et qui intéragit avec l'utilisateur pour éviter les doublons.

Détails sur la résolution des ambigüités

node csv/import_csv.js filename.csv

Script qui prend un fichier csv et crée une événement par ligne du csv. Pas d'interaction avec l'utilisateur, soit on trouve un uid-externe identique et on update, soit on crée.

Format du csv

title desc long_desc start_date end_date location_uid link img keyword location_name book_link
1 2 3 4 5 6 7 8 9 10 11
Nom principal (Très) courte description Longue description 2024-08-07T19:00:00+0200 2024-08-07T20:30:00+0200 Laisser vide si inconnu url externe d'info url image d'illustration Type d'événement Lieu format Google Agenda si pas de location uid Lien d'inscription

On construit un uid-externe (filename + row_index) pour éviter les doublons en cas d'update frénétique et incontrôlable (peu probable parce que c'est déjà chiant de le faire une fois).

resources/getOaLocation.js

Fonction qui prend une nom de lieu et qui trouve une correspondance ou crée le lieu si possible.

const { getCorrespondingOaLocation } = require("../resources/getOaLocation")

const main = async () => {
    const OaLocation = await getCorrespondingOaLocation("your_location_string")
}

main()

Contribuer

Le projet dit oui à votre assistance si vous :

Remerciements

Licence

To do