More Razz - First pass through hh that doesn't crash
This commit is contained in:
parent
8b9b77edb9
commit
d500a9f9c5
|
@ -42,7 +42,7 @@ class FullTilt(HandHistoryConverter):
|
||||||
self.re_PostBB = re.compile('.*\n(?P<PNAME>.*) posts (the big blind of )?\$?(?P<BB>[.0-9]+)')
|
self.re_PostBB = re.compile('.*\n(?P<PNAME>.*) posts (the big blind of )?\$?(?P<BB>[.0-9]+)')
|
||||||
self.re_BringIn = re.compile('.*\n(?P<PNAME>.*) brings in for \$?(?P<BRINGIN>[.0-9]+)')
|
self.re_BringIn = re.compile('.*\n(?P<PNAME>.*) brings in for \$?(?P<BRINGIN>[.0-9]+)')
|
||||||
self.re_PostBoth = re.compile('.*\n(?P<PNAME>.*) posts small \& big blinds \[\$? (?P<SBBB>[.0-9]+)')
|
self.re_PostBoth = re.compile('.*\n(?P<PNAME>.*) posts small \& big blinds \[\$? (?P<SBBB>[.0-9]+)')
|
||||||
self.re_HeroCards = re.compile('.*\nDealt\sto\s(?P<PNAME>.*)\s\[(?P<CARDS>.*)\]( [(?P<NEWCARD>.*])?')
|
self.re_HeroCards = re.compile('.*\nDealt\sto\s(?P<PNAME>.*)\s\[(?P<CARDS>.*)\]( \[(?P<NEWCARD>.*)\])?')
|
||||||
self.re_Action = re.compile('.*\n(?P<PNAME>.*)(?P<ATYPE> bets| checks| raises to| calls| folds)(\s\$(?P<BET>[.\d]+))?')
|
self.re_Action = re.compile('.*\n(?P<PNAME>.*)(?P<ATYPE> bets| checks| raises to| calls| folds)(\s\$(?P<BET>[.\d]+))?')
|
||||||
self.re_ShowdownAction = re.compile('.*\n(?P<PNAME>.*) shows \[(?P<CARDS>.*)\]')
|
self.re_ShowdownAction = re.compile('.*\n(?P<PNAME>.*) shows \[(?P<CARDS>.*)\]')
|
||||||
self.re_CollectPot = re.compile(r"Seat (?P<SEAT>[0-9]+): (?P<PNAME>.*?) (\(button\) |\(small blind\) |\(big blind\) )?(collected|showed \[.*\] and won) \(\$(?P<POT>[.\d]+)\)(, mucked| with.*)")
|
self.re_CollectPot = re.compile(r"Seat (?P<SEAT>[0-9]+): (?P<PNAME>.*?) (\(button\) |\(small blind\) |\(big blind\) )?(collected|showed \[.*\] and won) \(\$(?P<POT>[.\d]+)\)(, mucked| with.*)")
|
||||||
|
@ -71,7 +71,7 @@ class FullTilt(HandHistoryConverter):
|
||||||
structure = "nl"
|
structure = "nl"
|
||||||
elif m.group('LTYPE') == "Pot ":
|
elif m.group('LTYPE') == "Pot ":
|
||||||
structure = "pl"
|
structure = "pl"
|
||||||
elif m.group('LTYPE') == "None":
|
elif m.group('LTYPE') == None:
|
||||||
structure = "fl"
|
structure = "fl"
|
||||||
|
|
||||||
if m.group('GAME') == "Hold\'em":
|
if m.group('GAME') == "Hold\'em":
|
||||||
|
@ -81,6 +81,8 @@ class FullTilt(HandHistoryConverter):
|
||||||
elif m.group('GAME') == "Razz":
|
elif m.group('GAME') == "Razz":
|
||||||
game = "razz"
|
game = "razz"
|
||||||
|
|
||||||
|
print m.groups()
|
||||||
|
|
||||||
gametype = ["ring", game, structure, m.group('SB'), m.group('BB')]
|
gametype = ["ring", game, structure, m.group('SB'), m.group('BB')]
|
||||||
|
|
||||||
return gametype
|
return gametype
|
||||||
|
|
107
pyfpdb/Hand.py
107
pyfpdb/Hand.py
|
@ -365,11 +365,19 @@ Map the tuple self.gametype onto the pokerstars string describing it
|
||||||
"cp" : "Cap Pot Limit"
|
"cp" : "Cap Pot Limit"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print "DEBUG: self.gametype: %s" %(self.gametype)
|
||||||
string = "%s %s" %(gs[self.gametype[1]], ls[self.gametype[2]])
|
string = "%s %s" %(gs[self.gametype[1]], ls[self.gametype[2]])
|
||||||
|
|
||||||
return string
|
return string
|
||||||
|
|
||||||
def writeHand(self, fh=sys.__stdout__):
|
def writeHand(self, fh=sys.__stdout__):
|
||||||
|
if self.gametype[1] == "hold" or self.gametype[1] == "omaha":
|
||||||
|
self.writeHoldemHand(fh)
|
||||||
|
else:
|
||||||
|
self.writeStudHand(fh)
|
||||||
|
|
||||||
|
|
||||||
|
def writeHoldemHand(self, fh=sys.__stdout__):
|
||||||
# PokerStars format.
|
# PokerStars format.
|
||||||
#print "\n### Pseudo stars format ###"
|
#print "\n### Pseudo stars format ###"
|
||||||
#print >>fh, _("%s Game #%s: %s ($%s/$%s) - %s" %(self.sitename, self.handid, self.getGameTypeAsString(), self.sb, self.bb, self.starttime))
|
#print >>fh, _("%s Game #%s: %s ($%s/$%s) - %s" %(self.sitename, self.handid, self.getGameTypeAsString(), self.sb, self.bb, self.starttime))
|
||||||
|
@ -476,6 +484,105 @@ Map the tuple self.gametype onto the pokerstars string describing it
|
||||||
#print "Seat %d: %s mucked or folded" % (player[0], player[1])
|
#print "Seat %d: %s mucked or folded" % (player[0], player[1])
|
||||||
|
|
||||||
|
|
||||||
|
def writeStudHand(self, fh=sys.__stdout__):
|
||||||
|
# PokerStars format.
|
||||||
|
#print "\n### Pseudo stars format ###"
|
||||||
|
#print >>fh, _("%s Game #%s: %s ($%s/$%s) - %s" %(self.sitename, self.handid, self.getGameTypeAsString(), self.sb, self.bb, self.starttime))
|
||||||
|
print >>fh, _("%s Game #%s: %s ($%s/$%s) - %s" %("PokerStars", self.handid, self.getGameTypeAsString(), self.sb, self.bb, time.strftime('%Y/%m/%d - %H:%M:%S (ET)', self.starttime)))
|
||||||
|
print >>fh, _("Table '%s' %d-max Seat #%s is the button" %(self.tablename, self.maxseats, self.buttonpos))
|
||||||
|
|
||||||
|
players_who_post_antes = set([x[0] for x in self.actions['ANTES']])
|
||||||
|
|
||||||
|
for player in [x for x in self.players if x[1] in players_who_post_antes]:
|
||||||
|
#Only print stacks of players who do something preflop
|
||||||
|
print >>fh, _("Seat %s: %s ($%s)" %(player[0], player[1], player[2]))
|
||||||
|
|
||||||
|
|
||||||
|
if 'THIRD' in self.actions:
|
||||||
|
print >>fh, _("*** 3RD STREET ***")
|
||||||
|
for act in self.actions['THIRD']:
|
||||||
|
self.printActionLine(act, fh)
|
||||||
|
|
||||||
|
if 'FOURTH' in self.actions:
|
||||||
|
print >>fh, _("*** 4TH STREET ***")
|
||||||
|
for act in self.actions['FOURTH']:
|
||||||
|
self.printActionLine(act, fh)
|
||||||
|
|
||||||
|
if 'FIFTH' in self.actions:
|
||||||
|
print >>fh, _("*** 5TH STREET ***")
|
||||||
|
for act in self.actions['FIFTH']:
|
||||||
|
self.printActionLine(act, fh)
|
||||||
|
|
||||||
|
if 'SIXTH' in self.actions:
|
||||||
|
print >>fh, _("*** 6TH STREET ***")
|
||||||
|
for act in self.actions['SIXTH']:
|
||||||
|
self.printActionLine(act, fh)
|
||||||
|
|
||||||
|
if 'SEVENTH' in self.actions:
|
||||||
|
print >>fh, _("*** 7TH STREET ***")
|
||||||
|
for act in self.actions['SEVENTH']:
|
||||||
|
self.printActionLine(act, fh)
|
||||||
|
|
||||||
|
#Some sites don't have a showdown section so we have to figure out if there should be one
|
||||||
|
# The logic for a showdown is: at the end of river action there are at least two players in the hand
|
||||||
|
# we probably don't need a showdown section in pseudo stars format for our filtering purposes
|
||||||
|
if 'SHOWDOWN' in self.actions:
|
||||||
|
print >>fh, _("*** SHOW DOWN ***")
|
||||||
|
# print >>fh, "DEBUG: what do they show"
|
||||||
|
|
||||||
|
# Current PS format has the lines:
|
||||||
|
# Uncalled bet ($111.25) returned to s0rrow
|
||||||
|
# s0rrow collected $5.15 from side pot
|
||||||
|
# stervels: shows [Ks Qs] (two pair, Kings and Queens)
|
||||||
|
# stervels collected $45.35 from main pot
|
||||||
|
# Immediately before the summary.
|
||||||
|
# The current importer uses those lines for importing winning rather than the summary
|
||||||
|
for name in self.pot.returned:
|
||||||
|
print >>fh, _("Uncalled bet ($%s) returned to %s" %(self.pot.returned[name],name))
|
||||||
|
for entry in self.collected:
|
||||||
|
print >>fh, _("%s collected $%s from x pot" %(entry[0], entry[1]))
|
||||||
|
|
||||||
|
print >>fh, _("*** SUMMARY ***")
|
||||||
|
print >>fh, "%s | Rake $%.2f" % (self.pot, self.rake)
|
||||||
|
#print >>fh, _("Total pot $%s | Rake $%.2f" % (self.totalpot, self.rake)) # TODO: side pots
|
||||||
|
|
||||||
|
board = []
|
||||||
|
for s in self.board.values():
|
||||||
|
board += s
|
||||||
|
if board: # sometimes hand ends preflop without a board
|
||||||
|
print >>fh, _("Board [%s]" % (" ".join(board)))
|
||||||
|
|
||||||
|
for player in [x for x in self.players if x[1] in players_who_post_antes]:
|
||||||
|
seatnum = player[0]
|
||||||
|
name = player[1]
|
||||||
|
if name in self.collectees and name in self.shown:
|
||||||
|
print >>fh, _("Seat %d: %s showed [%s] and won ($%s)" % (seatnum, name, " ".join(self.holecards[name]), self.collectees[name]))
|
||||||
|
elif name in self.collectees:
|
||||||
|
print >>fh, _("Seat %d: %s collected ($%s)" % (seatnum, name, self.collectees[name]))
|
||||||
|
elif name in self.shown:
|
||||||
|
print >>fh, _("Seat %d: %s showed [%s]" % (seatnum, name, " ".join(self.holecards[name])))
|
||||||
|
elif name in self.folded:
|
||||||
|
print >>fh, _("Seat %d: %s folded" % (seatnum, name))
|
||||||
|
else:
|
||||||
|
print >>fh, _("Seat %d: %s mucked" % (seatnum, name))
|
||||||
|
|
||||||
|
print >>fh, "\n\n"
|
||||||
|
# TODO:
|
||||||
|
# logic for side pots
|
||||||
|
# logic for which players get to showdown
|
||||||
|
# I'm just not sure we need to do this so heavily.. and if we do, it's probably better to use pokerlib
|
||||||
|
#if self.holecards[player[1]]: # empty list default is false
|
||||||
|
#hole = self.holecards[player[1]]
|
||||||
|
##board = []
|
||||||
|
##for s in self.board.values():
|
||||||
|
##board += s
|
||||||
|
##playerhand = self.bestHand('hi', board+hole)
|
||||||
|
##print "Seat %d: %s showed %s and won/lost with %s" % (player[0], player[1], hole, playerhand)
|
||||||
|
#print "Seat %d: %s showed %s" % (player[0], player[1], hole)
|
||||||
|
#else:
|
||||||
|
#print "Seat %d: %s mucked or folded" % (player[0], player[1])
|
||||||
|
|
||||||
|
|
||||||
def printHand(self):
|
def printHand(self):
|
||||||
self.writeHand(sys.stdout)
|
self.writeHand(sys.stdout)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user