Giter Club home page Giter Club logo

metis-calendars's Introduction

À propos du projet

Metis Calendars est un projet open source sous licence GNU General Public License v3.0 développé par Zinedine GALOUZ pour Sciences Po. Celui-ci permet de récupérer et d'agréger des emplois du temps à partir de sources multiples.

Les calendriers générés sont disponibles à l'adresse suivante : https://medialab.github.io/metis-calendars/

Utilisation

Pour choisir les emplois du temps à générer et les sources depuis lesquelles récupérer les calendriers, il faut éditer le fichier liste.yaml. Il est possible de hiérarchiser les emplois du temps en sous-dossiers, voir exemple ci-dessous :

L1:
  Physique:
    - https://licence.math.univ-paris-diderot.fr/data/6361.ics
    - https://licence.math.univ-paris-diderot.fr/data/6292.ics
  Mathematiques:
    - https://licence.math.univ-paris-diderot.fr/data/6362.ics
    - https://licence.math.univ-paris-diderot.fr/data/6292.ics
L2:
  Physique:
    - https://licence.math.univ-paris-diderot.fr/data/6361.ics
    - https://licence.math.univ-paris-diderot.fr/data/6292.ics
  Mathematiques:
    - https://licence.math.univ-paris-diderot.fr/data/6362.ics
    - https://licence.math.univ-paris-diderot.fr/data/6292.ics

Fonctionnement

Lecture de liste.yaml

La lecture du fichier de configuration liste.yaml se fait grâce au fichier yamlReader.js. Celui-ci parcourt l'arborescence spécifiée dans le fichier de configuration, crée les dossiers et les fichiers appropriés et génère une structure JSON utilisable par le module de traitement de calendriers.

Traitement de calendriers

Le traitement de calendriers est géré par le fichier calendarHandler.js. Celui-ci récupère la structure JSON générée par yamlReader et effectue des requêtes HTTP vers les sources demandées. Les fichiers ical résultants sont générés par agrégation des sources et un fichier all.ical agrégeant toutes les sources est également généré.

Mise à jour automatisée

La mise à jour des calendriers est gérée par une Github Action définie dans main.yml. Celle-ci lance le script une fois toutes les heures et commit le résultat s'il a changé. Il est également possible de lancer l'action manuellement si besoin.

metis-calendars's People

Contributors

boogheta avatar zinedine-galouz avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

diegofromparis

metis-calendars's Issues

Script de collecte et agrégation

Un script qui lit la config, et pour chaque cursus/annee collecte toutes les urls sources et les agrège en un fichier ical déposé dans un dossier à la racine du repo sous une arborescence type "cursus1/ 1A.ics 2A.ics 3A.ics" etc de sorte à ce qu'une fois github-pages activé sur la branche main on puisse accéder aux calendriers aux adresses https://medialab.github.io/metis-calendars/cursus1/1A.ics

  • Ajouter un champ NAME à l'object VCALENDAR contenant le Cursus et l'Année (cf spec https://icalendar.org/RFC-Specifications/iCalendar-RFC-7986/ )
  • Générer les dossiers des années/cursus directement à la racine du repo plutot que dans un dossier "Liste"
  • Prévoir de gérer des noms d'années/cursus éventuellement non acceptables en web (accents, espaces => utiliser une forme de slug ?)

Configuration YAML

Un fichier de configuration idéalement en Yaml à la racine du répo éditable facilement par les admins directement depuis l'interface de Github structuré en

cursus1:
  1A:
    - url1
    - url2
    - url3
  2A:
...

Peut-etre prévoir pour chaque url un système d'options suivant les besoins d'accès éventuels aux différentes sources

Un embed web des calendriers sur la page index.html

  • Embarquer dans la page index un calendrier navigable pour chaque ical choisissable via des menus dropdown ou des boutons, par exemple en réutilisant une librairie JS open source d'affichage de calendar
  • Au clic sur un master dans l'interface existante, charger le calendrier dans la partie basse ou droite de la page et indiquer le lien vers le fichier ical téléchargeable correspondant

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.