~ / teaching / Python / tps / 4-json /

TP4 - Service web avec JSON

© 2010—2013 - Renaud Blanch

Le but de ce TP est de construire un programme en utilisant un ensemble de bibliothèques standards de Python.

Vous allez réaliser un client au dictionnaire WordReference qui affichera dans la console les traductions aux termes d'une recherche passée en arguments du programme :

% ./translate.py grin
traductions principales
0. grin /vi/ (smile):
	faire un large sourire, arborer un large sourire, sourire de toutes ses dents /vi/ (en montrant les dents)
1. grin /n/ (smile):
	large sourire /nm/
	rictus /nm/ (crispé)
		

Requête HTTP

Pour récupérer les traductions, vous allez utiliser l'API de recherche de WordReference qui fonctionne par un GET http et retourne un document json. Par exemple, pour faire la requête "grin", il faudra récupérer le document json à l'adresse : <http://api.wordreference.com/a7c51/json/enfr/grin>.

Créez un script translate.py qui affiche le document après l'avoir récupéré (urlopen). Vous construirez la recherche à partir des termes passés sur la ligne de commande (quote). Veillez à utiliser le bon encoding pour décoder les octets contenus dans la réponse en texte.

Décodage JSON

Utilisez la bibliothèque json pour interpréter le contenu retourné par la requête. Parcourez les éléments "termi" de cette réponse et affichez pour chacun les différentes traductions sur le modèle ci-dessous:

% ./translate.py going
traductions principales
0. going /v pres p/ (of go):
	aller /vi/
1. going /adj/ (prevalent):
	normal /adj/
	usuel, coutumier /adj/
traductions secondaires
0. going /adj/ (equipment: functioning):
	marcher /vi/
1. going /adj/ (active):
2. going /adj/ (operating successfully):
3. going /adj/ (leaving):
	partir /vi/
4. going /n/ (departure):
	départ /nm/
5. going /n/ (trail or route conditions):
	état du terrain, état du sol /nm/
	route /nf/
6. going /n/ (progress):
	avancer /vi/
	ne pas aller /vi/
	avoir du mal /vi/
	dur /adj/ (familier)
		

Bonus

Gérez les arguments passés en ligne de commande (en utilisant par exemple la bibliothèque getopt) pour que le programme offre les options suivantes :

% ./translate.py --help
Usage: ./translate.py [-hi:o:]  <t0 ...>
	-h --help          this help message
	-i --original <li> original language (defaults to en)
	-o --target   <lo> target language (defaults to fr)
	<t0>, ...          query terms
		

mise à jour : 24 novembre 2013