Dictionary is defined by Merriam-Webster as “a reference book listing alphabetically the words of one language and showing their meanings or translations in another language”. Using python I’m creating a real-time dictionary with pronunciation.
Below is the concept:
- User API calls to pull the data. (I’m using Oxford Dictionaries - here) in this example.
- Understand the data that has been pulled in – , list or dict.
- Understand the type of data we need and extract it.
- Create a UI screen with buttons like “Get Meaning”, to fetch the meaning of the word, “Pronunciation” , to play sound and “Clear”, to erase the content and make room to request for new
Dependencies:
- Using Python 3.9 (Latest version) -download here
- Use Tkinter for GUI (pip install tkinter)
- Use requests for pull data via API call (pip install requests
- Use JSON for parsing, slicing and dicing api data in JSON format ( pip install JSON)
- User playsound for playing sound (.mp3 in our case) (pip install playsound)
Final Output
Showing the meaning of the word
Output in Spanish (language_code = "es")
Output in French (language_code = "fr")
List of Languages Supported -here
Code Snippet
# Constants
appid = "Your AppID"
appkey = "Your Key"
headers = {'app_id': app_id, 'app_key': app_key}
language_code = "en-us" # Change language if you want to use
a different once
# Pull data via URL
url = "https://od-
api.oxforddictionaries.com/api/v2/entries/"
+ language_code + "/" + getword.lower()
r_status = requests.get(url, headers=headers)
# This checks if the api is live or not <Response [200]>
print(r_status)
# Additional varibles for readability
r_mean = r_status
r_audio = r_mean
Buttons
# Create a button widget
# The get_word()
b1 = Button(window,text="Get Meaning",command=get_word)
b1.grid(row=0,column=2)
# The delete function is called when the button is pushed
b2 = Button(window,text="Clear",command=delete)
b2.grid(row=1,column=2)
# The get_audio function is called when the button is
pushed
b3 =Button(window,text="Pronunciations",command=get_audio)
b3.grid(row=4,column=1)
# Create four empty text boxes t1
t1 = Text(window,height=2,width=45,font = ("Times New Roman",12) )
t1.grid(row=3,column=1, pady = 5, padx = 2.5)
t1.config(wrap=WORD)
Functions
# Logic to pull meaning of the word
def get_word():
#Multiple for loops increases the running time.
for result in mean_json['results'][0]['lexicalEntries'][0]['entries']:
for sense in result['senses']:
mean_list.append(sense['definitions'][0])
for i in mean_list:
return (i)
# Logic to pull audio file
def get_audio():
for result in audio_json['results'][0]['lexicalEntries'][0]['entries']:
for pronunciations in result['pronunciations']:
audio_list.append(pronunciations)
Code will soon be added to Github.
Note: Thanks to Tim Wildsmith for this photo via @unsplash 🎁
Top comments (0)