Script working

This commit is contained in:
Phyks 2013-09-08 22:46:51 +02:00
parent 629eb6d92c
commit 036b012e32
3 changed files with 80 additions and 2 deletions

View File

@ -1,9 +1,17 @@
VelibStats
=========
Ce petit script permet de vérifier à intervalle réguliers (à lancer _via_ une tâche Cron) l'état des stations de Vélib que vous souhaitez surveiller. Il est ainsi possible de récupérer un graphe d'utilisation des stations que vous utilisez fréquemment en fonction de l'heure de la journée / du jour de la semaine etc.
Ce petit script permet de vérifier à intervalle réguliers (à lancer _via_ une tâche Cron) l'état des stations de Vélib que vous souhaitez surveiller. Il est ainsi possible de récupérer un graphe d'utilisation des stations que vous utilisez fréquemment en fonction de l'heure de la journée / du jour de la semaine etc. C'est également un petit exemple d'utilisation de l'API REST de Vélib en Python.
**Important note : Je suis en train de modifier ce script et supprimerait ce message lorsque celui-ci sera pleinement utilisable.**
## Utilisation
Ce script sert à surveiller une station et à noter les vélos disponibles et les emplacements disponibles à chaque exécution, afin d'avoir des statistiques sur les stations alentours.
Il s'utilise en ligne de commande :
````
velib_stats.py NUMERO_DE_STATION
````
Pour trouver le numéro unique identifiant la station qui vous intéresse, rendez-vous sur le site de Vélib (http://www.velib.paris.fr/Plan-stations) et recupérez le numéro de la station qui vous intéresse dans l'infobulle.
## License
Please, send me an email if you use or modify this program, just to let me know if this program is useful to anybody or how did you improve it :) You can also send me an email to tell me how lame it is ! :)

3
data/README Normal file
View File

@ -0,0 +1,3 @@
Ce répertoire sert à stocker les fichiers générés par le script.
(Non, ce README n'est pas uniquement là pour pouvoir versionner le répertoire en question avec Git) :)

67
velib_stats.py Executable file
View File

@ -0,0 +1,67 @@
#!/usr/bin/python
import sys
import datetime
import urllib3
import xml.etree.ElementTree as ET
if len(sys.argv) != 2:
exit('Usage : velib_stats.py Station_number')
# Parameters
station_number = int(sys.argv[1])
url = ('http://www.velib.paris.fr/service/stationdetails/paris/' +
str(station_number))
# Initialize libraries
http = urllib3.PoolManager()
today = datetime.datetime.now()
# Get the response from velib REST API
r = http.request('GET', url)
if r.status == 200:
station_xml = ET.fromstring(r.data)
# Get station status
write = today.strftime('%H\t\t%M')
for child in station_xml.iter('available'):
write += "\t\t"+child.text
for child in station_xml.iter('free'):
write += "\t\t"+child.text
try:
# If file exists, check last updated day
with open('data/'+str(station_number), 'r') as fh:
lines = fh.readlines()
for line in reversed(lines):
if "Jour" in line:
previous_day = line[7:]
# If today != last day of update, add a header
if (previous_day[:2] != today.strftime('%d') and
previous_day[2:] != today.strftime('%m')):
write = ("Jour = "+today.strftime('%d/%m')+"\n" +
"======================\n" +
"Heure\t\tMin\t\tDispos\t\tPlaces\n" +
write)
# Write content to file
with open('data/'+str(station_number), 'a') as fh:
fh.write("\n"+write)
print(write)
except IOError:
# If file doesn't exist, create it
write = ("Données pour la station n°"+str(station_number)+"\n" +
"==============================================\n\n" +
"Jour = "+today.strftime('%d/%m')+"\n" +
"======================\n" +
"Heure\t\tMin\t\tDispos\t\tPlaces\n" +
write)
with open('data/'+str(station_number), 'w') as fh:
fh.write(write)
print(write)
else:
exit('Erreur lors de la récupération des infos sur la station' +
station_number)