Pythonで英語Excise第1段
ただいま英語勉強中につき、欲しいスクリプトをPythonで書きました。
第1段、リストにした単語をひたすら発音ヤツ。
使い方
administrator@CF-T4 ~ $ vi words.list administrator@CF-T4 ~ $ cat words.list | ./pronounce.py -> apple..>. -> pie..>. -> pineapple..>. -> voice..>. -> interest..>>>>>. -> help..>. -> list..>. -> I..>. -> have..>. -> textbook..>. -> ..>. -> ..>. -> ..>. -> ..>. -> ..>. -> ..>^CTraceback (most recent call last): File "./pronounce.py", line 48, in <module> main() File "./pronounce.py", line 41, in main play_mp3(url) File "./pronounce.py", line 29, in play_mp3 time.sleep(2) KeyboardInterrupt
ソースコード
#!/usr/bin/env python import urllib,urllib2 import sys,re,time,cStringIO import pymedia.audio.acodec import pymedia.muxer import pymedia.audio.sound end_point="http://dictionary.reference.com/browse/%s" def play_mp3(url): snd=dec=None res = urllib2.urlopen(url) dm = pymedia.muxer.Demuxer("mp3") s = res.read(1024*200) while len(s): frames = dm.parse(s) if not dec: dec = pymedia.audio.acodec.Decoder(dm.streams[0]) for fr in frames: r= dec.decode(fr[1]) if not snd: snd= pymedia.audio.sound.Output(r.sample_rate,r.channels, pymedia.audio.sound.AFMT_S16_LE) sys.stderr.write(">") snd.play(r.data) s=res.read(len(s)) res.close() time.sleep(2) while snd.isPlaying(): time.sleep( 0.1 ) def main(): while True: word = sys.stdin.readline().strip() sys.stderr.write(" -> "+word) res = urllib2.urlopen(end_point%urllib.quote_plus(word)) sys.stderr.write(".") try: url = urllib.unquote_plus(re.search(r"soundUrl=.*?&",res.read()).group()[9:-1]) sys.stderr.write(".") play_mp3(url) sys.stderr.write(".") sys.stderr.write("\n") except AttributeError: print "Not found!" if __name__=="__main__": main()