|
import streamlit as st |
|
import json |
|
import requests |
|
from newspaper import Article |
|
|
|
st.set_page_config(page_title='Short News App', |
|
layout = 'wide', |
|
initial_sidebar_state = 'expanded', |
|
menu_items={ |
|
'About':'This is a demo application with One AI', |
|
'Get help':'https://studio.oneai.com/docs', |
|
'Report a Bug':'https://discord.com/channels/941458663493746698/941458828187287603' |
|
}) |
|
st.title('Short Summary News Application Demo with OneAI') |
|
st.markdown('This application takes an input from the user and displays upto five latest news articles along with their summary. This application uses the free quota api calls.') |
|
st.sidebar.image('logo.jpg') |
|
st.sidebar.title('ONE AI') |
|
st.sidebar.markdown('[One AI](https://www.oneai.com/) is an API-first, language AI service built for developers. Embed your API to analyze, process, and transform text in your project.') |
|
st.sidebar.markdown('''It can perform several tasks like |
|
- Sentiment Analysis |
|
- Named Entity Recognition |
|
- Topic Analysis |
|
- Text Summarization |
|
- Keyword Extraction |
|
There are several more tasks that One AI can do. Please find the below links to explore more about this:''') |
|
st.sidebar.markdown('[About us](https://www.oneai.com/about-us)') |
|
st.sidebar.markdown('[Documentation](https://studio.oneai.com/docs)') |
|
st.sidebar.markdown('[Contact](https://www.oneai.com/contact-us)') |
|
st.sidebar.markdown('[Community](https://discord.com/channels/941458663493746698/942326235722309642)') |
|
st.sidebar.markdown('© 2022 Logo rights reserved to One AI') |
|
|
|
|
|
|
|
def run(): |
|
|
|
@st.cache() |
|
def summary(text1): |
|
api_key = "1c93487c-695c-4089-adfc-5e4b7623718c" |
|
url = "https://api.oneai.com/api/v0/pipeline" |
|
text = text1 |
|
headers = {'api-key':api_key, 'content-type':'application/json'} |
|
payload = {'input':text, 'input_type':'article', 'steps':[{'skill':'summarize'}]} |
|
r = requests.post(url, json=payload, headers=headers) |
|
data = r.json() |
|
return data['output'][0]['text'] |
|
|
|
def get_links(text2): |
|
url = "https://free-news.p.rapidapi.com/v1/search" |
|
querystring = {"q":text2,"lang":"en", "page":1, "page_size":5} |
|
headers = {'x-rapidapi-host': "free-news.p.rapidapi.com",'x-rapidapi-key': "375ffbaab0mshb442ffb69d6f025p117ba0jsn01e8146148e3"} |
|
response = requests.request("GET", url, headers=headers, params=querystring) |
|
response_dict = json.loads(response.text) |
|
links = [response_dict['articles'][i]['link'] for i in range(len(response_dict['articles']))] |
|
return links |
|
|
|
input_text = st.text_input('Search your favorite topic:') |
|
submitted = st.button('Submit') |
|
|
|
if submitted: |
|
links = get_links(input_text) |
|
for link in links: |
|
try: |
|
news_article = Article(link, language='en') |
|
news_article.download() |
|
news_article.parse() |
|
st.image(news_article.top_image) |
|
st.header(news_article.title) |
|
st.markdown('*Summary of the Article:*') |
|
st.markdown(summary(news_article.text)) |
|
with st.expander('Full Article'): |
|
st.markdown(news_article.text) |
|
except: |
|
print('No Results!! Please try with new search!!') |
|
if __name__ == '__main__': |
|
run() |