Script working
This commit is contained in:
parent
629eb6d92c
commit
036b012e32
12
README.md
12
README.md
@ -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
3
data/README
Normal 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
67
velib_stats.py
Executable 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)
|
Loading…
Reference in New Issue
Block a user