Skip to content

Commit 59beb1c

Browse files
harshitdx29swapagarwal
authored andcommitted
Add news module (#147)
* Add new feature for latest news * Adding main module and test module * Bug Fixes related to search query * Review changes
1 parent c5fb166 commit 59beb1c

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

config.py

+1
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@
1616
TIME_ZONE_DB_API_KEY = '<<TIME_ZONE_DB_API_KEY>>'
1717
WORDS_API_KEY = '<<WORDS_API_KEY>>'
1818
YOUTUBE_DATA_API_KEY = '<<YOUTUBE_DATA_API_KEY>>'
19+
NEWS_API_KEY = '<<NEWS_API_KEY>>'

modules/src/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
'joke',
1414
'movie',
1515
'music',
16+
'news',
1617
'quote',
1718
'request',
1819
'time',

modules/src/news.py

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import requests
2+
import config
3+
import os
4+
from templates.generic import *
5+
from templates.text import TextTemplate
6+
7+
NEWS_API_KEY = os.environ.get('NEWS_API_KEY', config.NEWS_API_KEY)
8+
9+
def process(input, entities=None):
10+
output = {}
11+
source = 'google-news'
12+
try:
13+
r = requests.get('https://newsapi.org/v1/articles?source=' + source + '&apiKey=' + NEWS_API_KEY)
14+
data = r.json()
15+
assert(len(data["articles"]) > 0)
16+
template = GenericTemplate()
17+
for article in data['articles']:
18+
title = article['title']
19+
description = article['description']
20+
url = article['url']
21+
buttons = ButtonTemplate()
22+
buttons.add_web_url('Powered by NewsAPI', 'https://newsapi.org/')
23+
template.add_element(title=title, item_url=url, subtitle=description, buttons=buttons.get_buttons())
24+
output['input'] = input
25+
output['output'] = template.get_message()
26+
output['success'] = True
27+
except:
28+
error_message = 'I couldn\'t perform that action.'
29+
error_message += '\nPlease ask me something else, like:'
30+
error_message += '\n - latest news'
31+
error_message += '\n - world news'
32+
error_message += '\n - news'
33+
output['error_msg'] = TextTemplate(error_message).get_message()
34+
output['success'] = False
35+
return output

modules/tests/test_news.py

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import modules
2+
3+
def test_news():
4+
assert('news' == modules.process_query('news')[0])
5+
assert('news' == modules.process_query('latest news')[0])
6+
assert('news' == modules.process_query('world news')[0])
7+
assert('news' != modules.process_query('something random')[0])

0 commit comments

Comments
 (0)