diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-07-23 21:21:17 -0700 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2014-07-23 21:21:17 -0700 |
| commit | 2c55f4da462383ee6c7b89ea44e5c40cd5badf0c (patch) | |
| tree | 078672f2b221cfb7d0aa765f438002a277914c9f /client/modules/News.py | |
| parent | 8a5e5ed385a5c467260c2f1b20816a66cebfc1c6 (diff) | |
| download | jasper-client-2c55f4da462383ee6c7b89ea44e5c40cd5badf0c.tar.gz jasper-client-2c55f4da462383ee6c7b89ea44e5c40cd5badf0c.zip | |
Google STT works on OS X
Diffstat (limited to 'client/modules/News.py')
| -rw-r--r-- | client/modules/News.py | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/client/modules/News.py b/client/modules/News.py deleted file mode 100644 index 59495a3..0000000 --- a/client/modules/News.py +++ /dev/null @@ -1,122 +0,0 @@ -import feedparser -import app_utils -import re -from semantic.numbers import NumberService - -WORDS = ["NEWS", "YES", "NO", "FIRST", "SECOND", "THIRD"] - -PRIORITY = 3 - -URL = 'http://news.ycombinator.com' - - -class Article: - - def __init__(self, title, URL): - self.title = title - self.URL = URL - - -def getTopArticles(maxResults=None): - d = feedparser.parse("http://news.google.com/?output=rss") - - count = 0 - articles = [] - for item in d['items']: - articles.append(Article(item['title'], item['link'].split("&url=")[1])) - count += 1 - if maxResults and count > maxResults: - break - - return articles - - -def handle(text, mic, profile): - """ - Responds to user-input, typically speech text, with a summary of - the day's top news headlines, sending them to the user over email - if desired. - - Arguments: - text -- user-input, typically transcribed speech - mic -- used to interact with the user (for both input and output) - profile -- contains information related to the user (e.g., phone number) - """ - mic.say("Pulling up the news") - articles = getTopArticles(maxResults=3) - titles = [" ".join(x.title.split(" - ")[:-1]) for x in articles] - all_titles = "... ".join(str(idx + 1) + ")" + - title for idx, title in enumerate(titles)) - - def handleResponse(text): - - def extractOrdinals(text): - output = [] - service = NumberService() - for w in text.split(): - if w in service.__ordinals__: - output.append(service.__ordinals__[w]) - return [service.parse(w) for w in output] - - chosen_articles = extractOrdinals(text) - send_all = chosen_articles is [] and app_utils.isPositive(text) - - if send_all or chosen_articles: - mic.say("Sure, just give me a moment") - - if profile['prefers_email']: - body = "<ul>" - - def formatArticle(article): - tiny_url = app_utils.generateTinyURL(article.URL) - - if profile['prefers_email']: - return "<li><a href=\'%s\'>%s</a></li>" % (tiny_url, - article.title) - else: - return article.title + " -- " + tiny_url - - for idx, article in enumerate(articles): - if send_all or (idx + 1) in chosen_articles: - article_link = formatArticle(article) - - if profile['prefers_email']: - body += article_link - else: - if not app_utils.emailUser(profile, SUBJECT="", BODY=article_link): - mic.say( - "I'm having trouble sending you these articles. Please make sure that your phone number and carrier are correct on the dashboard.") - return - - # if prefers email, we send once, at the end - if profile['prefers_email']: - body += "</ul>" - if not app_utils.emailUser(profile, SUBJECT="Your Top Headlines", BODY=body): - mic.say( - "I'm having trouble sending you these articles. Please make sure that your phone number and carrier are correct on the dashboard.") - return - - mic.say("All set") - - else: - - mic.say("OK I will not send any articles") - - if 'phone_number' in profile: - mic.say("Here are the current top headlines. " + all_titles + - ". Would you like me to send you these articles? If so, which?") - handleResponse(mic.activeListen()) - - else: - mic.say( - "Here are the current top headlines. " + all_titles) - - -def isValid(text): - """ - Returns True if the input is related to the news. - - Arguments: - text -- user-input, typically transcribed speech - """ - return bool(re.search(r'\b(news|headline)\b', text, re.IGNORECASE)) |
