Merge branch 'carl'
This commit is contained in:
commit
6c62ba94f6
|
@ -670,6 +670,7 @@ Left-Drag to Move"
|
||||||
<hhc site="Betfair" converter="BetfairToFpdb"/>
|
<hhc site="Betfair" converter="BetfairToFpdb"/>
|
||||||
<hhc site="Partouche" converter="PartoucheToFpdb"/>
|
<hhc site="Partouche" converter="PartoucheToFpdb"/>
|
||||||
<hhc site="Carbon" converter="CarbonToFpdb"/>
|
<hhc site="Carbon" converter="CarbonToFpdb"/>
|
||||||
|
<hhc site="OnGame" converter="OnGameToFpdb"/>
|
||||||
</hhcs>
|
</hhcs>
|
||||||
|
|
||||||
<!-- attribute names chosen to be in alphabetic order so that order can be set when retrieved -->
|
<!-- attribute names chosen to be in alphabetic order so that order can be set when retrieved -->
|
||||||
|
|
|
@ -21,107 +21,82 @@
|
||||||
import sys
|
import sys
|
||||||
import Configuration
|
import Configuration
|
||||||
from HandHistoryConverter import *
|
from HandHistoryConverter import *
|
||||||
|
from decimal import Decimal
|
||||||
|
|
||||||
|
import locale
|
||||||
|
lang=locale.getdefaultlocale()[0][0:2]
|
||||||
|
if lang=="en":
|
||||||
|
def _(string): return string
|
||||||
|
else:
|
||||||
|
import gettext
|
||||||
|
try:
|
||||||
|
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||||
|
trans.install()
|
||||||
|
except IOError:
|
||||||
|
def _(string): return string
|
||||||
|
|
||||||
# OnGame HH Format
|
# OnGame HH Format
|
||||||
|
|
||||||
#Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797
|
|
||||||
#Table Kuopio, 20 Sep 2008 11:59 PM
|
|
||||||
|
|
||||||
#Seat 1: .Lucchess ($4.17 in chips)
|
|
||||||
#Seat 3: Gloff1 ($108 in chips)
|
|
||||||
#Seat 4: far a ($13.54 in chips)
|
|
||||||
#Seat 5: helander2222 ($49.77 in chips)
|
|
||||||
#Seat 6: lopllopl ($62.06 in chips)
|
|
||||||
#Seat 7: crazyhorse6 ($101.91 in chips)
|
|
||||||
#Seat 8: peeci ($25.02 in chips)
|
|
||||||
#Seat 9: Manuelhertz ($49 in chips)
|
|
||||||
#Seat 10: Eurolll ($58.25 in chips)
|
|
||||||
#ANTES/BLINDS
|
|
||||||
#helander2222 posts blind ($0.25), lopllopl posts blind ($0.50).
|
|
||||||
|
|
||||||
#PRE-FLOP
|
|
||||||
#crazyhorse6 folds, peeci folds, Manuelhertz folds, Eurolll calls $0.50, .Lucchess calls $0.50, Gloff1 folds, far a folds, helander2222 folds, lopllopl checks.
|
|
||||||
|
|
||||||
#FLOP [board cards AH,8H,KH ]
|
|
||||||
#lopllopl checks, Eurolll checks, .Lucchess checks.
|
|
||||||
|
|
||||||
#TURN [board cards AH,8H,KH,6S ]
|
|
||||||
#lopllopl checks, Eurolll checks, .Lucchess checks.
|
|
||||||
|
|
||||||
#RIVER [board cards AH,8H,KH,6S,8S ]
|
|
||||||
#lopllopl checks, Eurolll bets $1.25, .Lucchess folds, lopllopl folds.
|
|
||||||
|
|
||||||
#SHOWDOWN
|
|
||||||
#Eurolll wins $2.92.
|
|
||||||
|
|
||||||
#SUMMARY
|
|
||||||
#Dealer: far a
|
|
||||||
#Pot: $3, (including rake: $0.08)
|
|
||||||
#.Lucchess, loses $0.50
|
|
||||||
#Gloff1, loses $0
|
|
||||||
#far a, loses $0
|
|
||||||
#helander2222, loses $0.25
|
|
||||||
#lopllopl, loses $0.50
|
|
||||||
#crazyhorse6, loses $0
|
|
||||||
#peeci, loses $0
|
|
||||||
#Manuelhertz, loses $0
|
|
||||||
#Eurolll, bets $1.75, collects $2.92, net $1.17
|
|
||||||
|
|
||||||
|
|
||||||
class OnGame(HandHistoryConverter):
|
class OnGame(HandHistoryConverter):
|
||||||
def __init__(self, config, file):
|
sitename = "OnGame"
|
||||||
print "Initialising OnGame converter class"
|
filetype = "text"
|
||||||
HandHistoryConverter.__init__(self, config, file, sitename="OnGame") # Call super class init.
|
codepage = ("utf8", "cp1252")
|
||||||
self.sitename = "OnGame"
|
siteId = 5 # Needs to match id entry in Sites database
|
||||||
self.setFileType("text", "cp1252")
|
|
||||||
self.siteId = 5 # Needs to match id entry in Sites database
|
|
||||||
#self.rexx.setGameInfoRegex('.*Blinds \$?(?P<SB>[.0-9]+)/\$?(?P<BB>[.0-9]+)')
|
#self.rexx.setGameInfoRegex('.*Blinds \$?(?P<SB>[.0-9]+)/\$?(?P<BB>[.0-9]+)')
|
||||||
self.rexx.setSplitHandRegex('\n\n\n+')
|
# Static regexes
|
||||||
|
re_SplitHands = re.compile('\n\n\n+')
|
||||||
|
|
||||||
#Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797
|
#Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797
|
||||||
#Table Kuopio, 20 Sep 2008 11:59 PM
|
#Table Kuopio, 20 Sep 2008 11:59 PM
|
||||||
self.rexx.setHandInfoRegex(r"Texas Hold'em \$?(?P<SB>[.0-9]+)-\$?(?P<BB>[.0-9]+) NL \(real money\), hand #(?P<HID>[-A-Z\d]+)\nTable\ (?P<TABLE>[\' \w]+), (?P<DATETIME>\d\d \w+ \d\d\d\d \d\d:\d\d (AM|PM))")
|
re_HandInfo = re.compile(r"Texas Hold'em \$?(?P<SB>[.0-9]+)-\$?(?P<BB>[.0-9]+) NL \(real money\), hand #(?P<HID>[-A-Z\d]+)\nTable\ (?P<TABLE>[\' \w]+), (?P<DATETIME>\d\d \w+ \d\d\d\d \d\d:\d\d (AM|PM))")
|
||||||
# SB BB HID TABLE DAY MON YEAR HR12 MIN AMPM
|
# SB BB HID TABLE DAY MON YEAR HR12 MIN AMPM
|
||||||
|
|
||||||
self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P<BUTTONPNAME>.*)\n')
|
# self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P<BUTTONPNAME>.*)\n')
|
||||||
|
|
||||||
#Seat 1: .Lucchess ($4.17 in chips)
|
#Seat 1: .Lucchess ($4.17 in chips)
|
||||||
self.rexx.setPlayerInfoRegex('Seat (?P<SEAT>[0-9]+): (?P<PNAME>.*) \((\$(?P<CASH>[.0-9]+) in chips)\)')
|
re_PlayerInfo = re.compile(u'Seat (?P<SEAT>[0-9]+): (?P<PNAME>.*) \((\$(?P<CASH>[.0-9]+) in chips)\)')
|
||||||
|
|
||||||
#ANTES/BLINDS
|
#ANTES/BLINDS
|
||||||
#helander2222 posts blind ($0.25), lopllopl posts blind ($0.50).
|
#helander2222 posts blind ($0.25), lopllopl posts blind ($0.50).
|
||||||
self.rexx.setPostSbRegex('(?P<PNAME>.*) posts blind \(\$?(?P<SB>[.0-9]+)\), ')
|
re_PostSB = re.compile('(?P<PNAME>.*) posts blind \(\$?(?P<SB>[.0-9]+)\), ')
|
||||||
self.rexx.setPostBbRegex('\), (?P<PNAME>.*) posts blind \(\$?(?P<BB>[.0-9]+)\).')
|
re_PostBB = re.compile('\), (?P<PNAME>.*) posts blind \(\$?(?P<BB>[.0-9]+)\).')
|
||||||
self.rexx.setPostBothRegex('.*\n(?P<PNAME>.*): posts small \& big blinds \[\$? (?P<SBBB>[.0-9]+)')
|
re_PostBoth = re.compile('.*\n(?P<PNAME>.*): posts small \& big blinds \[\$? (?P<SBBB>[.0-9]+)')
|
||||||
self.rexx.setHeroCardsRegex('.*\nDealt\sto\s(?P<PNAME>.*)\s\[ (?P<CARDS>.*) \]')
|
re_HeroCards = re.compile('.*\nDealt\sto\s(?P<PNAME>.*)\s\[ (?P<CARDS>.*) \]')
|
||||||
|
|
||||||
#lopllopl checks, Eurolll checks, .Lucchess checks.
|
#lopllopl checks, Eurolll checks, .Lucchess checks.
|
||||||
self.rexx.setActionStepRegex('(, )?(?P<PNAME>.*?)(?P<ATYPE> bets| checks| raises| calls| folds)( \$(?P<BET>\d*\.?\d*))?( and is all-in)?')
|
re_Action = re.compile('(, )?(?P<PNAME>.*?)(?P<ATYPE> bets| checks| raises| calls| folds)( \$(?P<BET>\d*\.?\d*))?( and is all-in)?')
|
||||||
|
re_Board = re.compile(r"\[board cards (?P<CARDS>.+) \]")
|
||||||
|
|
||||||
#Uchilka shows [ KC,JD ]
|
#Uchilka shows [ KC,JD ]
|
||||||
self.rexx.setShowdownActionRegex('(?P<PNAME>.*) shows \[ (?P<CARDS>.+) \]')
|
re_ShowdownAction = re.compile('(?P<PNAME>.*) shows \[ (?P<CARDS>.+) \]')
|
||||||
|
|
||||||
# TODO: read SUMMARY correctly for collected pot stuff.
|
# TODO: read SUMMARY correctly for collected pot stuff.
|
||||||
#Uchilka, bets $11.75, collects $23.04, net $11.29
|
#Uchilka, bets $11.75, collects $23.04, net $11.29
|
||||||
self.rexx.setCollectPotRegex('(?P<PNAME>.*), bets.+, collects \$(?P<POT>\d*\.?\d*), net.* ')
|
re_CollectPot = re.compile('(?P<PNAME>.*), bets.+, collects \$(?P<POT>\d*\.?\d*), net.* ')
|
||||||
self.rexx.sits_out_re = re.compile('(?P<PNAME>.*) sits out')
|
re_sitsOut = re.compile('(?P<PNAME>.*) sits out')
|
||||||
self.rexx.compileRegexes()
|
|
||||||
|
|
||||||
def readSupportedGames(self):
|
def readSupportedGames(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def determineGameType(self):
|
def determineGameType(self, handText):
|
||||||
# Cheating with this regex, only support nlhe at the moment
|
# Cheating with this regex, only support nlhe at the moment
|
||||||
gametype = ["ring", "hold", "nl"]
|
gametype = ["ring", "hold", "nl"]
|
||||||
|
|
||||||
m = self.rexx.hand_info_re.search(self.obs)
|
m = self.re_HandInfo.search(handText)
|
||||||
|
if not m:
|
||||||
|
tmp = handText[0:100]
|
||||||
|
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
|
||||||
|
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||||
|
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||||
|
|
||||||
gametype = gametype + [m.group('SB')]
|
gametype = gametype + [m.group('SB')]
|
||||||
gametype = gametype + [m.group('BB')]
|
gametype = gametype + [m.group('BB')]
|
||||||
|
|
||||||
return gametype
|
return gametype
|
||||||
|
|
||||||
def readHandInfo(self, hand):
|
def readHandInfo(self, hand):
|
||||||
m = self.rexx.hand_info_re.search(hand.string)
|
m = self.re_HandInfo.search(hand.string)
|
||||||
hand.handid = m.group('HID')
|
hand.handid = m.group('HID')
|
||||||
hand.tablename = m.group('TABLE')
|
hand.tablename = m.group('TABLE')
|
||||||
#hand.buttonpos = self.rexx.button_re.search(hand.string).group('BUTTONPNAME')
|
#hand.buttonpos = self.rexx.button_re.search(hand.string).group('BUTTONPNAME')
|
||||||
|
@ -143,7 +118,7 @@ class OnGame(HandHistoryConverter):
|
||||||
#int(m.group('HR')), int(m.group('MIN')), int(m.group('SEC')))
|
#int(m.group('HR')), int(m.group('MIN')), int(m.group('SEC')))
|
||||||
|
|
||||||
def readPlayerStacks(self, hand):
|
def readPlayerStacks(self, hand):
|
||||||
m = self.rexx.player_info_re.finditer(hand.string)
|
m = self.re_PlayerInf.finditer(hand.string)
|
||||||
players = []
|
players = []
|
||||||
for a in m:
|
for a in m:
|
||||||
hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH'))
|
hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH'))
|
||||||
|
@ -162,25 +137,24 @@ class OnGame(HandHistoryConverter):
|
||||||
|
|
||||||
|
|
||||||
def readCommunityCards(self, hand, street):
|
def readCommunityCards(self, hand, street):
|
||||||
self.rexx.board_re = re.compile(r"\[board cards (?P<CARDS>.+) \]")
|
|
||||||
print hand.streets.group(street)
|
print hand.streets.group(street)
|
||||||
if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP)
|
if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP)
|
||||||
m = self.rexx.board_re.search(hand.streets.group(street))
|
m = self.re_Board.search(hand.streets.group(street))
|
||||||
hand.setCommunityCards(street, m.group('CARDS').split(','))
|
hand.setCommunityCards(street, m.group('CARDS').split(','))
|
||||||
|
|
||||||
def readBlinds(self, hand):
|
def readBlinds(self, hand):
|
||||||
try:
|
try:
|
||||||
m = self.rexx.small_blind_re.search(hand.string)
|
m = self.re_PostSB.search(hand.string)
|
||||||
hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB'))
|
hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB'))
|
||||||
except: # no small blind
|
except: # no small blind
|
||||||
hand.addBlind(None, None, None)
|
hand.addBlind(None, None, None)
|
||||||
for a in self.rexx.big_blind_re.finditer(hand.string):
|
for a in self.re_PostBB.finditer(hand.string):
|
||||||
hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB'))
|
hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB'))
|
||||||
for a in self.rexx.both_blinds_re.finditer(hand.string):
|
for a in self.re_PostBoth.finditer(hand.string):
|
||||||
hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB'))
|
hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB'))
|
||||||
|
|
||||||
def readHeroCards(self, hand):
|
def readHeroCards(self, hand):
|
||||||
m = self.rexx.hero_cards_re.search(hand.string)
|
m = self.re_HeroCards.search(hand.string)
|
||||||
if(m == None):
|
if(m == None):
|
||||||
#Not involved in hand
|
#Not involved in hand
|
||||||
hand.involved = False
|
hand.involved = False
|
||||||
|
@ -193,7 +167,7 @@ class OnGame(HandHistoryConverter):
|
||||||
hand.addHoleCards(cards, m.group('PNAME'))
|
hand.addHoleCards(cards, m.group('PNAME'))
|
||||||
|
|
||||||
def readAction(self, hand, street):
|
def readAction(self, hand, street):
|
||||||
m = self.rexx.action_re.finditer(hand.streets.group(street))
|
m = self.re_Action.finditer(hand.streets.group(street))
|
||||||
for action in m:
|
for action in m:
|
||||||
if action.group('ATYPE') == ' raises':
|
if action.group('ATYPE') == ' raises':
|
||||||
hand.addRaiseTo( street, action.group('PNAME'), action.group('BET') )
|
hand.addRaiseTo( street, action.group('PNAME'), action.group('BET') )
|
||||||
|
@ -211,13 +185,13 @@ class OnGame(HandHistoryConverter):
|
||||||
# TODO: Everleaf does not record uncalled bets.
|
# TODO: Everleaf does not record uncalled bets.
|
||||||
|
|
||||||
def readShowdownActions(self, hand):
|
def readShowdownActions(self, hand):
|
||||||
for shows in self.rexx.showdown_action_re.finditer(hand.string):
|
for shows in self.re_ShowdownAction.finditer(hand.string):
|
||||||
cards = shows.group('CARDS')
|
cards = shows.group('CARDS')
|
||||||
cards = set(cards.split(','))
|
cards = set(cards.split(','))
|
||||||
hand.addShownCards(cards, shows.group('PNAME'))
|
hand.addShownCards(cards, shows.group('PNAME'))
|
||||||
|
|
||||||
def readCollectPot(self,hand):
|
def readCollectPot(self,hand):
|
||||||
for m in self.rexx.collect_pot_re.finditer(hand.string):
|
for m in self.re_CollectPot.finditer(hand.string):
|
||||||
hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT'))
|
hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT'))
|
||||||
|
|
||||||
def readShownCards(self,hand):
|
def readShownCards(self,hand):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user