In this article, we will discuss how to create a Fun Fact Generator Web App in Python using the PyWebio module. Essentially, it will create interesting facts at random and display them on the web interface. This script will retrieve data fromuselessfacts.jsph.pl with the help ofGET method, and we will use therequestsand theJSON module to acquire and load the data respectively. After the data has been loaded, just pass the text within the dictionary so that we can only get the jokes. For creating a simple and interactive interface on the web, we will use thePyWebIO module.
PyWebIO contains functions for getting user input and output on the browser, turning the browser into a "rich text terminal", and can be used to build simple web applications or browser-based GUI applications. With this module, anyone can produce a web application without any prior knowledge or overhead of HTML and JS.
It can be installed using the below command:
pip install pywebio
Getting Started
Follow the below steps to create a fun factor generator web app.
- Import all the required modules
- SendGET requests with therequests.request() method, and use thejson.loads() function to parse a validJSON message and transform it to a Python Dictionary. Since therequests function will create a dictionary of items, and we only need text, so we will passresponse.text inside the json module.
- Now, because we need the text, i.e. Facts, we will pass the text within thedata listand print the facts using thestyle function defined in thepywebio module. Because data is a dictionary of random jokes involving several useless items, we will just get the text section.
Given below is the complete implementation using the above approach.
Program:
Python# Import the necessary modulesimportjsonimportrequestsfrompywebio.inputimport*frompywebio.outputimport*frompywebio.sessionimport*defget_fun_fact(_):# Clear the screenclear()# Put HTML content for the fun fact generator headerput_html('<p align="left">''<h2><img src="https://media.geeksforgeeks.org/wp-content/uploads/20210720224119/MessagingHappyicon.png" width="7%"> Fun Fact Generator</h2>''</p>')# URL from where we will fetch the dataurl="https://uselessfacts.jsph.pl/random.json?language=en"# Use GET requestresponse=requests.get(url)# Load the request in json filedata=json.loads(response.text)# We will need 'text' from the datauseless_fact=data['text']# Put the fact in blue color and increase the font sizestyle(put_text(useless_fact),'color:blue; font-size: 30px')# Put the "Click me" buttonput_buttons([dict(label='Click me',value='outline-success',color='outline-success')],onclick=get_fun_fact)# Driver Functionif__name__=='__main__':# Put a heading "Fun Fact Generator"put_html('<p align="left">''<h2><img src="https://media.geeksforgeeks.org/wp-content/uploads/20210720224119/MessagingHappyicon.png" width="7%"> Fun Fact Generator</h2>''</p>')# Hold the session for a long time and put the "Click me" buttonput_buttons([dict(label='Click me',value='outline-success',color='outline-success')],onclick=get_fun_fact)hold()
Output:
