From fbfaf0176c1e0b3ef3231c08691ff9c30b22330b Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 17 Sep 2010 10:58:47 +0800 Subject: [PATCH 01/22] Import: First step to making FTP archive files parse Change regex to be explicit about the number of '*'s Pass the ftpArchive flag to HHC init --- pyfpdb/HandHistoryConverter.py | 3 ++- pyfpdb/fpdb_import.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index 8eb2b9b6..c52444dd 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -266,7 +266,8 @@ which it expects to find at self.re_TailSplitHands -- see for e.g. Everleaf.py. if self.ftpArchive == True: log.debug(_("Converting ftpArchive format to readable")) - m = re.compile('^\*\*\*\*\*\*+\s#\s\d+\s\*\*\*\*\*+$', re.MULTILINE) + # Remove ******************** # 1 ************************* + m = re.compile('\*{20}\s#\s\d+\s\*{25}\s+', re.MULTILINE) self.obs = m.sub('', self.obs) if self.obs is None or self.obs == "": diff --git a/pyfpdb/fpdb_import.py b/pyfpdb/fpdb_import.py index 102da6fc..65de8181 100755 --- a/pyfpdb/fpdb_import.py +++ b/pyfpdb/fpdb_import.py @@ -473,7 +473,8 @@ class Importer: else: self.pos_in_file[file] = 0 hhc = obj( self.config, in_path = file, out_path = out_path, index = idx - , starsArchive = self.settings['starsArchive'], sitename = site ) + , starsArchive = self.settings['starsArchive'], ftpArchive = self.settings['ftpArchive'], + sitename = site ) if hhc.getStatus(): handlist = hhc.getProcessedHands() self.pos_in_file[file] = hhc.getLastCharacterRead() From 14bd76760337669ec6c47f99e36724180c2b8e80 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 17 Sep 2010 11:44:58 +0800 Subject: [PATCH 02/22] Carbon/Merge: Fix blind reading The new Merge network format has a timestamp in the blind line Also made some of the error reporting more consistent with other parsers --- pyfpdb/CarbonToFpdb.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/pyfpdb/CarbonToFpdb.py b/pyfpdb/CarbonToFpdb.py index 4d4e0aa1..abb29e30 100644 --- a/pyfpdb/CarbonToFpdb.py +++ b/pyfpdb/CarbonToFpdb.py @@ -85,8 +85,8 @@ class Carbon(HandHistoryConverter): # The following are also static regexes: there is no need to call # compilePlayerRegexes (which does nothing), since players are identified # not by name but by seat number - re_PostSB = re.compile(r'', re.MULTILINE) - re_PostBB = re.compile(r'', re.MULTILINE) + re_PostSB = re.compile(r'timestamp="[0-9]+" )?player="(?P[0-9])" amount="(?P[.0-9]+)"/>', re.MULTILINE) + re_PostBB = re.compile(r'timestamp="[0-9]+" )?player="(?P[0-9])" amount="(?P[.0-9]+)"/>', re.MULTILINE) re_PostBoth = re.compile(r'', re.MULTILINE) #re_Antes = ??? #re_BringIn = ??? @@ -170,7 +170,7 @@ or None if we fail to get the info """ if m is None: logging.info(_("Didn't match re_HandInfo")) logging.info(hand.handText) - return None + raise FpdbParseError("No match in readHandInfo.") logging.debug("HID %s-%s, Table %s" % (m.group('HID1'), m.group('HID2'), m.group('TABLE')[:-1])) hand.handid = m.group('HID1') + m.group('HID2') @@ -181,7 +181,7 @@ or None if we fail to get the info """ # Check that the hand is complete up to the awarding of the pot; if # not, the hand is unparseable if self.re_EndOfHand.search(hand.handText) is None: - raise FpdbParseError(hid=m.group('HID1') + "-" + m.group('HID2')) + raise FpdbParseError("readHandInfo failed: HID: '%s' HID2: '%s'" %(m.group('HID1'), m.group('HID2'))) def readPlayerStacks(self, hand): m = self.re_PlayerInfo.finditer(hand.handText) @@ -221,15 +221,13 @@ or None if we fail to get the info """ pass # ??? def readBlinds(self, hand): - try: - m = self.re_PostSB.search(hand.handText) - hand.addBlind(self.playerNameFromSeatNo(m.group('PSEAT'), hand), - 'small blind', m.group('SB')) - except: # no small blind - hand.addBlind(None, None, None) + for a in self.re_PostSB.finditer(hand.handText): + #print "DEBUG: found sb: '%s' '%s'" %(self.playerNameFromSeatNo(a.group('PSEAT'), hand), a.group('SB')) + hand.addBlind(self.playerNameFromSeatNo(a.group('PSEAT'), hand),'small blind', a.group('SB')) + for a in self.re_PostBB.finditer(hand.handText): - hand.addBlind(self.playerNameFromSeatNo(a.group('PSEAT'), hand), - 'big blind', a.group('BB')) + #print "DEBUG: found bb: '%s' '%s'" %(self.playerNameFromSeatNo(a.group('PSEAT'), hand), a.group('BB')) + hand.addBlind(self.playerNameFromSeatNo(a.group('PSEAT'), hand), 'big blind', a.group('BB')) for a in self.re_PostBoth.finditer(hand.handText): bb = Decimal(self.info['bb']) amount = Decimal(a.group('SBBB')) From 14ac685e3063726bb7eebcf2dbc9f42d3297fe43 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 17 Sep 2010 11:47:23 +0800 Subject: [PATCH 03/22] FTP: Adjust SplitHands regex for 2 blank lines or more Also add FpdbParseError() throe if GameInfo regex fails to match --- pyfpdb/FulltiltToFpdb.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index f94903c5..e744addd 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -61,7 +61,7 @@ class Fulltilt(HandHistoryConverter): (?P(No\sLimit|Pot\sLimit|Limit))?\s (?P(Hold\'em|Omaha\sHi|Omaha\sH/L|7\sCard\sStud|Stud\sH/L|Razz|Stud\sHi)) ''' % substitutions, re.VERBOSE) - re_SplitHands = re.compile(r"\n\n+") + re_SplitHands = re.compile(r"\n\n\n+") re_TailSplitHands = re.compile(r"(\n\n+)") re_HandInfo = re.compile(r'''.*\#(?P[0-9]+):\s (?:(?P.+)\s\((?P\d+)\),\s)? @@ -186,7 +186,10 @@ class Fulltilt(HandHistoryConverter): m = self.re_GameInfo.search(handText) if not m: - return None + 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) mg = m.groupdict() # translations from captured groups to our info strings From a81910d7f1d7c4d4730536e805d7a9b206775340 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 17 Sep 2010 17:39:04 +0800 Subject: [PATCH 04/22] iPoker: Large update for actions and antes I think I have most of the action correct at the moment. --- pyfpdb/iPokerToFpdb.py | 44 ++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/pyfpdb/iPokerToFpdb.py b/pyfpdb/iPokerToFpdb.py index 32e97628..b624737b 100644 --- a/pyfpdb/iPokerToFpdb.py +++ b/pyfpdb/iPokerToFpdb.py @@ -71,17 +71,16 @@ class iPoker(HandHistoryConverter): re_GameInfo = re.compile(r'(?P[a-zA-Z0-9 ]+) \$(?P[.0-9]+)/\$(?P[.0-9]+)', re.MULTILINE) re_HandInfo = re.compile(r'gamecode="(?P[0-9]+)">\s+\s+(?P[-: 0-9]+)', re.MULTILINE) re_Button = re.compile(r'') - re_PlayerInfo = re.compile(r'win="\$[^"]+") (bet="\$(?P[^"]+))?', re.MULTILINE) re_Board = re.compile(r'', re.MULTILINE) re_PostBB = re.compile(r'', re.MULTILINE) re_PostBoth = re.compile(r'', re.MULTILINE) - #re_Antes = ??? - #re_BringIn = ??? re_HeroCards = re.compile(r'', re.MULTILINE) re_CollectPot = re.compile(r'', re.MULTILINE) @@ -135,7 +134,7 @@ or None if we fail to get the info """ self.info = {} mg = m.groupdict() - print "DEBUG: m.groupdict(): %s" % mg + #print "DEBUG: m.groupdict(): %s" % mg limits = { 'No Limit':'nl', 'Limit':'fl' } games = { # base, category @@ -167,17 +166,18 @@ or None if we fail to get the info """ logging.info(hand.handText) raise FpdbParseError(_("Didn't match re_HandInfo")) mg = m.groupdict() - print "DEBUG: m.groupdict(): %s" % mg + #print "DEBUG: m.groupdict(): %s" % mg hand.handid = m.group('HID') #hand.tablename = m.group('TABLE')[:-1] hand.maxseats = None hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), '%Y-%m-%d %H:%M:%S') def readPlayerStacks(self, hand): + print "DEBUG: readPlayerStacks" m = self.re_PlayerInfo.finditer(hand.handText) for a in m: ag = a.groupdict() - print "DEBUG: ag: %s" %ag + #print "DEBUG: re_PlayerInfo: %s" %ag seatno = int(a.group('SEAT')) # It may be necessary to adjust 'hand.maxseats', which is an # educated guess, starting with 2 (indicating a heads-up table) and @@ -213,10 +213,13 @@ or None if we fail to get the info """ hand.setCommunityCards(street, [m.group('CARDS').split(',')[-1]]) def readAntes(self, hand): - pass # ??? + m = self.re_Ante.finditer(hand.handText) + for a in m: + #print "DEBUG: addAnte(%s, %s)" %(a.group('PNAME'), a.group('BET')) + hand.addAnte(a.group('PNAME'), a.group('BET')) def readBringIn(self, hand): - pass # ??? + pass def readBlinds(self, hand): m = self.re_PostSB.search(hand.handText) @@ -241,21 +244,28 @@ or None if we fail to get the info """ m = self.re_Action.finditer(hand.streets[street]) for action in m: ag = action.groupdict() - print "DEBUG: action.groupdict: %s" % ag + #print "DEBUG: action.groupdict: %s" % ag logging.debug("%s %s" % (action.group('ATYPE'), action.groupdict())) - if action.group('ATYPE') == 'RAISE': + if action.group('ATYPE') == 'RAISE': # Still no example for raise (i think?) hand.addCallandRaise(street, player, action.group('BET')) elif action.group('ATYPE') == '3': # Believe this is 'call' + #print "DEBUG: addCall(%s, %s, %s)" %(street, action.group('PNAME'), action.group('BET')) hand.addCall(street, action.group('PNAME'), action.group('BET')) - elif action.group('ATYPE') == 'BET': - hand.addBet(street, player, action.group('BET')) + elif action.group('ATYPE') == '5': + #print "DEBUG: addBet(%s, %s, %s)" %(street, action.group('PNAME'), action.group('BET')) + hand.addBet(street, action.group('PNAME'), action.group('BET')) elif action.group('ATYPE') == '0': # Belive this is 'fold' + #print "DEBUG: addFold(%s, %s)" %(street, action.group('PNAME')) hand.addFold(street, action.group('PNAME')) - elif action.group('ATYPE') == 'CHECK': - hand.addCheck(street, player) - elif action.group('ATYPE') == 'ALL_IN': - hand.addAllIn(street, player, action.group('BET')) + elif action.group('ATYPE') == '4': + #print "DEBUG: addCheck(%s, %s)" %(street, action.group('PNAME')) + hand.addCheck(street, action.group('PNAME')) + #elif action.group('ATYPE') == 'ALL_IN': + # hand.addAllIn(street, player, action.group('BET')) + elif action.group('ATYPE') == '16': #BringIn + #print "DEBUG: addBringIn(%s, %s)" %(action.group('PNAME'), action.group('BET')) + hand.addBringIn(action.group('PNAME'), action.group('BET')) else: logging.error(_("Unimplemented readAction: %s" % (ag))) From a6b679c7fb72e5cf4b847570ed3ed2b3b2f990ac Mon Sep 17 00:00:00 2001 From: steffen123 Date: Fri, 17 Sep 2010 19:18:16 +0200 Subject: [PATCH 05/22] fix minor string typo in imapfetcher --- pyfpdb/ImapFetcher.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyfpdb/ImapFetcher.py b/pyfpdb/ImapFetcher.py index b666e736..65936282 100755 --- a/pyfpdb/ImapFetcher.py +++ b/pyfpdb/ImapFetcher.py @@ -45,21 +45,21 @@ else: except IOError: def _(string): return string -def splitPokerStarsSummaries(summaryText): +def splitPokerStarsSummaries(summaryText): #TODO: this needs to go to PSS.py re_SplitTourneys = PokerStarsSummary.PokerStarsSummary.re_SplitTourneys splitSummaries = re.split(re_SplitTourneys, summaryText) if len(splitSummaries) <= 1: - print _("DEBUG: re_SplitTourneyss isn't matching") + print _("DEBUG: re_SplitTourneys isn't matching") return splitSummaries -def splitFullTiltSummaries(summaryText): +def splitFullTiltSummaries(summaryText):#TODO: this needs to go to FTPS.py re_SplitTourneys = FullTiltPokerSummary.FullTiltPokerSummary.re_SplitTourneys splitSummaries = re.split(re_SplitTourneys, summaryText) if len(splitSummaries) <= 1: - print _("DEBUG: re_SplitTourneyss isn't matching") + print _("DEBUG: re_SplitTourneys isn't matching") return splitSummaries From f540214e174abaddd26ef453c5398d897257621e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Fri, 17 Sep 2010 19:32:50 +0200 Subject: [PATCH 06/22] l10n: missed gettextify in various *ToFpdb files --- pyfpdb/BetfairToFpdb.py | 2 +- pyfpdb/CarbonToFpdb.py | 2 +- pyfpdb/FulltiltToFpdb.py | 2 +- pyfpdb/PokerStarsToFpdb.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pyfpdb/BetfairToFpdb.py b/pyfpdb/BetfairToFpdb.py index a8d510bd..c26cda26 100755 --- a/pyfpdb/BetfairToFpdb.py +++ b/pyfpdb/BetfairToFpdb.py @@ -115,7 +115,7 @@ class Betfair(HandHistoryConverter): m = self.re_HandInfo.search(hand.handText) if(m == None): log.error(_("Didn't match re_HandInfo")) - raise FpdbParseError("No match in readHandInfo.") + raise FpdbParseError(_("No match in readHandInfo.")) print "DEBUG: got this far!" logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE'))) hand.handid = m.group('HID') diff --git a/pyfpdb/CarbonToFpdb.py b/pyfpdb/CarbonToFpdb.py index abb29e30..04b420b2 100644 --- a/pyfpdb/CarbonToFpdb.py +++ b/pyfpdb/CarbonToFpdb.py @@ -170,7 +170,7 @@ or None if we fail to get the info """ if m is None: logging.info(_("Didn't match re_HandInfo")) logging.info(hand.handText) - raise FpdbParseError("No match in readHandInfo.") + raise FpdbParseError(_("No match in readHandInfo.")) logging.debug("HID %s-%s, Table %s" % (m.group('HID1'), m.group('HID2'), m.group('TABLE')[:-1])) hand.handid = m.group('HID1') + m.group('HID2') diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index e744addd..129dc5a7 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -223,7 +223,7 @@ class Fulltilt(HandHistoryConverter): if m is None: logging.info(_("Didn't match re_HandInfo")) logging.info(hand.handText) - raise FpdbParseError("No match in readHandInfo.") + raise FpdbParseError(_("No match in readHandInfo.")) hand.handid = m.group('HID') hand.tablename = m.group('TABLE') diff --git a/pyfpdb/PokerStarsToFpdb.py b/pyfpdb/PokerStarsToFpdb.py index baa7718b..f4f131d6 100644 --- a/pyfpdb/PokerStarsToFpdb.py +++ b/pyfpdb/PokerStarsToFpdb.py @@ -222,7 +222,7 @@ class PokerStars(HandHistoryConverter): m2 = self.re_GameInfo.search(hand.handText) if m is None or m2 is None: log.error("Didn't match re_HandInfo") - raise FpdbParseError("No match in readHandInfo.") + raise FpdbParseError(_("No match in readHandInfo.")) info.update(m.groupdict()) info.update(m2.groupdict()) From 2e6bec5c188d023c9da30b92f7445a797d0e453d Mon Sep 17 00:00:00 2001 From: Worros Date: Sun, 19 Sep 2010 00:14:14 +0800 Subject: [PATCH 07/22] Hand: Add fake GBP symbol --- pyfpdb/Hand.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index 9813c2ec..a556de63 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -56,7 +56,7 @@ class Hand(object): # Class Variables UPS = {'a':'A', 't':'T', 'j':'J', 'q':'Q', 'k':'K', 'S':'s', 'C':'c', 'H':'h', 'D':'d'} LCS = {'H':'h', 'D':'d', 'C':'c', 'S':'s'} - SYMBOL = {'USD': '$', 'EUR': u'$', 'T$': '', 'play': ''} + SYMBOL = {'USD': '$', 'EUR': u'$', 'GBP': '$', 'T$': '', 'play': ''} MS = {'horse' : 'HORSE', '8game' : '8-Game', 'hose' : 'HOSE', 'ha': 'HA'} From 178afa47739e54034b1c7241fb13a36193a57c28 Mon Sep 17 00:00:00 2001 From: Worros Date: Sun, 19 Sep 2010 00:14:50 +0800 Subject: [PATCH 08/22] Win2day: Add locale header --- pyfpdb/Win2dayToFpdb.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pyfpdb/Win2dayToFpdb.py b/pyfpdb/Win2dayToFpdb.py index 47891f0f..09492228 100755 --- a/pyfpdb/Win2dayToFpdb.py +++ b/pyfpdb/Win2dayToFpdb.py @@ -22,6 +22,18 @@ import sys import datetime from HandHistoryConverter import * +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 + # Win2day HH Format class Win2day(HandHistoryConverter): From 57405e74831e47ceec870fc0b4b7dff4813279ca Mon Sep 17 00:00:00 2001 From: Worros Date: Mon, 20 Sep 2010 14:08:41 +0800 Subject: [PATCH 09/22] Win2day: Update to parse NLHE Hasn't been modified since contribution - used the 'old' set() interface for cards. This interface was dropped after we realised we needed ordering for stud cards --- pyfpdb/Win2dayToFpdb.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/pyfpdb/Win2dayToFpdb.py b/pyfpdb/Win2dayToFpdb.py index 09492228..2f4cc3bb 100755 --- a/pyfpdb/Win2dayToFpdb.py +++ b/pyfpdb/Win2dayToFpdb.py @@ -100,8 +100,10 @@ class Win2day(HandHistoryConverter): m = self.re_GameInfo.search(handText) if not m: - print "determineGameType:", handText - return None + 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) mg = m.groupdict() @@ -194,15 +196,15 @@ class Win2day(HandHistoryConverter): if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP) #print "DEBUG readCommunityCards:", street, hand.streets.group(street) - boardCards = set([]) + boardCards = [] if street == 'FLOP': m = self.re_Card.findall(hand.streets[street]) for card in m: - boardCards.add(self.convertWin2dayCards(card)) + boardCards.append(self.convertWin2dayCards(card)) else: m = self.re_BoardLast.search(hand.streets[street]) - boardCards.add(self.convertWin2dayCards(m.group('CARD'))) - + boardCards.append(self.convertWin2dayCards(m.group('CARD'))) + hand.setCommunityCards(street, boardCards) def readAntes(self, hand): @@ -237,7 +239,7 @@ class Win2day(HandHistoryConverter): for found in m: hand.hero = found.group('PNAME') for card in self.re_Card.finditer(found.group('CARDS')): - print self.convertWin2dayCards(card.group('CARD')) + #print self.convertWin2dayCards(card.group('CARD')) newcards.append(self.convertWin2dayCards(card.group('CARD'))) #hand.addHoleCards(holeCards, m.group('PNAME')) @@ -279,13 +281,13 @@ class Win2day(HandHistoryConverter): newcards = player.group('NEWCARDS') oldcards = player.group('OLDCARDS') if newcards == None: - newcards = set() + newcards = [] else: - newcards = set(newcards.split(' ')) + newcards = newcards.split(' ') if oldcards == None: - oldcards = set() + oldcards = [] else: - oldcards = set(oldcards.split(' ')) + oldcards = oldcards.split(' ') hand.addDrawHoleCards(newcards, oldcards, player.group('PNAME'), street) @@ -349,10 +351,10 @@ class Win2day(HandHistoryConverter): def readShowdownActions(self, hand): for shows in self.re_ShowdownAction.finditer(hand.handText): - showdownCards = set([]) + showdownCards = [] for card in self.re_Card.finditer(shows.group('CARDS')): #print "DEBUG:", card, card.group('CARD'), self.convertWin2dayCards(card.group('CARD')) - showdownCards.add(self.convertWin2dayCards(card.group('CARD'))) + showdownCards.append(self.convertWin2dayCards(card.group('CARD'))) hand.addShownCards(showdownCards, shows.group('PNAME')) @@ -366,7 +368,7 @@ class Win2day(HandHistoryConverter): for m in self.re_ShownCards.finditer(hand.handText): if m.group('CARDS') is not None: cards = m.group('CARDS') - cards = set(cards.split(' ')) + cards = cards.split(' ') hand.addShownCards(cards=cards, player=m.group('PNAME')) if __name__ == "__main__": From 255f29cfaece8a8e1d7811d885d748dddd310879 Mon Sep 17 00:00:00 2001 From: Worros Date: Mon, 20 Sep 2010 14:18:52 +0800 Subject: [PATCH 10/22] Win2day: Make Omaha hands not crash Looks like it is importing the hands - no idea of accuracy at the moment --- pyfpdb/Win2dayToFpdb.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Win2dayToFpdb.py b/pyfpdb/Win2dayToFpdb.py index 2f4cc3bb..a09f9c9c 100755 --- a/pyfpdb/Win2dayToFpdb.py +++ b/pyfpdb/Win2dayToFpdb.py @@ -112,7 +112,8 @@ class Win2day(HandHistoryConverter): limits = { 'NL':'nl', 'PL':'pl'} games = { # base, category "GAME_THM" : ('hold','holdem'), - # 'Omaha' : ('hold','omahahi'), + "GAME_OMA" : ('hold','omahahi'), + #'Omaha Hi/Lo' : ('hold','omahahilo'), # 'Razz' : ('stud','razz'), #'7 Card Stud' : ('stud','studhi'), From 2b278b781e62b3b1ee5f6cb983c0989200481825 Mon Sep 17 00:00:00 2001 From: Worros Date: Tue, 21 Sep 2010 13:47:06 +0800 Subject: [PATCH 11/22] Stars: Apparently there is a PL 5 Card draw --- pyfpdb/PokerStarsToFpdb.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyfpdb/PokerStarsToFpdb.py b/pyfpdb/PokerStarsToFpdb.py index f4f131d6..cc9724c3 100644 --- a/pyfpdb/PokerStarsToFpdb.py +++ b/pyfpdb/PokerStarsToFpdb.py @@ -170,6 +170,7 @@ class PokerStars(HandHistoryConverter): ["ring", "stud", "fl"], ["ring", "draw", "fl"], + ["ring", "draw", "pl"], ["ring", "draw", "nl"], ["tour", "hold", "nl"], From 5cf0cf58a13131736bde68eed6af168ca9308ecf Mon Sep 17 00:00:00 2001 From: Chaz Date: Wed, 22 Sep 2010 02:57:51 -0400 Subject: [PATCH 12/22] Updated saveActions default to False --- pyfpdb/Configuration.py | 4 ++-- pyfpdb/HUD_config.test.xml | 2 +- pyfpdb/HUD_config.xml.example | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) mode change 100755 => 100644 pyfpdb/Configuration.py diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py old mode 100755 new mode 100644 index 91a16cca..51d04b57 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -484,7 +484,7 @@ class Import: self.callFpdbHud = node.getAttribute("callFpdbHud") self.hhArchiveBase = node.getAttribute("hhArchiveBase") self.hhBulkPath = node.getAttribute("hhBulkPath") - self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=True) + self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=False) self.fastStoreHudCache = string_to_bool(node.getAttribute("fastStoreHudCache"), default=False) self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False) @@ -1263,7 +1263,7 @@ class Config: except: imp['hhBulkPath'] = "" try: imp['saveActions'] = self.imp.saveActions - except: imp['saveActions'] = True + except: imp['saveActions'] = False try: imp['saveStarsHH'] = self.imp.saveStarsHH except: imp['saveStarsHH'] = False diff --git a/pyfpdb/HUD_config.test.xml b/pyfpdb/HUD_config.test.xml index 94aefa82..5ec16a56 100644 --- a/pyfpdb/HUD_config.test.xml +++ b/pyfpdb/HUD_config.test.xml @@ -2,7 +2,7 @@ - +