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
|
self.status = False
|
||||||
else:
|
else:
|
||||||
self.tourney = Tourney.Tourney(sitename = self.sitename, gametype = None, summaryText = summaryInfoList, builtFrom = "HHC")
|
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)
|
self.status = status = self.getPlayersPositionsAndWinnings(self.tourney)
|
||||||
|
if self.status == True :
|
||||||
|
self.status = self.determineTourneyType(self.tourney)
|
||||||
#print self.tourney
|
#print self.tourney
|
||||||
else:
|
else:
|
||||||
log.info("Parsing NOK : rejected")
|
log.info("Parsing NOK : rejected")
|
||||||
|
@ -558,15 +558,12 @@ class Fulltilt(HandHistoryConverter):
|
||||||
"PRIZEPOOL" : self.re_TourneyPrizePool,
|
"PRIZEPOOL" : self.re_TourneyPrizePool,
|
||||||
"REBUY_AMOUNT" : self.re_TourneyRebuyAmount,
|
"REBUY_AMOUNT" : self.re_TourneyRebuyAmount,
|
||||||
"ADDON_AMOUNT" : self.re_TourneyAddOnAmount,
|
"ADDON_AMOUNT" : self.re_TourneyAddOnAmount,
|
||||||
"REBUY_COUNT" : self.re_TourneyRebuyCount,
|
|
||||||
"ADDON_COUNT" : self.re_TourneyAddOnCount,
|
|
||||||
"REBUY_TOTAL" : self.re_TourneyRebuysTotal,
|
"REBUY_TOTAL" : self.re_TourneyRebuysTotal,
|
||||||
"ADDONS_TOTAL" : self.re_TourneyAddOnsTotal,
|
"ADDONS_TOTAL" : self.re_TourneyAddOnsTotal,
|
||||||
"REBUY_CHIPS" : self.re_TourneyRebuyChips,
|
"REBUY_CHIPS" : self.re_TourneyRebuyChips,
|
||||||
"ADDON_CHIPS" : self.re_TourneyAddOnChips,
|
"ADDON_CHIPS" : self.re_TourneyAddOnChips,
|
||||||
"STARTTIME" : self.re_TourneyTimeInfo,
|
"STARTTIME" : self.re_TourneyTimeInfo,
|
||||||
"KO_BOUNTY_AMOUNT" : self.re_TourneyKOBounty,
|
"KO_BOUNTY_AMOUNT" : self.re_TourneyKOBounty,
|
||||||
"COUNT_KO" : self.re_TourneyCountKO
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -575,15 +572,12 @@ class Fulltilt(HandHistoryConverter):
|
||||||
"PRIZEPOOL" : "prizepool",
|
"PRIZEPOOL" : "prizepool",
|
||||||
"REBUY_AMOUNT" : "rebuyAmount",
|
"REBUY_AMOUNT" : "rebuyAmount",
|
||||||
"ADDON_AMOUNT" : "addOnAmount",
|
"ADDON_AMOUNT" : "addOnAmount",
|
||||||
"REBUY_COUNT" : "countRebuys",
|
|
||||||
"ADDON_COUNT" : "countAddOns",
|
|
||||||
"REBUY_TOTAL" : "totalRebuys",
|
"REBUY_TOTAL" : "totalRebuys",
|
||||||
"ADDONS_TOTAL" : "totalAddOns",
|
"ADDONS_TOTAL" : "totalAddOns",
|
||||||
"REBUY_CHIPS" : "rebuyChips",
|
"REBUY_CHIPS" : "rebuyChips",
|
||||||
"ADDON_CHIPS" : "addOnChips",
|
"ADDON_CHIPS" : "addOnChips",
|
||||||
"STARTTIME" : "starttime",
|
"STARTTIME" : "starttime",
|
||||||
"KO_BOUNTY_AMOUNT" : "koBounty",
|
"KO_BOUNTY_AMOUNT" : "koBounty"
|
||||||
"COUNT_KO" : "countKO"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mg = {} # After the loop, mg will contain all the matching groups, including the ones that have not been used, like ENDTIME and IN-PROGRESS
|
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)
|
# 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']
|
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
|
# Deal with money amounts
|
||||||
tourney.koBounty = 100*Decimal(re.sub(u',', u'', "%s" % tourney.koBounty))
|
tourney.koBounty = 100*Decimal(re.sub(u',', u'', "%s" % tourney.koBounty))
|
||||||
tourney.prizepool = 100*Decimal(re.sub(u',', u'', "%s" % tourney.prizepool))
|
tourney.prizepool = 100*Decimal(re.sub(u',', u'', "%s" % tourney.prizepool))
|
||||||
tourney.rebuyAmount = 100*Decimal(re.sub(u',', u'', "%s" % tourney.rebuyAmount))
|
tourney.rebuyAmount = 100*Decimal(re.sub(u',', u'', "%s" % tourney.rebuyAmount))
|
||||||
tourney.addOnAmount = 100*Decimal(re.sub(u',', u'', "%s" % tourney.addOnAmount))
|
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
|
#print mg
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -622,11 +646,11 @@ class Fulltilt(HandHistoryConverter):
|
||||||
else:
|
else:
|
||||||
winnings = "0"
|
winnings = "0"
|
||||||
|
|
||||||
tourney.addPlayer(rank, a.group('PNAME'), winnings)
|
tourney.addPlayer(rank, a.group('PNAME'), winnings, 0, 0, 0, 0)
|
||||||
else:
|
else:
|
||||||
print "Player finishing stats unreadable : %s" % a
|
print "Player finishing stats unreadable : %s" % a
|
||||||
|
|
||||||
# Deal with KO tournaments for hero winnings calculation
|
# Find Hero
|
||||||
n = self.re_TourneyHeroFinishingP.search(playersText)
|
n = self.re_TourneyHeroFinishingP.search(playersText)
|
||||||
if n is not None:
|
if n is not None:
|
||||||
heroName = n.group('HERO_NAME')
|
heroName = n.group('HERO_NAME')
|
||||||
|
@ -634,9 +658,6 @@ class Fulltilt(HandHistoryConverter):
|
||||||
# Is this really useful ?
|
# Is this really useful ?
|
||||||
if (tourney.finishPositions[heroName] != Decimal(n.group('HERO_FINISHING_POS'))):
|
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'))
|
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
|
return True
|
||||||
|
|
||||||
|
|
|
@ -73,20 +73,21 @@ class Tourney(object):
|
||||||
self.subTourneyFee = None
|
self.subTourneyFee = None
|
||||||
self.rebuyChips = 0
|
self.rebuyChips = 0
|
||||||
self.addOnChips = 0
|
self.addOnChips = 0
|
||||||
self.countRebuys = 0
|
|
||||||
self.countAddOns = 0
|
|
||||||
self.rebuyAmount = 0
|
self.rebuyAmount = 0
|
||||||
self.addOnAmount = 0
|
self.addOnAmount = 0
|
||||||
self.totalRebuys = 0
|
self.totalRebuys = 0
|
||||||
self.totalAddOns = 0
|
self.totalAddOns = 0
|
||||||
self.koBounty = 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.tourneyComment = None
|
||||||
self.players = []
|
self.players = []
|
||||||
|
|
||||||
# Collections indexed by player names
|
# Collections indexed by player names
|
||||||
self.finishPositions = {}
|
self.finishPositions = {}
|
||||||
self.winnings = {}
|
self.winnings = {}
|
||||||
|
self.payinAmounts = {}
|
||||||
|
self.countRebuys = {}
|
||||||
|
self.countAddOns = {}
|
||||||
|
self.countKO = {}
|
||||||
|
|
||||||
# currency symbol for this summary
|
# currency symbol for this summary
|
||||||
self.sym = None
|
self.sym = None
|
||||||
|
@ -120,21 +121,20 @@ class Tourney(object):
|
||||||
("ADDON CHIPS", self.addOnChips),
|
("ADDON CHIPS", self.addOnChips),
|
||||||
("REBUY AMOUNT", self.rebuyAmount),
|
("REBUY AMOUNT", self.rebuyAmount),
|
||||||
("ADDON AMOUNT", self.addOnAmount),
|
("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 REBUYS", self.totalRebuys),
|
||||||
("TOTAL ADDONS", self.totalAddOns),
|
("TOTAL ADDONS", self.totalAddOns),
|
||||||
("KO BOUNTY", self.koBounty),
|
("KO BOUNTY", self.koBounty),
|
||||||
("NB OF KO", self.countKO),
|
|
||||||
("TOURNEY COMMENT", self.tourneyComment)
|
("TOURNEY COMMENT", self.tourneyComment)
|
||||||
)
|
)
|
||||||
|
|
||||||
structs = ( ("GAMETYPE", self.gametype),
|
structs = ( ("GAMETYPE", self.gametype),
|
||||||
("PLAYERS", self.players),
|
("PLAYERS", self.players),
|
||||||
|
("PAYIN AMOUNTS", self.payinAmounts),
|
||||||
("POSITIONS", self.finishPositions),
|
("POSITIONS", self.finishPositions),
|
||||||
("WINNINGS", self.winnings),
|
("WINNINGS", self.winnings),
|
||||||
|
("COUNT REBUYS", self.countRebuys),
|
||||||
|
("COUNT ADDONS", self.countAddOns),
|
||||||
|
("NB OF KO", self.countKO)
|
||||||
)
|
)
|
||||||
str = ''
|
str = ''
|
||||||
for (name, var) in vars:
|
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.
|
Adds a player to the tourney, and initialises data structures indexed by player.
|
||||||
rank (int) indicating the finishing rank (can be -1 if unknown)
|
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.players.append(name)
|
||||||
self.finishPositions.update( { name : Decimal(rank) } )
|
self.finishPositions.update( { name : Decimal(rank) } )
|
||||||
self.winnings.update( { name : Decimal(winnings) } )
|
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):
|
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)
|
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):
|
def checkPlayerExists(self,player):
|
||||||
if player not in [p[1] for p in self.players]:
|
if player not in [p[1] for p in self.players]:
|
||||||
print "checkPlayerExists", player, "fail"
|
print "checkPlayerExists", player, "fail"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user