Tourney parsing : payinAmounts, countRebuys, countAddons and countKO are now defined by player (instead of being attached to the Tourney for Hero)
This commit is contained in:
parent
d28f56db18
commit
025c81b1e1
|
@ -426,9 +426,9 @@ class Fulltilt(HandHistoryConverter):
|
|||
self.status = False
|
||||
else:
|
||||
self.tourney = Tourney.Tourney(sitename = self.sitename, gametype = None, summaryText = summaryInfoList, builtFrom = "HHC")
|
||||
self.status = self.determineTourneyType(self.tourney)
|
||||
if self.status == True :
|
||||
self.status = status = self.getPlayersPositionsAndWinnings(self.tourney)
|
||||
if self.status == True :
|
||||
self.status = self.determineTourneyType(self.tourney)
|
||||
#print self.tourney
|
||||
else:
|
||||
log.info("Parsing NOK : rejected")
|
||||
|
@ -558,15 +558,12 @@ class Fulltilt(HandHistoryConverter):
|
|||
"PRIZEPOOL" : self.re_TourneyPrizePool,
|
||||
"REBUY_AMOUNT" : self.re_TourneyRebuyAmount,
|
||||
"ADDON_AMOUNT" : self.re_TourneyAddOnAmount,
|
||||
"REBUY_COUNT" : self.re_TourneyRebuyCount,
|
||||
"ADDON_COUNT" : self.re_TourneyAddOnCount,
|
||||
"REBUY_TOTAL" : self.re_TourneyRebuysTotal,
|
||||
"ADDONS_TOTAL" : self.re_TourneyAddOnsTotal,
|
||||
"REBUY_CHIPS" : self.re_TourneyRebuyChips,
|
||||
"ADDON_CHIPS" : self.re_TourneyAddOnChips,
|
||||
"STARTTIME" : self.re_TourneyTimeInfo,
|
||||
"KO_BOUNTY_AMOUNT" : self.re_TourneyKOBounty,
|
||||
"COUNT_KO" : self.re_TourneyCountKO
|
||||
}
|
||||
|
||||
|
||||
|
@ -575,15 +572,12 @@ class Fulltilt(HandHistoryConverter):
|
|||
"PRIZEPOOL" : "prizepool",
|
||||
"REBUY_AMOUNT" : "rebuyAmount",
|
||||
"ADDON_AMOUNT" : "addOnAmount",
|
||||
"REBUY_COUNT" : "countRebuys",
|
||||
"ADDON_COUNT" : "countAddOns",
|
||||
"REBUY_TOTAL" : "totalRebuys",
|
||||
"ADDONS_TOTAL" : "totalAddOns",
|
||||
"REBUY_CHIPS" : "rebuyChips",
|
||||
"ADDON_CHIPS" : "addOnChips",
|
||||
"STARTTIME" : "starttime",
|
||||
"KO_BOUNTY_AMOUNT" : "koBounty",
|
||||
"COUNT_KO" : "countKO"
|
||||
"KO_BOUNTY_AMOUNT" : "koBounty"
|
||||
}
|
||||
|
||||
mg = {} # After the loop, mg will contain all the matching groups, including the ones that have not been used, like ENDTIME and IN-PROGRESS
|
||||
|
@ -597,11 +591,41 @@ class Fulltilt(HandHistoryConverter):
|
|||
# Assign endtime to tourney (if None, that's ok, it's because the tourney wans't over over when the summary file was produced)
|
||||
tourney.endtime = mg['ENDTIME']
|
||||
|
||||
# Deal with hero specific information
|
||||
if tourney.hero is not None :
|
||||
m = self.re_TourneyRebuyCount.search(tourneyText)
|
||||
if m is not None:
|
||||
mg = m.groupdict()
|
||||
if mg['REBUY_COUNT'] is not None :
|
||||
tourney.countRebuys.update( { tourney.hero : Decimal(mg['REBUY_COUNT']) } )
|
||||
m = self.re_TourneyAddOnCount.search(tourneyText)
|
||||
if m is not None:
|
||||
mg = m.groupdict()
|
||||
if mg['ADDON_COUNT'] is not None :
|
||||
tourney.countAddOns.update( { tourney.hero : Decimal(mg['ADDON_COUNT']) } )
|
||||
m = self.re_TourneyCountKO.search(tourneyText)
|
||||
if m is not None:
|
||||
mg = m.groupdict()
|
||||
if mg['COUNT_KO'] is not None :
|
||||
tourney.countKO.update( { tourney.hero : Decimal(mg['COUNT_KO']) } )
|
||||
|
||||
# Deal with money amounts
|
||||
tourney.koBounty = 100*Decimal(re.sub(u',', u'', "%s" % tourney.koBounty))
|
||||
tourney.prizepool = 100*Decimal(re.sub(u',', u'', "%s" % tourney.prizepool))
|
||||
tourney.rebuyAmount = 100*Decimal(re.sub(u',', u'', "%s" % tourney.rebuyAmount))
|
||||
tourney.addOnAmount = 100*Decimal(re.sub(u',', u'', "%s" % tourney.addOnAmount))
|
||||
|
||||
# Calculate payin amounts and update winnings -- not possible to take into account nb of rebuys, addons or Knockouts for other players than hero on FTP
|
||||
for p in tourney.players :
|
||||
tourney.payinAmounts[p] = tourney.buyin + tourney.fee + (tourney.rebuyAmount * tourney.countRebuys[p]) + (tourney.addOnAmount * tourney.countAddOns[p])
|
||||
#print " player %s : payinAmount = %d" %( p, tourney.payinAmounts[p])
|
||||
if tourney.isKO :
|
||||
#tourney.incrementPlayerWinnings(tourney.players[p], Decimal(tourney.koBounty)*Decimal(tourney.countKO[p]))
|
||||
tourney.winnings[p] += Decimal(tourney.koBounty)*Decimal(tourney.countKO[p])
|
||||
#print "player %s : winnings %d" % (p, tourney.winnings[p])
|
||||
|
||||
|
||||
|
||||
#print mg
|
||||
return True
|
||||
|
||||
|
@ -622,11 +646,11 @@ class Fulltilt(HandHistoryConverter):
|
|||
else:
|
||||
winnings = "0"
|
||||
|
||||
tourney.addPlayer(rank, a.group('PNAME'), winnings)
|
||||
tourney.addPlayer(rank, a.group('PNAME'), winnings, 0, 0, 0, 0)
|
||||
else:
|
||||
print "Player finishing stats unreadable : %s" % a
|
||||
|
||||
# Deal with KO tournaments for hero winnings calculation
|
||||
# Find Hero
|
||||
n = self.re_TourneyHeroFinishingP.search(playersText)
|
||||
if n is not None:
|
||||
heroName = n.group('HERO_NAME')
|
||||
|
@ -634,9 +658,6 @@ class Fulltilt(HandHistoryConverter):
|
|||
# Is this really useful ?
|
||||
if (tourney.finishPositions[heroName] != Decimal(n.group('HERO_FINISHING_POS'))):
|
||||
print "Bad parsing : finish position incoherent : %s / %s" % (tourney.finishPositions[heroName], n.group('HERO_FINISHING_POS'))
|
||||
if tourney.isKO:
|
||||
#Update the winnings with the (KO amount) * (# of KO)
|
||||
tourney.incrementPlayerWinnings(n.group('HERO_NAME'), Decimal(tourney.koBounty)*Decimal(tourney.countKO))
|
||||
|
||||
return True
|
||||
|
||||
|
|
|
@ -73,20 +73,21 @@ class Tourney(object):
|
|||
self.subTourneyFee = None
|
||||
self.rebuyChips = 0
|
||||
self.addOnChips = 0
|
||||
self.countRebuys = 0
|
||||
self.countAddOns = 0
|
||||
self.rebuyAmount = 0
|
||||
self.addOnAmount = 0
|
||||
self.totalRebuys = 0
|
||||
self.totalAddOns = 0
|
||||
self.koBounty = 0
|
||||
self.countKO = 0 #To use for winnings calculation which is not counted in the rest of the summary file
|
||||
self.tourneyComment = None
|
||||
self.players = []
|
||||
|
||||
# Collections indexed by player names
|
||||
self.finishPositions = {}
|
||||
self.winnings = {}
|
||||
self.payinAmounts = {}
|
||||
self.countRebuys = {}
|
||||
self.countAddOns = {}
|
||||
self.countKO = {}
|
||||
|
||||
# currency symbol for this summary
|
||||
self.sym = None
|
||||
|
@ -120,21 +121,20 @@ class Tourney(object):
|
|||
("ADDON CHIPS", self.addOnChips),
|
||||
("REBUY AMOUNT", self.rebuyAmount),
|
||||
("ADDON AMOUNT", self.addOnAmount),
|
||||
("COUNT REBUYS", self.countRebuys),
|
||||
("COUNT ADDONS", self.countAddOns),
|
||||
("NB REBUYS", self.countRebuys),
|
||||
("NB ADDONS", self.countAddOns),
|
||||
("TOTAL REBUYS", self.totalRebuys),
|
||||
("TOTAL ADDONS", self.totalAddOns),
|
||||
("KO BOUNTY", self.koBounty),
|
||||
("NB OF KO", self.countKO),
|
||||
("TOURNEY COMMENT", self.tourneyComment)
|
||||
)
|
||||
|
||||
structs = ( ("GAMETYPE", self.gametype),
|
||||
("PLAYERS", self.players),
|
||||
("PAYIN AMOUNTS", self.payinAmounts),
|
||||
("POSITIONS", self.finishPositions),
|
||||
("WINNINGS", self.winnings),
|
||||
("COUNT REBUYS", self.countRebuys),
|
||||
("COUNT ADDONS", self.countAddOns),
|
||||
("NB OF KO", self.countKO)
|
||||
)
|
||||
str = ''
|
||||
for (name, var) in vars:
|
||||
|
@ -255,7 +255,7 @@ db: a connected fpdb_db object"""
|
|||
|
||||
|
||||
|
||||
def addPlayer(self, rank, name, winnings):
|
||||
def addPlayer(self, rank, name, winnings, payinAmount, nbRebuys, nbAddons, nbKO):
|
||||
"""\
|
||||
Adds a player to the tourney, and initialises data structures indexed by player.
|
||||
rank (int) indicating the finishing rank (can be -1 if unknown)
|
||||
|
@ -266,6 +266,10 @@ winnings (decimal) the money the player ended the tourney with (can be 0, or
|
|||
self.players.append(name)
|
||||
self.finishPositions.update( { name : Decimal(rank) } )
|
||||
self.winnings.update( { name : Decimal(winnings) } )
|
||||
self.payinAmounts.update( {name : Decimal(payinAmount) } )
|
||||
self.countRebuys.update( {name: Decimal(nbRebuys) } )
|
||||
self.countAddOns.update( {name: Decimal(nbAddons) } )
|
||||
self.countKO.update( {name : Decimal(nbKO) } )
|
||||
|
||||
|
||||
def incrementPlayerWinnings(self, name, additionnalWinnings):
|
||||
|
@ -278,11 +282,6 @@ winnings (decimal) the money the player ended the tourney with (can be 0, or
|
|||
|
||||
self.winnings[name] = oldWins + Decimal(additionnalWinnings)
|
||||
|
||||
|
||||
def calculatePayinAmount(self):
|
||||
return self.buyin + self.fee + (self.rebuyAmount * self.countRebuys) + (self.addOnAmount * self.countAddOns )
|
||||
|
||||
|
||||
def checkPlayerExists(self,player):
|
||||
if player not in [p[1] for p in self.players]:
|
||||
print "checkPlayerExists", player, "fail"
|
||||
|
|
Loading…
Reference in New Issue
Block a user