diff --git a/plugins/Gameknot.py b/plugins/Gameknot.py index 6acd9ce9b..3c5e4b350 100644 --- a/plugins/Gameknot.py +++ b/plugins/Gameknot.py @@ -115,7 +115,8 @@ class Gameknot(callbacks.PrivmsgCommandAndRegexp): _gkPlayer = re.compile(r"popd\('(Rating[^']+)'\).*?>([^<]+)<") _gkRating = re.compile(r": (\d+)[^:]+:
(\d+)[^,]+, (\d+)[^,]+, (\d+)") _gkGameTitle = re.compile(r"

(.*?)\s* \s*\(started") - _gkWon = re.compile(r'>(\S+)\s+won\s+\((\S+)\s+(\S+)\)') + _gkWon = re.compile(r'>(\S+)\s+won') + _gkReason = re.compile(r'won\s+\(\S+\s+(\S+)\)') def gameknotSnarfer(self, irc, msg, match): r"http://(?:www\.)?gameknot.com/chess.pl\?bd=\d+(&r=\d+)?" #debug.printf('Got a GK URL from %s' % msg.prefix) @@ -139,8 +140,12 @@ class Gameknot(callbacks.PrivmsgCommandAndRegexp): else: # Game is over. m = self._gkWon.search(s) - (winner, loser, reason) = m.groups() - debug.printf((winner, loser, reason)) + winner = m.group(1) + m = self._gkReason.match(s) + if m: + reason = m.group(1) + else: + reason = 'lost' if winner == 'white': toMove = '%s won, %s %s.' % (wName, bName, reason) else: diff --git a/test/test_Gameknot.py b/test/test_Gameknot.py index 41e168d2b..0e7d4dd58 100644 --- a/test/test_Gameknot.py +++ b/test/test_Gameknot.py @@ -48,6 +48,8 @@ class GameknotTestCase(PluginTestCase): def testSnarfer(self): self.assertRegexp('http://gameknot.com/chess.pl?bd=907498', '\x02ddipaolo\x02 won') + self.assertRegexp('http://gameknot.com/chess.pl?bd=955432', + '\x02ddipaolo\x02 lost')