Очевидно, что проблема не в проблеме App Engine, но она связана с тем, как URL-адрес Google Translate обрабатывает различные пользовательские агенты.
Пример:
#!/usr/bin/env python
#coding=utf-8
import urllib
class MyOpener(urllib.FancyURLopener):
version = "App/1.7" #doesn't work
version = "Mozilla/4.0 (MSIE 6.0; Windows NT 5.0)2011-03-10 15:38:34" #works
def textToSpeech(text, languageCode='en'):
url = "http://translate.google.com/translate_tts?tl=%s&q=%s" % (languageCode, urllib.quote(text))
myopener = MyOpener()
return myopener.open(url, 'rb').read()
open('urllib.mp3', 'wb').write(textToSpeech('vår', 'no'))
При использовании строки пользовательского агента Firefox для MyOpener все работает как положено, но при использовании другой пользовательской строки возвращаемый звук не правильный.