Modification de Usage de l'API

Aller à la navigation Aller à la recherche
Attention : vous n’êtes pas connecté(e). Votre adresse IP sera visible de tout le monde si vous faites des modifications. Si vous vous connectez ou créez un compte, vos modifications seront attribuées à votre propre nom d’utilisateur(rice) et vous aurez d’autres avantages.

La modification peut être annulée. Veuillez vérifier les différences ci-dessous pour voir si c’est bien ce que vous voulez faire, puis publier ces changements pour finaliser l’annulation de cette modification.

Version actuelle Votre texte
Ligne 1 : Ligne 1 :
== Informations générales ==
== Informations générales ==
''' Par manque d'utilisateurs, l'API Poids-Plume n'est plus maintenue, et donc potentiellement inutilisable '''


L'API (Application Programming Interface) Poids-Plume permet d'accéder aux données en utilisant des outils informatiques, plutôt que via les visualisations proposées sur le site web. C'est le point d'entrée privilégié si vous souhaitez analyser les données du projet, ou encore télécharger les données de votre mangeoire.  
L'API (Application Programming Interface) Poids-Plume permet d'accéder aux données en utilisant des outils informatiques, plutôt que via les visualisations proposées sur le site web. C'est le point d'entrée privilégié si vous souhaitez analyser les données du projet, ou encore télécharger les données de votre mangeoire.  
Ligne 23 : Ligne 21 :
* '''sig''': Un HMAC sha-256 de votre requête et de votre clé d'API (voir code bash ci-dessous)
* '''sig''': Un HMAC sha-256 de votre requête et de votre clé d'API (voir code bash ci-dessous)


La code de réponse http de la page peut être 400 (Bad request) si les paramètres ci-dessus sont mal définis, 403 (Forbidden) si l'accès est refusé ou 404 si aucune donnée correspondante n'a été trouvée. Un message plus explicite expliquant pourquoi la requête a raté est renvoyé. Si la requête est bien formulée, un code de réponse 200 (OK) est renvoyé, et les données sont transférées au client.  
La code de réponse http de la page peut être 400 (Bad request) si les paramêtres ci-dessus sont mal définis, 403 (Forbidden) si l'accès est refusé ou 404 si aucune donnée correspondante n'a été trouvée. Un message plus explicite expliquant pourquoi la requête a raté est renvoyé si besoin. Si la requête en bien formulée, un code de réponse 200 (OK) est renvoyé, et les données sont transférées au client.  


Concrètement, les données se présentent sous la forme d'un fichier '.xz' contenant des données tabulaires au format texte (les valeurs étant séparées par des tabulations, voir aussi les informations sur les [[Données_téléchargées|données téléchargées]]). Il faut extraire  
Concrètement, les données se présentent sous la forme d'un fichier '.xz' contenant des données tabulaires au format texte (les valeurs étant séparées par des tabulations, voir aussi les informatiosn sur les [[Données_téléchargées|données téléchargées]]). Il faut extraire  
ce fichier (avec '''tar -xf''' par exemple), puis les données peuvent être (enfin) lues avec votre logiciel préféré. En pratique, on utilisera la plupart du temps des outils intermédiaires pour effectuer ce travail.  
ce fichier (avec '''tar -xf''' par exemple), puis les données peuvent être (enfin) lues avec votre logiciel préféré. En pratique, on utilisera la plupart du temps des outils intermédiaire pour effectuer ce travail.  


=== Outils ===  
=== Outils ===  
Ligne 33 : Ligne 31 :


Le script bash ci-dessous devrait pouvoir vous permettre d'effectuer une requête de données via l'API en téléchargeant des données pour une combinaison mangeoire/date/type de données. Il faut remplacer les champs '''API_USER''' et '''API_KEY''' par leurs valeurs (attention à ne pas faire fuiter ces informations publiquement !). Il peut servir également d'une implémentation de référence pour d'autres implémentations.
Le script bash ci-dessous devrait pouvoir vous permettre d'effectuer une requête de données via l'API en téléchargeant des données pour une combinaison mangeoire/date/type de données. Il faut remplacer les champs '''API_USER''' et '''API_KEY''' par leurs valeurs (attention à ne pas faire fuiter ces informations publiquement !). Il peut servir également d'une implémentation de référence pour d'autres implémentations.
Attention, le script ne gère pas les erreurs (absence de données, mauvaise authentification, etc.), et n'extrait pas le fichier '.xz' téléchargé. Libre à vous de l'améliorer ! ;)


  #!/bin/bash
  #!/bin/bash
Ligne 65 : Ligne 61 :
   --output "${DATATYPE}_${FEEDER}_$DATE.xz" \
   --output "${DATATYPE}_${FEEDER}_$DATE.xz" \
   "https://data.poids-plume.fr/data.php"
   "https://data.poids-plume.fr/data.php"
==== Paquet R pour l'API Poids-Plume ====
Un [https://gitlab.com/poidsplume/poidsplumer paquet R] est disponible pour utiliser l'API Poids-Plume. Si vous utilisez R, vous pourrez alors charger les données dans votre environnement de travail.
L'installation du paquet se fait via '''devtools''':
install.packages("devtools")
devtools::install_git("https://gitlab.com/poidsplume/poidsplumer")
Vous pouvez ensuite charger le paquet et utiliser ses fonctionnalités. La fonction principale qui vous intéressera le plus probablement est la fonction '''get_data()''', qui prend en argument la mangeoire, la date (format YYYY-MM-DD) et le type de données demandé, et qui charge les données correspondantes dans votre environnement de travail. Il faut au préalable que vous renseigniez votre nom d'utilisateur et votre clé d'API. Un petit exemple minimal serait le suivant:
library(poidsplumer) # On charge le paquet d'accès aux données
pplume_api_set(user = <user>, key = <key>) # Remplacez par vos informations
   
   
  # On fait la requête. my_data est un data.frame qui contient les données correspondantes (ou NULL si aucune données n'a pu être téléchargée)
  tar -xf "${DATATYPE}_${FEEDER}_$DATE.xz"
my_data <- get_data("carduelis", "2020-12-20", "rawdata")
 
A noter que vous pouvez aussi charger votre nom d'utilisateur et votre clé d'API à partir d'un fichier externe, en utilisant '''pplume_api_set_from_file(<file>)'''. Cela vous permettra de partager le code de vos analyses sans risque de faire fuiter vos informations secrètes !
 
La fonction '''get_data()''' utilise un cache pour ne pas télécharger plusieurs fois les mêmes données depuis le serveur web - merci d'en profiter afin de diminuer la charge du serveur ;)
 
Les quelques fonctions du paquet R sont documentées (voir par exemple '''?get_data'''). Un exemple de fichier Rmarkdown est également installée avec le paquet. Vous pouvez obtenir son chemin d'accès sur votre ordinateur à l'aide de la commande suivante:
 
file.path(path.package("poidsplumer"), "inst", "doc", "api_example.Rmd")
Notez bien que toutes les contributions à Poids-plume sont considérées comme publiées sous les termes de la Creative Commons Attribution (voir Poids-plume:Copyrights pour plus de détails). Si vous ne désirez pas que vos écrits soient modifiés et distribués à volonté, merci de ne pas les soumettre ici.
Vous nous promettez aussi que vous avez écrit ceci vous-même, ou que vous l’avez copié d’une source placée dans le domaine public ou d’une ressource libre similaire. N’utilisez aucun travail sous droits d’auteur sans autorisation expresse !
Annuler Aide pour la modification (s’ouvre dans une nouvelle fenêtre)