#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2008, Carl Gherardi # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ######################################################################## import sys from collections import defaultdict from HandHistoryConverter import * # PartyPoker HH Format class PartyPoker(HandHistoryConverter): ############################################################ # Class Variables #mixes = { 'HORSE': 'horse', '8-Game': '8game', 'HOSE': 'hose'} # Legal mixed games sym = {'USD': "\$", } #sym = {'USD': "\$", 'CAD': "\$", 'T$': "", "EUR": "\x80", "GBP": "\xa3"} # ADD Euro, Sterling, etc HERE substitutions = { 'LEGAL_ISO' : "USD|EUR|GBP|CAD", # legal ISO currency codes 'LS' : "\$|\x80|\xa3" # legal currency symbols ADD Euro, Sterling, etc HERE } # Static regexes # $5 USD NL Texas Hold'em - Saturday, July 25, 07:53:52 EDT 2009 # NL Texas Hold'em $1 USD Buy-in Trny:45685440 Level:8 Blinds-Antes(600/1 200 -50) - Sunday, May 17, 11:25:07 MSKS 2009 re_GameInfoRing = re.compile(""" (?:\$|)\s*(?P\d+)\s*(?PUSD)?\s* (?P(NL))\s+ (?P(Texas\ Hold\'em)) \s*\-\s* (?P.+) """, re.VERBOSE) re_GameInfoTrny = re.compile(""" (?P(NL))\s+ (?P(Texas\ Hold\'em))\s+ (?:\$|)\s* (?P[.0-9]+)\s*(?PUSD)?\s*Buy-in\s+ Trny:\s?(?P\d+)\s+ Level:\s*(?P\d+)\s+ Blinds(?:-Antes)?\( (?P[.0-9 ]+)\s* /(?P[.0-9 ]+) (?:\s*-\s*(?P[.0-9 ]+)\$?)? \) \s*\-\s* (?P.+) """, re.VERBOSE) re_Hid = re.compile("^Game \#(?P\d+) starts.") #re_GameInfo = re.compile(""" #PartyPoker\sGame\s\#(?P[0-9]+):\s+ #(Tournament\s\# # open paren of tournament info #(?P\d+),\s #(?P[%(LS)s\+\d\.]+ # here's how I plan to use LS #\s?(?P%(LEGAL_ISO)s)? #)\s)? # close paren of tournament info #(?PHORSE|8\-Game|HOSE)?\s?\(? #(?PHold\'em|Razz|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball)\s #(?PNo\sLimit|Limit|Pot\sLimit)\)?,?\s #(-\sLevel\s(?P[IVXLC]+)\s)? #\(? # open paren of the stakes #(?P%(LS)s|)? #(?P[.0-9]+)/(%(LS)s)? #(?P[.0-9]+) #\s?(?P%(LEGAL_ISO)s)? #\)\s-\s # close paren of the stakes #(?P.*$)""" % substitutions, #re.MULTILINE|re.VERBOSE) re_PlayerInfo = re.compile(""" Seat\s(?P\d+):\s (?P.*)\s \(\s*\$?(?P[0-9,.]+)\s*(?:USD)\s*\) """ , re.VERBOSE) #re_PlayerInfo = re.compile(""" #^Seat\s(?P[0-9]+):\s #(?P.*)\s #\((%(LS)s)?(?P[.0-9]+)\sin\schips\)""" % substitutions, #re.MULTILINE|re.VERBOSE) re_HandInfo = re.compile(""" ^Table\s+ (?P[a-zA-Z0-9 ]+)\s+ (?: \#|\(|)(?P\d+)\)?\s+ (?:[^ ]+\s+\#(?P\d+).+)? # table number for mtt \((?PReal|Play)\s+Money\)\s+ # FIXME: check if play money is correct Seat\s+(?P
[-\ a-zA-Z\d]+)\'\s #((?P\d+)-max\s)? #(?P\(Play\sMoney\)\s)? #(Seat\s\#(?P
[ a-zA-Z]+) - \$?(?P[.0-9]+)/\$?(?P[.0-9]+) - (?P.*) - (?P
[0-9]+):(?P[0-9]+) ET - (?P[0-9]+)/(?P[0-9]+)/(?P[0-9]+)Table (?P
[ a-zA-Z]+)\nSeat (?P