Skip to content

Détection d'ateliers d'intelligence collective sensibilisant aux questions climatiques 🌍 et sociales 🧑‍🤝‍🧑

License

Notifications You must be signed in to change notification settings

trouver-une-fresque/trouver-une-fresque-scraper

Repository files navigation

trouver-une-fresque

Trouver une Fresque est un outil open source permettant de détecter les ateliers disponibles dans votre département.

Les données sont extraites des billetteries officielles via la technique du scraping. La validité des adresses est vérifiée en utilisant les données d'OpenStreetMap.

Si vous utilisez ce code, merci de respecter la charte de Nominatim.

🌍 Organisateurs: signaler un problème

Si vous êtes l'organisateur d'un atelier Fresque et que votre évènement n'apparaît pas sur la plateforme Trouver une Fresque, merci de lire le tutoriel à destination des organisateurs de fresques.

Ouvrez une issue Github si vous souhaitez signaler un problème non couvert dans le tutoriel, ou suggérer l'intégration d'un nouvel atelier.

Les ateliers actuellement supportés sont listés sur la feuille de route.

🤖 Développeurs: installation

Le scraping est effectué en utilisant Selenium, qui s'appuie sur geckodriver pour afficher les données à récupérer. Notre outil peut être installé sur un Raspberry Pi sans problème.

Avec nix (méthode recommandée)

Nix est un gestionnaire de paquets multiplateforme qui vise à permettre la reproducibilité, la robustesse, la portabilité et la stabilité des systèmes d'information.

Installer nix

### Via https://zero-to-nix.com/start/install (recommandé)
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

### Via https://devenv.sh/getting-started/
## Linux
sh <(curl -L https://nixos.org/nix/install) --daemon

## macOS
sh <(curl -L https://nixos.org/nix/install)

## Windows (WSL2)
sh <(curl -L https://nixos.org/nix/install) --no-daemon

Installer devenv

## General
nix-env -iA devenv -f https://github.com/NixOS/nixpkgs/tarball/nixpkgs-unstable

## NixOS
# Add the following to your configuration.nix somewhere
environment.systemPackages = [ 
  pkgs.devenv
];

Tout est prêt ! Utilisez la commande devenv shell pour commencer à développer.

Manuellement

Cette méthode d'installation n'est pas recommandée. Préférez l'utilisation de Nix, qui vous facilitera la tâche et garantira d'avoir toutes les dépendances nécessaires pour lancer le scraper.

Téléchargez la version la plus récente de geckodriver, puis extrayez le binaire geckodriver dans un dossier bin/ (ou n'importe où sur votre système).

Les librairies suivantes doivent être installées sur votre système:

apt-get install firefox-esr libpq-dev python3-dev

Enfin, téléchargez les dépendances du scraper :

make install

🤖 Développeurs: utilisation

Configuration

Renommez le fichier de configuration config.json.dist en config.json et renseignez les champs.

{
    "webdriver": "",
    "host" : "",
    "port" : "",
    "user" : "",
    "psw"  : "",
    "database": "",
    "timezone": "Europe/Paris"
}

Le champ webdriver est à renseigner avec le chemin vers le binaire geckodriver dans le cas d'une installation sans Nix (manuelle) uniquement.

Lancer le scraping

python scrape.py

À la fin du scraping, un fichier JSON nommé avec le format events_20230814_153752.json est créé dans le dossier results/.

L'option --headless exécute le scraping en mode headless, et --push-to-db pousse les résultats du fichier json de sortie dans la base de données en utilisant les identifiants définis dans config.json.

Base de données

Nous utilisons Supabase pour persister les données scrapées, une alternative open source à Firebase qui fournit une base de données Postgres gratuitement.

Login to the CLI and start the database. When starting the database, if file supabase/seed.sql is present, the INSERT statements will be executed to populate the database with testing data.

supabase login
supabase init
supabase start

The supabase/tables.sql contains SQL statements allowing to create the required tables.

To push some data into the database, use the following command:

python push_to_db.py --input results/output.json

This command will perform the following actions:

  • All events are inserted into the historical table events_scraped. Setting most_recent=False, but maybe the call to update_most_recent() below will change this.
  • Delete all events from events_future before inserting them again, so that they are updated. Setting most_recent=True.
  • The most_recent attribute of events in events_scraped are set to True if the following conditions are met:
    • A query identifies rows in the events_scraped table that do not have a corresponding entry in the events_future table.
    • For these rows, it finds the most recent scrape_date for each id and workshop_type.
    • It then updates the most_recent column to TRUE for these rows, but only if the start_date of the event is in the past.

Comment contribuer

Pour proposer une modification, un ajout, ou décrire un bug sur l'outil de détection, vous pouvez ouvrir une issue ou une Pull Request avec vos modifications.

Avant de développer, merci d'installer le hook git en suivant les instructions listées dans le fichier CONTRIBUTING. Pour le code en Python, veillez à respecter le standard PEP8 avant de soumettre une Pull Request. La plupart des IDEs et éditeurs de code modernes proposent des outils permettant de mettre en page votre code en suivant ce standard automatiquement.

About

Détection d'ateliers d'intelligence collective sensibilisant aux questions climatiques 🌍 et sociales 🧑‍🤝‍🧑

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Languages