diff --git a/pyfpdb/AbsoluteToFpdb.py b/pyfpdb/AbsoluteToFpdb.py index 234c1ce4..e0ceed48 100755 --- a/pyfpdb/AbsoluteToFpdb.py +++ b/pyfpdb/AbsoluteToFpdb.py @@ -51,7 +51,7 @@ class Absolute(HandHistoryConverter): ^Stage\s+\#C?(?P[0-9]+):?\s+ (?:Tourney\ ID\ (?P\d+)\s+)? (?PHoldem|Seven\ Card\ Hi\/L|HORSE)\s+ - (?P\(1\son\s1\)|Single\ Tournament|)\s* + (?P\(1\son\s1\)|Single\ Tournament|Multi\ Normal\ Tournament|)\s* (?PNo\ Limit|Pot\ Limit|Normal|)\s? (?P\$|\s€|) (?P[.0-9]+)/?(?:\$|\s€|)(?P[.0-9]+)? @@ -71,8 +71,8 @@ class Absolute(HandHistoryConverter): # on HORSE STUD games, the table name isn't in the hand info! re_RingInfoFromFilename = re.compile(ur".*IHH([0-9]+) (?P.*) -") re_TrnyInfoFromFilename = re.compile( - ur".*IHH ([0-9]+) (?P.*) "\ - ur"ID (?P\d+) \((?P
\d+)\) .* "\ + ur"IHH\s?([0-9]+) (?P.*) "\ + ur"ID (?P\d+)\s?(\((?P
\d+)\))? .* "\ ur"(?:\$|\s€|)(?P[0-9.]+)\s*\+\s*(?:\$|\s€|)(?P[0-9.]+)" ) @@ -142,6 +142,7 @@ class Absolute(HandHistoryConverter): mg = m.groupdict() + #print "DEBUG: mg: %s" % mg # translations from captured groups to our info strings limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Normal':'fl', 'Limit':'fl'} @@ -193,13 +194,18 @@ class Absolute(HandHistoryConverter): else self.re_RingInfoFromFilename fname_info = fname_re.search(self.in_path) + #print "DEBUG: fname_info.groupdict(): %s" %(fname_info.groupdict()) + if m is None or fname_info is None: if m is None: - logging.error(_("Didn't match re_HandInfo")) - logging.error(hand.handText) + tmp = hand.handText[0:100] + logging.error(_("readHandInfo: Didn't match: '%s'") % tmp) + raise FpdbParseError(_("Absolute: Didn't match re_HandInfo: '%s'") % tmp) elif fname_info is None: - logging.info(_("File name didn't match re_*InfoFromFilename")) - logging.info(_("File name: %s") % self.in_path) + logging.error(_("readHandInfo: File name didn't match re_*InfoFromFilename")) + logging.error(_("File name: %s") % self.in_path) + raise FpdbParseError(_("Absolute: Didn't match re_*InfoFromFilename: '%s'") % self.in_path) + logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE'))) hand.handid = m.group('HID') if m.group('TABLE'): @@ -221,7 +227,7 @@ class Absolute(HandHistoryConverter): hand.maxseats = 6 if self.HORSEHand: - hand.maxseats = 9 + hand.maxseats = 8 # todo : unless it's heads up!!? return def readPlayerStacks(self, hand): diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index d7550b38..4e01b796 100644 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -450,11 +450,12 @@ class Aux_window: class HHC: def __init__(self, node): - self.site = node.getAttribute("site") - self.converter = node.getAttribute("converter") + self.site = node.getAttribute("site") + self.converter = node.getAttribute("converter") + self.summaryImporter = node.getAttribute("summaryImporter") def __str__(self): - return "%s:\t%s" % (self.site, self.converter) + return "%s:\tconverter: '%s' summaryImporter: '%s'" % (self.site, self.converter, self.summaryImporter) class Popup: diff --git a/pyfpdb/EverleafToFpdb.py b/pyfpdb/EverleafToFpdb.py index 3f87a21c..586d36d9 100755 --- a/pyfpdb/EverleafToFpdb.py +++ b/pyfpdb/EverleafToFpdb.py @@ -145,7 +145,7 @@ or None if we fail to get the info """ logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE'))) hand.handid = m.group('HID') hand.tablename = m.group('TABLE') - hand.maxseats = 6 # assume 6-max unless we have proof it's a larger/smaller game, since everleaf doesn't give seat max info + hand.maxseats = 4 # assume 4-max unless we have proof it's a larger/smaller game, since everleaf doesn't give seat max info currencies = { u'€':'EUR', '$':'USD', '':'T$', None:'T$' } mg = m.groupdict() @@ -179,6 +179,8 @@ or None if we fail to get the info """ elif seatnum > 6: hand.maxseats = 8 # everleaf currently does 2/6/10 games, so if seats > 6 are in use, it must be 10-max. # TODO: implement lookup list by table-name to determine maxes, then fall back to 6 default/10 here, if there's no entry in the list? + elif seatnum > 4: + hand.maxseats = 6 # they added 4-seat games too! def markStreets(self, hand): diff --git a/pyfpdb/Filters.py b/pyfpdb/Filters.py index 1b07a67c..a4660eb2 100644 --- a/pyfpdb/Filters.py +++ b/pyfpdb/Filters.py @@ -1014,25 +1014,6 @@ class Filters(threading.Thread): vb = gtk.VBox() cal = gtk.Calendar() - - if entry == self.start_date: - cal_date = self.start_date.get_text() - if cal_date == '': - self.cursor.execute(self.sql.query['get_first_date']) - result = self.db.cursor.fetchall() - cal_date = result[0][0].split()[0] - self.start_date.set_text(cal_date) - elif entry == self.end_date: - cal_date = self.end_date.get_text() - if cal_date == '': - self.cursor.execute(self.sql.query['get_last_date']) - result = self.db.cursor.fetchall() - cal_date = result[0][0].split()[0] - self.end_date.set_text(cal_date) - - (year,month,day)=cal_date.split('-') - cal.select_month(int(month)-1, int(year)) - cal.select_day(int(day)) vb.pack_start(cal, expand=False, padding=0) btn = gtk.Button(_('Done')) @@ -1058,16 +1039,9 @@ class Filters(threading.Thread): t2 = self.end_date.get_text() if t1 == '': - self.cursor.execute(self.sql.query['get_first_date']) - result = self.db.cursor.fetchall() - t1 = result[0][0].split()[0] - self.start_date.set_text(t1) - + t1 = '1970-01-02' if t2 == '': - self.cursor.execute(self.sql.query['get_last_date']) - result = self.db.cursor.fetchall() - t2 = result[0][0].split()[0] - self.end_date.set_text(t2) + t2 = '2020-12-12' s1 = strptime(t1, "%Y-%m-%d") # make time_struct s2 = strptime(t2, "%Y-%m-%d") diff --git a/pyfpdb/GuiTourneyImport.py b/pyfpdb/GuiTourneyImport.py new file mode 100755 index 00000000..bb2731b3 --- /dev/null +++ b/pyfpdb/GuiTourneyImport.py @@ -0,0 +1,291 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +#Copyright 2008-2010 Carl Gherardi +#This program is free software: you can redistribute it and/or modify +#it under the terms of the GNU Affero General Public License as published by +#the Free Software Foundation, version 3 of the License. +# +#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 Affero General Public License +#along with this program. If not, see . +#In the "official" distribution you can find the license in agpl-3.0.txt. + +import L10n +_ = L10n.get_translation() + +# Standard Library modules +import os +import sys +from time import time +import traceback +import datetime +import codecs +import re + +# pyGTK modules +import pygtk +pygtk.require('2.0') +import gtk +import gobject + +# fpdb/FreePokerTools modules +import Configuration +import Options +from Exceptions import FpdbParseError + +import logging +# logging has been set up in fpdb.py or HUD_main.py, use their settings: +log = logging.getLogger("importer") + + +class GuiTourneyImport(): + + def load_clicked(self, widget, data=None): + print "DEBUG: load_clicked" + stored = None + dups = None + partial = None + errs = None + ttime = None + + if self.settings['global_lock'].acquire(wait=False, source="GuiTourneyImport"): + print "DEBUG: got global lock" + # get the dir to import from the chooser + selected = self.chooser.get_filenames() + print "DEBUG: Files selected: %s" % selected + + sitename = self.cbfilter.get_model()[self.cbfilter.get_active()][0] + + for selection in selected: + self.importer.addImportFileOrDir(selection, site = sitename) + starttime = time() + (stored, errs) = self.importer.runImport() + + ttime = time() - starttime + if ttime == 0: + ttime = 1 + print _('GuiTourneyImport.load done: Stored: %d\tErrors: %d in %s seconds - %.0f/sec')\ + % (stored, errs, ttime, (stored+0.0) / ttime) + self.importer.clearFileList() + + self.settings['global_lock'].release() + else: + print _("bulk import aborted - global lock not available") + + def get_vbox(self): + """returns the vbox of this thread""" + return self.vbox + + def __init__(self, settings, config, sql = None, parent = None): + self.settings = settings + self.config = config + self.parent = parent + + self.importer = SummaryImporter(config, sql, parent) + + self.vbox = gtk.VBox(False, 0) + self.vbox.show() + + self.chooser = gtk.FileChooserWidget() + self.chooser.set_filename(self.settings['bulkImport-defaultPath']) + self.chooser.set_select_multiple(True) + self.vbox.add(self.chooser) + self.chooser.show() + +# Table widget to hold the settings + self.table = gtk.Table(rows=5, columns=5, homogeneous=False) + self.vbox.add(self.table) + self.table.show() + +# label - tsc + self.lab_filter = gtk.Label(_("Site filter:")) + self.table.attach(self.lab_filter, 1, 2, 2, 3, xpadding=0, ypadding=0, + yoptions=gtk.SHRINK) + self.lab_filter.show() + self.lab_filter.set_justify(gtk.JUSTIFY_RIGHT) + self.lab_filter.set_alignment(1.0, 0.5) + +# ComboBox - filter + self.cbfilter = gtk.combo_box_new_text() + disabled_sites = [] # move disabled sites to bottom of list + for w in self.config.hhcs: + print "%s = '%s'" %(w, self.config.hhcs[w].summaryImporter) + try: + # Include sites with a tourney summary importer, and enabled + if self.config.supported_sites[w].enabled and self.config.hhcs[w].summaryImporter != '': + self.cbfilter.append_text(w) + else: + disabled_sites.append(w) + except: # self.supported_sites[w] may not exist if hud_config is bad + disabled_sites.append(w) + for w in disabled_sites: + if self.config.hhcs[w].summaryImporter != '': + self.cbfilter.append_text(w) + self.cbfilter.set_active(0) + self.table.attach(self.cbfilter, 2, 3, 2, 3, xpadding=10, ypadding=1, + yoptions=gtk.SHRINK) + self.cbfilter.show() + +# button - Import + self.load_button = gtk.Button(_('_Bulk Import')) # todo: rename variables to import too + self.load_button.connect('clicked', self.load_clicked, + _('Import clicked')) + self.table.attach(self.load_button, 2, 3, 4, 5, xpadding=0, ypadding=0, + yoptions=gtk.SHRINK) + self.load_button.show() + +# label - spacer (keeps rows 3 & 5 apart) + self.lab_spacer = gtk.Label() + self.table.attach(self.lab_spacer, 3, 5, 3, 4, xpadding=0, ypadding=0, + yoptions=gtk.SHRINK) + self.lab_spacer.show() + +class SummaryImporter: + def __init__(self, config, sql = None, parent = None): + self.config = config + self.sql = sql + self.parent = parent + + self.filelist = {} + self.dirlist = {} + + self.updatedsize = {} + self.updatedtime = {} + + def addImportFile(self, filename, site = "default", tsc = "passthrough"): + print "DEBUG: addImportFile" + if filename in self.filelist or not os.path.exists(filename): + print "DEBUG: addImportFile: File exists, or path non-existent" + return + self.filelist[filename] = [site] + [tsc] + print "DEBUG: addImportFile: self.filelist[%s]: %s" %(filename, self.filelist[filename]) + + def addImportDirectory(self,dir,monitor=False, site="default", tsc="passthrough"): + print "DEBUG: addImportDirectory" + if os.path.isdir(dir): + if monitor == True: + self.monitor = True + self.dirlist[site] = [dir] + [tsc] + + for file in os.listdir(dir): + self.addImportFile(os.path.join(dir, file), site, tsc) + else: + log.warning(_("Attempted to add non-directory '%s' as an import directory") % str(dir)) + + def addImportFileOrDir(self, inputPath, site = "PokerStars"): + print "DEBUG: addImportFileOrDir" + tsc = self.config.hhcs[site].summaryImporter + if os.path.isdir(inputPath): + for subdir in os.walk(inputPath): + for file in subdir[2]: + self.addImportFile(unicode(os.path.join(subdir[0], file),'utf-8'), + site=site, tsc=tsc) + else: + self.addImportFile(unicode(inputPath,'utf-8'), site=site, tsc=tsc) + pass + + def runImport(self): + start = datetime.datetime.now() + starttime = time() + log.info(_("Tourney Summary Import started at %s - %d files to import.") % (start, len(self.filelist))) + + total_errors = 0 + total_imported = 0 + for f in self.filelist: + (site, tsc) = self.filelist[f] + imported, errs = self.importFile(f, tsc, site) + total_errors += errs + total_imported += imported + return (total_imported, total_errors) + + + def runUpdated(self): + pass + + def importFile(self, filename, tsc = "PokerStarsSummary", site = "PokerStars"): + mod = __import__(tsc) + obj = getattr(mod, tsc, None) + if callable(obj): + foabs = self.readFile(obj, filename) + summaryTexts = re.split(obj.re_SplitTourneys, foabs) + print "Found %s summaries" %(len(summaryTexts)) + errors = 0 + imported = 0 + for j, summaryText in enumerate(summaryTexts, start=1): + try: + conv = obj(db=None, config=self.config, siteName=site, summaryText=summaryText, builtFrom = "IMAP") + except FpdbParseError, e: + errors += 1 + print _("Finished importing %s/%s tournament summaries") %(j, len(summaryTexts)) + imported = j + return (imported - errors, errors) + + def clearFileList(self): + self.updatedsize = {} + self.updatetime = {} + self.filelist = {} + + def readFile(self, tsc, filename): + codepage = ["utf8"] + whole_file = None + tsc.codepage + + for kodec in codepage: + print "DEBUG: TSC.readFile: trying codepage '%s'" % kodec + try: + in_fh = codecs.open(filename, 'r', kodec) + whole_file = in_fh.read() + in_fh.close() + break + except: + pass + + return whole_file + +def main(argv=None): + """main can also be called in the python interpreter, by supplying the command line as the argument.""" + import SQL + if argv is None: + argv = sys.argv[1:] + + (options, argv) = Options.fpdb_options() + + if options.usage == True: + #Print usage examples and exit + print _("USAGE:") + sys.exit(0) + + if options.hhc == "PokerStarsToFpdb": + print _("Need to define a converter") + exit(0) + + config = Configuration.Config("HUD_config.test.xml") + sql = SQL.Sql(db_server = 'sqlite') + + if options.filename == None: + print _("Need a filename to import") + exit(0) + + importer = SummaryImporter(config, sql, None) + + importer.addImportFileOrDir(options.filename, site = options.hhc) + starttime = time() + (stored, errs) = importer.runImport() + + ttime = time() - starttime + if ttime == 0: + ttime = 1 + print _('GuiTourneyImport.load done: Stored: %d\tErrors: %d in %s seconds - %.0f/sec')\ + % (stored, errs, ttime, (stored+0.0) / ttime) + importer.clearFileList() + + + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/pyfpdb/HUD_config.test.xml b/pyfpdb/HUD_config.test.xml index 77f27924..11fa1be8 100644 --- a/pyfpdb/HUD_config.test.xml +++ b/pyfpdb/HUD_config.test.xml @@ -566,7 +566,7 @@ Left-Drag to Move" - + diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index 3fd354a1..8c43397f 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -777,7 +777,7 @@ Left-Drag to Move" - + diff --git a/pyfpdb/HUD_main.pyw b/pyfpdb/HUD_main.pyw index 7954cda7..31e50b27 100755 --- a/pyfpdb/HUD_main.pyw +++ b/pyfpdb/HUD_main.pyw @@ -358,9 +358,9 @@ class HUD_main(object): log.info(_("HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%4.3f)") % (t6 - t0,t1 - t0,t2 - t0,t3 - t0,t4 - t0,t5 - t0,t6 - t0)) self.db_connection.connection.rollback() - if type == "tour": - tablewindow.check_table_no(None) - # Ray!! tablewindow::check_table_no expects a HUD as an argument! +# if type == "tour": +# tablewindow.check_table_no(None) +# # Ray!! tablewindow::check_table_no expects a HUD as an argument! if __name__== "__main__": # start the HUD_main object diff --git a/pyfpdb/TourneySummary.py b/pyfpdb/TourneySummary.py index def20fef..9ca4c27b 100644 --- a/pyfpdb/TourneySummary.py +++ b/pyfpdb/TourneySummary.py @@ -37,6 +37,7 @@ from Exceptions import * import pprint import DerivedStats import Card +import Database log = logging.getLogger("parser") @@ -118,6 +119,8 @@ class TourneySummary(object): if builtFrom=="IMAP": # Fix line endings? pass + if self.db == None: + self.db = Database.Database(config) self.parseSummary() self.insertOrUpdate() @@ -291,148 +294,3 @@ winnings (decimal) the money the player ended the tourney with (can be 0, or def printSummary(self): self.writeSummary(sys.stdout) - -def assemble(cnxn, tourneyId): #TODO: move this method to Hand or Database - # TODO !! - c = cnxn.cursor() - - # We need at least siteName, gametype, handid - # for the Hand.__init__ - c.execute(""" -select - s.name, - g.category, - g.base, - g.type, - g.limitType, - g.hilo, - round(g.smallBlind / 100.0,2), - round(g.bigBlind / 100.0,2), - round(g.smallBet / 100.0,2), - round(g.bigBet / 100.0,2), - s.currency, - h.boardcard1, - h.boardcard2, - h.boardcard3, - h.boardcard4, - h.boardcard5 -from - hands as h, - sites as s, - gametypes as g, - handsplayers as hp, - players as p -where - h.id = %(handid)s -and g.id = h.gametypeid -and hp.handid = h.id -and p.id = hp.playerid -and s.id = p.siteid -limit 1""", {'handid':handid}) - #TODO: siteid should be in hands table - we took the scenic route through players here. - res = c.fetchone() - gametype = {'category':res[1],'base':res[2],'type':res[3],'limitType':res[4],'hilo':res[5],'sb':res[6],'bb':res[7], 'currency':res[10]} - h = HoldemOmahaHand(hhc = None, siteName=res[0], gametype = gametype, handText=None, builtFrom = "DB", handid=handid) - cards = map(Card.valueSuitFromCard, res[11:16] ) - if cards[0]: - h.setCommunityCards('FLOP', cards[0:3]) - if cards[3]: - h.setCommunityCards('TURN', [cards[3]]) - if cards[4]: - h.setCommunityCards('RIVER', [cards[4]]) - #[Card.valueSuitFromCard(x) for x in cards] - - # HandInfo : HID, TABLE - # BUTTON - why is this treated specially in Hand? - # answer: it is written out in hand histories - # still, I think we should record all the active seat positions in a seat_order array - c.execute(""" -SELECT - h.sitehandno as hid, - h.tablename as table, - h.startTime as startTime -FROM - Hands as h -WHERE h.id = %(handid)s -""", {'handid':handid}) - res = c.fetchone() - h.handid = res[0] - h.tablename = res[1] - h.startTime = res[2] # automatically a datetime - - # PlayerStacks - c.execute(""" -SELECT - hp.seatno, - round(hp.winnings / 100.0,2) as winnings, - p.name, - round(hp.startcash / 100.0,2) as chips, - hp.card1,hp.card2, - hp.position -FROM - handsplayers as hp, - players as p -WHERE - hp.handid = %(handid)s -and p.id = hp.playerid -""", {'handid':handid}) - for (seat, winnings, name, chips, card1,card2, position) in c.fetchall(): - h.addPlayer(seat,name,chips) - if card1 and card2: - h.addHoleCards(map(Card.valueSuitFromCard, (card1,card2)), name, dealt=True) - if winnings > 0: - h.addCollectPot(name, winnings) - if position == 'B': - h.buttonpos = seat - - - # actions - c.execute(""" -SELECT - (ha.street,ha.actionno) as actnum, - p.name, - ha.street, - ha.action, - ha.allin, - round(ha.amount / 100.0,2) -FROM - handsplayers as hp, - handsactions as ha, - players as p -WHERE - hp.handid = %(handid)s -and ha.handsplayerid = hp.id -and p.id = hp.playerid -ORDER BY - ha.street,ha.actionno -""", {'handid':handid}) - res = c.fetchall() - for (actnum,player, streetnum, act, allin, amount) in res: - act=act.strip() - street = h.allStreets[streetnum+1] - if act==u'blind': - h.addBlind(player, 'big blind', amount) - # TODO: The type of blind is not recorded in the DB. - # TODO: preflop street name anomalies in Hand - elif act==u'fold': - h.addFold(street,player) - elif act==u'call': - h.addCall(street,player,amount) - elif act==u'bet': - h.addBet(street,player,amount) - elif act==u'check': - h.addCheck(street,player) - elif act==u'unbet': - pass - else: - print act, player, streetnum, allin, amount - # TODO : other actions - - #hhc.readShowdownActions(self) - #hc.readShownCards(self) - h.totalPot() - h.rake = h.totalpot - h.totalcollected - - - return h - diff --git a/pyfpdb/XTables.py b/pyfpdb/XTables.py index 59fc0b3d..b9a363d0 100644 --- a/pyfpdb/XTables.py +++ b/pyfpdb/XTables.py @@ -44,13 +44,19 @@ class Table(Table_Window): def find_table_parameters(self): + reg = ''' + \s+(?P[\dxabcdef]+) # XID in hex + \s(?P.+): # window title + ''' + self.number = None for listing in os.popen('xwininfo -root -tree').readlines(): - if re.search(self.search_string, listing): - mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z0-9\-.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', listing) - title = re.sub('\"', '', mo.group(2)) + if re.search(self.search_string, listing, re.I): + mo = re.match(reg, listing, re.VERBOSE) +# mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z0-9\-.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', listing) + title = re.sub('\"', '', mo.groupdict()["TITLE"]) if self.check_bad_words(title): continue - self.number = int( mo.group(1), 0) + self.number = int( mo.groupdict()["XID"], 0 ) self.title = title self.hud = None # specified later break diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index 9e914625..91a0ebef 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -106,6 +106,7 @@ import GuiPrefs import GuiLogView import GuiDatabase import GuiBulkImport +import GuiTourneyImport import GuiImapFetcher import GuiRingPlayerStats import GuiTourneyPlayerStats @@ -763,6 +764,7 @@ class fpdb: </menu> <menu action="import"> <menuitem action="bulkimp"/> + <menuitem action="tourneyimp"/> <menuitem action="imapimport"/> <menuitem action="autoimp"/> </menu> @@ -805,6 +807,7 @@ class fpdb: ('Preferences', None, _('Pre_ferences'), _('<control>F'), 'Edit your preferences', self.dia_preferences), ('import', None, _('_Import')), ('bulkimp', None, _('_Bulk Import'), _('<control>B'), 'Bulk Import', self.tab_bulk_import), + ('tourneyimp', None, _('Tournament _Results Import'), _('<control>R'), 'Tournament Results Import', self.tab_tourney_import), ('imapimport', None, _('_Import through eMail/IMAP'), _('<control>I'), 'Import through eMail/IMAP', self.tab_imap_import), ('viewers', None, _('_Viewers')), ('autoimp', None, _('_Auto Import and HUD'), _('<control>A'), 'Auto Import and HUD', self.tab_auto_import), @@ -996,6 +999,13 @@ class fpdb: bulk_tab=new_import_thread.get_vbox() self.add_and_display_tab(bulk_tab, _("Bulk Import")) + def tab_tourney_import(self, widget, data=None): + """opens a tab for bulk importing""" + new_import_thread = GuiTourneyImport.GuiTourneyImport(self.settings, self.config, self.sql, self.window) + self.threads.append(new_import_thread) + bulk_tab=new_import_thread.get_vbox() + self.add_and_display_tab(bulk_tab, _("Tournament Results Import")) + def tab_imap_import(self, widget, data=None): new_thread = GuiImapFetcher.GuiImapFetcher(self.config, self.db, self.sql, self.window) self.threads.append(new_thread) diff --git a/pyfpdb/regression-test-files/cash/Absolute/Flop/NLHE-FR-USD-0.01-0.02-201011.Sample.txt b/pyfpdb/regression-test-files/cash/Absolute/Flop/IHH20090610 Chile Way - Hold'em No Limit $0.02(Real Money) Table 9339866.txt similarity index 100% rename from pyfpdb/regression-test-files/cash/Absolute/Flop/NLHE-FR-USD-0.01-0.02-201011.Sample.txt rename to pyfpdb/regression-test-files/cash/Absolute/Flop/IHH20090610 Chile Way - Hold'em No Limit $0.02(Real Money) Table 9339866.txt diff --git a/pyfpdb/regression-test-files/cash/Absolute/Flop/NLHE-FR-USD-0.01-0.02-201011.Sample.txt.hp b/pyfpdb/regression-test-files/cash/Absolute/Flop/IHH20090610 Chile Way - Hold'em No Limit $0.02(Real Money) Table 9339866.txt.hp similarity index 100% rename from pyfpdb/regression-test-files/cash/Absolute/Flop/NLHE-FR-USD-0.01-0.02-201011.Sample.txt.hp rename to pyfpdb/regression-test-files/cash/Absolute/Flop/IHH20090610 Chile Way - Hold'em No Limit $0.02(Real Money) Table 9339866.txt.hp diff --git a/pyfpdb/regression-test-files/cash/UltimateBet/Flop/IHH20101106 Baseline Rd - Hold'em No Limit $0.02(Real Money) Table 25932774.txt b/pyfpdb/regression-test-files/cash/UltimateBet/Flop/IHH20101106 Baseline Rd - Hold'em No Limit $0.02(Real Money) Table 25932774.txt new file mode 100644 index 00000000..6310ec86 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/UltimateBet/Flop/IHH20101106 Baseline Rd - Hold'em No Limit $0.02(Real Money) Table 25932774.txt @@ -0,0 +1,58 @@ + +Stage #C241220000: Holdem No Limit $0.02 - 2010-11-06 15:00:00 (ET) +Table: BASELINE RD (Real Money) Seat #8 is the dealer +Seat 8 - PLAYER8 ($2.05 in chips) +Seat 9 - PLAYER9 ($2.01 in chips) +Seat 1 - PLAYER1 ($2.90 in chips) +Seat 2 - VILLAIN1 ($1.52 in chips) +Seat 3 - PLAYER3 ($2 in chips) +Seat 4 - VILLAIN2 ($3.58 in chips) +Seat 5 - PLAYER5 ($2 in chips) +Seat 6 - PLAYER6 ($1.07 in chips) +Seat 7 - Hero ($1 in chips) +PLAYER9 - Posts small blind $0.01 +PLAYER1 - Posts big blind $0.02 +Hero - Posts $0.02 +*** POCKET CARDS *** +Dealt to Hero [10s 3s] +VILLAIN1 - Calls $0.02 +PLAYER3 - Folds +VILLAIN2 - Calls $0.02 +PLAYER5 - Folds +PLAYER6 - Folds +Hero - Checks +PLAYER8 - Folds +PLAYER9 - Folds +PLAYER1 - Folds +*** FLOP *** [Kc Qh 8h] +VILLAIN1 - Checks +VILLAIN2 - Checks +Hero - Checks +*** TURN *** [Kc Qh 8h] [6d] +VILLAIN1 - Checks +VILLAIN2 - Checks +Hero - Checks +*** RIVER *** [Kc Qh 8h 6d] [8c] +VILLAIN1 - Checks +VILLAIN2 - Checks +Hero - Checks +*** SHOW DOWN *** +VILLAIN1 - Shows [5c Ac] (One pair, eights) +VILLAIN2 - Shows [7s 6c] (Two Pair, eights and sixes) +Hero - Mucks +VILLAIN2 Collects $0.09 from main pot +*** SUMMARY *** +Total Pot($0.09) +Board [Kc Qh 8h 6d 8c] +Seat 1: PLAYER1 (big blind) Folded on the POCKET CARDS +Seat 2: VILLAIN1 HI:lost with One pair, eights [5c Ac - B:8h,B:8c,P:Ac,B:Kc,B:Qh] +Seat 3: PLAYER3 Folded on the POCKET CARDS +Seat 4: VILLAIN2 won Total ($0.09) HI:($0.09) with Two Pair, eights and sixes [7s 6c - B:8h,B:8c,B:6d,P:6c,B:Kc] +Seat 5: PLAYER5 Folded on the POCKET CARDS +Seat 6: PLAYER6 Folded on the POCKET CARDS +Seat 7: Hero HI: [Mucked] [10s 3s] +Seat 8: PLAYER8 (dealer) Folded on the POCKET CARDS +Seat 9: PLAYER9 (small blind) Folded on the POCKET CARDS + + + diff --git a/pyfpdb/regression-test-files/cash/UltimateBet/Flop/IHH20101106 Baseline Rd - Hold'em No Limit $0.02(Real Money) Table 25932774.txt.hp b/pyfpdb/regression-test-files/cash/UltimateBet/Flop/IHH20101106 Baseline Rd - Hold'em No Limit $0.02(Real Money) Table 25932774.txt.hp new file mode 100644 index 00000000..0fd0c27d --- /dev/null +++ b/pyfpdb/regression-test-files/cash/UltimateBet/Flop/IHH20101106 Baseline Rd - Hold'em No Limit $0.02(Real Money) Table 25932774.txt.hp @@ -0,0 +1,846 @@ +{ u'Hero': { 'card1': 48, + 'card2': 41, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 1, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': True, + 'seatNo': 7, + 'sitout': False, + 'startCards': 106, + 'startCash': 100, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'PLAYER1': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'B', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 1, + 'sitout': False, + 'startCards': 0, + 'startCash': 290, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'PLAYER3': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 5, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 3, + 'sitout': False, + 'startCards': 0, + 'startCash': 200, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'PLAYER5': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 3, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 5, + 'sitout': False, + 'startCards': 0, + 'startCash': 200, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'PLAYER6': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 2, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 6, + 'sitout': False, + 'startCards': 0, + 'startCash': 107, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'PLAYER8': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 0, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 8, + 'sitout': False, + 'startCards': 0, + 'startCash': 205, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'PLAYER9': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'S', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 9, + 'sitout': False, + 'startCards': 0, + 'startCash': 201, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -1, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'VILLAIN1': { 'card1': 30, + 'card2': 39, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 6, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': True, + 'seatNo': 2, + 'sitout': False, + 'startCards': 160, + 'startCash': 152, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'VILLAIN2': { 'card1': 45, + 'card2': 31, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 4, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': -2, + 'sawShowdown': True, + 'seatNo': 4, + 'sitout': False, + 'startCards': 58, + 'startCash': 358, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 7, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 9, + 'wonAtSD': 1.0, + 'wonWhenSeenStreet1': 1.0, + 'wonWhenSeenStreet2': 1.0, + 'wonWhenSeenStreet3': 1.0, + 'wonWhenSeenStreet4': 0.0}} diff --git a/pyfpdb/regression-test-files/summaries/Stars/NLHE-USD-HUSnG-10-201011.s0rrow.wins.txt b/pyfpdb/regression-test-files/summaries/Stars/NLHE-USD-HUSnG-10-201011.s0rrow.wins.txt new file mode 100644 index 00000000..b45874f4 --- /dev/null +++ b/pyfpdb/regression-test-files/summaries/Stars/NLHE-USD-HUSnG-10-201011.s0rrow.wins.txt @@ -0,0 +1,17 @@ +Tournament History for your last 1 tournament requested by s0rrow (carl.gherardi@gmail.com) + + +PokerStars Tournament #329052872, No Limit Hold'em +Buy-In: $10.00/$0.50 USD +2 players +Total Prize Pool: $20.00 USD +Tournament started 2010/11/07 8:03:52 ET +Tournament finished 2010/11/07 8:21:44 ET + 1: s0rrow (Perth), $20.00 (100%) + 2: v.v.75 (Грязи), + +You finished in 1st place. + + + +If you have any questions, please contact "PokerStars Support" <support@pokerstars.com> diff --git a/pyfpdb/regression-test-files/summaries/Stars/NLHE-USD-MTT-20-200708.s0rrow.2nd.txt b/pyfpdb/regression-test-files/summaries/Stars/NLHE-USD-MTT-20-200708.s0rrow.2nd.txt new file mode 100644 index 00000000..e6fe4261 --- /dev/null +++ b/pyfpdb/regression-test-files/summaries/Stars/NLHE-USD-MTT-20-200708.s0rrow.2nd.txt @@ -0,0 +1,287 @@ +PokerStars Tournament #57897693, No Limit Hold'em +Buy-In: $20.00/$2.00 +276 players +Total Prize Pool: $5520.00 +Tournament started - 2007/08/13 - 08:15:00 (ET) +Tournament finished - 2007/08/13 - 17:19:17 (ET) + 1: pzampa1 (Framingham), $1518.00 (27.50%) + 2: s0rrow (Perth), $966.00 (17.50%) + 3: aufgehts007 (ochtendung), $640.32 (11.60%) + 4: Monkey_Poo27 (Johnston), $441.60 (8%) + 5: seb54200 (toul), $331.20 (6%) + 6: CUNZIO (North White Plains), $248.40 (4.50%) + 7: idefix73 (Weil), $193.20 (3.50%) + 8: zedimbi (adelaide), $143.52 (2.60%) + 9: ELVIS GA1 (Anchorage), $93.84 (1.70%) + 10: EdgarWho? (Framingham), $66.24 (1.20%) + 11: jimeny999 (noble park), $66.24 (1.20%) + 12: imajewty (spotswood), $66.24 (1.20%) + 13: AshB1983 (Ashford), $66.24 (1.20%) + 14: NoOl3Ru (Morgins), $66.24 (1.20%) + 15: drspel (Borlaenge), $66.24 (1.20%) + 16: @ntonius (Väsby), $66.24 (1.20%) + 17: Canippa (Alba), $66.24 (1.20%) + 18: zico46 (Surrey), $66.24 (1.20%) + 19: Leuchtturm (Neunkirchen), $38.64 (0.70%) + 20: kameleon34 (Montpeyroux), $38.64 (0.70%) + 21: ProfPolo (Orlando), $38.64 (0.70%) + 22: Gala76 (ancona), $38.64 (0.70%) + 23: hardaway4480 (bristol), $38.64 (0.70%) + 24: Xijz (Berg en Dal), $38.64 (0.70%) + 25: Tilts78 (Sydney), $38.64 (0.70%) + 26: S_ciw86 (Southampton), $38.64 (0.70%) + 27: Mr. Redline (Woodbridge), $38.64 (0.70%) + 28: bananamoon (antwerp), + 29: jems25 (bristol), + 30: mik_corleone (Warrington), + 31: AALGAA (Amsterdam), + 32: MrBriggs99 (Würzburg), + 33: CATHY G1 (Blackpool), + 34: whosamuppet (Middle Of No Where), + 35: badkarmatom (Horn (HOLLAND)), + 36: gyx708 (SYDNEY NSW), + 37: schennie (barneveld), + 38: GRangers (Glasgow), + 39: Skiller77 (Prague), + 40: Talerric (Brisbane), + 41: CHRONIKCHAOS (lynnhood), + 42: lasker (Almere), + 43: Tinwer (Freilassing), + 44: coeckie (Leuven), + 45: Silverback9 (Gothenburg), + 46: pine857 (sand coulee), + 47: TPAT.N.FL (Sebring), + 48: JonLeeWalker (Land of the Free...), + 49: Bandit55688 (Sande), + 50: peruviano (roma), + 51: Crazy Carl (Owings Mills), + 52: nempancser (Budapest), + 53: talje10 (Södertälje), + 54: geba9901 (st. cloud), + 55: Feryac (Bruges), + 56: RiverMonkey (oklahoma city), + 57: sukibobo (albuquerque), + 58: TW_egg (Anchorage), + 59: Ivydrive (Cardiff), + 60: kakasjancsi (london), + 61: fibbe37 (fyn), + 62: + to the EV! (Tampa), + 63: aussie64 (sydney), + 64: MisterBlack1 (Gelsenkirchen), + 65: vegasking888 (NO CHAT), + 66: Sottywin (Sheffield), + 67: wiz66 (summerfield), + 68: hekat09 (støvring), + 69: buddha_64o (brookland), + 70: jaams (bergen), + 71: ThaSmuggla (Crossing Borders), + 72: Botaniker (Heidelberg), + 73: Feeeeez (NEUILLY SUR SEINE), + 74: milooser (le passage), + 75: Injunn (Sharpsville), + 76: Kpride (New York), + 77: The_Thug07 (Budapest), + 78: T.O.2005 (Moncton), + 79: longminh (Bulleen), + 80: 54 TDs (Bowie), + 81: Pitstop1099 (Richardson), + 82: SammeLee (Wellington), + 83: XxWULFFxX (Kastrup), + 84: RBS11 (Melbourne), + 85: NineOne0ne (Bayreuth), + 86: ZMLO (Winnipeg), + 87: Fluke2004 (Oakland), + 88: 77cercasi (scandicci), + 89: dragonjo (Sebring), + 90: Ralef (Golf), + 91: ids222 (Hamburg), + 92: kilmarta (Dublin), + 93: sratuain (Bergen), + 94: Bocarooster (Chicken Coop), + 95: $MrGio84$ (San Severino Marche), + 96: leplusbeau (I_HAS_NO_CHAT), + 97: leslieace (Amsterdam), + 98: LJ4000 (Roskilde), + 99: chiphunt dk (birkerod), + 100: dirty raskil (Mount Roskill), + 101: martymcflyjr (Florstadt), + 102: farim (Goettingen), + 103: Possy 2006 (Berlin), + 104: tansDK (copenhagen), + 105: BigFella1 (Watford), + 106: bdbd38 (Melvindale), + 107: yallan (Røros), + 108: rvdh51 (den haag), + 109: GREEK_ACES1 (WHAT ME WORRY), + 110: DgrBJ (Reykjavík), + 111: pisquiccio (caserta), + 112: txdave (Hewitt), + 113: 1aroma1 (toronto), + 114: dondolino (aiello del friuli), + 115: jier67 (Schiltigheim), + 116: IggyPlop (Plainville), + 117: BK0407 (Panama City Beach), + 118: bigfishforyo (Florida), + 119: Bravo,Jonny (Glasgow), + 120: angeleyes415 (East Lansing), + 121: PBaek (Aalborg SOE), + 122: Mackerell (Southampton), + 123: mr poovy (bogart), + 124: cashhog123 (Jacksonville), + 125: fava11 (Tolmezzo), + 126: natedog502 (Greenville), + 127: steven AK (felixstowe), + 128: VaLeBo (Damp), + 129: hovienko (Saint Louis), + 130: rockanroll (Jackson), + 131: turkpower244 (utrecht), + 132: BeaBaer (Passau), + 133: kurtkatt9 (angered), + 134: Zentrum81 (Geiselhöring), + 135: GT888 (SYDNEY), + 136: Bobs Bet56 (Acworth), + 137: IDLER87 (staranzano), + 138: texasdali (Fort Collins), + 139: Havana03 (Schwerin), + 140: draw2aflush (Burke), + 141: kypt (gravdal), + 142: ilovetherip (portstewart), + 143: claf37 (nsw), + 144: Jayse51 (Baraboo), + 145: www43 (Rishon Letzion), + 146: shakyRobin (Oslo), + 147: AKJ-10 (berlin), + 148: iou nutn (Fernvale), + 149: snokende (Berlin), + 150: MikaRau (Oulu), + 151: RayWSM (Weston Super Mare), + 152: RivaKila (Auckland), + 153: stickydeck (Las Vegas), + 154: nevagetit (bexleyheath), + 155: ripley2310 (Armidale), + 156: pasan1 (ROMA), + 157: HomeGuard99 (Kongsvinger), + 158: Spraggs (Northants), + 159: Hummer 96 (Vienna), + 160: RMulder1 (Maarssen), + 161: Scarletknigh (levittown), + 162: MasterJ71 (Landsmeer), + 163: geer_44 (Anchorage), + 164: nazdarovie (Paris), + 165: Giginho1 (LAS VEGAS), + 166: swifterjet (Aurora), + 167: Crass1968 (Stourbridge), + 168: KEUSS (Paris), + 169: clumber (norwich), + 170: fmmxx (London), + 171: maartenned (Delft), + 172: mrwibbles (victoria), + 173: DatDfrunchen (Rhodesia), + 174: Lock Stock (Oslo), + 175: pinfishtom (wilmington), + 176: JUANCINI (Melbourne, Victoria), + 177: Daddycool2 (Geelong), + 178: Fouruvakind (salmon arm), + 179: danclau (madrid), + 180: jw23ck11 (Las Vegas), + 181: mannicup (Wolfschlugen), + 182: Flames31 (Calgary), + 183: Damonsweat (Toronto), + 184: morrik32 (flin flon), + 185: starzz113 (Halmstad), + 186: GoTH1A (Vanlose), + 187: WFO 2005 (LONDON), + 188: Ineedarest (Deer Park), + 189: bugeatered1 (huntington), + 190: Cabrinha10 (Sandnes), + 191: danconnell3 (Bridlington), + 192: mel57222 (Lawrence), + 193: bubu14 (munich), + 194: merhej (Paris), + 195: Arnorinho (Gardabaer), + 196: vandave80 (st.gallen), + 197: IRIFACE (Kassel), + 198: Locke75 (Käshofen), + 199: phillymcnabb (Philadelphia), + 200: iGobbleChips (Los Gatos), + 201: buzzy721 (pgh), + 202: Mett Lyfe7 (Herne), + 203: JurijMN (Buttrio), + 204: suited35 (broken arrow), + 205: jamsy17 (las vegas), + 206: zacl (PERTH), + 207: pokermatic (gardner), + 208: deio12 (cagliari), + 209: St@r-K (L'Aquila), + 210: Obups (marseille), + 211: ds_007 (Wembley), + 212: rodeofritz (Antwerp), + 213: snoweed (Grenoble), + 214: cp83700 (saint raphael), + 215: pokerchampn (melbourne), + 216: Cafeblue (Nürnberg), + 217: snuffmigruff (Newark), + 218: Ditech27 (Aurora), + 219: Ose9 (Espoo), + 220: Bootsysucks (South London), + 221: joepke1988 (oisterwijk), + 222: smooty (french lick), + 223: RedBull214 (Tamarac), + 224: pookface (oisterwijk), + 225: Feuervogel1 (Hassendorf), + 226: bartje82 (Eindhoven), + 227: Valdizar (North Dandenong), + 228: jerome147 (Sydney), + 229: Evilduke11 (Oudenaarde), + 230: hambone200 (Yigo), + 231: yiamas (London), + 232: NotVerySmart (Everett), + 233: Blom21 (Mariehamn, Finland), + 234: rinoo (adelaide), + 235: Mares37 (East Brunswick), + 236: JAMAJESTY (NOTHAMPTONSHIRE), + 237: EngaUnited7 (Jaren), + 238: Fito6161 (Chelsea), + 239: dongernumps (loughborough), + 240: smattering (Amberg), + 241: gaaambler22 (kalmar), + 242: mick69b (sydney), + 243: bobleragout (aix en provence), + 244: pokski1000 (copenhagen), + 245: Diamond Si (Crafers), + 246: ballaperdida (Punta del Este), + 247: Racin19 (Grimsby), + 248: DUBBLE1 (waterloo), + 249: MORRISWEED (Longsdon), + 250: benj hamza (rabat), + 251: zAmzAngzAm (kassel), + 252: ravn jahn (askim), + 253: warren82 (lagny sur marne), + 254: Mallaca51 (Sydney), + 255: terry111 (hale), + 256: murf1950 (Sth Yarra), + 257: DEVILSOCK (LIMASSOL), + 258: tollamus (London), + 259: Kratzbaum666 (Bochum), + 260: nobluff63 (aventura), + 261: Russ Abbot (Durham), + 262: ROLLERSDICE (Halifax), + 263: AMYLEE80 (adelaide), + 264: udream (N.S.W), + 265: Herojunk (Herten), + 266: mekonium (Heinsberg), + 267: Hermann76 (Berlin), + 268: zizu72 (melito porto salvo), + 269: shizzi (Gold Coast), + 270: bjh800 (Buckhurst hill), + 271: amotz1 (tel-aviv), + 272: Sander G (Elst), + 273: jon041981 (renteria), + 274: CrazyFish01 (Uzhno-Sakhalinsk), + 275: JackAS71 (berlin ), + 276: GarrySmutts (Colchester), + +You finished in 2nd place. + + +If you have any questions, please contact us at support@pokerstars.com