Jeopardy: better handle missing data

This commit is contained in:
oddluck 2020-05-29 17:21:48 +00:00
parent 909776d6eb
commit e2c34583ff

View File

@ -186,7 +186,7 @@ class Jeopardy(callbacks.Plugin):
data = requests.get( data = requests.get(
"{0}/api/random".format(self.jserviceUrl), timeout=5 "{0}/api/random".format(self.jserviceUrl), timeout=5
) )
data = json.loads(data.content) data = json.loads(data.content.decode())
else: else:
data = requests.get( data = requests.get(
"{0}/api/random?count={1}".format( "{0}/api/random?count={1}".format(
@ -194,7 +194,10 @@ class Jeopardy(callbacks.Plugin):
), ),
timeout=5, timeout=5,
) )
data = json.loads(data.content) data = json.loads(data.content.decode())
if not data:
n += 1
break
for item in data: for item in data:
if n == self.num: if n == self.num:
break break
@ -260,7 +263,10 @@ class Jeopardy(callbacks.Plugin):
self.jserviceUrl, category self.jserviceUrl, category
) )
) )
data = json.loads(data.content) data = json.loads(data.content.decode())
if not data:
k += 1
break
cluecount = data[0]["category"]["clues_count"] cluecount = data[0]["category"]["clues_count"]
if cluecount < self.num and len(self.categories) == 1: if cluecount < self.num and len(self.categories) == 1:
self.num = cluecount self.num = cluecount
@ -268,55 +274,50 @@ class Jeopardy(callbacks.Plugin):
data.extend( data.extend(
json.loads( json.loads(
requests.get( requests.get(
"{0}/api/clues?&category={1}&offset=100".format( "{0}/api/clues?&category={1}&offset=100"
self.jserviceUrl, category .format(self.jserviceUrl, category),
),
timeout=5, timeout=5,
).content ).content.decode()
) )
) )
if cluecount > 200: if cluecount > 200:
data.extend( data.extend(
json.loads( json.loads(
requests.get( requests.get(
"{0}/api/clues?&category={1}&offset=200".format( "{0}/api/clues?&category={1}&offset=200"
self.jserviceUrl, category .format(self.jserviceUrl, category),
),
timeout=5, timeout=5,
).content ).content.decode()
) )
) )
if cluecount > 300: if cluecount > 300:
data.extend( data.extend(
json.loads( json.loads(
requests.get( requests.get(
"{0}/api/clues?&category={1}&offset=300".format( "{0}/api/clues?&category={1}&offset=300"
self.jserviceUrl, category .format(self.jserviceUrl, category),
),
timeout=5, timeout=5,
).content ).content.decode()
) )
) )
if cluecount > 400: if cluecount > 400:
data.extend( data.extend(
json.loads( json.loads(
requests.get( requests.get(
"{0}/api/clues?&category={1}&offset=400".format( "{0}/api/clues?&category={1}&offset=400"
self.jserviceUrl, category .format(self.jserviceUrl, category),
),
timeout=5, timeout=5,
).content ).content.decode()
) )
) )
if cluecount > 500: if cluecount > 500:
data.extend( data.extend(
json.loads( json.loads(
requests.get( requests.get(
"{0}/api/clues?&category={1}&offset=500".format( "{0}/api/clues?&category={1}&offset=500"
self.jserviceUrl, category .format(self.jserviceUrl, category),
),
timeout=5, timeout=5,
).content ).content.decode()
) )
) )
j = 0 j = 0
@ -476,21 +477,23 @@ class Jeopardy(callbacks.Plugin):
self.reply(self.question) self.reply(self.question)
if self.timeout > 0: if self.timeout > 0:
def event(): def endEvent():
self.end() self.end()
self.endTime = time.time() + self.timeout self.endTime = time.time() + self.timeout
schedule.addEvent(event, self.endTime, "end_%s" % self.channel) schedule.addEvent(endEvent, self.endTime, "end_%s" % self.channel)
if self.showBlank: if self.showBlank:
self.hint() self.hint()
elif self.showHints or self.showTime: elif self.showHints or self.showTime:
def event(): def timedEvent():
self.timedEvent() self.timedEvent()
eventTime = time.time() + self.waitTime eventTime = time.time() + self.waitTime
if eventTime < self.endTime: if eventTime < self.endTime:
schedule.addEvent(event, eventTime, "event_%s" % self.channel) schedule.addEvent(
timedEvent, eventTime, "event_%s" % self.channel
)
elif self.showBlank: elif self.showBlank:
self.hint() self.hint()
@ -793,7 +796,7 @@ class Jeopardy(callbacks.Plugin):
), ),
timeout=5, timeout=5,
) )
data = json.loads(data.content) data = json.loads(data.content.decode())
random.shuffle(data) random.shuffle(data)
results = [] results = []
for item in data: for item in data:
@ -921,7 +924,8 @@ class Jeopardy(callbacks.Plugin):
if self.registryValue("useBold", msg.channel): if self.registryValue("useBold", msg.channel):
irc.reply( irc.reply(
ircutils.bold( ircutils.bold(
"Add category name to the start command to select a category by name." "Add category name to the start command to select a category by"
" name."
), ),
prefixNick=False, prefixNick=False,
) )
@ -1107,3 +1111,4 @@ class Jeopardy(callbacks.Plugin):
Class = Jeopardy Class = Jeopardy