redone site object and working dialog for news and search
This commit is contained in:
parent
35f1cb3831
commit
3f0e7937c7
Binary file not shown.
|
|
@ -11,33 +11,83 @@ ask = Ask(app, "/")
|
||||||
logging.getLogger('flask_ask').setLevel(logging.DEBUG)
|
logging.getLogger('flask_ask').setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
|
||||||
@ask.intent('GolemSearch',
|
@ask.intent('searchon', mapping={'site': 'Site'}, default={'site': 'golem'})
|
||||||
mapping={'site': 'Site', 'searchTerm':'Topic'},
|
def search_on(site):
|
||||||
default={'site': 'golem', 'searchTerm':''})
|
try:
|
||||||
def search(site, searchTerm):
|
session.attributes["siteName"] = site
|
||||||
print(site, searchTerm)
|
except:
|
||||||
|
print("error")
|
||||||
|
|
||||||
|
if "searchTerm" in session.attributes and session.attributes["searchTerm"] is not None and "lastCall" in session.attributes and session.attributes["lastCall"] == "searchfor":
|
||||||
|
searchTerm = session.attributes["searchTerm"]
|
||||||
|
session.attributes["searchTerm"] = None
|
||||||
|
return search_for(searchTerm)
|
||||||
|
if "lastCall" in session.attributes and session.attributes["lastCall"] == "news":
|
||||||
|
return news(site)
|
||||||
|
session.attributes["lastCall"] = "searchon"
|
||||||
|
return question("Wonach?")
|
||||||
|
|
||||||
|
@ask.intent('searchfor', mapping={'searchTerm':'Topic'}, default={'searchTerm':''})
|
||||||
|
def search_for(searchTerm):
|
||||||
|
try:
|
||||||
|
site = session.attributes["siteName"]
|
||||||
|
except:
|
||||||
|
site = None
|
||||||
|
|
||||||
|
if site == "golem":
|
||||||
obj = site2.Golem()
|
obj = site2.Golem()
|
||||||
|
elif site is None:
|
||||||
|
session.attributes["searchTerm"] = searchTerm
|
||||||
|
session.attributes["lastCall"] = "searchfor"
|
||||||
|
return question("Auf welcher Seite wollen Sie hiernach Suchen?")
|
||||||
|
else:
|
||||||
|
return statement("error")
|
||||||
|
|
||||||
articles, links = obj.search_article(searchTerm)
|
articles, links = obj.search_article(searchTerm)
|
||||||
|
|
||||||
session.attributes["lastSearch"] = links
|
session.attributes["lastSearch"] = links
|
||||||
response = "Für welchen der folgenden Artikel interessieren Sie sich?"
|
response = "Für welchen der folgenden Artikel interessieren Sie sich?"
|
||||||
for i in range(0, 5):
|
|
||||||
|
if len(articles) > 0:
|
||||||
|
for i in range(0, max(5, len(articles))):
|
||||||
response += articles[i]
|
response += articles[i]
|
||||||
|
else:
|
||||||
|
return question("Dazu konnte nichts gefunden werden. Möchten Sie nach etwas anderem Suchen?")
|
||||||
|
|
||||||
return question(response)
|
session.attributes["lastCall"] = "searchfor"
|
||||||
|
|
||||||
@ask.intent('News',
|
return question(response + "noch etwas?")
|
||||||
mapping={'site': 'Site'},
|
|
||||||
default={'site': 'golem'})
|
@ask.intent('News', mapping={'site': 'Site'}, default={'site': ''})
|
||||||
def news(site):
|
def news(site):
|
||||||
print(site)
|
|
||||||
|
if site == "golem":
|
||||||
obj = site2.Golem()
|
obj = site2.Golem()
|
||||||
|
elif site == '':
|
||||||
|
session.attributes["lastCall"] = "news"
|
||||||
|
return question("Auf welcher Seite wollen Sie hiernach Suchen?")
|
||||||
|
else:
|
||||||
|
return statement("error")
|
||||||
|
|
||||||
news = obj.get_news()
|
news = obj.get_news()
|
||||||
|
|
||||||
response = ""
|
response = ""
|
||||||
for i in range(0, 5):
|
for i in range(0, 5):
|
||||||
response += news[i]
|
response += news[i] + ". "
|
||||||
|
|
||||||
|
session.attributes["lastCall"] = "news"
|
||||||
|
return statement(response)
|
||||||
|
|
||||||
|
@ask.intent('SearchTwo', mapping={'number': 'Nummer'}, default={'number': 1})
|
||||||
|
def search_answer(number):
|
||||||
|
print(number)
|
||||||
|
obj = site2.Golem()
|
||||||
|
|
||||||
|
art = obj.read_headlines(session.attributes["lastSearch"][int(number)-1])
|
||||||
|
response = ""
|
||||||
|
for element in art:
|
||||||
|
response += element + " "
|
||||||
|
|
||||||
|
session.attributes["lastCall"] = "search2"
|
||||||
return statement(response)
|
return statement(response)
|
||||||
|
|
||||||
@ask.intent('AMAZON.HelpIntent')
|
@ask.intent('AMAZON.HelpIntent')
|
||||||
|
|
@ -45,9 +95,13 @@ def help():
|
||||||
speech_text = 'Dieser Skill erlaubt es Ihnen einige Nachrichten Websites zu nutzen'
|
speech_text = 'Dieser Skill erlaubt es Ihnen einige Nachrichten Websites zu nutzen'
|
||||||
return statement(speech_text)
|
return statement(speech_text)
|
||||||
|
|
||||||
|
@ask.intent('AMAZON.FallbackIntent')
|
||||||
|
def fallback():
|
||||||
|
return statement("ein fehler ist aufgetreten")
|
||||||
|
|
||||||
@ask.launch
|
@ask.launch
|
||||||
def launch():
|
def launch():
|
||||||
return search("golem", "gaming")
|
return question("Was möchten Sie tun?")
|
||||||
|
|
||||||
@ask.session_ended
|
@ask.session_ended
|
||||||
def session_ended():
|
def session_ended():
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,17 @@ import re
|
||||||
|
|
||||||
|
|
||||||
class Site:
|
class Site:
|
||||||
url = ""
|
siteName = ""
|
||||||
|
baseURL = ""
|
||||||
|
searchURLString = ""
|
||||||
|
xPath = dict()
|
||||||
|
xPath["searchArticle"] = ""
|
||||||
|
xPath["searchLinks"] = ""
|
||||||
|
xPath["newsArticle"] = ""
|
||||||
|
xPath["readHeadlineTitle"] = ""
|
||||||
|
xPath["readHeadlineText"] = ""
|
||||||
|
xPath["readArticleText"] = ""
|
||||||
|
|
||||||
header_values = {
|
header_values = {
|
||||||
'Connection:' : 'Keep-alive',
|
'Connection:' : 'Keep-alive',
|
||||||
'name' : 'Michael Foord',
|
'name' : 'Michael Foord',
|
||||||
|
|
@ -15,44 +25,31 @@ class Site:
|
||||||
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def search_article(self, topic):
|
def search_article(self, topic):
|
||||||
return False
|
searchURL = self.searchURLString + topic.replace(" ", "+")
|
||||||
def get_news(self):
|
|
||||||
return False
|
|
||||||
def read_article(self, url):
|
|
||||||
return False
|
|
||||||
def read_headlines(self, url):
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
class Golem(Site):
|
|
||||||
url = "golem"
|
|
||||||
def search_article(self, topic):
|
|
||||||
searchURL = "https://suche.golem.de/search.php?l=10&q=" + topic.replace(" ", "+")
|
|
||||||
site = requests.get(searchURL)
|
site = requests.get(searchURL)
|
||||||
tree = html.fromstring(site.content)
|
tree = html.fromstring(site.content)
|
||||||
|
|
||||||
articles = tree.xpath('//span[@class="dh2 head2"]/text()')
|
articles = tree.xpath(self.xPath["searchArticle"])
|
||||||
links = tree.xpath('//ol[@class="list-articles"]/li/header//@href')
|
links = tree.xpath(self.xPath["searchLinks"])
|
||||||
return articles, links
|
return articles, links
|
||||||
|
|
||||||
def get_news(self):
|
def get_news(self):
|
||||||
searchURL = "https://www.golem.de/"
|
searchURL = self.baseURL
|
||||||
site = requests.get(searchURL)
|
site = requests.get(searchURL)
|
||||||
tree = html.fromstring(site.content)
|
tree = html.fromstring(site.content)
|
||||||
|
|
||||||
articles = tree.xpath('//h2[@class="head2"]/text()')
|
articles = tree.xpath(self.xPath["newsArticle"])
|
||||||
return articles
|
return articles
|
||||||
|
|
||||||
def read_headlines(self, url):
|
def read_headlines(self, url):
|
||||||
site = requests.get(url)
|
site = requests.get(url)
|
||||||
tree = html.fromstring(site.content)
|
tree = html.fromstring(site.content)
|
||||||
|
|
||||||
title = tree.xpath('//header/h1/span[@class="dh1 head5"]/text()')
|
title = tree.xpath(self.xPath["readHeadlineTitle"] )
|
||||||
title += tree.xpath('//header/p/text()')
|
title += tree.xpath(self.xPath["readHeadlineText"])
|
||||||
return title
|
return title
|
||||||
|
|
||||||
def read_article(self, url):
|
def read_article(self, url):
|
||||||
|
|
@ -60,5 +57,18 @@ class Golem(Site):
|
||||||
tree = html.fromstring(site.content)
|
tree = html.fromstring(site.content)
|
||||||
|
|
||||||
title = self.read_headlines(url)
|
title = self.read_headlines(url)
|
||||||
title += tree.xpath('//div[@class="formatted"]/p/text()')
|
title += tree.xpath(self.xPath["readArticleText"])
|
||||||
return title
|
return title
|
||||||
|
|
||||||
|
|
||||||
|
class Golem(Site):
|
||||||
|
siteName = "golem"
|
||||||
|
baseURL = "https://www.golem.de/"
|
||||||
|
searchURLString = "https://suche.golem.de/search.php?l=10&q="
|
||||||
|
Site.xPath["searchArticle"] = '//span[@class="dh2 head2"]/text()'
|
||||||
|
Site.xPath["searchLinks"] = '//ol[@class="list-articles"]/li/header//@href'
|
||||||
|
Site.xPath["newsArticle"] = '//h2[@class="head2"]/text()'
|
||||||
|
Site.xPath["readHeadlineTitle"] = '//header/h1/span[@class="dh1 head5"]/text()'
|
||||||
|
Site.xPath["readHeadlineText"] = '//header/p/text()'
|
||||||
|
Site.xPath["readArticleText"] = '//div[@class="formatted"]/p/text()'
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue