Spaces:
Running
Running
""" | |
Application that queries Wikipedia API and summarizes the top result. | |
""" | |
import os | |
import urllib.parse | |
import requests | |
import streamlit as st | |
from txtai.pipeline import Summary | |
class Application: | |
""" | |
Main application. | |
""" | |
SEARCH_TEMPLATE = "https://en.wikipedia.org/w/api.php?action=opensearch&search=%s&limit=1&namespace=0&format=json" | |
CONTENT_TEMPLATE = "https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=%s" | |
def __init__(self): | |
""" | |
Creates a new application. | |
""" | |
self.summary = Summary("sshleifer/distilbart-cnn-12-6") | |
def run(self): | |
""" | |
Runs a Streamlit application. | |
""" | |
st.title("Wikipedia") | |
st.markdown("This application queries the Wikipedia API and summarizes the top result.") | |
query = st.text_input("Query") | |
if query: | |
query = urllib.parse.quote_plus(query) | |
data = requests.get(Application.SEARCH_TEMPLATE % query).json() | |
if data and data[1]: | |
page = urllib.parse.quote_plus(data[1][0]) | |
content = requests.get(Application.CONTENT_TEMPLATE % page).json() | |
content = list(content["query"]["pages"].values())[0]["extract"] | |
st.write(self.summary(content)) | |
st.markdown("*Source: " + data[3][0] + "*") | |
else: | |
st.markdown("*No results found*") | |
def create(): | |
""" | |
Creates and caches a Streamlit application. | |
Returns: | |
Application | |
""" | |
return Application() | |
if __name__ == "__main__": | |
os.environ["TOKENIZERS_PARALLELISM"] = "false" | |
# Create and run application | |
app = create() | |
app.run() | |