Du code, du communisme

Traduire du texte avec UrlLib, BeautifulSoup et Google Translation

Salut,
Qui n’a jamais voulu traduire un peu de texte automatiquement ? Des mots ou des phrase entières. On peut faire ça assez facilement avec UrlLib et BeautifulSoup.
Ouvrez un fichier test.py et collez-y le code suivant. Il faut avoir installé BeautifulSoup auparavant (easy_install BeautifulSoup ou pip install BeautifulSoup)

import urllib
import urllib2
from BeautifulSoup import BeautifulSoup
# texte à traduire
text = 'Respect my authority!'
# on créé les headers
headers = { 'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1',
'Referer': 'http://translate.google.com/'
}
# la langue originale du texte à traduire
lg_from = 'en'
# la langue dans laquelle on veut traduire l'article
lg_to = 'fr'
# paramètres à passer en POST
params = urllib.urlencode( {'hl': 'fr',
'ie': 'UTF8',
'text': text.encode('utf-8'),
'sl': lg_from,
'tl': lg_to}
)
# on formule la requête
request = urllib2.Request("http://translate.google.com/translate_t?" + urllib.urlencode({'sl': lg_from, 'tl': lg_to}), None, headers)
html = urllib2.urlopen(request, params).read()
# on récupère la traduction avec BeautifulSoup
translated_soup = BeautifulSoup(html)
print translated_soup('span', id='result_box')[0].text

Exécutons le code…

$python test.py
Respectez mon autorité!

Attention toutefois, Google n’autorise pas l’automatisation de ce genre de tâches sans passer par son API (payante).