Hi Fidel, thanks for your sharing script.
the main reason why i raise this topic here is that i hope some one could 
make an powerful dictionary plugin for Leo which could benefit those whose 
English language is poor.  
in addition, i hope someone to add the auto spell check function to Leo, 
with this function, with this function user could easily see that which 
word is a typo(i.e. a wave line under the typo). it would better if it with 
English grammar check function.    I know there is aleady a spell check 
funtion (press F7), and it seems this need to be improved.

As for the code i pasted before, it is only a small button to look up the 
selected text in the body pane and print the meaning retrieved from google 
dictionary. 

there is indeed a problem with the decoding of phonetic string.  
you can check the 2 examples of the output from the script, the phonetic 
string seems unreadable, like " /iˈvalyo͞oˌāt/ ", and "/ˈanlˌīz/".  

the expecting format should be "['ænәlaiz]" and [i'væljueit].

any one could help fix this decoding issue.. thanks 


"""
>>>
http://www.gstatic.com/dictionary/static/sounds/de/0/analyze.mp3

an·a·lyze | Verb /ˈanlˌīz/

Examine methodically and in detail the constitution or structure of 
(something, esp. information), typically for purposes of explanation and 
interpretation
>>>
http://www.gstatic.com/dictionary/static/sounds/de/0/evaluate.mp3

e·val·u·ate | Verb /iˈvalyo͞oˌāt/

Form an idea of the amount, number, or value of; assess
"""

On Wednesday, May 29, 2013 1:32:07 PM UTC+2, Fidel Pérez wrote:
>
> Hi Bob:
> Could you specify what it does until now? where it fails? which is the 
> step you would like to improve?
>
> On a sidenote here is a script which will get text, and transform it into 
> MP3 through google's translator (its instant, as soon as you use it you 
> have the files in your computer). Im posting it because its 'similar' to 
> yours, and maybe you can find some information on it.
>
> #
>> http://glowingpython.blogspot.com.es/2012/11/text-to-speech-with-correct-intonation.html
>> import urllib2
>> import os
>>
>>
>> def parseText(text):
>> """ returns a list of sentences with less than 100 caracters """
>> toSay = []
>> punct = [',',':',';','.','?','!'] # punctuation
>> words = text.split(' ')
>> sentence = ''
>> for w in words:
>> if w[len(w)-1] in punct: # encountered a punctuation mark
>> if (len(sentence)+len(w)+1 < 100): # is there enough space?
>> sentence += ' '+w # add the word
>> toSay.append(sentence.strip()) # save the sentence
>> else:
>> toSay.append(sentence.strip()) # save the sentence
>> toSay.append(w.strip()) # save the word as a sentence
>> sentence = '' # start another sentence
>> else:
>> if (len(sentence)+len(w)+1 < 100):
>> sentence += ' '+w # add the word
>> else:
>> toSay.append(sentence.strip()) # save the sentence
>> sentence = w # start a new sentence
>> if len(sentence) > 0:
>> toSay.append(sentence.strip())
>> return toSay
>> text = 'Think of color, pitch, loudness, heaviness, and hotness. Each is 
>> the topic of a branch of physics.'
>> g.es(text)
>> toSay = parseText(text)
>> google_translate_url = 'http://translate.google.com/translate_tts'
>> opener = urllib2.build_opener()
>> opener.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; 
>> Windows NT 5.0)')]
>> for i,sentence in enumerate(toSay):
>> print i,len(sentence), sentence
>> response = opener.open(google_translate_url+'?q='+sentence.replace(' 
>> ','%20')+'&tl=en')
>> ofp = open(str(i)+'speech_google.mp3','wb')
>> ofp.write(response.read())
>> ofp.close()
>> os.system('cvlc --play-and-exit -q '+str(i)+'speech_google.mp3')
>
>   
>
> On Wednesday, May 29, 2013 12:36:47 PM UTC+2, Bob Wong wrote:
>>
>> i have been with Leo for a short time, but i realized that Leo is very 
>> powerful than what i can imagine.
>> with an need, i really hope someone could share the highlights to make it 
>> possible.  very appreciated!
>>
>> I had tried to figure out this function, so i wrote a small button to 
>> work with google dict api. let me share the code as below. hope to get some 
>> response/suggestions to improve this. I assume there must be a better 
>> approach to fulfill this function.   :) don't laugh at my poor code, as i 
>> am just new to python and Leo. 
>>
>> >>>>>>>>>code to work with google dictionary>>>>>>>>
>>
>> # -*- coding: utf8 -*- 
>> @language python
>>
>> # 
>> http://www.jsmix.com/blog/others/google-dictionary-api-and-voice-library.html
>> g.redirectStderr() # Redirect stderr to the current log pane.
>> g.redirectStdout() # Redirect stdout to the current log pane.
>>
>> import codecs
>> import socket
>> import urllib2
>>
>> timeout = 5 # timeout en seconds
>> socket.setdefaulttimeout(timeout)
>> w = c.frame.body.bodyCtrl # Leo's body pane.
>> urlStr_1 = '
>> http://www.google.com/dictionary/json?callback=dict_api.callbacks.id100&q=
>> '
>> urlStr_2 = w.getSelectedText().strip().lower().replace(' ','_') # Return 
>> selected text if any. default = ''
>> urlStr_3 = '&sl=en&tl=en&restrict=pr%2Cde&client=te'
>>
>> # initialize the str in case no data from google
>>
>> g_query = urlStr_2
>> g_meaning_1st = 'NO-meaning'
>> g_type = 'NO-type'
>> g_mp3url= 'NO-mp3'
>> g_phonetic = 'NO-phonetic'
>>
>> try:
>>     
>>     assert len(urlStr_2) > 1
>>                 #get dict html data from google, it is a JSON
>>     req = urllib2.Request(urlStr_1 + urlStr_2 + urlStr_3)
>>     handle = urllib2.urlopen(req)
>>     webStr = handle.read()
>>                 #webStr = urlopen(urlStr_1 + urlStr_2 + urlStr_3, 
>> timeout=5).read()
>>                 # convert str to a dict obj
>>     dictinfo = eval(webStr[25:-10])
>>                 #dict.keys()=['query', 'webDefinitions', 
>> 'targetLanguage', 'primaries', 'sourceLanguage']
>>                 #dictinfo['primaries'][0] #dict.keys()= ['type', 'terms', 
>> 'entries']
>>     
>>     g_query = dictinfo['primaries'][0]['terms'][0]['text'] 
>>     g_meaning_1st = 
>> dictinfo['primaries'][0]['entries'][1]['terms'][0]['text']
>>     g_type  = dictinfo['primaries'][0]['terms'][0]['labels'][0]['text']
>>     g_mp3url= dictinfo['primaries'][0]['terms'][2]['text'] 
>>     g_phonetic = dictinfo['primaries'][0]['terms'][1]['text'] 
>>
>> except AssertionError:
>>     g.es('No Text Selected!',color='red',tabName='Dict')
>> except TypeError:
>>     g.es('webStr is abnormal!',color='red',tabName='Dict')
>> except IndexError:
>>     g.es('No mp3/phonetic!',color='red',tabName='Dict')
>> except SyntaxError:
>>     g.es('Nothing from Google, or illegal 
>> query!',color='red',tabName='Dict')
>> except KeyError:
>>     g.es('No definition found!',color='red',tabName='Dict')
>>
>> except:
>>     raise
>>
>> else:
>>     Body = g_mp3url + '\n\n' + g_query + ' | ' + g_type + ' ' + 
>> g_phonetic + '\n\n' + g_meaning_1st #define output format
>>     
>>     for p in c.all_unique_positions():
>>         if p.h == '@button DictGoogle @keys Alt-d':
>>             child = p.insertAsLastChild()
>>             child.h = g_query + ' | ' + g_type 
>>             child.b = Body.decode("utf-8")
>>             c.redraw()
>>             break
>>
>> finally:
>>     Body = g_mp3url + '\n\n' + g_query + ' | ' + g_type + ' ' + 
>> g_phonetic + '\n\n' + g_meaning_1st
>>     c.frame.log.selectTab('Dict')
>>     g.es('>>>',tabName='Dict')
>>     g.es(Body.decode("utf-8"),color='blue',tabName='Dict')
>>     
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/leo-editor?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to