1 changed files with 71 additions and 0 deletions
@ -0,0 +1,71 @@ |
|||
#!/usr/bin/env python3.8 |
|||
# -*- coding: UTF-8 -*- |
|||
""" |
|||
Create description for a word to be added to the word list |
|||
Usage: addword.py <word> |
|||
""" |
|||
import sys |
|||
import re |
|||
import urllib.request |
|||
from bs4 import BeautifulSoup |
|||
|
|||
def main(): |
|||
"""Generate the information with pronunciations for a word to be added to the word list""" |
|||
if len(sys.argv) != 2: |
|||
print(__doc__) |
|||
sys.exit(1) |
|||
word = sys.argv[1] |
|||
prons = get_pronunciation_files(word) |
|||
phones = get_phonetic_transcriptions(word) |
|||
britsh_eng = '[🔊]('+prons[0]+')' + ' ' + phones[0] |
|||
american_eng = '[🔊]('+prons[1]+')' + phones[1] |
|||
line = '| ' + word + ' | ' + britsh_eng + ' | ' + american_eng + ' | ' + ' ' + '|' |
|||
print(line) |
|||
|
|||
def get_pronunciation_files(word): |
|||
"""Return the word's prounciation files from youdao.com if available |
|||
(British English and American English) as a list""" |
|||
word = word.strip() |
|||
prons = [] |
|||
url = "http://dict.youdao.com/dictvoice?audio="+word+"&type=1" |
|||
try: |
|||
urllib.request.urlopen(url).read() |
|||
prons.append(url) |
|||
except urllib.error.URLError: |
|||
return prons |
|||
|
|||
url = re.sub("type=1", "type=2", url) |
|||
try: |
|||
urllib.request.urlopen(url).read() |
|||
prons.append(url) |
|||
return prons |
|||
except urllib.error.URLError: |
|||
return prons |
|||
|
|||
def get_phonetic_transcriptions(word): |
|||
"""Return the word's phonetic transcriptions from youdao.com if available |
|||
British English and American English as a list""" |
|||
word = word.strip() |
|||
url = "http://dict.youdao.com/w/eng/"+word |
|||
phones = [] |
|||
try: |
|||
response = urllib.request.urlopen(url).read() |
|||
except urllib.error.URLError: |
|||
return phones |
|||
soup = BeautifulSoup(response, "html.parser") |
|||
spans = soup.find_all('span', {'class' : 'pronounce'}) |
|||
lines = [span.get_text() for span in spans] |
|||
match = re.findall(r'\[.+\]', lines[0]) |
|||
if match: |
|||
phones.append(match[0]) |
|||
else: |
|||
phones.append(" ") |
|||
match = re.findall(r'\[.+\]', lines[1]) |
|||
if match: |
|||
phones.append(match[0]) |
|||
else: |
|||
phones.append(" ") |
|||
return phones |
|||
|
|||
if __name__ == '__main__': |
|||
main() |
Loading…
Reference in new issue