Merge branch 'master' of git://git.assembla.com/fpdboz.git

This commit is contained in:
Eric Blade 2011-02-25 20:57:11 -05:00
commit 84dc935f1a
128 changed files with 17255 additions and 4243 deletions

View File

@ -27,8 +27,8 @@ Approx. 200 changesets (excl. merges) have gone in since 0.21-rc1. Some of the i
Where to get it Where to get it
=============== ===============
Please note that you will have to either recreate your database or use a new one if you're updating from 0.21-rc1 or older. Please note that you will have to either recreate your database or use a new one if you're updating from 0.21-rc1 or older. Config files from 0.20 and later should work. Please report if you have problems with config files from that version or later.
Config files from 0.20 and later should work. Please report if you have problems with config files from that version or later. You can find checksums (MD5 and SHA512) in the download folder.
To download: http://sourceforge.net/projects/fpdb/files/fpdb/Snapshots/ To download: http://sourceforge.net/projects/fpdb/files/fpdb/Snapshots/
To be notified by email of new versions you can subscribe to our announce mailing list here: https://lists.sourceforge.net/lists/listinfo/fpdb-announce To be notified by email of new versions you can subscribe to our announce mailing list here: https://lists.sourceforge.net/lists/listinfo/fpdb-announce

104
pyfpdb/Aux_Hud.py Normal file
View File

@ -0,0 +1,104 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Mucked.py
Mucked cards display for FreePokerTools HUD.
"""
# Copyright 2008-2010, Ray E. Barker
#
# 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
########################################################################
# to do
# Standard Library modules
# pyGTK modules
import gtk
import gobject
# FreePokerTools modules
import Mucked
import Stats
class Stat_Window(Mucked.Seat_Window):
"""Simple window class for stat windows."""
def create_contents(self, i):
self.grid = gtk.Table(rows = self.aw.nrows, columns = self.aw.ncols, homogeneous = False)
self.add(self.grid)
self.stat_box = [ [None]*self.aw.ncols for i in range(self.aw.nrows) ]
for r in xrange(self.aw.nrows):
for c in xrange(self.aw.ncols):
self.stat_box[r][c] = Simple_stat(self.aw.stats[r][c])
self.grid.attach(self.stat_box[r][c].widget, c, c+1, r, r+1, xpadding = self.aw.xpad, ypadding = self.aw.ypad)
def update_contents(self, i):
if i == "common": return
player_id = self.aw.get_id_from_seat(i)
if player_id is None: return
for r in xrange(self.aw.nrows):
for c in xrange(self.aw.ncols):
self.stat_box[r][c].update(player_id, self.aw.hud.stat_dict)
class Simple_HUD(Mucked.Aux_Seats):
"""A simple HUD class based on the Aux_Window interface."""
def __init__(self, hud, config, params):
super(Simple_HUD, self).__init__(hud, config, params)
# Save everything you need to know about the hud as attrs.
# That way a subclass doesn't have to grab them.
self.poker_game = self.hud.poker_game
self.game_params = self.hud.config.get_game_parameters(self.hud.poker_game)
self.game = self.hud.config.supported_games[self.hud.poker_game]
self.max = self.hud.max
self.nrows = self.game_params['rows']
self.ncols = self.game_params['cols']
self.xpad = self.game_params['xpad']
self.ypad = self.game_params['ypad']
self.xshift = self.game_params['xshift']
self.yshift = self.game_params['yshift']
self.aw_window_type = Stat_Window
# layout is handled by superclass!
self.stats = [ [None]*self.ncols for i in range(self.nrows) ]
for stat in self.game.stats:
self.stats[self.config.supported_games[self.poker_game].stats[stat].row] \
[self.config.supported_games[self.poker_game].stats[stat].col] = \
self.config.supported_games[self.poker_game].stats[stat].stat_name
def create_contents(self, container, i):
container.create_contents(i)
def update_contents(self, container, i):
container.update_contents(i)
class Simple_stat(object):
"""A simple class for displaying a single stat."""
def __init__(self, stat):
self.stat = stat
self.eb = Simple_eb();
self.lab = Simple_label(self.stat)
self.eb.add(self.lab)
self.widget = self.eb
def update(self, player_id, stat_dict):
self.lab.set_text( str(Stats.do_stat(stat_dict, player_id, self.stat)[1]) )
# Override thise methods to customize your eb or label
class Simple_eb(gtk.EventBox): pass
class Simple_label(gtk.Label): pass

View File

@ -231,6 +231,8 @@ class Layout:
self.max = int( node.getAttribute('max') ) self.max = int( node.getAttribute('max') )
if node.hasAttribute('fav_seat'): self.fav_seat = int( node.getAttribute('fav_seat') ) if node.hasAttribute('fav_seat'): self.fav_seat = int( node.getAttribute('fav_seat') )
if node.hasAttribute('name'): self.name = node.getAttribute('name')
else: self.name = None
self.width = int( node.getAttribute('width') ) self.width = int( node.getAttribute('width') )
self.height = int( node.getAttribute('height') ) self.height = int( node.getAttribute('height') )
@ -244,7 +246,11 @@ class Layout:
self.common = (int( location_node.getAttribute('x') ), int( location_node.getAttribute('y'))) self.common = (int( location_node.getAttribute('x') ), int( location_node.getAttribute('y')))
def __str__(self): def __str__(self):
temp = " Layout = %d max, width= %d, height = %d" % (self.max, self.width, self.height) if hasattr(self, 'name'):
name = self.name + ", "
else:
name = ""
temp = " Layout = %s%d max, width= %d, height = %d" % (name, self.max, self.width, self.height)
if hasattr(self, 'fav_seat'): temp = temp + ", fav_seat = %d\n" % self.fav_seat if hasattr(self, 'fav_seat'): temp = temp + ", fav_seat = %d\n" % self.fav_seat
else: temp = temp + "\n" else: temp = temp + "\n"
if hasattr(self, "common"): if hasattr(self, "common"):
@ -477,6 +483,7 @@ class Import:
self.interval = node.getAttribute("interval") self.interval = node.getAttribute("interval")
self.callFpdbHud = node.getAttribute("callFpdbHud") self.callFpdbHud = node.getAttribute("callFpdbHud")
self.hhArchiveBase = node.getAttribute("hhArchiveBase") self.hhArchiveBase = node.getAttribute("hhArchiveBase")
self.ResultsDirectory = node.getAttribute("ResultsDirectory")
self.hhBulkPath = node.getAttribute("hhBulkPath") self.hhBulkPath = node.getAttribute("hhBulkPath")
self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=False) self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=False)
self.cacheSessions = string_to_bool(node.getAttribute("cacheSessions"), default=False) self.cacheSessions = string_to_bool(node.getAttribute("cacheSessions"), default=False)
@ -485,8 +492,8 @@ class Import:
self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False) self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False)
def __str__(self): def __str__(self):
return " interval = %s\n callFpdbHud = %s\n hhArchiveBase = %s\n saveActions = %s\n fastStoreHudCache = %s\n" \ return " interval = %s\n callFpdbHud = %s\n hhArchiveBase = %s\n saveActions = %s\n fastStoreHudCache = %s\nResultsDirectory = %s" \
% (self.interval, self.callFpdbHud, self.hhArchiveBase, self.saveActions, self.cacheSessions, self.sessionTimeout, self.fastStoreHudCache) % (self.interval, self.callFpdbHud, self.hhArchiveBase, self.saveActions, self.cacheSessions, self.sessionTimeout, self.fastStoreHudCache, self.ResultsDirectory)
class HudUI: class HudUI:
def __init__(self, node): def __init__(self, node):
@ -1255,6 +1262,14 @@ class Config:
try: imp['hhArchiveBase'] = self.imp.hhArchiveBase try: imp['hhArchiveBase'] = self.imp.hhArchiveBase
except: imp['hhArchiveBase'] = "~/.fpdb/HandHistories/" except: imp['hhArchiveBase'] = "~/.fpdb/HandHistories/"
# ResultsDirectory is the local cache for downloaded results
# NOTE: try: except: doesn'tseem to be triggering
# using if instead
if self.imp.ResultsDirectory != '':
imp['ResultsDirectory'] = self.imp.ResultsDirectory
else:
imp['ResultsDirectory'] = "~/.fpdb/Results/"
# hhBulkPath is the default location for bulk imports (if set) # hhBulkPath is the default location for bulk imports (if set)
try: imp['hhBulkPath'] = self.imp.hhBulkPath try: imp['hhBulkPath'] = self.imp.hhBulkPath
except: imp['hhBulkPath'] = "" except: imp['hhBulkPath'] = ""
@ -1485,7 +1500,7 @@ if __name__== "__main__":
print "----------- END POPUP WINDOW FORMATS -----------" print "----------- END POPUP WINDOW FORMATS -----------"
print "\n----------- IMPORT -----------" print "\n----------- IMPORT -----------"
print c.imp # print c.imp # Need to add an str method for imp to print
print "----------- END IMPORT -----------" print "----------- END IMPORT -----------"
c.edit_layout("PokerStars", 6, locations=( (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6) )) c.edit_layout("PokerStars", 6, locations=( (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6) ))

View File

@ -73,7 +73,7 @@ except ImportError:
use_numpy = False use_numpy = False
DB_VERSION = 147 DB_VERSION = 149
# Variance created as sqlite has a bunch of undefined aggregate functions. # Variance created as sqlite has a bunch of undefined aggregate functions.
@ -125,7 +125,8 @@ class Database:
{'tab':'Gametypes', 'col':'siteId', 'drop':0} {'tab':'Gametypes', 'col':'siteId', 'drop':0}
, {'tab':'Hands', 'col':'gametypeId', 'drop':0} # mct 22/3/09 , {'tab':'Hands', 'col':'gametypeId', 'drop':0} # mct 22/3/09
#, {'tab':'Hands', 'col':'siteHandNo', 'drop':0} unique indexes not dropped #, {'tab':'Hands', 'col':'siteHandNo', 'drop':0} unique indexes not dropped
, {'tab':'HandsActions', 'col':'handsPlayerId', 'drop':0} , {'tab':'HandsActions', 'col':'handId', 'drop':1}
, {'tab':'HandsActions', 'col':'playerId', 'drop':1}
, {'tab':'HandsActions', 'col':'actionId', 'drop':1} , {'tab':'HandsActions', 'col':'actionId', 'drop':1}
, {'tab':'HandsPlayers', 'col':'handId', 'drop':1} , {'tab':'HandsPlayers', 'col':'handId', 'drop':1}
, {'tab':'HandsPlayers', 'col':'playerId', 'drop':1} , {'tab':'HandsPlayers', 'col':'playerId', 'drop':1}
@ -150,7 +151,8 @@ class Database:
, {'tab':'HandsPlayers', 'col':'handId', 'drop':0} , {'tab':'HandsPlayers', 'col':'handId', 'drop':0}
, {'tab':'HandsPlayers', 'col':'playerId', 'drop':0} , {'tab':'HandsPlayers', 'col':'playerId', 'drop':0}
, {'tab':'HandsPlayers', 'col':'tourneysPlayersId', 'drop':0} , {'tab':'HandsPlayers', 'col':'tourneysPlayersId', 'drop':0}
, {'tab':'HandsActions', 'col':'handsPlayerId', 'drop':0} , {'tab':'HandsActions', 'col':'handId', 'drop':0}
, {'tab':'HandsActions', 'col':'playerId', 'drop':0}
, {'tab':'HandsActions', 'col':'actionId', 'drop':1} , {'tab':'HandsActions', 'col':'actionId', 'drop':1}
, {'tab':'HudCache', 'col':'gametypeId', 'drop':1} , {'tab':'HudCache', 'col':'gametypeId', 'drop':1}
, {'tab':'HudCache', 'col':'playerId', 'drop':0} , {'tab':'HudCache', 'col':'playerId', 'drop':0}
@ -174,7 +176,8 @@ class Database:
, {'fktab':'HandsPlayers', 'fkcol':'handId', 'rtab':'Hands', 'rcol':'id', 'drop':1} , {'fktab':'HandsPlayers', 'fkcol':'handId', 'rtab':'Hands', 'rcol':'id', 'drop':1}
, {'fktab':'HandsPlayers', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':1} , {'fktab':'HandsPlayers', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':1}
, {'fktab':'HandsPlayers', 'fkcol':'tourneysPlayersId','rtab':'TourneysPlayers','rcol':'id', 'drop':1} , {'fktab':'HandsPlayers', 'fkcol':'tourneysPlayersId','rtab':'TourneysPlayers','rcol':'id', 'drop':1}
, {'fktab':'HandsActions', 'fkcol':'handsPlayerId', 'rtab':'HandsPlayers', 'rcol':'id', 'drop':1} , {'fktab':'HandsActions', 'fkcol':'handId', 'rtab':'Hands', 'rcol':'id', 'drop':1}
, {'fktab':'HandsActions', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':1}
, {'fktab':'HandsActions', 'fkcol':'actionId', 'rtab':'Actions', 'rcol':'id', 'drop':1} , {'fktab':'HandsActions', 'fkcol':'actionId', 'rtab':'Actions', 'rcol':'id', 'drop':1}
, {'fktab':'HudCache', 'fkcol':'gametypeId', 'rtab':'Gametypes', 'rcol':'id', 'drop':1} , {'fktab':'HudCache', 'fkcol':'gametypeId', 'rtab':'Gametypes', 'rcol':'id', 'drop':1}
, {'fktab':'HudCache', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':0} , {'fktab':'HudCache', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':0}
@ -184,7 +187,8 @@ class Database:
{'fktab':'Hands', 'fkcol':'gametypeId', 'rtab':'Gametypes', 'rcol':'id', 'drop':1} {'fktab':'Hands', 'fkcol':'gametypeId', 'rtab':'Gametypes', 'rcol':'id', 'drop':1}
, {'fktab':'HandsPlayers', 'fkcol':'handId', 'rtab':'Hands', 'rcol':'id', 'drop':1} , {'fktab':'HandsPlayers', 'fkcol':'handId', 'rtab':'Hands', 'rcol':'id', 'drop':1}
, {'fktab':'HandsPlayers', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':1} , {'fktab':'HandsPlayers', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':1}
, {'fktab':'HandsActions', 'fkcol':'handsPlayerId', 'rtab':'HandsPlayers', 'rcol':'id', 'drop':1} , {'fktab':'HandsActions', 'fkcol':'handId', 'rtab':'Hands', 'rcol':'id', 'drop':1}
, {'fktab':'HandsActions', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':1}
, {'fktab':'HandsActions', 'fkcol':'actionId', 'rtab':'Actions', 'rcol':'id', 'drop':1} , {'fktab':'HandsActions', 'fkcol':'actionId', 'rtab':'Actions', 'rcol':'id', 'drop':1}
, {'fktab':'HudCache', 'fkcol':'gametypeId', 'rtab':'Gametypes', 'rcol':'id', 'drop':1} , {'fktab':'HudCache', 'fkcol':'gametypeId', 'rtab':'Gametypes', 'rcol':'id', 'drop':1}
, {'fktab':'HudCache', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':0} , {'fktab':'HudCache', 'fkcol':'playerId', 'rtab':'Players', 'rcol':'id', 'drop':0}
@ -450,7 +454,7 @@ class Database:
self.connection = sqlite3.connect(self.db_path, detect_types=sqlite3.PARSE_DECLTYPES ) self.connection = sqlite3.connect(self.db_path, detect_types=sqlite3.PARSE_DECLTYPES )
self.__connected = True self.__connected = True
sqlite3.register_converter("bool", lambda x: bool(int(x))) sqlite3.register_converter("bool", lambda x: bool(int(x)))
sqlite3.register_adapter(bool, lambda x: "1" if x else "0") sqlite3.register_adapter(bool, lambda x: 1 if x else 0)
self.connection.create_function("floor", 1, math.floor) self.connection.create_function("floor", 1, math.floor)
tmp = sqlitemath() tmp = sqlitemath()
self.connection.create_function("mod", 2, tmp.mod) self.connection.create_function("mod", 2, tmp.mod)
@ -634,6 +638,18 @@ class Database:
return c.fetchone()[0] return c.fetchone()[0]
#end def getTourneyCount #end def getTourneyCount
def getSiteTourneyNos(self, site):
c = self.connection.cursor()
# FIXME: Take site and actually fetch siteId from that
# Fixed to Winamax atm
q = self.sql.query['getSiteTourneyNos']
q = q.replace('%s', self.sql.query['placeholder'])
c.execute(q, (14,))
alist = []
for row in c.fetchall():
alist.append(row)
return alist
def get_actual_seat(self, hand_id, name): def get_actual_seat(self, hand_id, name):
c = self.connection.cursor() c = self.connection.cursor()
c.execute(self.sql.query['get_actual_seat'], (hand_id, name)) c.execute(self.sql.query['get_actual_seat'], (hand_id, name))
@ -1507,6 +1523,7 @@ class Database:
c.execute("INSERT INTO Sites (name,code) VALUES ('PKR', 'PK')") c.execute("INSERT INTO Sites (name,code) VALUES ('PKR', 'PK')")
c.execute("INSERT INTO Sites (name,code) VALUES ('iPoker', 'IP')") c.execute("INSERT INTO Sites (name,code) VALUES ('iPoker', 'IP')")
c.execute("INSERT INTO Sites (name,code) VALUES ('Winamax', 'WM')") c.execute("INSERT INTO Sites (name,code) VALUES ('Winamax', 'WM')")
c.execute("INSERT INTO Sites (name,code) VALUES ('Everest', 'EP')")
#Fill Actions #Fill Actions
c.execute("INSERT INTO Actions (name,code) VALUES ('ante', 'A')") c.execute("INSERT INTO Actions (name,code) VALUES ('ante', 'A')")
c.execute("INSERT INTO Actions (name,code) VALUES ('small blind', 'SB')") c.execute("INSERT INTO Actions (name,code) VALUES ('small blind', 'SB')")
@ -1714,9 +1731,10 @@ class Database:
c.execute(q, ( c.execute(q, (
p['tableName'], p['tableName'],
p['gametypeId'],
p['siteHandNo'], p['siteHandNo'],
p['tourneyId'], p['tourneyId'],
p['gametypeId'],
p['sessionId'],
p['startTime'], p['startTime'],
datetime.utcnow(), #importtime datetime.utcnow(), #importtime
p['seats'], p['seats'],
@ -1747,7 +1765,7 @@ class Database:
return self.get_last_insert_id(c) return self.get_last_insert_id(c)
# def storeHand # def storeHand
def storeHandsPlayers(self, hid, pids, pdata, printdata = False): def storeHandsPlayers(self, hid, pids, pdata, hp_bulk = None, insert = False, printdata = False):
#print "DEBUG: %s %s %s" %(hid, pids, pdata) #print "DEBUG: %s %s %s" %(hid, pids, pdata)
if printdata: if printdata:
import pprint import pprint
@ -1755,7 +1773,6 @@ class Database:
pp.pprint(pdata) pp.pprint(pdata)
inserts = [] inserts = []
hpid = {}
for p in pdata: for p in pdata:
inserts.append( (hid, inserts.append( (hid,
pids[p], pids[p],
@ -1813,8 +1830,15 @@ class Database:
pdata[p]['street0_3BDone'], pdata[p]['street0_3BDone'],
pdata[p]['street0_4BChance'], pdata[p]['street0_4BChance'],
pdata[p]['street0_4BDone'], pdata[p]['street0_4BDone'],
pdata[p]['other3BStreet0'], pdata[p]['street0_C4BChance'],
pdata[p]['other4BStreet0'], pdata[p]['street0_C4BDone'],
pdata[p]['street0_FoldTo3BChance'],
pdata[p]['street0_FoldTo3BDone'],
pdata[p]['street0_FoldTo4BChance'],
pdata[p]['street0_FoldTo4BDone'],
pdata[p]['street0_SqueezeChance'],
pdata[p]['street0_SqueezeDone'],
pdata[p]['success_Steal'],
pdata[p]['otherRaisedStreet0'], pdata[p]['otherRaisedStreet0'],
pdata[p]['otherRaisedStreet1'], pdata[p]['otherRaisedStreet1'],
pdata[p]['otherRaisedStreet2'], pdata[p]['otherRaisedStreet2'],
@ -1854,23 +1878,16 @@ class Database:
pdata[p]['street4Raises'] pdata[p]['street4Raises']
) ) ) )
if insert:
hp_bulk += inserts
q = self.sql.query['store_hands_players'] q = self.sql.query['store_hands_players']
q = q.replace('%s', self.sql.query['placeholder']) q = q.replace('%s', self.sql.query['placeholder'])
#print "DEBUG: inserts: %s" %inserts
#print "DEBUG: q: %s" % q
c = self.get_cursor() c = self.get_cursor()
c.executemany(q, hp_bulk)
if self.import_options['saveActions']: return inserts
for r in inserts:
c.execute(q, r)
hpid[(r[0], r[1])] = self.get_last_insert_id(c)
else:
c.executemany(q, inserts)
return hpid def storeHandsActions(self, hid, pids, adata, ha_bulk = None, insert = False, printdata = False):
def storeHandsActions(self, hid, pids, hpid, adata, printdata = False):
#print "DEBUG: %s %s %s" %(hid, pids, adata) #print "DEBUG: %s %s %s" %(hid, pids, adata)
# This can be used to generate test data. Currently unused # This can be used to generate test data. Currently unused
@ -1881,8 +1898,8 @@ class Database:
inserts = [] inserts = []
for a in adata: for a in adata:
inserts.append( (hpid[(hid, pids[adata[a]['player']])], inserts.append( (hid,
#self.getHandsPlayerId(self.hid, pids[adata[a]['player']]), pids[adata[a]['player']],
adata[a]['street'], adata[a]['street'],
adata[a]['actionNo'], adata[a]['actionNo'],
adata[a]['streetActionNo'], adata[a]['streetActionNo'],
@ -1895,11 +1912,14 @@ class Database:
adata[a]['allIn'] adata[a]['allIn']
) ) ) )
if insert:
ha_bulk += inserts
q = self.sql.query['store_hands_actions'] q = self.sql.query['store_hands_actions']
q = q.replace('%s', self.sql.query['placeholder']) q = q.replace('%s', self.sql.query['placeholder'])
c = self.get_cursor() c = self.get_cursor()
c.executemany(q, inserts) c.executemany(q, ha_bulk)
return inserts
def storeHudCache(self, gid, pids, starttime, pdata): def storeHudCache(self, gid, pids, starttime, pdata):
"""Update cached statistics. If update fails because no record exists, do an insert.""" """Update cached statistics. If update fails because no record exists, do an insert."""
@ -1926,95 +1946,103 @@ class Database:
#print "DEBUG: %s %s %s" %(hid, pids, pdata) #print "DEBUG: %s %s %s" %(hid, pids, pdata)
inserts = [] inserts = []
for p in pdata: for p in pdata:
line = [0]*85 #NOTE: Insert new stats at right place because SQL needs strict order
line = []
line[0] = 1 # HDs line.append(1) # HDs
if pdata[p]['street0VPI']: line[1] = 1 line.append(pdata[p]['street0VPI'])
if pdata[p]['street0Aggr']: line[2] = 1 line.append(pdata[p]['street0Aggr'])
if pdata[p]['street0_3BChance']: line[3] = 1 line.append(pdata[p]['street0_3BChance'])
if pdata[p]['street0_3BDone']: line[4] = 1 line.append(pdata[p]['street0_3BDone'])
if pdata[p]['street0_4BChance']: line[5] = 1 line.append(pdata[p]['street0_4BChance'])
if pdata[p]['street0_4BDone']: line[6] = 1 line.append(pdata[p]['street0_4BDone'])
if pdata[p]['other3BStreet0']: line[7] = 1 line.append(pdata[p]['street0_C4BChance'])
if pdata[p]['other4BStreet0']: line[8] = 1 line.append(pdata[p]['street0_C4BDone'])
if pdata[p]['street1Seen']: line[9] = 1 line.append(pdata[p]['street0_FoldTo3BChance'])
if pdata[p]['street2Seen']: line[10] = 1 line.append(pdata[p]['street0_FoldTo3BDone'])
if pdata[p]['street3Seen']: line[11] = 1 line.append(pdata[p]['street0_FoldTo4BChance'])
if pdata[p]['street4Seen']: line[12] = 1 line.append(pdata[p]['street0_FoldTo4BDone'])
if pdata[p]['sawShowdown']: line[13] = 1 line.append(pdata[p]['street0_SqueezeChance'])
if pdata[p]['street1Aggr']: line[14] = 1 line.append(pdata[p]['street0_SqueezeDone'])
if pdata[p]['street2Aggr']: line[15] = 1 line.append(pdata[p]['success_Steal'])
if pdata[p]['street3Aggr']: line[16] = 1 line.append(pdata[p]['street1Seen'])
if pdata[p]['street4Aggr']: line[17] = 1 line.append(pdata[p]['street2Seen'])
if pdata[p]['otherRaisedStreet0']: line[18] = 1 line.append(pdata[p]['street3Seen'])
if pdata[p]['otherRaisedStreet1']: line[19] = 1 line.append(pdata[p]['street4Seen'])
if pdata[p]['otherRaisedStreet2']: line[20] = 1 line.append(pdata[p]['sawShowdown'])
if pdata[p]['otherRaisedStreet3']: line[21] = 1 line.append(pdata[p]['street1Aggr'])
if pdata[p]['otherRaisedStreet4']: line[22] = 1 line.append(pdata[p]['street2Aggr'])
if pdata[p]['foldToOtherRaisedStreet0']: line[23] = 1 line.append(pdata[p]['street3Aggr'])
if pdata[p]['foldToOtherRaisedStreet1']: line[24] = 1 line.append(pdata[p]['street4Aggr'])
if pdata[p]['foldToOtherRaisedStreet2']: line[25] = 1 line.append(pdata[p]['otherRaisedStreet0'])
if pdata[p]['foldToOtherRaisedStreet3']: line[26] = 1 line.append(pdata[p]['otherRaisedStreet1'])
if pdata[p]['foldToOtherRaisedStreet4']: line[27] = 1 line.append(pdata[p]['otherRaisedStreet2'])
line[28] = pdata[p]['wonWhenSeenStreet1'] line.append(pdata[p]['otherRaisedStreet3'])
line[29] = pdata[p]['wonWhenSeenStreet2'] line.append(pdata[p]['otherRaisedStreet4'])
line[30] = pdata[p]['wonWhenSeenStreet3'] line.append(pdata[p]['foldToOtherRaisedStreet0'])
line[31] = pdata[p]['wonWhenSeenStreet4'] line.append(pdata[p]['foldToOtherRaisedStreet1'])
line[32] = pdata[p]['wonAtSD'] line.append(pdata[p]['foldToOtherRaisedStreet2'])
if pdata[p]['raiseFirstInChance']: line[33] = 1 line.append(pdata[p]['foldToOtherRaisedStreet3'])
if pdata[p]['raisedFirstIn']: line[34] = 1 line.append(pdata[p]['foldToOtherRaisedStreet4'])
if pdata[p]['foldBbToStealChance']: line[35] = 1 line.append(pdata[p]['wonWhenSeenStreet1'])
if pdata[p]['foldedBbToSteal']: line[36] = 1 line.append(pdata[p]['wonWhenSeenStreet2'])
if pdata[p]['foldSbToStealChance']: line[37] = 1 line.append(pdata[p]['wonWhenSeenStreet3'])
if pdata[p]['foldedSbToSteal']: line[38] = 1 line.append(pdata[p]['wonWhenSeenStreet4'])
if pdata[p]['street1CBChance']: line[39] = 1 line.append(pdata[p]['wonAtSD'])
if pdata[p]['street1CBDone']: line[40] = 1 line.append(pdata[p]['raiseFirstInChance'])
if pdata[p]['street2CBChance']: line[41] = 1 line.append(pdata[p]['raisedFirstIn'])
if pdata[p]['street2CBDone']: line[42] = 1 line.append(pdata[p]['foldBbToStealChance'])
if pdata[p]['street3CBChance']: line[43] = 1 line.append(pdata[p]['foldedBbToSteal'])
if pdata[p]['street3CBDone']: line[44] = 1 line.append(pdata[p]['foldSbToStealChance'])
if pdata[p]['street4CBChance']: line[45] = 1 line.append(pdata[p]['foldedSbToSteal'])
if pdata[p]['street4CBDone']: line[46] = 1 line.append(pdata[p]['street1CBChance'])
if pdata[p]['foldToStreet1CBChance']: line[47] = 1 line.append(pdata[p]['street1CBDone'])
if pdata[p]['foldToStreet1CBDone']: line[48] = 1 line.append(pdata[p]['street2CBChance'])
if pdata[p]['foldToStreet2CBChance']: line[49] = 1 line.append(pdata[p]['street2CBDone'])
if pdata[p]['foldToStreet2CBDone']: line[50] = 1 line.append(pdata[p]['street3CBChance'])
if pdata[p]['foldToStreet3CBChance']: line[51] = 1 line.append(pdata[p]['street3CBDone'])
if pdata[p]['foldToStreet3CBDone']: line[52] = 1 line.append(pdata[p]['street4CBChance'])
if pdata[p]['foldToStreet4CBChance']: line[53] = 1 line.append(pdata[p]['street4CBDone'])
if pdata[p]['foldToStreet4CBDone']: line[54] = 1 line.append(pdata[p]['foldToStreet1CBChance'])
line[55] = pdata[p]['totalProfit'] line.append(pdata[p]['foldToStreet1CBDone'])
if pdata[p]['street1CheckCallRaiseChance']: line[56] = 1 line.append(pdata[p]['foldToStreet2CBChance'])
if pdata[p]['street1CheckCallRaiseDone']: line[57] = 1 line.append(pdata[p]['foldToStreet2CBDone'])
if pdata[p]['street2CheckCallRaiseChance']: line[58] = 1 line.append(pdata[p]['foldToStreet3CBChance'])
if pdata[p]['street2CheckCallRaiseDone']: line[59] = 1 line.append(pdata[p]['foldToStreet3CBDone'])
if pdata[p]['street3CheckCallRaiseChance']: line[60] = 1 line.append(pdata[p]['foldToStreet4CBChance'])
if pdata[p]['street3CheckCallRaiseDone']: line[61] = 1 line.append(pdata[p]['foldToStreet4CBDone'])
if pdata[p]['street4CheckCallRaiseChance']: line[62] = 1 line.append(pdata[p]['totalProfit'])
if pdata[p]['street4CheckCallRaiseDone']: line[63] = 1 line.append(pdata[p]['street1CheckCallRaiseChance'])
if pdata[p]['street0Calls']: line[64] = 1 line.append(pdata[p]['street1CheckCallRaiseDone'])
if pdata[p]['street1Calls']: line[65] = 1 line.append(pdata[p]['street2CheckCallRaiseChance'])
if pdata[p]['street2Calls']: line[66] = 1 line.append(pdata[p]['street2CheckCallRaiseDone'])
if pdata[p]['street3Calls']: line[67] = 1 line.append(pdata[p]['street3CheckCallRaiseChance'])
if pdata[p]['street4Calls']: line[68] = 1 line.append(pdata[p]['street3CheckCallRaiseDone'])
if pdata[p]['street0Bets']: line[69] = 1 line.append(pdata[p]['street4CheckCallRaiseChance'])
if pdata[p]['street1Bets']: line[70] = 1 line.append(pdata[p]['street4CheckCallRaiseDone'])
if pdata[p]['street2Bets']: line[71] = 1 line.append(pdata[p]['street0Calls'])
if pdata[p]['street3Bets']: line[72] = 1 line.append(pdata[p]['street1Calls'])
if pdata[p]['street4Bets']: line[73] = 1 line.append(pdata[p]['street2Calls'])
if pdata[p]['street0Raises']: line[74] = 1 line.append(pdata[p]['street3Calls'])
if pdata[p]['street1Raises']: line[75] = 1 line.append(pdata[p]['street4Calls'])
if pdata[p]['street2Raises']: line[76] = 1 line.append(pdata[p]['street0Bets'])
if pdata[p]['street3Raises']: line[77] = 1 line.append(pdata[p]['street1Bets'])
if pdata[p]['street4Raises']: line[78] = 1 line.append(pdata[p]['street2Bets'])
line.append(pdata[p]['street3Bets'])
line.append(pdata[p]['street4Bets'])
line.append(pdata[p]['street0Raises'])
line.append(pdata[p]['street1Raises'])
line.append(pdata[p]['street2Raises'])
line.append(pdata[p]['street3Raises'])
line.append(pdata[p]['street4Raises'])
line[79] = gid # gametypeId line.append(gid) # gametypeId
line[80] = pids[p] # playerId line.append(pids[p]) # playerId
line[81] = len(pids) # activeSeats line.append(len(pids)) # activeSeats
pos = {'B':'B', 'S':'S', 0:'D', 1:'C', 2:'M', 3:'M', 4:'M', 5:'E', 6:'E', 7:'E', 8:'E', 9:'E' } pos = {'B':'B', 'S':'S', 0:'D', 1:'C', 2:'M', 3:'M', 4:'M', 5:'E', 6:'E', 7:'E', 8:'E', 9:'E' }
line[82] = pos[pdata[p]['position']] line.append(pos[pdata[p]['position']])
line[83] = pdata[p]['tourneyTypeId'] line.append(pdata[p]['tourneyTypeId'])
line[84] = styleKey # styleKey line.append(styleKey) # styleKey
inserts.append(line) inserts.append(line)
@ -2040,10 +2068,9 @@ class Database:
pass pass
def storeSessionsCache(self, pids, startTime, game, pdata): def storeSessionsCache(self, pids, startTime, game, pdata):
"""Update cached sessions. If update fails because no record exists, do an insert""" """Update cached sessions. If no record exists, do an insert"""
THRESHOLD = timedelta(seconds=int(self.sessionTimeout * 60)) THRESHOLD = timedelta(seconds=int(self.sessionTimeout * 60))
bigBet = int(Decimal(game['bb'])*200)
select_sessionscache = self.sql.query['select_sessionscache'] select_sessionscache = self.sql.query['select_sessionscache']
select_sessionscache = select_sessionscache.replace('%s', self.sql.query['placeholder']) select_sessionscache = select_sessionscache.replace('%s', self.sql.query['placeholder'])
@ -2066,6 +2093,9 @@ class Database:
delete_sessions = self.sql.query['delete_sessions'] delete_sessions = self.sql.query['delete_sessions']
delete_sessions = delete_sessions.replace('%s', self.sql.query['placeholder']) delete_sessions = delete_sessions.replace('%s', self.sql.query['placeholder'])
update_hands_sessionid = self.sql.query['update_hands_sessionid']
update_hands_sessionid = update_hands_sessionid.replace('%s', self.sql.query['placeholder'])
#Grab playerIds using hero names in HUD_Config.xml #Grab playerIds using hero names in HUD_Config.xml
try: try:
# derive list of program owner's player ids # derive list of program owner's player ids
@ -2095,29 +2125,32 @@ class Database:
if (game['type']=='ring'): line[0] = 1 # count ring hands if (game['type']=='ring'): line[0] = 1 # count ring hands
if (game['type']=='tour'): line[1] = 1 # count tour hands if (game['type']=='tour'): line[1] = 1 # count tour hands
if (game['type']=='ring'): line[2] = pdata[p]['totalProfit'] #sum of profit if (game['type']=='ring' and game['currency']=='USD'): line[2] = pdata[p]['totalProfit'] #sum of ring profit in USD
if (game['type']=='ring'): line[3] = 0 #float(Decimal(pdata[p]['totalProfit'])/Decimal(bigBet)) #sum of big bets won if (game['type']=='ring' and game['currency']=='EUR'): line[3] = pdata[p]['totalProfit'] #sum of ring profit in EUR
line[4] = startTime line[4] = startTime
inserts.append(line) inserts.append(line)
cursor = self.get_cursor() cursor = self.get_cursor()
id = None
for row in inserts: for row in inserts:
threshold = [] threshold = []
threshold.append(row[-1]-THRESHOLD) threshold.append(row[-1]-THRESHOLD)
threshold.append(row[-1]+THRESHOLD) threshold.append(row[-1]+THRESHOLD)
cursor.execute(select_sessionscache, threshold) cursor.execute(select_sessionscache, threshold)
num = cursor.rowcount session_records = cursor.fetchall()
num = len(session_records)
if (num == 1): if (num == 1):
id = session_records[0][0] #grab the sessionId
# Try to do the update first: # Try to do the update first:
#print "DEBUG: found 1 record to update" #print "DEBUG: found 1 record to update"
update_mid = row + row[-1:] update_mid = row + row[-1:]
cursor.execute(select_sessionscache_mid, update_mid[-2:]) cursor.execute(select_sessionscache_mid, update_mid[-2:])
mid = cursor.rowcount mid = len(cursor.fetchall())
if (mid == 0): if (mid == 0):
update_startend = row[-1:] + row + threshold update_startend = row[-1:] + row + threshold
cursor.execute(select_sessionscache_start, update_startend[-3:]) cursor.execute(select_sessionscache_start, update_startend[-3:])
start = cursor.rowcount start = len(cursor.fetchall())
if (start == 0): if (start == 0):
#print "DEBUG:", start, " start record found. Update stats and start time" #print "DEBUG:", start, " start record found. Update stats and start time"
cursor.execute(update_sessionscache_end, update_startend) cursor.execute(update_sessionscache_end, update_startend)
@ -2128,27 +2161,23 @@ class Database:
#print "DEBUG: update stats mid-session" #print "DEBUG: update stats mid-session"
cursor.execute(update_sessionscache_mid, update_mid) cursor.execute(update_sessionscache_mid, update_mid)
elif (num > 1): elif (num > 1):
session_ids = [session_records[0][0], session_records[1][0]]
session_ids.sort()
# Multiple matches found - merge them into one session and update: # Multiple matches found - merge them into one session and update:
#print "DEBUG:", num, "matches found" # - Obtain the session start and end times for the new combined session
cursor.execute(merge_sessionscache, threshold) cursor.execute(merge_sessionscache, session_ids)
merge = cursor.fetchone() merge = cursor.fetchone()
cursor.execute(delete_sessions, threshold) # - Delete the old records
for id in session_ids:
cursor.execute(delete_sessions, id)
# - Insert the new updated record
cursor.execute(insert_sessionscache, merge) cursor.execute(insert_sessionscache, merge)
# - Obtain the new sessionId and write over the old ids in Hands
id = self.get_last_insert_id(cursor) #grab the sessionId
update_hands = [id] + session_ids
cursor.execute(update_hands_sessionid, update_hands)
# - Update the newly combined record in SessionsCache with data from this hand
update_mid = row + row[-1:] update_mid = row + row[-1:]
cursor.execute(select_sessionscache_mid, update_mid[-2:])
mid = cursor.rowcount
if (mid == 0):
update_startend = row[-1:] + row + threshold
cursor.execute(select_sessionscache_start, update_startend[-3:])
start = cursor.rowcount
if (start == 0):
#print "DEBUG:", start, " start record found. Update stats and start time"
cursor.execute(update_sessionscache_end, update_startend)
else:
#print "DEBUG: 1 end record found. Update stats and end time time"
cursor.execute(update_sessionscache_start, update_startend)
else:
#print "DEBUG: update stats mid-session"
cursor.execute(update_sessionscache_mid, update_mid) cursor.execute(update_sessionscache_mid, update_mid)
elif (num == 0): elif (num == 0):
# No matches found, insert new session: # No matches found, insert new session:
@ -2156,10 +2185,13 @@ class Database:
insert = insert[-2:] + insert[:-2] insert = insert[-2:] + insert[:-2]
#print "DEBUG: No matches found. Insert record", insert #print "DEBUG: No matches found. Insert record", insert
cursor.execute(insert_sessionscache, insert) cursor.execute(insert_sessionscache, insert)
id = self.get_last_insert_id(cursor) #grab the sessionId
else: else:
# Something bad happened # Something bad happened
pass pass
return id
def isDuplicate(self, gametypeID, siteHandNo): def isDuplicate(self, gametypeID, siteHandNo):
dup = False dup = False
c = self.get_cursor() c = self.get_cursor()

View File

@ -30,62 +30,76 @@ class DerivedStats():
self.hands = {} self.hands = {}
self.handsplayers = {} self.handsplayers = {}
self.handsactions = {} self.handsactions = {}
self._initStats = DerivedStats._buildStatsInitializer()
def getStats(self, hand): @staticmethod
def _buildStatsInitializer():
for player in hand.players: init = {}
self.handsplayers[player[1]] = {}
#Init vars that may not be used, but still need to be inserted. #Init vars that may not be used, but still need to be inserted.
# All stud street4 need this when importing holdem # All stud street4 need this when importing holdem
self.handsplayers[player[1]]['winnings'] = 0 init['winnings'] = 0
self.handsplayers[player[1]]['rake'] = 0 init['rake'] = 0
self.handsplayers[player[1]]['totalProfit'] = 0 init['totalProfit'] = 0
self.handsplayers[player[1]]['street4Aggr'] = False init['street4Aggr'] = False
self.handsplayers[player[1]]['wonWhenSeenStreet1'] = 0.0 init['wonWhenSeenStreet1'] = 0.0
self.handsplayers[player[1]]['sawShowdown'] = False init['sawShowdown'] = False
self.handsplayers[player[1]]['wonAtSD'] = 0.0 init['wonAtSD'] = 0.0
self.handsplayers[player[1]]['startCards'] = 0 init['startCards'] = 0
self.handsplayers[player[1]]['position'] = 2 init['position'] = 2
self.handsplayers[player[1]]['street0_3BChance'] = False init['street0_3BChance'] = False
self.handsplayers[player[1]]['street0_3BDone'] = False init['street0_3BDone'] = False
self.handsplayers[player[1]]['street0_4BChance'] = False #FIXME: this might not actually be implemented init['street0_4BChance'] = False
self.handsplayers[player[1]]['street0_4BDone'] = False #FIXME: this might not actually be implemented init['street0_4BDone'] = False
self.handsplayers[player[1]]['raiseFirstInChance'] = False init['street0_C4BChance'] = False
self.handsplayers[player[1]]['raisedFirstIn'] = False init['street0_C4BDone'] = False
self.handsplayers[player[1]]['foldBbToStealChance'] = False init['street0_FoldTo3BChance']= False
self.handsplayers[player[1]]['foldSbToStealChance'] = False init['street0_FoldTo3BDone']= False
self.handsplayers[player[1]]['foldedSbToSteal'] = False init['street0_FoldTo4BChance']= False
self.handsplayers[player[1]]['foldedBbToSteal'] = False init['street0_FoldTo4BDone']= False
self.handsplayers[player[1]]['tourneyTypeId'] = None init['street0_SqueezeChance']= False
self.handsplayers[player[1]]['street1Seen'] = False init['street0_SqueezeDone'] = False
self.handsplayers[player[1]]['street2Seen'] = False init['success_Steal'] = False
self.handsplayers[player[1]]['street3Seen'] = False init['raiseFirstInChance'] = False
self.handsplayers[player[1]]['street4Seen'] = False init['raisedFirstIn'] = False
init['foldBbToStealChance'] = False
init['foldSbToStealChance'] = False
init['foldedSbToSteal'] = False
init['foldedBbToSteal'] = False
init['tourneyTypeId'] = None
init['street1Seen'] = False
init['street2Seen'] = False
init['street3Seen'] = False
init['street4Seen'] = False
for i in range(5): for i in range(5):
self.handsplayers[player[1]]['street%dCalls' % i] = 0 init['street%dCalls' % i] = 0
self.handsplayers[player[1]]['street%dBets' % i] = 0 init['street%dBets' % i] = 0
self.handsplayers[player[1]]['street%dRaises' % i] = 0 init['street%dRaises' % i] = 0
for i in range(1,5): for i in range(1,5):
self.handsplayers[player[1]]['street%dCBChance' %i] = False init['street%dCBChance' %i] = False
self.handsplayers[player[1]]['street%dCBDone' %i] = False init['street%dCBDone' %i] = False
self.handsplayers[player[1]]['street%dCheckCallRaiseChance' %i] = False init['street%dCheckCallRaiseChance' %i] = False
self.handsplayers[player[1]]['street%dCheckCallRaiseDone' %i] = False init['street%dCheckCallRaiseDone' %i] = False
self.handsplayers[player[1]]['otherRaisedStreet%d' %i] = False init['otherRaisedStreet%d' %i] = False
self.handsplayers[player[1]]['foldToOtherRaisedStreet%d' %i] = False init['foldToOtherRaisedStreet%d' %i] = False
#FIXME - Everything below this point is incomplete. #FIXME - Everything below this point is incomplete.
self.handsplayers[player[1]]['other3BStreet0'] = False init['other3BStreet0'] = False
self.handsplayers[player[1]]['other4BStreet0'] = False init['other4BStreet0'] = False
self.handsplayers[player[1]]['otherRaisedStreet0'] = False init['otherRaisedStreet0'] = False
self.handsplayers[player[1]]['foldToOtherRaisedStreet0'] = False init['foldToOtherRaisedStreet0'] = False
for i in range(1,5): for i in range(1,5):
self.handsplayers[player[1]]['foldToStreet%dCBChance' %i] = False init['foldToStreet%dCBChance' %i] = False
self.handsplayers[player[1]]['foldToStreet%dCBDone' %i] = False init['foldToStreet%dCBDone' %i] = False
self.handsplayers[player[1]]['wonWhenSeenStreet2'] = 0.0 init['wonWhenSeenStreet2'] = 0.0
self.handsplayers[player[1]]['wonWhenSeenStreet3'] = 0.0 init['wonWhenSeenStreet3'] = 0.0
self.handsplayers[player[1]]['wonWhenSeenStreet4'] = 0.0 init['wonWhenSeenStreet4'] = 0.0
return init
def getStats(self, hand):
for player in hand.players:
self.handsplayers[player[1]] = self._initStats.copy()
self.assembleHands(self.hand) self.assembleHands(self.hand)
self.assembleHandsPlayers(self.hand) self.assembleHandsPlayers(self.hand)
@ -106,6 +120,7 @@ class DerivedStats():
self.hands['tableName'] = hand.tablename self.hands['tableName'] = hand.tablename
self.hands['siteHandNo'] = hand.handid self.hands['siteHandNo'] = hand.handid
self.hands['gametypeId'] = None # Leave None, handled later after checking db self.hands['gametypeId'] = None # Leave None, handled later after checking db
self.hands['sessionId'] = None # Leave None, added later if caching sessions
self.hands['startTime'] = hand.startTime # format this! self.hands['startTime'] = hand.startTime # format this!
self.hands['importTime'] = None self.hands['importTime'] = None
self.hands['seats'] = self.countPlayers(hand) self.hands['seats'] = self.countPlayers(hand)
@ -413,8 +428,10 @@ class DerivedStats():
#print "\naction:", action[0], posn, type(posn), steal_attempt, act #print "\naction:", action[0], posn, type(posn), steal_attempt, act
if posn == 'B': if posn == 'B':
#NOTE: Stud games will never hit this section #NOTE: Stud games will never hit this section
self.handsplayers[pname]['foldBbToStealChance'] = steal_attempt if steal_attempt:
self.handsplayers[pname]['foldedBbToSteal'] = steal_attempt and act == 'folds' self.handsplayers[pname]['foldBbToStealChance'] = True
self.handsplayers[pname]['foldedBbToSteal'] = act == 'folds'
self.handsplayers[stealer]['success_Steal'] = act == 'folds'
break break
elif posn == 'S': elif posn == 'S':
self.handsplayers[pname]['foldSbToStealChance'] = steal_attempt self.handsplayers[pname]['foldSbToStealChance'] = steal_attempt
@ -430,6 +447,7 @@ class DerivedStats():
raised = True raised = True
if posn in steal_positions: if posn in steal_positions:
steal_attempt = True steal_attempt = True
stealer = pname
if act == 'calls': if act == 'calls':
break break
@ -439,16 +457,48 @@ class DerivedStats():
def calc34BetStreet0(self, hand): def calc34BetStreet0(self, hand):
"""Fills street0_(3|4)B(Chance|Done), other(3|4)BStreet0""" """Fills street0_(3|4)B(Chance|Done), other(3|4)BStreet0"""
bet_level = 1 # bet_level after 3-bet is equal to 3 bet_level = 1 # bet_level after 3-bet is equal to 3
squeeze_chance = 0
for action in hand.actions[hand.actionStreets[1]]: for action in hand.actions[hand.actionStreets[1]]:
# FIXME: fill other(3|4)BStreet0 - i have no idea what does it mean pname, act, aggr = action[0], action[1], action[1] in ('raises', 'bets')
pname, aggr = action[0], action[1] in ('raises', 'bets') if bet_level == 1:
self.handsplayers[pname]['street0_3BChance'] = self.handsplayers[pname]['street0_3BChance'] or bet_level == 2
self.handsplayers[pname]['street0_4BChance'] = bet_level == 3
self.handsplayers[pname]['street0_3BDone'] = self.handsplayers[pname]['street0_3BDone'] or (aggr and self.handsplayers[pname]['street0_3BChance'])
self.handsplayers[pname]['street0_4BDone'] = aggr and (self.handsplayers[pname]['street0_4BChance'])
if aggr: if aggr:
first_agressor = pname
bet_level += 1 bet_level += 1
continue
elif bet_level == 2:
self.handsplayers[pname]['street0_3BChance'] = True
self.handsplayers[pname]['street0_SqueezeChance'] = squeeze_chance
if not squeeze_chance and act == 'calls':
squeeze_chance = 1
continue
if aggr:
self.handsplayers[pname]['street0_3BDone'] = True
self.handsplayers[pname]['street0_SqueezeDone'] = squeeze_chance
second_agressor = pname
bet_level += 1
continue
elif bet_level == 3:
if pname == first_agressor:
self.handsplayers[pname]['street0_4BChance'] = True
self.handsplayers[pname]['street0_FoldTo3BChance'] = True
if aggr:
self.handsplayers[pname]['street0_4BDone'] = True
bet_level += 1
elif act == 'folds':
self.handsplayers[pname]['street0_FoldTo3BDone'] = True
break
else:
self.handsplayers[pname]['street0_C4BChance'] = True
if aggr:
self.handsplayers[pname]['street0_C4BDone'] = True
bet_level += 1
continue
elif bet_level == 4:
if pname == second_agressor:
self.handsplayers[pname]['street0_FoldTo4BChance'] = True
if act == 'folds':
self.handsplayers[pname]['street0_FoldTo4BDone'] = True
break
def calcCBets(self, hand): def calcCBets(self, hand):
"""Fill streetXCBChance, streetXCBDone, foldToStreetXCBDone, foldToStreetXCBChance """Fill streetXCBChance, streetXCBDone, foldToStreetXCBDone, foldToStreetXCBChance

254
pyfpdb/EverestToFpdb.py Normal file
View File

@ -0,0 +1,254 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright 2011, 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 L10n
_ = L10n.get_translation()
import sys
import logging
from HandHistoryConverter import *
from decimal import Decimal
class Everest(HandHistoryConverter):
sitename = "Everest"
filetype = "text"
codepage = "utf8"
siteID = 15
substitutions = {
'LS' : u"\$|\xe2\x82\xac|\u20ac|",
'TAB' : u"-\u2013'\s\da-zA-Z", # legal characters for tablename
}
# Static regexes
re_SplitHands = re.compile(r'</HAND>\n+(?=<HAND)')
re_TailSplitHands = re.compile(r'(</game>)')
re_GameInfo = re.compile(u"""<SESSION\stime="\d+"\s
tableName="(?P<TABLE>[%(TAB)s]+)"\s
id="[\d\.]+"\s
type="(?P<TYPE>[a-zA-Z ]+)"\s
money="(?P<CURRENCY>[%(LS)s])"\s
screenName="[a-zA-Z]+"\s
game="(?P<GAME>[-a-zA-Z ]+)"\s
gametype="(?P<LIMIT>[-a-zA-Z ]+)"/>
""" % substitutions, re.VERBOSE|re.MULTILINE)
re_HandInfo = re.compile(r'<HAND time="(?P<DATETIME>[0-9]+)" id="(?P<HID>[0-9]+)" index="\d+" blinds="((?P<SB>\d+) (?P<CURRENCY>[%(LS)s])/(?P<BB>\d+))' % substitutions, re.MULTILINE)
re_Button = re.compile(r'<DEALER position="(?P<BUTTON>[0-9]+)"\/>')
re_PlayerInfo = re.compile(r'<SEAT position="(?P<SEAT>[0-9]+)" name="(?P<PNAME>.+)" balance="(?P<CASH>[.0-9]+)"/>', re.MULTILINE)
re_Board = re.compile(r'(?P<CARDS>.+)<\/COMMUNITY>', re.MULTILINE)
# 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_PostXB = re.compile(r'<BLIND position="(?P<PSEAT>[0-9]+)" amount="(?P<XB>[0-9]+)" penalty="(?P<PENALTY>[0-9]+)"\/>', re.MULTILINE)
#re_Antes = ???
#re_BringIn = ???
re_HeroCards = re.compile(r'<cards type="HOLE" cards="(?P<CARDS>.+)" player="(?P<PSEAT>[0-9])"', re.MULTILINE)
re_Action = re.compile(r'<(?P<ATYPE>FOLD|BET) position="(?P<PSEAT>[0-9])"( amount="(?P<BET>[.0-9]+)")?\/>', re.MULTILINE)
re_ShowdownAction = re.compile(r'<cards type="SHOWN" cards="(?P<CARDS>..,..)" player="(?P<PSEAT>[0-9])"/>', re.MULTILINE)
re_CollectPot = re.compile(r'<WIN position="(?P<PSEAT>[0-9])" amount="(?P<POT>[.0-9]+)" pot="[0-9]+"', re.MULTILINE)
re_SitsOut = re.compile(r'<event sequence="[0-9]+" type="SIT_OUT" player="(?P<PSEAT>[0-9])"/>', re.MULTILINE)
re_ShownCards = re.compile(r'<cards type="(SHOWN|MUCKED)" cards="(?P<CARDS>..,..)" player="(?P<PSEAT>[0-9])"/>', re.MULTILINE)
def compilePlayerRegexs(self, hand):
pass
def playerNameFromSeatNo(self, seatNo, hand):
# Actions recorded by seat number, not by the player's name
for p in hand.players:
if p[0] == seatNo:
return p[1]
def readSupportedGames(self):
return [
["ring", "hold", "nl"],
["ring", "hold", "pl"],
#["tour", "hold", "nl"]
]
def determineGameType(self, handText):
m = self.re_GameInfo.search(handText)
m2 = self.re_HandInfo.search(handText)
if not m:
# Information about the game type appears only at the beginning of
# a hand history file; hence it is not supplied with the second
# and subsequent hands. In these cases we use the value previously
# stored.
try:
self.info
return self.info
except AttributeError:
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)
if not m2:
tmp = handText[0:100]
raise FpdbParseError(_("Unable to recognise handinfo from: '%s'") % tmp)
self.info = {}
mg = m.groupdict()
mg.update(m2.groupdict())
print "DEBUG: mg: %s" % mg
limits = { 'No Limit':'nl', 'No Limit ':'nl', 'Limit':'fl', 'pot-limit':'pl' }
games = { # base, category
'Holdem' : ('hold','holdem'),
'Holdem Tournament' : ('hold','holdem'),
'omaha-hi' : ('hold','omahahi'),
}
if 'LIMIT' in mg:
self.info['limitType'] = limits[mg['LIMIT']]
if 'GAME' in mg:
(self.info['base'], self.info['category']) = games[mg['GAME']]
if 'SB' in mg:
self.info['sb'] = mg['SB']
if 'BB' in mg:
self.info['bb'] = mg['BB']
self.info['type'] = 'ring'
if mg['CURRENCY'] == u'\u20ac':
self.info['currency'] = 'EUR'
# HACK - tablename not in every hand.
self.info['TABLENAME'] = mg['TABLE']
print "DEBUG: self.info: %s" % self.info
return self.info
def readHandInfo(self, hand):
m = self.re_HandInfo.search(hand.handText)
if m is None:
logging.info(_("Didn't match re_HandInfo"))
logging.info(hand.handText)
raise FpdbParseError(_("No match in readHandInfo."))
hand.handid = m.group('HID')
hand.tablename = self.info['TABLENAME']
hand.maxseats = None
#FIXME: u'DATETIME': u'1291155932'
hand.startTime = datetime.datetime.strptime('201102091158', '%Y%m%d%H%M')
#hand.startTime = datetime.datetime.strptime(m.group('DATETIME')[:12], '%Y%m%d%H%M')
def readPlayerStacks(self, hand):
m = self.re_PlayerInfo.finditer(hand.handText)
for a in m:
hand.addPlayer(a.group('SEAT'), a.group('PNAME'), a.group('CASH'))
def markStreets(self, hand):
#if hand.gametype['base'] == 'hold':
m = re.search(r"<DEALER (?P<PREFLOP>.+?(?=<COMMUNITY>)|.+)"
r"(<COMMUNITY>(?P<FLOP>\S\S, \S\S, \S\S<\/COMMUNITY>.+?(?=<COMMUNITY>)|.+))?"
r"(<COMMUNITY>(?P<TURN>\S\S<\/COMMUNITY>.+?(?=<COMMUNITY>)|.+))?"
r"(<COMMUNITY>(?P<RIVER>\S\S<\/COMMUNITY>.+))?", hand.handText,re.DOTALL)
#import pprint
#pp = pprint.PrettyPrinter(indent=4)
#pp.pprint(m.groupdict())
hand.addStreets(m)
def readCommunityCards(self, hand, street):
m = self.re_Board.search(hand.streets[street])
if street == 'FLOP':
hand.setCommunityCards(street, m.group('CARDS').split(','))
elif street in ('TURN','RIVER'):
hand.setCommunityCards(street, [m.group('CARDS').split(',')[-1]])
def readAntes(self, hand):
pass # ???
def readBringIn(self, hand):
pass # ???
def readBlinds(self, hand):
for a in self.re_PostXB.finditer(hand.handText):
amount = "%.2f" % float(int(a.group('XB'))/100)
print "DEBUG: readBlinds amount: %s" % amount
if Decimal(a.group('XB'))/100 == Decimal(self.info['sb']):
hand.addBlind(self.playerNameFromSeatNo(a.group('PSEAT'), hand),'small blind', amount)
elif Decimal(a.group('XB'))/100 == Decimal(self.info['bb']):
hand.addBlind(self.playerNameFromSeatNo(a.group('PSEAT'), hand),'big blind', amount)
def readButton(self, hand):
hand.buttonpos = int(self.re_Button.search(hand.handText).group('BUTTON'))
def readHeroCards(self, hand):
m = self.re_HeroCards.search(hand.handText)
if m:
hand.hero = self.playerNameFromSeatNo(m.group('PSEAT'), hand)
cards = m.group('CARDS').split(',')
hand.addHoleCards('PREFLOP', hand.hero, closed=cards, shown=False,
mucked=False, dealt=True)
def readAction(self, hand, street):
print "DEBUG: readAction (%s)" % street
m = self.re_Action.finditer(hand.streets[street])
curr_pot = Decimal('0')
for action in m:
print " DEBUG: %s %s" % (action.group('ATYPE'), action.groupdict())
player = self.playerNameFromSeatNo(action.group('PSEAT'), hand)
if action.group('ATYPE') == 'BET':
amount = Decimal(action.group('BET'))
amountstr = "%.2f" % float(int(action.group('BET'))/100)
#Gah! BET can mean check, bet, call or raise...
if amount > 0 and curr_pot == 0:
# Open
curr_pot = amount
hand.addBet(street, player, amountstr)
elif Decimal(action.group('BET')) > 0 and curr_pot > 0:
# Raise or call
if amount > curr_pot:
# Raise
curr_pot = amount
hand.addCallandRaise(street, player, amountstr)
elif amount <= curr_pot:
# Call
hand.addCall(street, player, amountstr)
if action.group('BET') == '0':
hand.addCheck(street, player)
elif action.group('ATYPE') in ('FOLD', 'SIT_OUT'):
hand.addFold(street, player)
else:
print (_("Unimplemented readAction: %s %s" % (action.group('PSEAT'),action.group('ATYPE'),)))
logging.debug(_("Unimplemented readAction: %s %s"
% (action.group('PSEAT'),action.group('ATYPE'),)))
def readShowdownActions(self, hand):
for shows in self.re_ShowdownAction.finditer(hand.handText):
cards = shows.group('CARDS').split(',')
hand.addShownCards(cards,
self.playerNameFromSeatNo(shows.group('PSEAT'),
hand))
def readCollectPot(self, hand):
for m in self.re_CollectPot.finditer(hand.handText):
player = self.playerNameFromSeatNo(m.group('PSEAT'), hand)
print "DEBUG: %s collects %s" % (player, m.group('POT'))
hand.addCollectPot(player, str(int(m.group('POT'))/100))
def readShownCards(self, hand):
for m in self.re_ShownCards.finditer(hand.handText):
cards = m.group('CARDS').split(',')
hand.addShownCards(cards=cards, player=self.playerNameFromSeatNo(m.group('PSEAT'), hand))

View File

@ -57,7 +57,7 @@ class Filters(threading.Thread):
,'groupstitle':_('Grouping:'), 'posnshow':_('Show Position Stats') ,'groupstitle':_('Grouping:'), 'posnshow':_('Show Position Stats')
,'datestitle':_('Date:') ,'datestitle':_('Date:')
,'groupsall':_('All Players') ,'groupsall':_('All Players')
,'limitsFL':'FL', 'limitsNL':'NL', 'limitsPL':'PL', 'ring':_('Ring'), 'tour':_('Tourney') ,'limitsFL':'FL', 'limitsNL':'NL', 'limitsPL':'PL', 'limitsCN':'CAP', 'ring':_('Ring'), 'tour':_('Tourney')
} }
gen = self.conf.get_general_params() gen = self.conf.get_general_params()
@ -66,10 +66,20 @@ class Filters(threading.Thread):
if 'day_start' in gen: if 'day_start' in gen:
self.day_start = float(gen['day_start']) self.day_start = float(gen['day_start'])
self.sw = gtk.ScrolledWindow()
self.sw.set_border_width(0)
self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.sw.set_size_request(370, 300)
# Outer Packing box # Outer Packing box
self.mainVBox = gtk.VBox(False, 0) self.mainVBox = gtk.VBox(False, 0)
self.sw.add_with_viewport(self.mainVBox)
self.sw.show()
print _("DEBUG: New packing box created!")
self.found = {'nl':False, 'fl':False, 'pl':False, 'ring':False, 'tour':False} self.found = {'nl':False, 'fl':False, 'pl':False, 'cn':False, 'ring':False, 'tour':False}
self.label = {} self.label = {}
self.callback = {} self.callback = {}
@ -144,10 +154,13 @@ class Filters(threading.Thread):
self.cbFL = None self.cbFL = None
self.cbNL = None self.cbNL = None
self.cbPL = None self.cbPL = None
self.cbCN = None
self.rb = {} # radio buttons for ring/tour self.rb = {} # radio buttons for ring/tour
self.type = None # ring/tour self.type = None # ring/tour
self.types = {} # list of all ring/tour values self.types = {} # list of all ring/tour values
self.num_limit_types = 0
self.num_limit_types = 0
self.fillLimitsFrame(vbox, self.display) self.fillLimitsFrame(vbox, self.display)
limitsFrame.add(vbox) limitsFrame.add(vbox)
@ -245,7 +258,7 @@ class Filters(threading.Thread):
def get_vbox(self): def get_vbox(self):
"""returns the vbox of this thread""" """returns the vbox of this thread"""
return self.mainVBox return self.sw
#end def get_vbox #end def get_vbox
def getNumHands(self): def getNumHands(self):
@ -419,13 +432,16 @@ class Filters(threading.Thread):
#print "__set_limit_select: limit =", limit, w.get_active() #print "__set_limit_select: limit =", limit, w.get_active()
self.limits[limit] = w.get_active() self.limits[limit] = w.get_active()
log.debug(_("self.limit[%s] set to %s") %(limit, self.limits[limit])) log.debug(_("self.limit[%s] set to %s") %(limit, self.limits[limit]))
if limit.isdigit() or (len(limit) > 2 and (limit[-2:] == 'nl' or limit[-2:] == 'fl' or limit[-2:] == 'pl')): if limit.isdigit() or (len(limit) > 2 and (limit[-2:] == 'nl' or limit[-2:] == 'fl' or limit[-2:] == 'pl' or limit[-2:] == 'cn')):
# turning a leaf limit on with 'None' checked turns 'None' off
if self.limits[limit]: if self.limits[limit]:
if self.cbNoLimits is not None: if self.cbNoLimits is not None:
self.cbNoLimits.set_active(False) self.cbNoLimits.set_active(False)
# turning a leaf limit off with 'All' checked turns 'All' off
else: else:
if self.cbAllLimits is not None: if self.cbAllLimits is not None:
self.cbAllLimits.set_active(False) self.cbAllLimits.set_active(False)
# turning off a leaf limit turns off the corresponding fl. nl, cn or pl
if not self.limits[limit]: if not self.limits[limit]:
if limit.isdigit(): if limit.isdigit():
if self.cbFL is not None: if self.cbFL is not None:
@ -433,29 +449,44 @@ class Filters(threading.Thread):
elif (len(limit) > 2 and (limit[-2:] == 'nl')): elif (len(limit) > 2 and (limit[-2:] == 'nl')):
if self.cbNL is not None: if self.cbNL is not None:
self.cbNL.set_active(False) self.cbNL.set_active(False)
elif (len(limit) > 2 and (limit[-2:] == 'cn')):
if self.cbCN is not None:
self.cbCN.set_active(False)
else: else:
if self.cbPL is not None: if self.cbPL is not None:
self.cbPL.set_active(False) self.cbPL.set_active(False)
elif limit == "all": elif limit == "all":
if self.limits[limit]: if self.limits[limit]:
#for cb in self.cbLimits.values(): if self.num_limit_types == 1:
# cb.set_active(True) for cb in self.cbLimits.values():
cb.set_active(True)
else:
if self.cbFL is not None: if self.cbFL is not None:
self.cbFL.set_active(True) self.cbFL.set_active(True)
if self.cbNL is not None: if self.cbNL is not None:
self.cbNL.set_active(True) self.cbNL.set_active(True)
if self.cbPL is not None: if self.cbPL is not None:
self.cbPL.set_active(True) self.cbPL.set_active(True)
if self.cbCN is not None:
self.cbCN.set_active(True)
elif limit == "none": elif limit == "none":
if self.limits[limit]: if self.limits[limit]:
for cb in self.cbLimits.values(): if self.num_limit_types > 1:
cb.set_active(False)
if self.cbNL is not None: if self.cbNL is not None:
self.cbNL.set_active(False) self.cbNL.set_active(False)
if self.cbFL is not None: if self.cbFL is not None:
self.cbFL.set_active(False) self.cbFL.set_active(False)
if self.cbPL is not None: if self.cbPL is not None:
self.cbPL.set_active(False) self.cbPL.set_active(False)
if self.cbCN is not None:
self.cbCN.set_active(False)
#
# Finally, clean-up all individual limit checkboxes
# needed because the overall limit checkbox may
# not be set, or num_limit_types == 1
#
for cb in self.cbLimits.values():
cb.set_active(False)
elif limit == "fl": elif limit == "fl":
if not self.limits[limit]: if not self.limits[limit]:
# only toggle all fl limits off if they are all currently on # only toggle all fl limits off if they are all currently on
@ -535,6 +566,29 @@ class Filters(threading.Thread):
elif self.type == 'tour': elif self.type == 'tour':
if 'ring' in self.rb: if 'ring' in self.rb:
self.rb['ring'].set_active(True) self.rb['ring'].set_active(True)
elif limit == "cn":
if not self.limits[limit]:
all_cn_on = True
for cb in self.cbLimits.values():
t = cb.get_children()[0].get_text()
if "cn" in t and len(t) > 2:
if not cb.get_active():
all_cn_on = False
found = {'ring':False, 'tour':False}
for cb in self.cbLimits.values():
t = cb.get_children()[0].get_text()
if "cn" in t and len(t) > 2:
if self.limits[limit] or all_cn_on:
cb.set_active(self.limits[limit])
found[self.types[t]] = True
if self.limits[limit]:
if not found[self.type]:
if self.type == 'ring':
if 'tour' in self.rb:
self.rb['tour'].set_active(True)
elif self.type == 'tour':
if 'ring' in self.rb:
self.rb['ring'].set_active(True)
elif limit == "ring": elif limit == "ring":
log.debug("set", limit, "to", self.limits[limit]) log.debug("set", limit, "to", self.limits[limit])
if self.limits[limit]: if self.limits[limit]:
@ -708,15 +762,16 @@ class Filters(threading.Thread):
showb = gtk.Button(label="hide", stock=None, use_underline=True) showb = gtk.Button(label="hide", stock=None, use_underline=True)
showb.set_alignment(xalign=1.0, yalign=0.5) showb.set_alignment(xalign=1.0, yalign=0.5)
showb.connect('clicked', self.__toggle_box, 'limits') showb.connect('clicked', self.__toggle_box, 'limits')
top_hbox.pack_start(showb, expand=False, padding=1)
vbox1 = gtk.VBox(False, 0) vbox1 = gtk.VBox(False, 15)
vbox.pack_start(vbox1, False, False, 0) vbox.pack_start(vbox1, False, False, 0)
self.boxes['limits'] = vbox1 self.boxes['limits'] = vbox1
self.cursor.execute(self.sql.query['getCashLimits']) self.cursor.execute(self.sql.query['getCashLimits'])
# selects limitType, bigBlind # selects limitType, bigBlind
result = self.db.cursor.fetchall() result = self.db.cursor.fetchall()
self.found = {'nl':False, 'fl':False, 'pl':False, 'ring':False, 'tour':False} self.found = {'nl':False, 'fl':False, 'pl':False, 'cn':False, 'ring':False, 'tour':False}
if len(result) >= 1: if len(result) >= 1:
hbox = gtk.HBox(True, 0) hbox = gtk.HBox(True, 0)
@ -741,6 +796,9 @@ class Filters(threading.Thread):
elif line[1] == 'pl': elif line[1] == 'pl':
name = str(line[2])+line[1] name = str(line[2])+line[1]
self.found['pl'] = True self.found['pl'] = True
elif line[1] == 'cn':
name = str(line[2])+line[1]
self.found['cn'] = True
else: else:
name = str(line[2])+line[1] name = str(line[2])+line[1]
self.found['nl'] = True self.found['nl'] = True
@ -765,11 +823,12 @@ class Filters(threading.Thread):
dest = vbox3 # for ring/tour buttons dest = vbox3 # for ring/tour buttons
if "LimitType" in display and display["LimitType"] == True: if "LimitType" in display and display["LimitType"] == True:
num_limit_types = 0 self.num_limit_types = 0
if self.found['fl']: num_limit_types = num_limit_types + 1 if self.found['fl']: self.num_limit_types = self.num_limit_types + 1
if self.found['pl']: num_limit_types = num_limit_types + 1 if self.found['pl']: self.num_limit_types = self.num_limit_types + 1
if self.found['nl']: num_limit_types = num_limit_types + 1 if self.found['nl']: self.num_limit_types = self.num_limit_types + 1
if num_limit_types > 1: if self.found['cn']: self.num_limit_types = self.num_limit_types + 1
if self.num_limit_types > 1:
if self.found['fl']: if self.found['fl']:
hbox = gtk.HBox(False, 0) hbox = gtk.HBox(False, 0)
vbox3.pack_start(hbox, False, False, 0) vbox3.pack_start(hbox, False, False, 0)
@ -782,6 +841,10 @@ class Filters(threading.Thread):
hbox = gtk.HBox(False, 0) hbox = gtk.HBox(False, 0)
vbox3.pack_start(hbox, False, False, 0) vbox3.pack_start(hbox, False, False, 0)
self.cbPL = self.createLimitLine(hbox, 'pl', self.filterText['limitsPL']) self.cbPL = self.createLimitLine(hbox, 'pl', self.filterText['limitsPL'])
if self.found['cn']:
hbox = gtk.HBox(False, 0)
vbox3.pack_start(hbox, False, False, 0)
self.cbCN = self.createLimitLine(hbox, 'cn', self.filterText['limitsCN'])
dest = vbox2 # for ring/tour buttons dest = vbox2 # for ring/tour buttons
else: else:
print _("INFO: No games returned from database") print _("INFO: No games returned from database")
@ -807,19 +870,24 @@ class Filters(threading.Thread):
def fillGraphOpsFrame(self, vbox): def fillGraphOpsFrame(self, vbox):
top_hbox = gtk.HBox(False, 0) top_hbox = gtk.HBox(False, 0)
vbox.pack_start(top_hbox, False, False, 0) vbox.pack_start(top_hbox, False, False, 0)
title = gtk.Label("Graphing Options:") title = gtk.Label(_("Graphing Options:"))
title.set_alignment(xalign=0.0, yalign=0.5) title.set_alignment(xalign=0.0, yalign=0.5)
top_hbox.pack_start(title, expand=True, padding=3) top_hbox.pack_start(title, expand=True, padding=3)
showb = gtk.Button(label="hide", stock=None, use_underline=True) showb = gtk.Button(label="hide", stock=None, use_underline=True)
showb.set_alignment(xalign=1.0, yalign=0.5) showb.set_alignment(xalign=1.0, yalign=0.5)
showb.connect('clicked', self.__toggle_box, 'games') showb.connect('clicked', self.__toggle_box, 'graphops')
top_hbox.pack_start(showb, expand=False, padding=1) top_hbox.pack_start(showb, expand=False, padding=1)
vbox1 = gtk.VBox(False, 0)
vbox.pack_start(vbox1, False, False, 0)
vbox1.show()
self.boxes['graphops'] = vbox1
hbox1 = gtk.HBox(False, 0) hbox1 = gtk.HBox(False, 0)
vbox.pack_start(hbox1, False, False, 0) vbox1.pack_start(hbox1, False, False, 0)
hbox1.show() hbox1.show()
label = gtk.Label("Show Graph In:") label = gtk.Label(_("Show Graph In:"))
label.set_alignment(xalign=0.0, yalign=0.5) label.set_alignment(xalign=0.0, yalign=0.5)
hbox1.pack_start(label, True, True, 0) hbox1.pack_start(label, True, True, 0)
label.show() label.show()
@ -835,11 +903,7 @@ class Filters(threading.Thread):
button.connect("toggled", self.__set_displayin_select, "BB") button.connect("toggled", self.__set_displayin_select, "BB")
button.show() button.show()
vbox1 = gtk.VBox(False, 0) button = gtk.CheckButton(_("Showdown Winnings"), False)
vbox.pack_start(vbox1, False, False, 0)
vbox1.show()
button = gtk.CheckButton("Showdown Winnings", False)
vbox1.pack_start(button, True, True, 0) vbox1.pack_start(button, True, True, 0)
# wouldn't it be awesome if there was a way to remember the state of things like # wouldn't it be awesome if there was a way to remember the state of things like
# this and be able to set it to what it was last time? # this and be able to set it to what it was last time?
@ -847,7 +911,7 @@ class Filters(threading.Thread):
button.connect("toggled", self.__set_graphopscheck_select, "showdown") button.connect("toggled", self.__set_graphopscheck_select, "showdown")
button.show() button.show()
button = gtk.CheckButton("Non-Showdown Winnings", False) button = gtk.CheckButton(_("Non-Showdown Winnings"), False)
vbox1.pack_start(button, True, True, 0) vbox1.pack_start(button, True, True, 0)
# ditto as 8 lines up :) # ditto as 8 lines up :)
#button.set_active(True) #button.set_active(True)
@ -1092,3 +1156,4 @@ def main(argv=None):
if __name__ == '__main__': if __name__ == '__main__':
sys.exit(main()) sys.exit(main())

View File

@ -80,6 +80,7 @@ class FullTiltPokerSummary(TourneySummary):
re_Currency = re.compile(u"""(?P<CURRENCY>[%(LS)s]|FPP)""" % substitutions) re_Currency = re.compile(u"""(?P<CURRENCY>[%(LS)s]|FPP)""" % substitutions)
re_Player = re.compile(u"""(?P<RANK>[\d]+):\s(?P<NAME>[^,\r\n]{2,15})(,(\s)?[%(LS)s](?P<WINNINGS>[.\d]+))?""") re_Player = re.compile(u"""(?P<RANK>[\d]+):\s(?P<NAME>[^,\r\n]{2,15})(,(\s)?[%(LS)s](?P<WINNINGS>[.\d]+))?""")
re_Finished = re.compile(u"""(?P<NAME>[^,\r\n]{2,15}) finished in (?P<RANK>[\d]+)\S\S place""")
re_DateTime = re.compile("\[(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\- ]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)") re_DateTime = re.compile("\[(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\- ]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)")
@ -126,6 +127,7 @@ class FullTiltPokerSummary(TourneySummary):
elif mg['CURRENCY'] == "FPP": self.currency="PSFP" elif mg['CURRENCY'] == "FPP": self.currency="PSFP"
m = self.re_Player.finditer(self.summaryText) m = self.re_Player.finditer(self.summaryText)
playercount = 0
for a in m: for a in m:
mg = a.groupdict() mg = a.groupdict()
#print "DEBUG: a.groupdict(): %s" % mg #print "DEBUG: a.groupdict(): %s" % mg
@ -136,4 +138,14 @@ class FullTiltPokerSummary(TourneySummary):
if 'WINNINGS' in mg and mg['WINNINGS'] != None: if 'WINNINGS' in mg and mg['WINNINGS'] != None:
winnings = int(100*Decimal(mg['WINNINGS'])) winnings = int(100*Decimal(mg['WINNINGS']))
self.addPlayer(rank, name, winnings, self.currency, None, None, None) self.addPlayer(rank, name, winnings, self.currency, None, None, None)
playercount += 1
# Some files dont contain the normals lines, and only contain the line
# <PLAYER> finished in XXXXrd place
if playercount == 0:
m = self.re_Finished.finditer(self.summaryText)
for a in m:
winnings = 0
name = a.group('NAME')
rank = a.group('RANK')
self.addPlayer(rank, name, winnings, self.currency, None, None, None)

View File

@ -49,6 +49,7 @@ class Fulltilt(HandHistoryConverter):
'6.00': ('1.00', '3.00'), '6': ('1.00', '3.00'), '6.00': ('1.00', '3.00'), '6': ('1.00', '3.00'),
'8.00': ('2.00', '4.00'), '8': ('2.00', '4.00'), '8.00': ('2.00', '4.00'), '8': ('2.00', '4.00'),
'10.00': ('2.00', '5.00'), '10': ('2.00', '5.00'), '10.00': ('2.00', '5.00'), '10': ('2.00', '5.00'),
'16.00': ('4.00', '8.00'), '16': ('4.00', '8.00'),
'20.00': ('5.00', '10.00'), '20': ('5.00', '10.00'), '20.00': ('5.00', '10.00'), '20': ('5.00', '10.00'),
'30.00': ('10.00', '15.00'), '30': ('10.00', '15.00'), '30.00': ('10.00', '15.00'), '30': ('10.00', '15.00'),
'40.00': ('10.00', '20.00'), '40': ('10.00', '20.00'), '40.00': ('10.00', '20.00'), '40': ('10.00', '20.00'),
@ -77,17 +78,18 @@ class Fulltilt(HandHistoryConverter):
''' % substitutions, re.VERBOSE) ''' % substitutions, re.VERBOSE)
re_SplitHands = re.compile(r"\n\n\n+") re_SplitHands = re.compile(r"\n\n\n+")
re_TailSplitHands = re.compile(r"(\n\n+)") re_TailSplitHands = re.compile(r"(\n\n+)")
re_HandInfo = re.compile(r'''.*\#(?P<HID>[0-9]+):\s re_HandInfo = re.compile(u'''.*\#(?P<HID>[0-9]+):\s
(?:(?P<TOURNAMENT>.+)\s\((?P<TOURNO>\d+)\),\s)? (?:(?P<TOURNAMENT>.+)\s\((?P<TOURNO>\d+)\),\s)?
(Table|Match)\s ((Table|Match)\s)?
(?P<PLAY>Play\sChip\s|PC)? (?P<PLAY>Play\sChip\s|PC)?
(?P<TABLE>[%(TAB)s]+)\s ((?P<TABLE>[%(TAB)s]+)(\s|,))
(?P<ENTRYID>\sEntry\s\#\d+\s)?
(\((?P<TABLEATTRIBUTES>.+)\)\s)?-\s (\((?P<TABLEATTRIBUTES>.+)\)\s)?-\s
[%(LS)s]?(?P<SB>[%(NUM)s]+)/[%(LS)s]?(?P<BB>[%(NUM)s]+)\s(Ante\s[%(LS)s]?(?P<ANTE>[.0-9]+)\s)?-\s [%(LS)s]?(?P<SB>[%(NUM)s]+)/[%(LS)s]?(?P<BB>[%(NUM)s]+)\s(Ante\s[%(LS)s]?(?P<ANTE>[.0-9]+)\s)?-\s
[%(LS)s]?(?P<CAP>[.0-9]+\sCap\s)? [%(LS)s]?(?P<CAP>[.0-9]+\sCap\s)?
(?P<GAMETYPE>[-\da-zA-Z\/\'\s]+)\s-\s (?P<GAMETYPE>[-\da-zA-Z\/\'\s]+)\s-\s
(?P<DATETIME>.*$) (?P<DATETIME>.*$)
(?P<PARTIAL>\(partial\))?\n (?P<PARTIAL>\(partial\))?\s
(?:.*?\n(?P<CANCELLED>Hand\s\#(?P=HID)\shas\sbeen\scanceled))? (?:.*?\n(?P<CANCELLED>Hand\s\#(?P=HID)\shas\sbeen\scanceled))?
''' % substitutions, re.MULTILINE|re.VERBOSE) ''' % substitutions, re.MULTILINE|re.VERBOSE)
re_TourneyExtraInfo = re.compile('''(((?P<TOURNEY_NAME>[^$]+)? re_TourneyExtraInfo = re.compile('''(((?P<TOURNEY_NAME>[^$]+)?
@ -99,7 +101,7 @@ class Fulltilt(HandHistoryConverter):
''' % substitutions, re.VERBOSE) ''' % substitutions, re.VERBOSE)
re_Button = re.compile('^The button is in seat #(?P<BUTTON>\d+)', re.MULTILINE) re_Button = re.compile('^The button is in seat #(?P<BUTTON>\d+)', re.MULTILINE)
re_PlayerInfo = re.compile('Seat (?P<SEAT>[0-9]+): (?P<PNAME>.{2,15}) \([%(LS)s]?(?P<CASH>[%(NUM)s]+)\)(?P<SITOUT>, is sitting out)?$' % substitutions, re.MULTILINE) re_PlayerInfo = re.compile('Seat (?P<SEAT>[0-9]+): (?P<PNAME>.{2,15}) \([%(LS)s]?(?P<CASH>[%(NUM)s]+)\)(?P<SITOUT>, is sitting out)?$' % substitutions, re.MULTILINE)
re_SummarySitout = re.compile('Seat (?P<SEAT>[0-9]+): (?P<PNAME>.{2,15}) is sitting out?$' % substitutions, re.MULTILINE) re_SummarySitout = re.compile('Seat (?P<SEAT>[0-9]+): (?P<PNAME>.{2,15}?) (\(button\) )?is sitting out?$' % substitutions, re.MULTILINE)
re_Board = re.compile(r"\[(?P<CARDS>.+)\]") re_Board = re.compile(r"\[(?P<CARDS>.+)\]")
#static regex for tourney purpose #static regex for tourney purpose
@ -146,7 +148,7 @@ class Fulltilt(HandHistoryConverter):
re_Mixed = re.compile(r'\s\-\s(?P<MIXED>HA|HORSE|HOSE)\s\-\s', re.VERBOSE) re_Mixed = re.compile(r'\s\-\s(?P<MIXED>HA|HORSE|HOSE)\s\-\s', re.VERBOSE)
re_Max = re.compile("(?P<MAX>\d+)( max)?", re.MULTILINE) re_Max = re.compile("(?P<MAX>\d+)( max)?", re.MULTILINE)
# NB: if we ever match "Full Tilt Poker" we should also match "FullTiltPoker", which PT Stud erroneously exports. # NB: if we ever match "Full Tilt Poker" we should also match "FullTiltPoker", which PT Stud erroneously exports.
re_DateTime = re.compile("""((?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)\s(?P<TZ>\w+)\s-\s(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})|(?P<H2>[0-9]+):(?P<MIN2>[0-9]+)\s(?P<TZ2>\w+)\s-\s\w+\,\s(?P<M2>\w+)\s(?P<D2>\d+)\,\s(?P<Y2>[0-9]{4}))""", re.MULTILINE) re_DateTime = re.compile("""((?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)\s(?P<TZ>\w+)\s-\s(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})|(?P<H2>[0-9]+):(?P<MIN2>[0-9]+)\s(?P<TZ2>\w+)\s-\s\w+\,\s(?P<M2>\w+)\s(?P<D2>\d+)\,\s(?P<Y2>[0-9]{4}))(?P<PARTIAL>\s\(partial\))?""", re.MULTILINE)
@ -206,8 +208,8 @@ class Fulltilt(HandHistoryConverter):
m = self.re_GameInfo.search(handText) m = self.re_GameInfo.search(handText)
if not m: if not m:
tmp = handText[0:100] tmp = handText[0:100]
log.error(_("determineGameType: Raising FpdbParseError for file '%s'") % self.in_path)
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp) log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
log.error(_("determineGameType: Raising FpdbParseError"))
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp) raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
mg = m.groupdict() mg = m.groupdict()
@ -262,6 +264,8 @@ class Fulltilt(HandHistoryConverter):
tmp = hand.handText[0:100] tmp = hand.handText[0:100]
log.error(_("readHandInfo: Unable to recognise handinfo from: '%s'") % tmp) log.error(_("readHandInfo: Unable to recognise handinfo from: '%s'") % tmp)
raise FpdbParseError(_("No match in readHandInfo.")) raise FpdbParseError(_("No match in readHandInfo."))
#print "DEBUG: m.groupdict: %s" % m.groupdict()
hand.handid = m.group('HID') hand.handid = m.group('HID')
hand.tablename = m.group('TABLE') hand.tablename = m.group('TABLE')
@ -280,10 +284,13 @@ class Fulltilt(HandHistoryConverter):
datetimestr = "%s/%s/%s %s:%s" % (a.group('Y2'), a.group('M2'),a.group('D2'),a.group('H2'),a.group('MIN2')) datetimestr = "%s/%s/%s %s:%s" % (a.group('Y2'), a.group('M2'),a.group('D2'),a.group('H2'),a.group('MIN2'))
timezone = a.group('TZ2') timezone = a.group('TZ2')
hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%B/%d %H:%M") hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%B/%d %H:%M")
if a.group('PARTIAL'):
raise FpdbParseError(hid=m.group('HID'))
hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, timezone, "UTC") hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, timezone, "UTC")
if m.group("CANCELLED") or m.group("PARTIAL"): if m.group("CANCELLED") or m.group("PARTIAL"):
# It would appear this can't be triggered as DATETIME is a bit greedy
raise FpdbParseError(hid=m.group('HID')) raise FpdbParseError(hid=m.group('HID'))
if m.group('TABLEATTRIBUTES'): if m.group('TABLEATTRIBUTES'):
@ -335,7 +342,7 @@ class Fulltilt(HandHistoryConverter):
def readPlayerStacks(self, hand): def readPlayerStacks(self, hand):
# Split hand text for FTP, as the regex matches the player names incorrectly # Split hand text for FTP, as the regex matches the player names incorrectly
# in the summary section # in the summary section
pre, post = hand.handText.split('SUMMARY') pre, post = hand.handText.split('*** SUMMARY ***')
m = self.re_PlayerInfo.finditer(pre) m = self.re_PlayerInfo.finditer(pre)
plist = {} plist = {}
@ -348,7 +355,7 @@ class Fulltilt(HandHistoryConverter):
n = self.re_SummarySitout.finditer(post) n = self.re_SummarySitout.finditer(post)
for b in n: for b in n:
del plist[b.group('PNAME')] del plist[b.group('PNAME')]
print "DEBUG: Deleting '%s' from player dict" %(b.group('PNAME')) #print "DEBUG: Deleting '%s' from player dict" %(b.group('PNAME'))
# Add remaining players # Add remaining players
for a in plist: for a in plist:
@ -372,8 +379,8 @@ class Fulltilt(HandHistoryConverter):
r"(\*\*\* 7TH STREET \*\*\*(?P<SEVENTH>.+))?", hand.handText,re.DOTALL) r"(\*\*\* 7TH STREET \*\*\*(?P<SEVENTH>.+))?", hand.handText,re.DOTALL)
elif hand.gametype['base'] in ("draw"): elif hand.gametype['base'] in ("draw"):
m = re.search(r"(?P<PREDEAL>.+(?=\*\*\* HOLE CARDS \*\*\*)|.+)" m = re.search(r"(?P<PREDEAL>.+(?=\*\*\* HOLE CARDS \*\*\*)|.+)"
r"(\*\*\* HOLE CARDS \*\*\*(?P<DEAL>.+(?=\*\*\* FIRST DRAW \*\*\*)|.+))?" r"(\*\*\* HOLE CARDS \*\*\*(?P<DEAL>.+(?=(\*\*\* FIRST DRAW \*\*\*|\*\*\* DRAW \*\*\*))|.+))?"
r"(\*\*\* FIRST DRAW \*\*\*(?P<DRAWONE>.+(?=\*\*\* SECOND DRAW \*\*\*)|.+))?" r"((\*\*\* FIRST DRAW \*\*\*|\*\*\* DRAW \*\*\*)(?P<DRAWONE>.+(?=\*\*\* SECOND DRAW \*\*\*)|.+))?"
r"(\*\*\* SECOND DRAW \*\*\*(?P<DRAWTWO>.+(?=\*\*\* THIRD DRAW \*\*\*)|.+))?" r"(\*\*\* SECOND DRAW \*\*\*(?P<DRAWTWO>.+(?=\*\*\* THIRD DRAW \*\*\*)|.+))?"
r"(\*\*\* THIRD DRAW \*\*\*(?P<DRAWTHREE>.+))?", hand.handText,re.DOTALL) r"(\*\*\* THIRD DRAW \*\*\*(?P<DRAWTHREE>.+))?", hand.handText,re.DOTALL)

View File

@ -122,6 +122,10 @@ class GuiAutoImport (threading.Thread):
self.startButton.connect("clicked", self.startClicked, "start clicked") self.startButton.connect("clicked", self.startClicked, "start clicked")
hbox.pack_start(self.startButton, expand=False, fill=False) hbox.pack_start(self.startButton, expand=False, fill=False)
self.DetectButton = gtk.Button(_("Detect Directories"))
self.DetectButton.connect("clicked", self.detect_hh_dirs, "detect")
#hbox.pack_start(self.DetectButton, expand=False, fill=False)
lbl2 = gtk.Label() lbl2 = gtk.Label()
hbox.pack_start(lbl2, expand=True, fill=False) hbox.pack_start(lbl2, expand=True, fill=False)
@ -190,6 +194,31 @@ class GuiAutoImport (threading.Thread):
return False return False
def detect_hh_dirs(self, widget, data):
"""Attempt to find user hand history directories for enabled sites"""
the_sites = self.config.get_supported_sites()
for site in the_sites:
params = self.config.get_site_parameters(site)
if params['enabled'] == True:
print "DEBUG: Detecting hh directory for site: '%s'" % site
if os.name == 'posix':
if self.posix_detect_hh_dirs(site):
#data[1].set_text(dia_chooser.get_filename())
self.input_settings[site][0]
pass
elif os.name == 'nt':
# Sorry
pass
def posix_detect_hh_dirs(self, site):
defaults = {
'PokerStars': '~/.wine/drive_c/Program Files/PokerStars/HandHistory',
}
if site == 'PokerStars':
directory = os.path.expanduser(defaults[site])
for file in [file for file in os.listdir(directory) if not file in [".",".."]]:
print file
return False
def startClicked(self, widget, data): def startClicked(self, widget, data):
"""runs when user clicks start on auto import tab""" """runs when user clicks start on auto import tab"""

View File

@ -291,6 +291,7 @@ class GuiGraphViewer (threading.Thread):
lims = [int(x) for x in limits if x.isdigit()] lims = [int(x) for x in limits if x.isdigit()]
potlims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'pl'] potlims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'pl']
nolims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'nl'] nolims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'nl']
capnolims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'cn']
limittest = "and ( (gt.limitType = 'fl' and gt.bigBlind in " limittest = "and ( (gt.limitType = 'fl' and gt.bigBlind in "
# and ( (limit and bb in()) or (nolimit and bb in ()) ) # and ( (limit and bb in()) or (nolimit and bb in ()) )
if lims: if lims:
@ -313,6 +314,14 @@ class GuiGraphViewer (threading.Thread):
blindtest = str(tuple(nolims)) blindtest = str(tuple(nolims))
blindtest = blindtest.replace("L", "") blindtest = blindtest.replace("L", "")
blindtest = blindtest.replace(",)",")") blindtest = blindtest.replace(",)",")")
limittest = limittest + blindtest + ' ) '
else:
limittest = limittest + '(-1) ) '
limittest = limittest + " or (gt.limitType = 'cn' and gt.bigBlind in "
if capnolims:
blindtest = str(tuple(capnolims))
blindtest = blindtest.replace("L", "")
blindtest = blindtest.replace(",)",")")
limittest = limittest + blindtest + ' ) )' limittest = limittest + blindtest + ' ) )'
else: else:
limittest = limittest + '(-1) ) )' limittest = limittest + '(-1) ) )'

View File

@ -15,6 +15,9 @@
#along with this program. If not, see <http://www.gnu.org/licenses/>. #along with this program. If not, see <http://www.gnu.org/licenses/>.
#In the "official" distribution you can find the license in agpl-3.0.txt. #In the "official" distribution you can find the license in agpl-3.0.txt.
import L10n
_ = L10n.get_translation()
import threading import threading
import pygtk import pygtk
pygtk.require('2.0') pygtk.require('2.0')
@ -22,18 +25,6 @@ import gtk
import os import os
from time import time, strftime from time import time, strftime
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
import fpdb_import import fpdb_import
import Database import Database
import Filters import Filters

View File

@ -15,6 +15,9 @@
#along with this program. If not, see <http://www.gnu.org/licenses/>. #along with this program. If not, see <http://www.gnu.org/licenses/>.
#In the "official" distribution you can find the license in agpl-3.0.txt. #In the "official" distribution you can find the license in agpl-3.0.txt.
import L10n
_ = L10n.get_translation()
import xml.dom.minidom import xml.dom.minidom
from xml.dom.minidom import Node from xml.dom.minidom import Node
@ -23,18 +26,6 @@ pygtk.require('2.0')
import gtk import gtk
import gobject import gobject
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
import Configuration import Configuration
rewrite = { 'general' : 'General', 'supported_databases' : 'Databases' rewrite = { 'general' : 'General', 'supported_databases' : 'Databases'

View File

@ -50,6 +50,9 @@ onlinehelp = {'Game':_('Type of Game'),
'VPIP':_('Voluntarily Putting In the pot\n(blinds excluded)'), 'VPIP':_('Voluntarily Putting In the pot\n(blinds excluded)'),
'PFR':_('% Pre Flop Raise'), 'PFR':_('% Pre Flop Raise'),
'PF3':_('% Pre Flop Re-Raise / 3Bet'), 'PF3':_('% Pre Flop Re-Raise / 3Bet'),
'PF4':_('% Pre Flop Re-Raise / 4Bet'),
'PFF3':_('% Pre Flop Fold To Re-Raise / F3Bet'),
'PFF4':_('% Pre Flop Fold To Re-Raise / F4Bet'),
'AggFac':_('Aggression Factor\n'), 'AggFac':_('Aggression Factor\n'),
'AggFreq':_('Aggression Frequency\nBet or Raise vs Fold'), 'AggFreq':_('Aggression Frequency\nBet or Raise vs Fold'),
'ContBet':_('Continuation Bet post-flop'), 'ContBet':_('Continuation Bet post-flop'),
@ -339,7 +342,7 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats):
#end def createStatsTable #end def createStatsTable
def reset_style_render_func(self, treeviewcolumn, cell, model, iter): def reset_style_render_func(self, treeviewcolumn, cell, model, iter):
cell.set_property('foreground', 'black') cell.set_property('foreground', None)
#end def reset_style_render_func #end def reset_style_render_func
def ledger_style_render_func(self, tvcol, cell, model, iter): def ledger_style_render_func(self, tvcol, cell, model, iter):
@ -620,6 +623,7 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats):
lims = [int(x) for x in limits if x.isdigit()] lims = [int(x) for x in limits if x.isdigit()]
potlims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'pl'] potlims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'pl']
nolims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'nl'] nolims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'nl']
capnolims = [int(x[0:-2]) for x in limits if len(x) > 2 and x[-2:] == 'cn']
bbtest = "and ( (gt.limitType = 'fl' and gt.bigBlind in " bbtest = "and ( (gt.limitType = 'fl' and gt.bigBlind in "
# and ( (limit and bb in()) or (nolimit and bb in ()) ) # and ( (limit and bb in()) or (nolimit and bb in ()) )
if lims: if lims:
@ -642,6 +646,14 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats):
blindtest = str(tuple(nolims)) blindtest = str(tuple(nolims))
blindtest = blindtest.replace("L", "") blindtest = blindtest.replace("L", "")
blindtest = blindtest.replace(",)",")") blindtest = blindtest.replace(",)",")")
bbtest = bbtest + blindtest + ' ) '
else:
bbtest = bbtest + '(-1) ) '
bbtest = bbtest + " or (gt.limitType = 'cn' and gt.bigBlind in "
if capnolims:
blindtest = str(tuple(capnolims))
blindtest = blindtest.replace("L", "")
blindtest = blindtest.replace(",)",")")
bbtest = bbtest + blindtest + ' ) )' bbtest = bbtest + blindtest + ' ) )'
else: else:
bbtest = bbtest + '(-1) ) )' bbtest = bbtest + '(-1) ) )'

View File

@ -434,7 +434,7 @@ class GuiTourneyPlayerStats (GuiPlayerStats.GuiPlayerStats):
#end def refreshStats #end def refreshStats
def reset_style_render_func(self, treeviewcolumn, cell, model, iter): def reset_style_render_func(self, treeviewcolumn, cell, model, iter):
cell.set_property('foreground', 'black') cell.set_property('foreground', None)
#end def reset_style_render_func #end def reset_style_render_func
def sortCols(self, col, nums): def sortCols(self, col, nums):

View File

@ -211,7 +211,7 @@ Left-Drag to Move"
</layout> </layout>
</site> </site>
<site enabled="False" <site enabled="True"
site_name="Everleaf" site_name="Everleaf"
table_finder="Everleaf.exe" table_finder="Everleaf.exe"
screen_name="Hero" screen_name="Hero"
@ -255,7 +255,7 @@ Left-Drag to Move"
</layout> </layout>
</site> </site>
<site enabled="False" <site enabled="True"
site_name="Win2day" site_name="Win2day"
table_finder="Win2day.exe" table_finder="Win2day.exe"
screen_name="Hero" screen_name="Hero"
@ -300,7 +300,7 @@ Left-Drag to Move"
</site> </site>
<site enabled="False" <site enabled="True"
site_name="Absolute" site_name="Absolute"
table_finder="AbsolutePoker.exe" table_finder="AbsolutePoker.exe"
screen_name="Hero" screen_name="Hero"
@ -345,7 +345,7 @@ Left-Drag to Move"
</site> </site>
<site enabled="False" <site enabled="True"
site_name="PartyPoker" site_name="PartyPoker"
table_finder="PartyGaming.exe" table_finder="PartyGaming.exe"
screen_name="Hero" screen_name="Hero"
@ -390,7 +390,7 @@ Left-Drag to Move"
</site> </site>
<site enabled="False" <site enabled="True"
site_name="Betfair" site_name="Betfair"
table_finder="Betfair Poker.exe" table_finder="Betfair Poker.exe"
screen_name="Hero" screen_name="Hero"
@ -433,6 +433,188 @@ Left-Drag to Move"
<location seat="9" x="70" y="53"> </location> <location seat="9" x="70" y="53"> </location>
</layout> </layout>
</site> </site>
<site HH_path="C:/Program Files/Carbon Poker/HandHistory/Hero/" converter="CarbonToFpdb" decoder="everleaf_decode_table" enabled="True" screen_name="Hero" site_name="Carbon" site_path="C:/Program Files/Carbin/" supported_games="holdem" table_finder="Carbon Poker.exe">
<layout fav_seat="0" height="547" max="8" width="794">
<location seat="1" x="640" y="64"> </location>
<location seat="2" x="650" y="230"> </location>
<location seat="3" x="650" y="385"> </location>
<location seat="4" x="588" y="425"> </location>
<location seat="5" x="92" y="425"> </location>
<location seat="6" x="0" y="373"> </location>
<location seat="7" x="0" y="223"> </location>
<location seat="8" x="25" y="50"> </location>
</layout>
<layout fav_seat="0" height="547" max="6" width="794">
<location seat="1" x="640" y="58"> </location>
<location seat="2" x="654" y="288"> </location>
<location seat="3" x="615" y="424"> </location>
<location seat="4" x="70" y="421"> </location>
<location seat="5" x="0" y="280"> </location>
<location seat="6" x="70" y="58"> </location>
</layout>
<layout fav_seat="0" height="547" max="2" width="794">
<location seat="1" x="651" y="288"> </location>
<location seat="2" x="10" y="288"> </location>
</layout>
<layout fav_seat="0" height="547" max="9" width="794">
<location seat="1" x="634" y="38"> </location>
<location seat="2" x="667" y="184"> </location>
<location seat="3" x="667" y="321"> </location>
<location seat="4" x="667" y="445"> </location>
<location seat="5" x="337" y="459"> </location>
<location seat="6" x="0" y="400"> </location>
<location seat="7" x="0" y="322"> </location>
<location seat="8" x="0" y="181"> </location>
<location seat="9" x="70" y="53"> </location>
</layout>
</site>
<site HH_path="C:/Program Files/OnGame Sking/HandHistory/Hero/" converter="OnGameToFpdb" decoder="everleaf_decode_table" enabled="True" screen_name="Hero" site_name="OnGame" site_path="C:/Program Files/OnGame/" supported_games="holdem" table_finder="OnGame.exe">
<layout fav_seat="0" height="547" max="8" width="794">
<location seat="1" x="640" y="64"> </location>
<location seat="2" x="650" y="230"> </location>
<location seat="3" x="650" y="385"> </location>
<location seat="4" x="588" y="425"> </location>
<location seat="5" x="92" y="425"> </location>
<location seat="6" x="0" y="373"> </location>
<location seat="7" x="0" y="223"> </location>
<location seat="8" x="25" y="50"> </location>
</layout>
<layout fav_seat="0" height="547" max="6" width="794">
<location seat="1" x="640" y="58"> </location>
<location seat="2" x="654" y="288"> </location>
<location seat="3" x="615" y="424"> </location>
<location seat="4" x="70" y="421"> </location>
<location seat="5" x="0" y="280"> </location>
<location seat="6" x="70" y="58"> </location>
</layout>
<layout fav_seat="0" height="547" max="2" width="794">
<location seat="1" x="651" y="288"> </location>
<location seat="2" x="10" y="288"> </location>
</layout>
<layout fav_seat="0" height="547" max="9" width="794">
<location seat="1" x="634" y="38"> </location>
<location seat="2" x="667" y="184"> </location>
<location seat="3" x="667" y="321"> </location>
<location seat="4" x="667" y="445"> </location>
<location seat="5" x="337" y="459"> </location>
<location seat="6" x="0" y="400"> </location>
<location seat="7" x="0" y="322"> </location>
<location seat="8" x="0" y="181"> </location>
<location seat="9" x="70" y="53"> </location>
</layout>
</site>
<site HH_path="C:/Program Files/PKR/HandHistory/Hero/" converter="PkrToFpdb" decoder="everleaf_decode_table" enabled="True" screen_name="Hero" site_name="PKR" site_path="C:/Program Files/PKR/" supported_games="holdem" table_finder="PKR.exe">
<layout fav_seat="0" height="547" max="8" width="794">
<location seat="1" x="640" y="64"> </location>
<location seat="2" x="650" y="230"> </location>
<location seat="3" x="650" y="385"> </location>
<location seat="4" x="588" y="425"> </location>
<location seat="5" x="92" y="425"> </location>
<location seat="6" x="0" y="373"> </location>
<location seat="7" x="0" y="223"> </location>
<location seat="8" x="25" y="50"> </location>
</layout>
<layout fav_seat="0" height="547" max="6" width="794">
<location seat="1" x="640" y="58"> </location>
<location seat="2" x="654" y="288"> </location>
<location seat="3" x="615" y="424"> </location>
<location seat="4" x="70" y="421"> </location>
<location seat="5" x="0" y="280"> </location>
<location seat="6" x="70" y="58"> </location>
</layout>
<layout fav_seat="0" height="547" max="2" width="794">
<location seat="1" x="651" y="288"> </location>
<location seat="2" x="10" y="288"> </location>
</layout>
<layout fav_seat="0" height="547" max="9" width="794">
<location seat="1" x="634" y="38"> </location>
<location seat="2" x="667" y="184"> </location>
<location seat="3" x="667" y="321"> </location>
<location seat="4" x="667" y="445"> </location>
<location seat="5" x="337" y="459"> </location>
<location seat="6" x="0" y="400"> </location>
<location seat="7" x="0" y="322"> </location>
<location seat="8" x="0" y="181"> </location>
<location seat="9" x="70" y="53"> </location>
</layout>
</site>
<site HH_path="C:/Program Files/iPoker/HandHistory/Hero/" converter="iPokerToFpdb" decoder="everleaf_decode_table" enabled="True" screen_name="Hero" site_name="iPoker" site_path="C:/Program Files/iPoker/" supported_games="holdem" table_finder="iPoker.exe">
<layout fav_seat="0" height="547" max="8" width="794">
<location seat="1" x="640" y="64"> </location>
<location seat="2" x="650" y="230"> </location>
<location seat="3" x="650" y="385"> </location>
<location seat="4" x="588" y="425"> </location>
<location seat="5" x="92" y="425"> </location>
<location seat="6" x="0" y="373"> </location>
<location seat="7" x="0" y="223"> </location>
<location seat="8" x="25" y="50"> </location>
</layout>
<layout fav_seat="0" height="547" max="6" width="794">
<location seat="1" x="640" y="58"> </location>
<location seat="2" x="654" y="288"> </location>
<location seat="3" x="615" y="424"> </location>
<location seat="4" x="70" y="421"> </location>
<location seat="5" x="0" y="280"> </location>
<location seat="6" x="70" y="58"> </location>
</layout>
<layout fav_seat="0" height="547" max="2" width="794">
<location seat="1" x="651" y="288"> </location>
<location seat="2" x="10" y="288"> </location>
</layout>
<layout fav_seat="0" height="547" max="9" width="794">
<location seat="1" x="634" y="38"> </location>
<location seat="2" x="667" y="184"> </location>
<location seat="3" x="667" y="321"> </location>
<location seat="4" x="667" y="445"> </location>
<location seat="5" x="337" y="459"> </location>
<location seat="6" x="0" y="400"> </location>
<location seat="7" x="0" y="322"> </location>
<location seat="8" x="0" y="181"> </location>
<location seat="9" x="70" y="53"> </location>
</layout>
</site>
<site HH_path="C:/Program Files/Winamax/HandHistory/Hero/" converter="WinamaxToFpdb" decoder="everleaf_decode_table" enabled="True" screen_name="Hero" site_name="Winamax" site_path="C:/Program Files/Winamax/" supported_games="holdem" table_finder="Winamax.exe">
<layout fav_seat="0" height="547" max="8" width="794">
<location seat="1" x="640" y="64"> </location>
<location seat="2" x="650" y="230"> </location>
<location seat="3" x="650" y="385"> </location>
<location seat="4" x="588" y="425"> </location>
<location seat="5" x="92" y="425"> </location>
<location seat="6" x="0" y="373"> </location>
<location seat="7" x="0" y="223"> </location>
<location seat="8" x="25" y="50"> </location>
</layout>
<layout fav_seat="0" height="547" max="6" width="794">
<location seat="1" x="640" y="58"> </location>
<location seat="2" x="654" y="288"> </location>
<location seat="3" x="615" y="424"> </location>
<location seat="4" x="70" y="421"> </location>
<location seat="5" x="0" y="280"> </location>
<location seat="6" x="70" y="58"> </location>
</layout>
<layout fav_seat="0" height="547" max="2" width="794">
<location seat="1" x="651" y="288"> </location>
<location seat="2" x="10" y="288"> </location>
</layout>
<layout fav_seat="0" height="547" max="9" width="794">
<location seat="1" x="634" y="38"> </location>
<location seat="2" x="667" y="184"> </location>
<location seat="3" x="667" y="321"> </location>
<location seat="4" x="667" y="445"> </location>
<location seat="5" x="337" y="459"> </location>
<location seat="6" x="0" y="400"> </location>
<location seat="7" x="0" y="322"> </location>
<location seat="8" x="0" y="181"> </location>
<location seat="9" x="70" y="53"> </location>
</layout>
</site>
</supported_sites> </supported_sites>
<supported_games> <supported_games>
@ -577,7 +759,7 @@ Left-Drag to Move"
<hhc site="Carbon" converter="CarbonToFpdb"/> <hhc site="Carbon" converter="CarbonToFpdb"/>
<hhc site="PKR" converter="PkrToFpdb"/> <hhc site="PKR" converter="PkrToFpdb"/>
<hhc site="iPoker" converter="iPokerToFpdb"/> <hhc site="iPoker" converter="iPokerToFpdb"/>
<hhc site="Winamax" converter="WinamaxToFpdb"/> <hhc site="Winamax" converter="WinamaxToFpdb" summaryImporter="WinamaxSummary"/>
</hhcs> </hhcs>
<supported_databases> <supported_databases>

View File

@ -24,6 +24,9 @@
<col col_name="vpip" disp_all="True" disp_posn="True" col_title="VPIP" xalignment="1.0" field_format="%3.1f" field_type="str" /> <col col_name="vpip" disp_all="True" disp_posn="True" col_title="VPIP" xalignment="1.0" field_format="%3.1f" field_type="str" />
<col col_name="pfr" disp_all="True" disp_posn="True" col_title="PFR" xalignment="1.0" field_format="%3.1f" field_type="str" /> <col col_name="pfr" disp_all="True" disp_posn="True" col_title="PFR" xalignment="1.0" field_format="%3.1f" field_type="str" />
<col col_name="pf3" disp_all="True" disp_posn="True" col_title="PF3" xalignment="1.0" field_format="%3.1f" field_type="str" /> <col col_name="pf3" disp_all="True" disp_posn="True" col_title="PF3" xalignment="1.0" field_format="%3.1f" field_type="str" />
<col col_name="pf4" disp_all="True" disp_posn="True" col_title="PF4" xalignment="1.0" field_format="%3.1f" field_type="str" />
<col col_name="pff3" disp_all="True" disp_posn="True" col_title="PFF3" xalignment="1.0" field_format="%3.1f" field_type="str" />
<col col_name="pff4" disp_all="True" disp_posn="True" col_title="PFF4" xalignment="1.0" field_format="%3.1f" field_type="str" />
<col col_name="aggfac" disp_all="True" disp_posn="True" col_title="AggFac" xalignment="1.0" field_format="%2.2f" field_type="str" /> <col col_name="aggfac" disp_all="True" disp_posn="True" col_title="AggFac" xalignment="1.0" field_format="%2.2f" field_type="str" />
<col col_name="aggfrq" disp_all="True" disp_posn="True" col_title="AggFreq" xalignment="1.0" field_format="%3.1f" field_type="str" /> <col col_name="aggfrq" disp_all="True" disp_posn="True" col_title="AggFreq" xalignment="1.0" field_format="%3.1f" field_type="str" />
<col col_name="conbet" disp_all="True" disp_posn="True" col_title="ContBet" xalignment="1.0" field_format="%3.1f" field_type="str" /> <col col_name="conbet" disp_all="True" disp_posn="True" col_title="ContBet" xalignment="1.0" field_format="%3.1f" field_type="str" />
@ -525,6 +528,18 @@ Left-Drag to Move"
<location seat="8" x="0" y="181"> </location> <location seat="8" x="0" y="181"> </location>
<location seat="9" x="70" y="53"> </location> <location seat="9" x="70" y="53"> </location>
</layout> </layout>
<layout max="10" width="792" height="546" fav_seat="0">
<location seat="1" x="684" y="61"> </location>
<location seat="2" x="689" y="239"> </location>
<location seat="3" x="692" y="346"> </location>
<location seat="4" x="586" y="393"> </location>
<location seat="5" x="421" y="440"> </location>
<location seat="6" x="267" y="440"> </location>
<location seat="7" x="0" y="361"> </location>
<location seat="8" x="0" y="280"> </location>
<location seat="9" x="121" y="280"> </location>
<location seat="10" x="46" y="30"> </location>
</layout>
</site> </site>
<site HH_path="C:/Program Files/PKR/HandHistory/YOUR SCREEN NAME HERE/" converter="PkrToFpdb" decoder="everleaf_decode_table" enabled="False" screen_name="YOUR SCREEN NAME HERE" site_name="PKR" site_path="C:/Program Files/PKR/" supported_games="holdem" table_finder="PKR.exe"> <site HH_path="C:/Program Files/PKR/HandHistory/YOUR SCREEN NAME HERE/" converter="PkrToFpdb" decoder="everleaf_decode_table" enabled="False" screen_name="YOUR SCREEN NAME HERE" site_name="PKR" site_path="C:/Program Files/PKR/" supported_games="holdem" table_finder="PKR.exe">
@ -599,6 +614,42 @@ Left-Drag to Move"
</layout> </layout>
</site> </site>
<site HH_path="C:/Program Files/Everest/HandHistory/YOUR SCREEN NAME HERE/" converter="EverestToFpdb" decoder="everleaf_decode_table" enabled="False" screen_name="YOUR SCREEN NAME HERE" site_name="Everest" site_path="C:/Program Files/Everest/" supported_games="holdem" table_finder="Everest.exe">
<layout fav_seat="0" height="547" max="8" width="794">
<location seat="1" x="640" y="64"> </location>
<location seat="2" x="650" y="230"> </location>
<location seat="3" x="650" y="385"> </location>
<location seat="4" x="588" y="425"> </location>
<location seat="5" x="92" y="425"> </location>
<location seat="6" x="0" y="373"> </location>
<location seat="7" x="0" y="223"> </location>
<location seat="8" x="25" y="50"> </location>
</layout>
<layout fav_seat="0" height="547" max="6" width="794">
<location seat="1" x="640" y="58"> </location>
<location seat="2" x="654" y="288"> </location>
<location seat="3" x="615" y="424"> </location>
<location seat="4" x="70" y="421"> </location>
<location seat="5" x="0" y="280"> </location>
<location seat="6" x="70" y="58"> </location>
</layout>
<layout fav_seat="0" height="547" max="2" width="794">
<location seat="1" x="651" y="288"> </location>
<location seat="2" x="10" y="288"> </location>
</layout>
<layout fav_seat="0" height="547" max="9" width="794">
<location seat="1" x="634" y="38"> </location>
<location seat="2" x="667" y="184"> </location>
<location seat="3" x="667" y="321"> </location>
<location seat="4" x="667" y="445"> </location>
<location seat="5" x="337" y="459"> </location>
<location seat="6" x="0" y="400"> </location>
<location seat="7" x="0" y="322"> </location>
<location seat="8" x="0" y="181"> </location>
<location seat="9" x="70" y="53"> </location>
</layout>
</site>
</supported_sites> </supported_sites>
<supported_games> <supported_games>
@ -707,8 +758,14 @@ Left-Drag to Move"
<pu_stat pu_stat_name="n"> </pu_stat> <pu_stat pu_stat_name="n"> </pu_stat>
<pu_stat pu_stat_name="vpip"> </pu_stat> <pu_stat pu_stat_name="vpip"> </pu_stat>
<pu_stat pu_stat_name="pfr"> </pu_stat> <pu_stat pu_stat_name="pfr"> </pu_stat>
<pu_stat pu_stat_name="three_B_0"> </pu_stat> <pu_stat pu_stat_name="three_B"> </pu_stat>
<pu_stat pu_stat_name="four_B"> </pu_stat>
<pu_stat pu_stat_name="cfour_B"> </pu_stat>
<pu_stat pu_stat_name="squeeze"> </pu_stat>
<pu_stat pu_stat_name="f_3bet"> </pu_stat>
<pu_stat pu_stat_name="f_4bet"> </pu_stat>
<pu_stat pu_stat_name="steal"> </pu_stat> <pu_stat pu_stat_name="steal"> </pu_stat>
<pu_stat pu_stat_name="s_steal"> </pu_stat>
<pu_stat pu_stat_name="f_steal"> </pu_stat> <pu_stat pu_stat_name="f_steal"> </pu_stat>
<pu_stat pu_stat_name="f_BB_steal"> </pu_stat> <pu_stat pu_stat_name="f_BB_steal"> </pu_stat>
<pu_stat pu_stat_name="f_SB_steal"> </pu_stat> <pu_stat pu_stat_name="f_SB_steal"> </pu_stat>
@ -789,6 +846,7 @@ Left-Drag to Move"
<hhc site="PKR" converter="PkrToFpdb"/> <hhc site="PKR" converter="PkrToFpdb"/>
<hhc site="iPoker" converter="iPokerToFpdb"/> <hhc site="iPoker" converter="iPokerToFpdb"/>
<hhc site="Winamax" converter="WinamaxToFpdb"/> <hhc site="Winamax" converter="WinamaxToFpdb"/>
<hhc site="Everest" converter="EverestToFpdb"/>
</hhcs> </hhcs>
<raw_hands save="none" compression="none"/> <raw_hands save="none" compression="none"/>

View File

@ -23,6 +23,9 @@
Main for FreePokerTools HUD. Main for FreePokerTools HUD.
""" """
import L10n
_ = L10n.get_translation()
# Standard Library modules # Standard Library modules
import sys import sys
import os import os
@ -51,21 +54,6 @@ elif sys.platform == 'darwin':
else: # This is bad--figure out the values for the various windows flavors else: # This is bad--figure out the values for the various windows flavors
import WinTables as Tables import WinTables as Tables
import locale
lang = locale.getdefaultlocale()[0][0:2]
print "lang:", lang
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
# get config and set up logger # get config and set up logger
c = Configuration.Config(file=options.config, dbname=options.dbname) c = Configuration.Config(file=options.config, dbname=options.dbname)
log = Configuration.get_logger("logging.conf", "hud", log_dir=c.dir_log, log_file='HUD-log.txt') log = Configuration.get_logger("logging.conf", "hud", log_dir=c.dir_log, log_file='HUD-log.txt')
@ -128,7 +116,7 @@ class HUD_main(object):
self.main_window.set_icon_stock(gtk.STOCK_HOME) self.main_window.set_icon_stock(gtk.STOCK_HOME)
if not options.hidden: if not options.hidden:
self.main_window.show_all() self.main_window.show_all()
# gobject.timeout_add(100, self.check_tables) gobject.timeout_add(800, self.check_tables)
except: except:
log.exception("Error initializing main_window") log.exception("Error initializing main_window")

View File

@ -57,6 +57,7 @@ class Hand(object):
#log.debug( _("Hand.init(): handText is ") + str(handText) ) #log.debug( _("Hand.init(): handText is ") + str(handText) )
self.config = config self.config = config
self.saveActions = self.config.get_import_parameters().get('saveActions') self.saveActions = self.config.get_import_parameters().get('saveActions')
self.cacheSessions = self.config.get_import_parameters().get("cacheSessions")
#log = Configuration.get_logger("logging.conf", "db", log_dir=self.config.dir_log) #log = Configuration.get_logger("logging.conf", "db", log_dir=self.config.dir_log)
self.sitename = sitename self.sitename = sitename
self.siteId = self.config.get_site_id(sitename) self.siteId = self.config.get_site_id(sitename)
@ -258,7 +259,7 @@ dealt whether they were seen in a 'dealt to' line
db.commit() db.commit()
#end def prepInsert #end def prepInsert
def insert(self, db, printtest = False): def insert(self, db, hp_data = None, ha_data = None, insert_data=False, printtest = False):
""" Function to insert Hand into database """ Function to insert Hand into database
Should not commit, and do minimal selects. Callers may want to cache commits Should not commit, and do minimal selects. Callers may want to cache commits
db: a connected Database object""" db: a connected Database object"""
@ -277,17 +278,26 @@ db: a connected Database object"""
# seats TINYINT NOT NULL, # seats TINYINT NOT NULL,
hh['seats'] = len(self.dbid_pids) hh['seats'] = len(self.dbid_pids)
hp = self.stats.getHandsPlayers()
if self.cacheSessions:
hh['sessionId'] = db.storeSessionsCache(self.dbid_pids, self.startTime, self.gametype, hp)
self.dbid_hands = db.storeHand(hh, printdata = printtest) self.dbid_hands = db.storeHand(hh, printdata = printtest)
self.dbid_hpid = db.storeHandsPlayers(self.dbid_hands, self.dbid_pids,
self.stats.getHandsPlayers(), printdata = printtest) hp_inserts = db.storeHandsPlayers(self.dbid_hands, self.dbid_pids, hp,
insert=insert_data, hp_bulk = hp_data, printdata = printtest)
if self.saveActions: if self.saveActions:
db.storeHandsActions(self.dbid_hands, self.dbid_pids, self.dbid_hpid, ha_inserts = db.storeHandsActions(self.dbid_hands, self.dbid_pids, self.stats.getHandsActions(),
self.stats.getHandsActions(), printdata = printtest) insert=insert_data, ha_bulk = ha_data, printdata = printtest)
else: else:
log.info(_("Hand.insert(): hid #: %s is a duplicate") % hh['siteHandNo']) log.info(_("Hand.insert(): hid #: %s is a duplicate") % hh['siteHandNo'])
self.is_duplicate = True # i.e. don't update hudcache self.is_duplicate = True # i.e. don't update hudcache
raise FpdbHandDuplicate(hh['siteHandNo']) raise FpdbHandDuplicate(hh['siteHandNo'])
return hp_inserts, ha_inserts
def updateHudCache(self, db): def updateHudCache(self, db):
db.storeHudCache(self.dbid_gt, self.dbid_pids, self.startTime, self.stats.getHandsPlayers()) db.storeHudCache(self.dbid_gt, self.dbid_pids, self.startTime, self.stats.getHandsPlayers())
@ -349,15 +359,13 @@ db: a connected Database object"""
# Need to find MySQL and Postgres equivalents # Need to find MySQL and Postgres equivalents
# MySQL maybe: cursorclass=MySQLdb.cursors.DictCursor # MySQL maybe: cursorclass=MySQLdb.cursors.DictCursor
res = c.fetchone() res = c.fetchone()
#res['tourneyId'] #res['seats'] #res['rush']
self.tablename = res['tableName'] self.tablename = res['tableName']
self.handid = res['siteHandNo'] self.handid = res['siteHandNo']
self.startTime = datetime.datetime.strptime(res['startTime'], "%Y-%m-%d %H:%M:%S+00:00") self.startTime = datetime.datetime.strptime(res['startTime'], "%Y-%m-%d %H:%M:%S+00:00")
#res['tourneyId']
#gametypeId
#res['importTime'] # Don't really care about this
#res['seats']
self.maxseats = res['maxSeats'] self.maxseats = res['maxSeats']
#res['rush']
cards = map(Card.valueSuitFromCard, [res['boardcard1'], res['boardcard2'], res['boardcard3'], res['boardcard4'], res['boardcard5']]) cards = map(Card.valueSuitFromCard, [res['boardcard1'], res['boardcard2'], res['boardcard3'], res['boardcard4'], res['boardcard5']])
#print "DEBUG: res['boardcard1']: %s" % res['boardcard1'] #print "DEBUG: res['boardcard1']: %s" % res['boardcard1']
#print "DEBUG: cards: %s" % cards #print "DEBUG: cards: %s" % cards
@ -437,7 +445,7 @@ chips (string) the chips the player has at the start of the hand (can be None)
If a player has None chips he won't be added.""" If a player has None chips he won't be added."""
log.debug("addPlayer: %s %s (%s)" % (seat, name, chips)) log.debug("addPlayer: %s %s (%s)" % (seat, name, chips))
if chips is not None: if chips is not None:
chips = re.sub(u',', u'', chips) #some sites have commas chips = chips.replace(u',', u'') #some sites have commas
self.players.append([seat, name, chips]) self.players.append([seat, name, chips])
self.stacks[name] = Decimal(chips) self.stacks[name] = Decimal(chips)
self.pot.addPlayer(name) self.pot.addPlayer(name)
@ -479,10 +487,10 @@ If a player has None chips he won't be added."""
For sites (currently only Carbon Poker) which record "all in" as a special action, which can mean either "calls and is all in" or "raises all in". For sites (currently only Carbon Poker) which record "all in" as a special action, which can mean either "calls and is all in" or "raises all in".
""" """
self.checkPlayerExists(player) self.checkPlayerExists(player)
amount = re.sub(u',', u'', amount) #some sites have commas amount = amount.replace(u',', u'') #some sites have commas
Ai = Decimal(amount) Ai = Decimal(amount)
Bp = self.lastBet[street] Bp = self.lastBet[street]
Bc = reduce(operator.add, self.bets[street][player], 0) Bc = sum(self.bets[street][player])
C = Bp - Bc C = Bp - Bc
if Ai <= C: if Ai <= C:
self.addCall(street, player, amount) self.addCall(street, player, amount)
@ -495,13 +503,14 @@ For sites (currently only Carbon Poker) which record "all in" as a special actio
def addAnte(self, player, ante): def addAnte(self, player, ante):
log.debug("%s %s antes %s" % ('BLINDSANTES', player, ante)) log.debug("%s %s antes %s" % ('BLINDSANTES', player, ante))
if player is not None: if player is not None:
ante = re.sub(u',', u'', ante) #some sites have commas ante = ante.replace(u',', u'') #some sites have commas
self.bets['BLINDSANTES'][player].append(Decimal(ante)) ante = Decimal(ante)
self.stacks[player] -= Decimal(ante) self.bets['BLINDSANTES'][player].append(ante)
act = (player, 'ante', Decimal(ante), self.stacks[player]==0) self.stacks[player] -= ante
act = (player, 'ante', ante, self.stacks[player]==0)
self.actions['BLINDSANTES'].append(act) self.actions['BLINDSANTES'].append(act)
# self.pot.addMoney(player, Decimal(ante)) # self.pot.addMoney(player, ante)
self.pot.addCommonMoney(player, Decimal(ante)) self.pot.addCommonMoney(player, ante)
#I think the antes should be common money, don't have enough hand history to check #I think the antes should be common money, don't have enough hand history to check
def addBlind(self, player, blindtype, amount): def addBlind(self, player, blindtype, amount):
@ -514,22 +523,25 @@ For sites (currently only Carbon Poker) which record "all in" as a special actio
# #
log.debug("addBlind: %s posts %s, %s" % (player, blindtype, amount)) log.debug("addBlind: %s posts %s, %s" % (player, blindtype, amount))
if player is not None: if player is not None:
amount = re.sub(u',', u'', amount) #some sites have commas amount = amount.replace(u',', u'') #some sites have commas
self.stacks[player] -= Decimal(amount) amount = Decimal(amount)
act = (player, blindtype, Decimal(amount), self.stacks[player]==0) self.stacks[player] -= amount
act = (player, blindtype, amount, self.stacks[player]==0)
self.actions['BLINDSANTES'].append(act) self.actions['BLINDSANTES'].append(act)
if blindtype == 'both': if blindtype == 'both':
# work with the real amount. limit games are listed as $1, $2, where # work with the real amount. limit games are listed as $1, $2, where
# the SB 0.50 and the BB is $1, after the turn the minimum bet amount is $2.... # the SB 0.50 and the BB is $1, after the turn the minimum bet amount is $2....
amount = self.bb amount = Decimal(self.bb)
self.bets['BLINDSANTES'][player].append(Decimal(self.sb)) sb = Decimal(self.sb)
self.pot.addCommonMoney(player, Decimal(self.sb)) self.bets['BLINDSANTES'][player].append(sb)
self.pot.addCommonMoney(player, sb)
if blindtype == 'secondsb': if blindtype == 'secondsb':
amount = Decimal(0) amount = Decimal(0)
self.bets['BLINDSANTES'][player].append(Decimal(self.sb)) sb = Decimal(self.sb)
self.pot.addCommonMoney(player, Decimal(self.sb)) self.bets['BLINDSANTES'][player].append(sb)
self.pot.addCommonMoney(player, sb)
street = 'BLAH' street = 'BLAH'
@ -538,27 +550,28 @@ For sites (currently only Carbon Poker) which record "all in" as a special actio
elif self.gametype['base'] == 'draw': elif self.gametype['base'] == 'draw':
street = 'DEAL' street = 'DEAL'
self.bets[street][player].append(Decimal(amount)) self.bets[street][player].append(amount)
self.pot.addMoney(player, Decimal(amount)) self.pot.addMoney(player, amount)
self.lastBet[street] = Decimal(amount) self.lastBet[street] = amount
self.posted = self.posted + [[player,blindtype]] self.posted = self.posted + [[player,blindtype]]
def addCall(self, street, player=None, amount=None): def addCall(self, street, player=None, amount=None):
if amount: if amount:
amount = re.sub(u',', u'', amount) #some sites have commas amount = amount.replace(u',', u'') #some sites have commas
log.debug(_("%s %s calls %s") %(street, player, amount)) log.debug(_("%s %s calls %s") %(street, player, amount))
# Potentially calculate the amount of the call if not supplied # Potentially calculate the amount of the call if not supplied
# corner cases include if player would be all in # corner cases include if player would be all in
if amount is not None: if amount is not None:
self.bets[street][player].append(Decimal(amount)) amount = Decimal(amount)
#self.lastBet[street] = Decimal(amount) self.bets[street][player].append(amount)
self.stacks[player] -= Decimal(amount) #self.lastBet[street] = amount
self.stacks[player] -= amount
#print "DEBUG %s calls %s, stack %s" % (player, amount, self.stacks[player]) #print "DEBUG %s calls %s, stack %s" % (player, amount, self.stacks[player])
act = (player, 'calls', Decimal(amount), self.stacks[player]==0) act = (player, 'calls', amount, self.stacks[player] == 0)
self.actions[street].append(act) self.actions[street].append(act)
self.pot.addMoney(player, Decimal(amount)) self.pot.addMoney(player, amount)
def addRaiseBy(self, street, player, amountBy): def addRaiseBy(self, street, player, amountBy):
"""\ """\
@ -575,11 +588,11 @@ Add a raise by amountBy on [street] by [player]
# then: C = Bp - Bc (amount to call) # then: C = Bp - Bc (amount to call)
# Rt = Bp + Rb (raise to) # Rt = Bp + Rb (raise to)
# #
amountBy = re.sub(u',', u'', amountBy) #some sites have commas amountBy = amountBy.replace(u',', u'') #some sites have commas
self.checkPlayerExists(player) self.checkPlayerExists(player)
Rb = Decimal(amountBy) Rb = Decimal(amountBy)
Bp = self.lastBet[street] Bp = self.lastBet[street]
Bc = reduce(operator.add, self.bets[street][player], 0) Bc = sum(self.bets[street][player])
C = Bp - Bc C = Bp - Bc
Rt = Bp + Rb Rt = Bp + Rb
@ -593,10 +606,10 @@ Add a raise by amountBy on [street] by [player]
"""\ """\
For sites which by "raises x" mean "calls and raises putting a total of x in the por". """ For sites which by "raises x" mean "calls and raises putting a total of x in the por". """
self.checkPlayerExists(player) self.checkPlayerExists(player)
amount = re.sub(u',', u'', amount) #some sites have commas amount = amount.replace(u',', u'') #some sites have commas
CRb = Decimal(amount) CRb = Decimal(amount)
Bp = self.lastBet[street] Bp = self.lastBet[street]
Bc = reduce(operator.add, self.bets[street][player], 0) Bc = sum(self.bets[street][player])
C = Bp - Bc C = Bp - Bc
Rb = CRb - C Rb = CRb - C
Rt = Bp + Rb Rt = Bp + Rb
@ -609,9 +622,9 @@ Add a raise on [street] by [player] to [amountTo]
""" """
#CG - No idea if this function has been test/verified #CG - No idea if this function has been test/verified
self.checkPlayerExists(player) self.checkPlayerExists(player)
amountTo = re.sub(u',', u'', amountTo) #some sites have commas amountTo = amountTo.replace(u',', u'') #some sites have commas
Bp = self.lastBet[street] Bp = self.lastBet[street]
Bc = reduce(operator.add, self.bets[street][player], 0) Bc = sum(self.bets[street][player])
Rt = Decimal(amountTo) Rt = Decimal(amountTo)
C = Bp - Bc C = Bp - Bc
Rb = Rt - C - Bc Rb = Rt - C - Bc
@ -630,15 +643,16 @@ Add a raise on [street] by [player] to [amountTo]
def addBet(self, street, player, amount): def addBet(self, street, player, amount):
log.debug(_("%s %s bets %s") %(street, player, amount)) log.debug(_("%s %s bets %s") %(street, player, amount))
amount = re.sub(u',', u'', amount) #some sites have commas amount = amount.replace(u',', u'') #some sites have commas
amount = Decimal(amount)
self.checkPlayerExists(player) self.checkPlayerExists(player)
self.bets[street][player].append(Decimal(amount)) self.bets[street][player].append(amount)
self.stacks[player] -= Decimal(amount) self.stacks[player] -= amount
#print "DEBUG %s bets %s, stack %s" % (player, amount, self.stacks[player]) #print "DEBUG %s bets %s, stack %s" % (player, amount, self.stacks[player])
act = (player, 'bets', Decimal(amount), self.stacks[player]==0) act = (player, 'bets', amount, self.stacks[player]==0)
self.actions[street].append(act) self.actions[street].append(act)
self.lastBet[street] = Decimal(amount) self.lastBet[street] = amount
self.pot.addMoney(player, Decimal(amount)) self.pot.addMoney(player, amount)
def addStandsPat(self, street, player): def addStandsPat(self, street, player):
@ -1140,6 +1154,9 @@ class DrawHand(Hand):
hhc.readPlayerStacks(self) hhc.readPlayerStacks(self)
hhc.compilePlayerRegexs(self) hhc.compilePlayerRegexs(self)
hhc.markStreets(self) hhc.markStreets(self)
# markStreets in Draw may match without dealing cards
if self.streets['DEAL'] == None:
raise FpdbParseError(_("DrawHand.__init__: street 'DEAL' is empty. Hand cancelled? HandID: '%s'" % self.handid))
hhc.readBlinds(self) hhc.readBlinds(self)
hhc.readAntes(self) hhc.readAntes(self)
hhc.readButton(self) hhc.readButton(self)
@ -1366,10 +1383,10 @@ closed likewise, but known only to player
Add a complete on [street] by [player] to [amountTo] Add a complete on [street] by [player] to [amountTo]
""" """
log.debug(_("%s %s completes %s") % (street, player, amountTo)) log.debug(_("%s %s completes %s") % (street, player, amountTo))
amountTo = re.sub(u',', u'', amountTo) #some sites have commas amountTo = amountTo.replace(u',', u'') #some sites have commas
self.checkPlayerExists(player) self.checkPlayerExists(player)
Bp = self.lastBet['THIRD'] Bp = self.lastBet['THIRD']
Bc = reduce(operator.add, self.bets[street][player], 0) Bc = sum(self.bets[street][player])
Rt = Decimal(amountTo) Rt = Decimal(amountTo)
C = Bp - Bc C = Bp - Bc
Rb = Rt - C Rb = Rt - C
@ -1384,12 +1401,14 @@ Add a complete on [street] by [player] to [amountTo]
def addBringIn(self, player, bringin): def addBringIn(self, player, bringin):
if player is not None: if player is not None:
log.debug(_("Bringin: %s, %s") % (player , bringin)) log.debug(_("Bringin: %s, %s") % (player , bringin))
self.bets['THIRD'][player].append(Decimal(bringin)) bringin = bringin.replace(u',', u'') #some sites have commas
self.stacks[player] -= Decimal(bringin) bringin = Decimal(bringin)
act = (player, 'bringin', Decimal(bringin), self.stacks[player]==0) self.bets['THIRD'][player].append(bringin)
self.stacks[player] -= bringin
act = (player, 'bringin', bringin, self.stacks[player]==0)
self.actions['THIRD'].append(act) self.actions['THIRD'].append(act)
self.lastBet['THIRD'] = Decimal(bringin) self.lastBet['THIRD'] = bringin
self.pot.addMoney(player, Decimal(bringin)) self.pot.addMoney(player, bringin)
def getStreetTotals(self): def getStreetTotals(self):
# street1Pot INT, /* pot size at flop/street4 */ # street1Pot INT, /* pot size at flop/street4 */

View File

@ -264,7 +264,7 @@ which it expects to find at self.re_TailSplitHands -- see for e.g. Everleaf.py.
if self.ftpArchive == True: if self.ftpArchive == True:
log.debug(_("Converting ftpArchive format to readable")) log.debug(_("Converting ftpArchive format to readable"))
# Remove ******************** # 1 ************************* # Remove ******************** # 1 *************************
m = re.compile('\*{20}\s#\s\d+\s\*{25}\s+', re.MULTILINE) m = re.compile('\*{20}\s#\s\d+\s\*{20,25}\s+', re.MULTILINE)
self.obs = m.sub('', self.obs) self.obs = m.sub('', self.obs)
if self.obs is None or self.obs == "": if self.obs is None or self.obs == "":

View File

@ -335,6 +335,9 @@ class Stud_cards:
class Seat_Window(gtk.Window): class Seat_Window(gtk.Window):
"""Subclass gtk.Window for the seat windows.""" """Subclass gtk.Window for the seat windows."""
def __init__(self, aw = None):
super(Seat_Window, self).__init__()
self.aw = aw
class Aux_Seats(Aux_Window): class Aux_Seats(Aux_Window):
"""A super class to display an aux_window at each seat.""" """A super class to display an aux_window at each seat."""
@ -348,6 +351,8 @@ class Aux_Seats(Aux_Window):
self.uses_timer = False # the Aux_seats object uses a timer to control hiding self.uses_timer = False # the Aux_seats object uses a timer to control hiding
self.timer_on = False # bool = Ture if the timeout for removing the cards is on self.timer_on = False # bool = Ture if the timeout for removing the cards is on
self.aw_window_type = Seat_Window
# placeholders that should be overridden--so we don't throw errors # placeholders that should be overridden--so we don't throw errors
def create_contents(self): pass def create_contents(self): pass
def update_contents(self): pass def update_contents(self): pass
@ -382,10 +387,10 @@ class Aux_Seats(Aux_Window):
(x, y) = self.params['layout'][self.hud.max].common (x, y) = self.params['layout'][self.hud.max].common
else: else:
(x, y) = loc[self.adj[i]] (x, y) = loc[self.adj[i]]
self.m_windows[i] = Seat_Window() self.m_windows[i] = self.aw_window_type(self)
self.m_windows[i].set_decorated(False) self.m_windows[i].set_decorated(False)
self.m_windows[i].set_property("skip-taskbar-hint", True) self.m_windows[i].set_property("skip-taskbar-hint", True)
self.m_windows[i].set_transient_for(self.hud.main_window) self.m_windows[i].set_transient_for(self.hud.main_window) # FIXME: shouldn't this be the table window??
self.m_windows[i].set_focus_on_map(False) self.m_windows[i].set_focus_on_map(False)
self.m_windows[i].connect("configure_event", self.configure_event_cb, i) self.m_windows[i].connect("configure_event", self.configure_event_cb, i)
self.positions[i] = self.card_positions((x * width) / 1000, self.hud.table.x, (y * height) /1000, self.hud.table.y) self.positions[i] = self.card_positions((x * width) / 1000, self.hud.table.x, (y * height) /1000, self.hud.table.y)

View File

@ -52,8 +52,9 @@ class Table(Table_Window):
if re.search(self.search_string, d.get(kCGWindowName, ""), re.I): if re.search(self.search_string, d.get(kCGWindowName, ""), re.I):
title = d[kCGWindowName] title = d[kCGWindowName]
if self.check_bad_words(title): continue if self.check_bad_words(title): continue
self.number = d[kCGWindowNumber] self.number = int(d[kCGWindowNumber])
self.title = title self.title = title
return self.title
if self.number is None: if self.number is None:
return None return None
@ -63,11 +64,11 @@ class Table(Table_Window):
WinListDict = CGWindowListCreateDescriptionFromArray(WinList) WinListDict = CGWindowListCreateDescriptionFromArray(WinList)
for d in WinListDict: for d in WinListDict:
if d[CGWindowNumber] == self.number: if d[kCGWindowNumber] == self.number:
return {'x' : d[kCGWindowBounds][X], return {'x' : int(d[kCGWindowBounds]['X']),
'y' : d[kCGWindowBounds][Y], 'y' : int(d[kCGWindowBounds]['Y']),
'width' : d[kCGWindowBounds][Width], 'width' : int(d[kCGWindowBounds]['Width']),
'height' : d[kCGWindowBounds][Height] 'height' : int(d[kCGWindowBounds]['Height'])
} }
return None return None
@ -86,5 +87,5 @@ class Table(Table_Window):
# the hud window was a dialog belonging to the table. # the hud window was a dialog belonging to the table.
# This is the gdkhandle for the HUD window # This is the gdkhandle for the HUD window
gdkwindow = gtk.gdk.window_foreign_new(window.number) gdkwindow = gtk.gdk.window_foreign_new(window.window.xid)
gdkwindow.set_transient_for(self.gdkhandle) gdkwindow.set_transient_for(window.window)

View File

@ -49,7 +49,7 @@ class OnGame(HandHistoryConverter):
} }
currencies = { u'\u20ac':'EUR', u'\xe2\x82\xac':'EUR', '$':'USD', '':'T$' } currencies = { u'\u20ac':'EUR', u'\xe2\x82\xac':'EUR', '$':'USD', '':'T$' }
limits = { 'NO_LIMIT':'nl', 'LIMIT':'fl'} limits = { 'NO_LIMIT':'nl', 'POT_LIMIT':'pl', 'LIMIT':'fl'}
games = { # base, category games = { # base, category
"TEXAS_HOLDEM" : ('hold','holdem'), "TEXAS_HOLDEM" : ('hold','holdem'),
@ -68,17 +68,19 @@ class OnGame(HandHistoryConverter):
# ***** End of hand R5-75443872-57 ***** # ***** End of hand R5-75443872-57 *****
re_SplitHands = re.compile(u'\*\*\*\*\*\sEnd\sof\shand\s[-A-Z\d]+.*\n(?=\*)') re_SplitHands = re.compile(u'\*\*\*\*\*\sEnd\sof\shand\s[-A-Z\d]+.*\n(?=\*)')
#TODO: detect play money
# "Play money" rather than "Real money" and set currency accordingly
re_HandInfo = re.compile(u""" re_HandInfo = re.compile(u"""
\*\*\*\*\*\sHistory\sfor\shand\s(?P<HID>[-A-Z\d]+).* \*\*\*\*\*\sHistory\sfor\shand\s(?P<HID>[-A-Z\d]+).*
Start\shand:\s(?P<DATETIME>.*) Start\shand:\s(?P<DATETIME>.*)
Table:\s(?P<TABLE>[-\'\w\s]+)\s\[\d+\]\s\( Table:\s(\[SPEED\]\s)?(?P<TABLE>[-\'\w\s]+)\s\[\d+\]\s\(
( (
(?P<LIMIT>NO_LIMIT|Limit|LIMIT|Pot\sLimit)\s (?P<LIMIT>NO_LIMIT|Limit|LIMIT|Pot\sLimit|POT_LIMIT)\s
(?P<GAME>TEXAS_HOLDEM|OMAHA_HI|SEVEN_CARD_STUD|SEVEN_CARD_STUD_HI_LO|RAZZ|FIVE_CARD_DRAW)\s (?P<GAME>TEXAS_HOLDEM|OMAHA_HI|SEVEN_CARD_STUD|SEVEN_CARD_STUD_HI_LO|RAZZ|FIVE_CARD_DRAW)\s
(?P<CURRENCY>%(LS)s|)?(?P<SB>[.0-9]+)/ (?P<CURRENCY>%(LS)s|)?(?P<SB>[.0-9]+)/
(%(LS)s)?(?P<BB>[.0-9]+) (%(LS)s)?(?P<BB>[.0-9]+)
)? )?
""" % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE) #TODO: detect play money (identified by "Play money" rather than "Real money" and set currency accordingly """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE)
re_TailSplitHands = re.compile(u'(\*\*\*\*\*\sEnd\sof\shand\s[-A-Z\d]+.*\n)(?=\*)') re_TailSplitHands = re.compile(u'(\*\*\*\*\*\sEnd\sof\shand\s[-A-Z\d]+.*\n)(?=\*)')
re_Button = re.compile('Button: seat (?P<BUTTON>\d+)', re.MULTILINE) # Button: seat 2 re_Button = re.compile('Button: seat (?P<BUTTON>\d+)', re.MULTILINE) # Button: seat 2
@ -140,6 +142,7 @@ class OnGame(HandHistoryConverter):
def readSupportedGames(self): def readSupportedGames(self):
return [ return [
["ring", "hold", "fl"], ["ring", "hold", "fl"],
["ring", "hold", "pl"],
["ring", "hold", "nl"], ["ring", "hold", "nl"],
["ring", "stud", "fl"], ["ring", "stud", "fl"],
["ring", "draw", "fl"], ["ring", "draw", "fl"],
@ -158,6 +161,7 @@ class OnGame(HandHistoryConverter):
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp) raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
mg = m.groupdict() mg = m.groupdict()
#print "DEBUG: mg: %s" % mg
info['type'] = 'ring' info['type'] = 'ring'
if 'CURRENCY' in mg: if 'CURRENCY' in mg:
@ -314,9 +318,9 @@ class OnGame(HandHistoryConverter):
m = self.re_Action.finditer(hand.streets[street]) m = self.re_Action.finditer(hand.streets[street])
for action in m: for action in m:
#acts = action.groupdict() #acts = action.groupdict()
#log.debug("readaction: acts: %s" %acts) #print "readaction: acts: %s" %acts
if action.group('ATYPE') == ' raises': if action.group('ATYPE') == ' raises':
hand.addRaiseBy( street, action.group('PNAME'), action.group('BET') ) hand.addRaiseTo( street, action.group('PNAME'), action.group('BET') )
elif action.group('ATYPE') == ' calls': elif action.group('ATYPE') == ' calls':
hand.addCall( street, action.group('PNAME'), action.group('BET') ) hand.addCall( street, action.group('PNAME'), action.group('BET') )
elif action.group('ATYPE') == ' bets': elif action.group('ATYPE') == ' bets':

View File

@ -55,7 +55,9 @@ def fpdb_options():
help=_("Print some useful one liners")) help=_("Print some useful one liners"))
# The following options are used for SplitHandHistory.py # The following options are used for SplitHandHistory.py
parser.add_option("-f", "--file", dest="filename", metavar="FILE", default=None, parser.add_option("-f", "--file", dest="filename", metavar="FILE", default=None,
help=_("Input file in quiet mode")) help=_("Input file"))
parser.add_option("-D", "--directory", dest="directory", metavar="FILE", default=None,
help=_("Input directory"))
parser.add_option("-o", "--outpath", dest="outpath", metavar="FILE", default=None, parser.add_option("-o", "--outpath", dest="outpath", metavar="FILE", default=None,
help=_("Input out path in quiet mode")) help=_("Input out path in quiet mode"))
parser.add_option("-a", "--archive", action="store_true", dest="archive", default=False, parser.add_option("-a", "--archive", action="store_true", dest="archive", default=False,
@ -93,6 +95,7 @@ def site_alias(alias):
"iPoker" : "iPoker", "iPoker" : "iPoker",
"Winamax" : "Winamax", "Winamax" : "Winamax",
"Win2day" : "Win2day", "Win2day" : "Win2day",
"Everest" : "Everest",
"Stars" : "PokerStars", "Stars" : "PokerStars",
"FTP" : "Full Tilt Poker", "FTP" : "Full Tilt Poker",
"Party" : "PartyPoker", "Party" : "PartyPoker",

View File

@ -49,7 +49,8 @@ class PartyPoker(HandHistoryConverter):
currencies = {"\$": "USD", "$": "USD", u"\xe2\x82\xac": "EUR", u"\u20ac": "EUR", '': "T$"} currencies = {"\$": "USD", "$": "USD", u"\xe2\x82\xac": "EUR", u"\u20ac": "EUR", '': "T$"}
substitutions = { substitutions = {
'LEGAL_ISO' : "USD|EUR", # legal ISO currency codes 'LEGAL_ISO' : "USD|EUR", # legal ISO currency codes
'LS' : "\$|\u20AC|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8) 'LS' : u"\$|\u20ac|\xe2\x82\xac|", # Currency symbols - Euro(cp1252, utf-8)
'NUM' : u".,\d",
} }
# Static regexes # Static regexes
@ -81,7 +82,7 @@ class PartyPoker(HandHistoryConverter):
re_PlayerInfo = re.compile(u""" re_PlayerInfo = re.compile(u"""
Seat\s(?P<SEAT>\d+):\s Seat\s(?P<SEAT>\d+):\s
(?P<PNAME>.*)\s (?P<PNAME>.*)\s
\(\s*[%(LS)s]?(?P<CASH>[0-9,.]+)\s*(?:%(LEGAL_ISO)s|)\s*\) \(\s*[%(LS)s]?(?P<CASH>[%(NUM)s]+)\s*(?:%(LEGAL_ISO)s|)\s*\)
""" % substitutions, re.VERBOSE| re.UNICODE) """ % substitutions, re.VERBOSE| re.UNICODE)
re_HandInfo = re.compile(""" re_HandInfo = re.compile("""
@ -329,13 +330,19 @@ class PartyPoker(HandHistoryConverter):
# FIXME: there is no such property in Hand class # FIXME: there is no such property in Hand class
self.isSNG = True self.isSNG = True
if key == 'BUYIN': if key == 'BUYIN':
# FIXME: it's dirty hack T_T if hand.tourNo != None:
# code below assumes that tournament rake is equal to zero hand.buyin = 0
if info[key] == None: hand.fee = 0
hand.buyin = '$0+$0' hand.buyinCurrency = "FREE"
hand.isKO = False
if info[key].find("$")!=-1:
hand.buyinCurrency="USD"
elif info[key].find(u"")!=-1:
hand.buyinCurrency="EUR"
else: else:
cur = info[key][0] if info[key][0] not in '0123456789' else '' raise FpdbParseError(_("Failed to detect currency. HID: %s: '%s'" % (hand.handid, info[key])))
hand.buyin = info[key] + '+%s0' % cur info[key] = info[key].strip(u'$€')
hand.buyin = int(100*Decimal(info[key]))
if key == 'LEVEL': if key == 'LEVEL':
hand.level = info[key] hand.level = info[key]
if key == 'PLAY' and info['PLAY'] != 'Real': if key == 'PLAY' and info['PLAY'] != 'Real':

View File

@ -84,8 +84,8 @@ class PokerStars(HandHistoryConverter):
# Static regexes # Static regexes
re_GameInfo = re.compile(u""" re_GameInfo = re.compile(u"""
PokerStars\sGame\s\#(?P<HID>[0-9]+):\s+ PokerStars(\sHome)?\sGame\s\#(?P<HID>[0-9]+):\s+
(Tournament\s\# # open paren of tournament info (\{.*\}\s+)?(Tournament\s\# # open paren of tournament info
(?P<TOURNO>\d+),\s (?P<TOURNO>\d+),\s
# here's how I plan to use LS # here's how I plan to use LS
(?P<BUYIN>(?P<BIAMT>[%(LS)s\d\.]+)?\+?(?P<BIRAKE>[%(LS)s\d\.]+)?\+?(?P<BOUNTY>[%(LS)s\d\.]+)?\s?(?P<TOUR_ISO>%(LEGAL_ISO)s)?|Freeroll)\s+)? (?P<BUYIN>(?P<BIAMT>[%(LS)s\d\.]+)?\+?(?P<BIRAKE>[%(LS)s\d\.]+)?\+?(?P<BOUNTY>[%(LS)s\d\.]+)?\s?(?P<TOUR_ISO>%(LEGAL_ISO)s)?|Freeroll)\s+)?
@ -338,6 +338,13 @@ class PokerStars(HandHistoryConverter):
r"(\*\*\* 6th STREET \*\*\*(?P<SIXTH>.+(?=\*\*\* RIVER \*\*\*)|.+))?" r"(\*\*\* 6th STREET \*\*\*(?P<SIXTH>.+(?=\*\*\* RIVER \*\*\*)|.+))?"
r"(\*\*\* RIVER \*\*\*(?P<SEVENTH>.+))?", hand.handText,re.DOTALL) r"(\*\*\* RIVER \*\*\*(?P<SEVENTH>.+))?", hand.handText,re.DOTALL)
elif hand.gametype['base'] in ("draw"): elif hand.gametype['base'] in ("draw"):
if hand.gametype['category'] in ('27_1draw', 'fivedraw'):
# There is no marker between deal and draw in Stars single draw games
# This unfortunately affects the accounting.
m = re.search(r"(?P<PREDEAL>.+(?=\*\*\* DEALING HANDS \*\*\*)|.+)"
r"(\*\*\* DEALING HANDS \*\*\*(?P<DEAL>.+(?=(: stands pat on|: discards))|.+))?"
r"((: stands pat on|: discards)(?P<DRAWONE>.+))?", hand.handText,re.DOTALL)
else:
m = re.search(r"(?P<PREDEAL>.+(?=\*\*\* DEALING HANDS \*\*\*)|.+)" m = re.search(r"(?P<PREDEAL>.+(?=\*\*\* DEALING HANDS \*\*\*)|.+)"
r"(\*\*\* DEALING HANDS \*\*\*(?P<DEAL>.+(?=\*\*\* FIRST DRAW \*\*\*)|.+))?" r"(\*\*\* DEALING HANDS \*\*\*(?P<DEAL>.+(?=\*\*\* FIRST DRAW \*\*\*)|.+))?"
r"(\*\*\* FIRST DRAW \*\*\*(?P<DRAWONE>.+(?=\*\*\* SECOND DRAW \*\*\*)|.+))?" r"(\*\*\* FIRST DRAW \*\*\*(?P<DRAWONE>.+(?=\*\*\* SECOND DRAW \*\*\*)|.+))?"

View File

@ -109,9 +109,9 @@ class RushNotes(Aux_Window):
notepath = site_params_dict['site_path'] # this is a temporary hijack of site-path notepath = site_params_dict['site_path'] # this is a temporary hijack of site-path
self.heroid = self.hud.db_connection.get_player_id(self.config, sitename, heroname) self.heroid = self.hud.db_connection.get_player_id(self.config, sitename, heroname)
self.notefile = notepath + "/" + heroname + ".xml" self.notefile = notepath + "/" + heroname + ".xml"
self.rushtables = ("Mach 10", "Lightning", "Celerity", "Flash", "Zoom") self.rushtables = ("Mach 10", "Lightning", "Celerity", "Flash", "Zoom", "Apollo")
if not os.path.isfile(self.notefile): if not (os.path.isfile(self.notefile)):
self.active = False self.active = False
return return
else: else:
@ -130,9 +130,14 @@ class RushNotes(Aux_Window):
xmlnotefile.unlink xmlnotefile.unlink
# #
# Create a fresh queue file with skeleton XML # if queue file does not exist create a fresh queue file with skeleton XML
# This is possibly not totally safe, if multiple threads arrive
# here at the same time, but the consequences are not serious
# #
self.queuefile = self.notefile + ".queue" self.queuefile = self.notefile + ".queue"
if not (os.path.isfile(self.queuefile)):
queuedom = minidom.Document() queuedom = minidom.Document()
pld=queuedom.createElement("PLAYERDATA") pld=queuedom.createElement("PLAYERDATA")
@ -152,7 +157,7 @@ class RushNotes(Aux_Window):
if (debugmode): if (debugmode):
#initialise logfiles #initialise logfiles
debugfile=open("~Rushdebug.init", "w") debugfile=open("~Rushdebug.init", "a")
debugfile.write("conf="+str(config)+"\n") debugfile.write("conf="+str(config)+"\n")
debugfile.write("spdi="+str(site_params_dict)+"\n") debugfile.write("spdi="+str(site_params_dict)+"\n")
debugfile.write("para="+str(params)+"\n") debugfile.write("para="+str(params)+"\n")
@ -161,8 +166,6 @@ class RushNotes(Aux_Window):
debugfile.write("queu="+self.queuefile+"\n") debugfile.write("queu="+self.queuefile+"\n")
debugfile.close() debugfile.close()
open("~Rushdebug.data", "w").close()
def update_data(self, new_hand_id, db_connection): def update_data(self, new_hand_id, db_connection):
#this method called once for every hand processed #this method called once for every hand processed
@ -204,8 +207,12 @@ class RushNotes(Aux_Window):
vpip=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'vpip')[3] + " ") vpip=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'vpip')[3] + " ")
pfr=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'pfr')[3] + " ") pfr=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'pfr')[3] + " ")
three_B=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'three_B')[3] + " ") three_B=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'three_B')[3] + " ")
four_B=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'four_B')[3] + " ")
cbet=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'cbet')[3] + " ") cbet=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'cbet')[3] + " ")
fbbsteal=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'f_BB_steal')[3] + " ") fbbsteal=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'f_BB_steal')[3] + " ")
f_3bet=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'f_3bet')[3] + " ")
f_4bet=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'f_4bet')[3] + " ")
steal=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'steal')[3] + " ") steal=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'steal')[3] + " ")
ffreq1=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'ffreq1')[3] + " ") ffreq1=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'ffreq1')[3] + " ")
@ -213,7 +220,6 @@ class RushNotes(Aux_Window):
BBper100=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'BBper100')[3]) BBper100=str(Stats.do_stat(self.hud.stat_dict, player = playerid, stat = 'BBper100')[3])
if BBper100[6] == "-": BBper100=BBper100[0:6] + "(" + BBper100[7:] + ")" if BBper100[6] == "-": BBper100=BBper100[0:6] + "(" + BBper100[7:] + ")"
# #
# grab villain known starting hands # grab villain known starting hands
# only those where they VPIP'd, so limp in the BB will not be shown # only those where they VPIP'd, so limp in the BB will not be shown
@ -235,8 +241,8 @@ class RushNotes(Aux_Window):
c = db_connection.get_cursor() c = db_connection.get_cursor()
c.execute(("SELECT handId, position, startCards, street0Aggr, tableName " + c.execute(("SELECT handId, position, startCards, street0Aggr, tableName " +
"FROM hands, handsPlayers " + "FROM Hands, HandsPlayers " +
"WHERE handsplayers.handId = hands.id " + "WHERE HandsPlayers.handId = Hands.id " +
"AND street0VPI = 1 " + "AND street0VPI = 1 " +
"AND startCards > 0 " + "AND startCards > 0 " +
"AND playerId = %d " + "AND playerId = %d " +
@ -269,10 +275,13 @@ class RushNotes(Aux_Window):
# for later search/replace by Merge module # for later search/replace by Merge module
# #
xmlqueuedict[playername] = ("~fpdb~" + "\n" + xmlqueuedict[playername] = ("~fpdb~" + "\n" +
n + vpip + pfr + three_B + fbbsteal + "\n" + n + vpip + pfr + "\n" +
steal + cbet + ffreq1 + "\n" + steal + cbet + fbbsteal + ffreq1 + "\n" +
three_B + four_B + f_3bet + f_4bet + "\n" +
agg_freq + BBper100 + "\n" + agg_freq + BBper100 + "\n" +
PFcall+"\n"+PFaggr+"\n"+PFdefend +"\n" PFcall+"\n"+
PFaggr+"\n"+
PFdefend +"\n"+
"~ends~") "~ends~")
if (debugmode): if (debugmode):

View File

@ -30,6 +30,7 @@ The generated file can then replace heroname.xml (if all is well).
######################################################################## ########################################################################
#TODO gettextify
# Standard Library modules # Standard Library modules
import os import os
@ -104,8 +105,6 @@ if not os.path.isfile(sys.argv[1]):
if not os.path.isfile((sys.argv[1]+".queue")): if not os.path.isfile((sys.argv[1]+".queue")):
print "Nothing found to merge, quitting" print "Nothing found to merge, quitting"
print "Did the HUD not get started during the last session?"
print "Has the HUD been stopped and started without merging?"
quit() quit()
print "***************************************************************" print "***************************************************************"
@ -116,7 +115,7 @@ print "has stopped completely"
print "***************************************************************" print "***************************************************************"
print print
print "read from: ", sys.argv[1] print "read from: ", sys.argv[1]
print "merge with: ", sys.argv[1]+".queue" print "updated with: ", sys.argv[1]+".queue"
#read queue and turn into a dict #read queue and turn into a dict
queuedict = {} queuedict = {}
@ -171,7 +170,7 @@ mergednotes.close()
xmlnotefile.unlink xmlnotefile.unlink
print "Merged file has been written to: ", sys.argv[1]+".merged" print "written to: ", sys.argv[1]+".merged"
print "" print ""
print "number in queue: ", statqueue print "number in queue: ", statqueue
print "existing players updated: ", statupdated print "existing players updated: ", statupdated
@ -179,5 +178,7 @@ print "new players added: ", statadded
print "\n" print "\n"
print "Use a viewer to check the contents of the merge file." print "Use a viewer to check the contents of the merge file."
print "If you are happy, carry out the following steps:" print "If you are happy, carry out the following steps:"
print "1 Rename or delete the existing notes file (normally <heroname>.xml" print "1 Rename or delete the existing notes file (normally <heroname>.xml)"
print "2 Rename the .merged file to become the new notes file" print "2 Rename the .merged file to become the new notes file"
print "3 Delete the .queue file (it will be created at the next rush autoimport)"

View File

@ -15,11 +15,6 @@ Important info:
The Merge process can only be run when ftp client is shutdown The Merge process can only be run when ftp client is shutdown
- otherwise ftp overwrites the xml on exit. - otherwise ftp overwrites the xml on exit.
Restarting the autoimport will empty the notes"queue" so avoid restarting
autoimport until the previous notes "queue" has been merged. You will
lose all the queued notes, but these will be regenerated the next time
the villian is at your table, so it isn't the end of the world.
Existing ftp notes _SHOULD_ be preserved, but this isn't guaranteed, Existing ftp notes _SHOULD_ be preserved, but this isn't guaranteed,
you have been warned! you have been warned!
@ -27,7 +22,8 @@ Existing colour codings should be preserved,
this process does not change or set colourcodings. this process does not change or set colourcodings.
Copies of the live ftp notes file should be preserved everytime Copies of the live ftp notes file should be preserved everytime
RushNotesAux (i.e. the HUD is started) RushNotesAux (i.e. the HUD is started). If you play at different
rush tables, the backup will be created several times.
The AW is hard-coded with just the table names of Micro Rush Poker, The AW is hard-coded with just the table names of Micro Rush Poker,
and should ignore all other hands. and should ignore all other hands.
@ -35,7 +31,7 @@ The AW is hard-coded with just the table names of Micro Rush Poker,
What might not work? What might not work?
-------------------- --------------------
This isn't tested with Windows, and probably won't work, feedback welcome. This should work with windows sourcecode version, but will not work with the exe download.
Hasn't been tested for co-existance with other sites, feedback welcome. Hasn't been tested for co-existance with other sites, feedback welcome.
Whenever FTP change their notes file format, this will all break rather spectacularly, Whenever FTP change their notes file format, this will all break rather spectacularly,
you have been warned! you have been warned!
@ -77,7 +73,7 @@ execute the following:
./pyfpdb/RushNotesMerge.py "/home/foo/.wine/drive_c/Program Files/Full Tilt Poker/myname.xml" ./pyfpdb/RushNotesMerge.py "/home/foo/.wine/drive_c/Program Files/Full Tilt Poker/myname.xml"
A revised notes file (blah.merge) should automagically appear in the full tilt root directory. A revised notes file (blah.merge) should automagically appear in the full tilt root directory.
If you are happy with it, replace the existing (myname.xml file) If you are happy with it, replace the existing (myname.xml file) and delete the .queue file.
Since the updates aren't real time, it would be ok to play the rush Since the updates aren't real time, it would be ok to play the rush
@ -176,7 +172,7 @@ Process overview
---------------- ----------------
1/ The HUD process is started. 1/ The HUD process is started.
1.1/ when the first hand is received, h fresh holding file is created, and 1.1/ when the first hand is received, a queue file is created if not already there, and
a copy of the current live xml note file is created as a security backup. a copy of the current live xml note file is created as a security backup.
2/ For every hand played, the auxillary window is called 2/ For every hand played, the auxillary window is called
3/ Based upon the players in the hand, fpdb will be interrogated 3/ Based upon the players in the hand, fpdb will be interrogated
@ -191,4 +187,4 @@ existing notes, but this cannot be guaranteed.
they replace the existing note file. they replace the existing note file.
9/ Note that this process never updates the live notes file in situ, but 9/ Note that this process never updates the live notes file in situ, but
there is a risk that something goes wrong, and that existing notes could be destroyed. there is a risk that something goes wrong, and that existing notes could be destroyed.
10/ the queue file can be deleted to reduce re-processing next time.

View File

@ -346,6 +346,7 @@ class Sql:
siteHandNo BIGINT NOT NULL, siteHandNo BIGINT NOT NULL,
tourneyId INT UNSIGNED, tourneyId INT UNSIGNED,
gametypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id), gametypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
sessionId INT UNSIGNED,
startTime DATETIME NOT NULL, startTime DATETIME NOT NULL,
importTime DATETIME NOT NULL, importTime DATETIME NOT NULL,
seats TINYINT NOT NULL, seats TINYINT NOT NULL,
@ -383,6 +384,7 @@ class Sql:
siteHandNo BIGINT NOT NULL, siteHandNo BIGINT NOT NULL,
tourneyId INT, tourneyId INT,
gametypeId INT NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id), gametypeId INT NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
sessionId INT,
startTime timestamp without time zone NOT NULL, startTime timestamp without time zone NOT NULL,
importTime timestamp without time zone NOT NULL, importTime timestamp without time zone NOT NULL,
seats SMALLINT NOT NULL, seats SMALLINT NOT NULL,
@ -419,6 +421,7 @@ class Sql:
siteHandNo INT NOT NULL, siteHandNo INT NOT NULL,
tourneyId INT, tourneyId INT,
gametypeId INT NOT NULL, gametypeId INT NOT NULL,
sessionId INT,
startTime REAL NOT NULL, startTime REAL NOT NULL,
importTime REAL NOT NULL, importTime REAL NOT NULL,
seats INT NOT NULL, seats INT NOT NULL,
@ -639,9 +642,16 @@ class Sql:
street0_3BChance BOOLEAN, street0_3BChance BOOLEAN,
street0_3BDone BOOLEAN, street0_3BDone BOOLEAN,
street0_4BChance BOOLEAN, street0_4BChance BOOLEAN,
street0_C4BChance BOOLEAN,
street0_4BDone BOOLEAN, street0_4BDone BOOLEAN,
other3BStreet0 BOOLEAN, street0_C4BDone BOOLEAN,
other4BStreet0 BOOLEAN, street0_FoldTo3BChance BOOLEAN,
street0_FoldTo3BDone BOOLEAN,
street0_FoldTo4BChance BOOLEAN,
street0_FoldTo4BDone BOOLEAN,
street0_SqueezeChance BOOLEAN,
street0_SqueezeDone BOOLEAN,
success_Steal BOOLEAN,
street1Seen BOOLEAN, street1Seen BOOLEAN,
street2Seen BOOLEAN, street2Seen BOOLEAN,
@ -757,8 +767,15 @@ class Sql:
street0_3BDone BOOLEAN, street0_3BDone BOOLEAN,
street0_4BChance BOOLEAN, street0_4BChance BOOLEAN,
street0_4BDone BOOLEAN, street0_4BDone BOOLEAN,
other3BStreet0 BOOLEAN, street0_C4BChance BOOLEAN,
other4BStreet0 BOOLEAN, street0_C4BDone BOOLEAN,
street0_FoldTo3BChance BOOLEAN,
street0_FoldTo3BDone BOOLEAN,
street0_FoldTo4BChance BOOLEAN,
street0_FoldTo4BDone BOOLEAN,
street0_SqueezeChance BOOLEAN,
street0_SqueezeDone BOOLEAN,
success_Steal BOOLEAN,
street1Seen BOOLEAN, street1Seen BOOLEAN,
street2Seen BOOLEAN, street2Seen BOOLEAN,
@ -873,8 +890,15 @@ class Sql:
street0_3BDone INT, street0_3BDone INT,
street0_4BChance INT, street0_4BChance INT,
street0_4BDone INT, street0_4BDone INT,
other3BStreet0 INT, street0_C4BChance INT,
other4BStreet0 INT, street0_C4BDone INT,
street0_FoldTo3BChance INT,
street0_FoldTo3BDone INT,
street0_FoldTo4BChance INT,
street0_FoldTo4BDone INT,
street0_SqueezeChance INT,
street0_SqueezeDone INT,
success_Steal INT,
street1Seen INT, street1Seen INT,
street2Seen INT, street2Seen INT,
@ -1007,7 +1031,8 @@ class Sql:
if db_server == 'mysql': if db_server == 'mysql':
self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions ( self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions (
id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id), id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
handsPlayerId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handsPlayerId) REFERENCES HandsPlayers(id), handId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handId) REFERENCES Hands(id),
playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
street SMALLINT NOT NULL, street SMALLINT NOT NULL,
actionNo SMALLINT NOT NULL, actionNo SMALLINT NOT NULL,
streetActionNo SMALLINT NOT NULL, streetActionNo SMALLINT NOT NULL,
@ -1022,7 +1047,8 @@ class Sql:
elif db_server == 'postgresql': elif db_server == 'postgresql':
self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions ( self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions (
id BIGSERIAL, PRIMARY KEY (id), id BIGSERIAL, PRIMARY KEY (id),
handsPlayerId BIGINT, FOREIGN KEY (handsPlayerId) REFERENCES HandsPlayers(id), handId BIGINT NOT NULL, FOREIGN KEY (handId) REFERENCES Hands(id),
playerId INT NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
street SMALLINT, street SMALLINT,
actionNo SMALLINT, actionNo SMALLINT,
streetActionNo SMALLINT, streetActionNo SMALLINT,
@ -1036,7 +1062,8 @@ class Sql:
elif db_server == 'sqlite': elif db_server == 'sqlite':
self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions ( self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
handsPlayerId BIGINT, handId INT NOT NULL,
playerId INT NOT NULL,
street SMALLINT, street SMALLINT,
actionNo SMALLINT, actionNo SMALLINT,
streetActionNo SMALLINT, streetActionNo SMALLINT,
@ -1046,9 +1073,7 @@ class Sql:
amountCalled INT, amountCalled INT,
numDiscarded SMALLINT, numDiscarded SMALLINT,
cardsDiscarded TEXT, cardsDiscarded TEXT,
allIn BOOLEAN, allIn BOOLEAN
FOREIGN KEY (handsPlayerId) REFERENCES HandsPlayers(id),
FOREIGN KEY (actionId) REFERENCES Actions(id) ON DELETE CASCADE
)""" )"""
@ -1079,8 +1104,16 @@ class Sql:
street0_3BDone INT, street0_3BDone INT,
street0_4BChance INT, street0_4BChance INT,
street0_4BDone INT, street0_4BDone INT,
other3BStreet0 INT, street0_C4BChance INT,
other4BStreet0 INT, street0_C4BDone INT,
street0_FoldTo3BChance INT,
street0_FoldTo3BDone INT,
street0_FoldTo4BChance INT,
street0_FoldTo4BDone INT,
street0_SqueezeChance INT,
street0_SqueezeDone INT,
success_Steal INT,
street1Seen INT, street1Seen INT,
street2Seen INT, street2Seen INT,
@ -1180,8 +1213,15 @@ class Sql:
street0_3BDone INT, street0_3BDone INT,
street0_4BChance INT, street0_4BChance INT,
street0_4BDone INT, street0_4BDone INT,
other3BStreet0 INT, street0_C4BChance INT,
other4BStreet0 INT, street0_C4BDone INT,
street0_FoldTo3BChance INT,
street0_FoldTo3BDone INT,
street0_FoldTo4BChance INT,
street0_FoldTo4BDone INT,
street0_SqueezeChance INT,
street0_SqueezeDone INT,
success_Steal INT,
street1Seen INT, street1Seen INT,
street2Seen INT, street2Seen INT,
@ -1279,8 +1319,15 @@ class Sql:
street0_3BDone INT, street0_3BDone INT,
street0_4BChance INT, street0_4BChance INT,
street0_4BDone INT, street0_4BDone INT,
other3BStreet0 INT, street0_C4BChance INT,
other4BStreet0 INT, street0_C4BDone INT,
street0_FoldTo3BChance INT,
street0_FoldTo3BDone INT,
street0_FoldTo4BChance INT,
street0_FoldTo4BDone INT,
street0_SqueezeChance INT,
street0_SqueezeDone INT,
success_Steal INT,
street1Seen INT, street1Seen INT,
street2Seen INT, street2Seen INT,
@ -1367,8 +1414,8 @@ class Sql:
sessionEnd DATETIME NOT NULL, sessionEnd DATETIME NOT NULL,
ringHDs INT NOT NULL, ringHDs INT NOT NULL,
tourHDs INT NOT NULL, tourHDs INT NOT NULL,
totalProfit INT NOT NULL, ringProfitUSD INT NOT NULL,
bigBets FLOAT UNSIGNED NOT NULL) ringProfitEUR INT NOT NULL)
ENGINE=INNODB""" ENGINE=INNODB"""
elif db_server == 'postgresql': elif db_server == 'postgresql':
@ -1378,8 +1425,8 @@ class Sql:
sessionEnd REAL NOT NULL, sessionEnd REAL NOT NULL,
ringHDs INT NOT NULL, ringHDs INT NOT NULL,
tourHDs INT NOT NULL, tourHDs INT NOT NULL,
totalProfit INT NOT NULL, ringProfitUSD INT NOT NULL,
bigBets FLOAT NOT NULL) ringProfitEUR INT NOT NULL)
""" """
elif db_server == 'sqlite': elif db_server == 'sqlite':
self.query['createSessionsCacheTable'] = """CREATE TABLE SessionsCache ( self.query['createSessionsCacheTable'] = """CREATE TABLE SessionsCache (
@ -1388,8 +1435,8 @@ class Sql:
sessionEnd REAL NOT NULL, sessionEnd REAL NOT NULL,
ringHDs INT NOT NULL, ringHDs INT NOT NULL,
tourHDs INT NOT NULL, tourHDs INT NOT NULL,
totalProfit INT NOT NULL, ringProfitUSD INT NOT NULL,
bigBets REAL UNSIGNED NOT NULL) ringProfitEUR INT NOT NULL)
""" """
if db_server == 'mysql': if db_server == 'mysql':
@ -1488,6 +1535,17 @@ class Sql:
sum(hc.street0Aggr) AS pfr, sum(hc.street0Aggr) AS pfr,
sum(hc.street0_3BChance) AS TB_opp_0, sum(hc.street0_3BChance) AS TB_opp_0,
sum(hc.street0_3BDone) AS TB_0, sum(hc.street0_3BDone) AS TB_0,
sum(hc.street0_4BChance) AS FB_opp_0,
sum(hc.street0_4BDone) AS FB_0,
sum(hc.street0_C4BChance) AS CFB_opp_0,
sum(hc.street0_C4BDone) AS CFB_0,
sum(hc.street0_FoldTo3BChance) AS F3B_opp_0,
sum(hc.street0_FoldTo3BDone) AS F3B_0,
sum(hc.street0_FoldTo4BChance) AS F4B_opp_0,
sum(hc.street0_FoldTo4BDone) AS F4B_0,
sum(hc.street0_SqueezeChance) AS SQZ_opp_0,
sum(hc.street0_SqueezeDone) AS SQZ_0,
sum(hc.success_Steal) AS SUC_ST,
sum(hc.street1Seen) AS saw_f, sum(hc.street1Seen) AS saw_f,
sum(hc.street1Seen) AS saw_1, sum(hc.street1Seen) AS saw_1,
sum(hc.street2Seen) AS saw_2, sum(hc.street2Seen) AS saw_2,
@ -1599,6 +1657,17 @@ class Sql:
sum(hc.street0Aggr) AS pfr, sum(hc.street0Aggr) AS pfr,
sum(hc.street0_3BChance) AS TB_opp_0, sum(hc.street0_3BChance) AS TB_opp_0,
sum(hc.street0_3BDone) AS TB_0, sum(hc.street0_3BDone) AS TB_0,
sum(hc.street0_4BChance) AS FB_opp_0,
sum(hc.street0_4BDone) AS FB_0,
sum(hc.street0_C4BChance) AS CFB_opp_0,
sum(hc.street0_C4BDone) AS CFB_0,
sum(hc.street0_FoldTo3BChance) AS F3B_opp_0,
sum(hc.street0_FoldTo3BDone) AS F3B_0,
sum(hc.street0_FoldTo4BChance) AS F4B_opp_0,
sum(hc.street0_FoldTo4BDone) AS F4B_0,
sum(hc.street0_SqueezeChance) AS SQZ_opp_0,
sum(hc.street0_SqueezeDone) AS SQZ_0,
sum(hc.success_Steal) AS SUC_ST,
sum(hc.street1Seen) AS saw_f, sum(hc.street1Seen) AS saw_f,
sum(hc.street1Seen) AS saw_1, sum(hc.street1Seen) AS saw_1,
sum(hc.street2Seen) AS saw_2, sum(hc.street2Seen) AS saw_2,
@ -1727,6 +1796,17 @@ class Sql:
cast(hp2.street0Aggr as <signed>integer) AS pfr, cast(hp2.street0Aggr as <signed>integer) AS pfr,
cast(hp2.street0_3BChance as <signed>integer) AS TB_opp_0, cast(hp2.street0_3BChance as <signed>integer) AS TB_opp_0,
cast(hp2.street0_3BDone as <signed>integer) AS TB_0, cast(hp2.street0_3BDone as <signed>integer) AS TB_0,
cast(hp2.street0_4BChance as <signed>integer) AS FB_opp_0,
cast(hp2.street0_4BDone as <signed>integer) AS FB_0,
cast(hp2.street0_C4BChance as <signed>integer) AS CFB_opp_0,
cast(hp2.street0_C4BDone as <signed>integer) AS CFB_0,
cast(hp2.street0_FoldTo3BChance as <signed>integer) AS F3B_opp_0,
cast(hp2.street0_FoldTo3BDone as <signed>integer) AS F3B_0,
cast(hp2.street0_FoldTo4BChance as <signed>integer) AS F4B_opp_0,
cast(hp2.street0_FoldTo4BDone as <signed>integer) AS F4B_0,
cast(hp2.street0_SqueezeChance as <signed>integer) AS SQZ_opp_0,
cast(hp2.street0_SqueezeDone as <signed>integer) AS SQZ_0,
cast(hp2.success_Steal as <signed>integer) AS SUC_ST,
cast(hp2.street1Seen as <signed>integer) AS saw_f, cast(hp2.street1Seen as <signed>integer) AS saw_f,
cast(hp2.street1Seen as <signed>integer) AS saw_1, cast(hp2.street1Seen as <signed>integer) AS saw_1,
cast(hp2.street2Seen as <signed>integer) AS saw_2, cast(hp2.street2Seen as <signed>integer) AS saw_2,
@ -1831,6 +1911,17 @@ class Sql:
cast(hp2.street0Aggr as <signed>integer) AS pfr, cast(hp2.street0Aggr as <signed>integer) AS pfr,
cast(hp2.street0_3BChance as <signed>integer) AS TB_opp_0, cast(hp2.street0_3BChance as <signed>integer) AS TB_opp_0,
cast(hp2.street0_3BDone as <signed>integer) AS TB_0, cast(hp2.street0_3BDone as <signed>integer) AS TB_0,
cast(hp2.street0_4BChance as <signed>integer) AS FB_opp_0,
cast(hp2.street0_4BDone as <signed>integer) AS FB_0,
cast(hp2.street0_C4BChance as <signed>integer) AS CFB_opp_0,
cast(hp2.street0_C4BDone as <signed>integer) AS CFB_0,
cast(hp2.street0_FoldTo3BChance as <signed>integer) AS F3B_opp_0,
cast(hp2.street0_FoldTo3BDone as <signed>integer) AS F3B_0,
cast(hp2.street0_FoldTo4BChance as <signed>integer) AS F4B_opp_0,
cast(hp2.street0_FoldTo4BDone as <signed>integer) AS F4B_0,
cast(hp2.street0_SqueezeChance as <signed>integer) AS SQZ_opp_0,
cast(hp2.street0_SqueezeDone as <signed>integer) AS SQZ_0,
cast(hp2.success_Steal as <signed>integer) AS SUC_ST,
cast(hp2.street1Seen as <signed>integer) AS saw_f, cast(hp2.street1Seen as <signed>integer) AS saw_f,
cast(hp2.street1Seen as <signed>integer) AS saw_1, cast(hp2.street1Seen as <signed>integer) AS saw_1,
cast(hp2.street2Seen as <signed>integer) AS saw_2, cast(hp2.street2Seen as <signed>integer) AS saw_2,
@ -1936,6 +2027,17 @@ class Sql:
cast(hp2.street0Aggr as <signed>integer) AS pfr, cast(hp2.street0Aggr as <signed>integer) AS pfr,
cast(hp2.street0_3BChance as <signed>integer) AS TB_opp_0, cast(hp2.street0_3BChance as <signed>integer) AS TB_opp_0,
cast(hp2.street0_3BDone as <signed>integer) AS TB_0, cast(hp2.street0_3BDone as <signed>integer) AS TB_0,
cast(hp2.street0_4BChance as <signed>integer) AS FB_opp_0,
cast(hp2.street0_4BDone as <signed>integer) AS FB_0,
cast(hp2.street0_C4BChance as <signed>integer) AS CFB_opp_0,
cast(hp2.street0_C4BDone as <signed>integer) AS CFB_0,
cast(hp2.street0_FoldTo3BChance as <signed>integer) AS F3B_opp_0,
cast(hp2.street0_FoldTo3BDone as <signed>integer) AS F3B_0,
cast(hp2.street0_FoldTo4BChance as <signed>integer) AS F4B_opp_0,
cast(hp2.street0_FoldTo4BDone as <signed>integer) AS F4B_0,
cast(hp2.street0_SqueezeChance as <signed>integer) AS SQZ_opp_0,
cast(hp2.street0_SqueezeDone as <signed>integer) AS SQZ_0,
cast(hp2.success_Steal as <signed>integer) AS SUC_ST,
cast(hp2.street1Seen as <signed>integer) AS saw_f, cast(hp2.street1Seen as <signed>integer) AS saw_f,
cast(hp2.street1Seen as <signed>integer) AS saw_1, cast(hp2.street1Seen as <signed>integer) AS saw_1,
cast(hp2.street2Seen as <signed>integer) AS saw_2, cast(hp2.street2Seen as <signed>integer) AS saw_2,
@ -2170,7 +2272,7 @@ class Sql:
from Gametypes gt from Gametypes gt
WHERE type = 'ring' WHERE type = 'ring'
order by type, limitType DESC, bb_or_buyin DESC""" order by type, limitType DESC, bb_or_buyin DESC"""
#FIXME: Some stats not added to DetailedStats
if db_server == 'mysql': if db_server == 'mysql':
self.query['playerDetailedStats'] = """ self.query['playerDetailedStats'] = """
select <hgametypeId> AS hgametypeid select <hgametypeId> AS hgametypeid
@ -2189,6 +2291,16 @@ class Sql:
,case when sum(cast(hp.street0_3Bchance as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.street0_3Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_3Bdone as <signed>integer))/sum(cast(hp.street0_3Bchance as <signed>integer)) else 100.0*sum(cast(hp.street0_3Bdone as <signed>integer))/sum(cast(hp.street0_3Bchance as <signed>integer))
end AS pf3 end AS pf3
,case when sum(cast(hp.street0_4Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_4Bdone as <signed>integer))/sum(cast(hp.street0_4Bchance as <signed>integer))
end AS pf4
,case when sum(cast(hp.street0_FoldTo3Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_FoldTo3Bdone as <signed>integer))/sum(cast(hp.street0_FoldTo3Bchance as <signed>integer))
end AS pff3
,case when sum(cast(hp.street0_FoldTo4Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_FoldTo4Bdone as <signed>integer))/sum(cast(hp.street0_FoldTo4Bchance as <signed>integer))
end AS pff4
,case when sum(cast(hp.raiseFirstInChance as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.raiseFirstInChance as <signed>integer)) = 0 then -999
else 100.0 * sum(cast(hp.raisedFirstIn as <signed>integer)) / else 100.0 * sum(cast(hp.raisedFirstIn as <signed>integer)) /
sum(cast(hp.raiseFirstInChance as <signed>integer)) sum(cast(hp.raiseFirstInChance as <signed>integer))
@ -2216,6 +2328,18 @@ class Sql:
end end
) )
end AS steals end AS steals
,case when sum(cast(hp.success_Steal as <signed>integer)) = 0 then -999
else 100.0 *
sum(cast(hp.success_Steal as <signed>integer))
/
sum(case hp.position
when 'S' then cast(hp.raisedFirstIn as <signed>integer)
when '0' then cast(hp.raisedFirstIn as <signed>integer)
when '1' then cast(hp.raisedFirstIn as <signed>integer)
else 0
end
)
end AS suc_steal
,100.0*sum(cast(hp.street1Seen as <signed>integer))/count(1) AS saw_f ,100.0*sum(cast(hp.street1Seen as <signed>integer))/count(1) AS saw_f
,100.0*sum(cast(hp.sawShowdown as <signed>integer))/count(1) AS sawsd ,100.0*sum(cast(hp.sawShowdown as <signed>integer))/count(1) AS sawsd
,case when sum(cast(hp.street1Seen as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.street1Seen as <signed>integer)) = 0 then -999
@ -2239,7 +2363,7 @@ class Sql:
end AS pofafq end AS pofafq
,case when sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)) = 0 then -999
else (sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer))) else (sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
/(sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer))) /(0.0+sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)))
end AS aggfac end AS aggfac
,100.0*(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer))) ,100.0*(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
/ ((sum(cast(hp.foldToOtherRaisedStreet1 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet2 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet3 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet4 as <signed>integer))) + / ((sum(cast(hp.foldToOtherRaisedStreet1 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet2 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet3 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet4 as <signed>integer))) +
@ -2310,6 +2434,15 @@ class Sql:
,case when sum(cast(hp.street0_3Bchance as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.street0_3Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_3Bdone as <signed>integer))/sum(cast(hp.street0_3Bchance as <signed>integer)) else 100.0*sum(cast(hp.street0_3Bdone as <signed>integer))/sum(cast(hp.street0_3Bchance as <signed>integer))
end AS pf3 end AS pf3
,case when sum(cast(hp.street0_4Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_4Bdone as <signed>integer))/sum(cast(hp.street0_4Bchance as <signed>integer))
end AS pf4
,case when sum(cast(hp.street0_FoldTo3Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_FoldTo3Bdone as <signed>integer))/sum(cast(hp.street0_FoldTo3Bchance as <signed>integer))
end AS pff3
,case when sum(cast(hp.street0_FoldTo4Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_FoldTo4Bdone as <signed>integer))/sum(cast(hp.street0_FoldTo4Bchance as <signed>integer))
end AS pff4
,case when sum(cast(hp.raiseFirstInChance as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.raiseFirstInChance as <signed>integer)) = 0 then -999
else 100.0 * sum(cast(hp.raisedFirstIn as <signed>integer)) / else 100.0 * sum(cast(hp.raisedFirstIn as <signed>integer)) /
sum(cast(hp.raiseFirstInChance as <signed>integer)) sum(cast(hp.raiseFirstInChance as <signed>integer))
@ -2337,6 +2470,18 @@ class Sql:
end end
) )
end AS steals end AS steals
,case when sum(cast(hp.success_Steal as <signed>integer)) = 0 then -999
else 100.0 *
sum(cast(hp.success_Steal as <signed>integer))
/
sum(case hp.position
when 'S' then cast(hp.raisedFirstIn as <signed>integer)
when '0' then cast(hp.raisedFirstIn as <signed>integer)
when '1' then cast(hp.raisedFirstIn as <signed>integer)
else 0
end
)
end AS suc_steal
,100.0*sum(cast(hp.street1Seen as <signed>integer))/count(1) AS saw_f ,100.0*sum(cast(hp.street1Seen as <signed>integer))/count(1) AS saw_f
,100.0*sum(cast(hp.sawShowdown as <signed>integer))/count(1) AS sawsd ,100.0*sum(cast(hp.sawShowdown as <signed>integer))/count(1) AS sawsd
,case when sum(cast(hp.street1Seen as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.street1Seen as <signed>integer)) = 0 then -999
@ -2360,7 +2505,7 @@ class Sql:
end AS pofafq end AS pofafq
,case when sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)) = 0 then -999
else (sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer))) else (sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
/(sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer))) /(0.0+sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)))
end AS aggfac end AS aggfac
,100.0*(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer))) ,100.0*(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
/ ((sum(cast(hp.foldToOtherRaisedStreet1 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet2 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet3 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet4 as <signed>integer))) + / ((sum(cast(hp.foldToOtherRaisedStreet1 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet2 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet3 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet4 as <signed>integer))) +
@ -2432,6 +2577,15 @@ class Sql:
,case when sum(cast(hp.street0_3Bchance as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.street0_3Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_3Bdone as <signed>integer))/sum(cast(hp.street0_3Bchance as <signed>integer)) else 100.0*sum(cast(hp.street0_3Bdone as <signed>integer))/sum(cast(hp.street0_3Bchance as <signed>integer))
end AS pf3 end AS pf3
,case when sum(cast(hp.street0_4Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_4Bdone as <signed>integer))/sum(cast(hp.street0_4Bchance as <signed>integer))
end AS pf4
,case when sum(cast(hp.street0_FoldTo3Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_FoldTo3Bdone as <signed>integer))/sum(cast(hp.street0_FoldTo3Bchance as <signed>integer))
end AS pff3
,case when sum(cast(hp.street0_FoldTo4Bchance as <signed>integer)) = 0 then -999
else 100.0*sum(cast(hp.street0_FoldTo4Bdone as <signed>integer))/sum(cast(hp.street0_FoldTo4Bchance as <signed>integer))
end AS pff4
,case when sum(cast(hp.raiseFirstInChance as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.raiseFirstInChance as <signed>integer)) = 0 then -999
else 100.0 * sum(cast(hp.raisedFirstIn as <signed>integer)) / else 100.0 * sum(cast(hp.raisedFirstIn as <signed>integer)) /
sum(cast(hp.raiseFirstInChance as <signed>integer)) sum(cast(hp.raiseFirstInChance as <signed>integer))
@ -2459,6 +2613,18 @@ class Sql:
end end
) )
end AS steals end AS steals
,case when sum(cast(hp.success_Steal as <signed>integer)) = 0 then -999
else 100.0 *
sum(cast(hp.success_Steal as <signed>integer))
/
sum(case hp.position
when 'S' then cast(hp.raisedFirstIn as <signed>integer)
when '0' then cast(hp.raisedFirstIn as <signed>integer)
when '1' then cast(hp.raisedFirstIn as <signed>integer)
else 0
end
)
end AS suc_steal
,100.0*sum(cast(hp.street1Seen as <signed>integer))/count(1) AS saw_f ,100.0*sum(cast(hp.street1Seen as <signed>integer))/count(1) AS saw_f
,100.0*sum(cast(hp.sawShowdown as <signed>integer))/count(1) AS sawsd ,100.0*sum(cast(hp.sawShowdown as <signed>integer))/count(1) AS sawsd
,case when sum(cast(hp.street1Seen as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.street1Seen as <signed>integer)) = 0 then -999
@ -2482,7 +2648,7 @@ class Sql:
end AS pofafq end AS pofafq
,case when sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)) = 0 then -999 ,case when sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)) = 0 then -999
else (sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer))) else (sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
/(sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer))) /(0.0+sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)))
end AS aggfac end AS aggfac
,100.0*(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer))) ,100.0*(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
/ ((sum(cast(hp.foldToOtherRaisedStreet1 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet2 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet3 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet4 as <signed>integer))) + / ((sum(cast(hp.foldToOtherRaisedStreet1 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet2 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet3 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet4 as <signed>integer))) +
@ -2537,6 +2703,7 @@ class Sql:
,s.name ,s.name
""" """
#FIXME: 3/4bet and foldTo don't added four tournaments yet
if db_server == 'mysql': if db_server == 'mysql':
self.query['tourneyPlayerDetailedStats'] = """ self.query['tourneyPlayerDetailedStats'] = """
select s.name AS siteName select s.name AS siteName
@ -2660,6 +2827,9 @@ class Sql:
,stats.vpip ,stats.vpip
,stats.pfr ,stats.pfr
,stats.pf3 ,stats.pf3
,stats.pf4
,stats.pff3
,stats.pff4
,stats.steals ,stats.steals
,stats.saw_f ,stats.saw_f
,stats.sawsd ,stats.sawsd
@ -2690,6 +2860,15 @@ class Sql:
,case when sum(street0_3Bchance) = 0 then '0' ,case when sum(street0_3Bchance) = 0 then '0'
else format(100.0*sum(street0_3Bdone)/sum(street0_3Bchance),1) else format(100.0*sum(street0_3Bdone)/sum(street0_3Bchance),1)
end AS pf3 end AS pf3
,case when sum(street0_4Bchance) = 0 then '0'
else format(100.0*sum(street0_4Bdone)/sum(street0_4Bchance),1)
end AS pf4
,case when sum(street0_FoldTo3Bchance) = 0 then '0'
else format(100.0*sum(street0_FoldTo3Bdone)/sum(street0_FoldTo3Bchance),1)
end AS pff3
,case when sum(street0_FoldTo4Bchance) = 0 then '0'
else format(100.0*sum(street0_FoldTo4Bdone)/sum(street0_FoldTo4Bchance),1)
end AS pff4
,case when sum(raiseFirstInChance) = 0 then '-' ,case when sum(raiseFirstInChance) = 0 then '-'
else format(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),1) else format(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),1)
end AS steals end AS steals
@ -2766,6 +2945,9 @@ class Sql:
,stats.vpip ,stats.vpip
,stats.pfr ,stats.pfr
,stats.pf3 ,stats.pf3
,stats.pf4
,stats.pff3
,stats.pff4
,stats.steals ,stats.steals
,stats.saw_f ,stats.saw_f
,stats.sawsd ,stats.sawsd
@ -2880,6 +3062,9 @@ class Sql:
,stats.vpip ,stats.vpip
,stats.pfr ,stats.pfr
,stats.pf3 ,stats.pf3
,stats.pf4
,stats.pff3
,stats.pff4
,stats.steals ,stats.steals
,stats.saw_f ,stats.saw_f
,stats.sawsd ,stats.sawsd
@ -2918,6 +3103,15 @@ class Sql:
,case when sum(street0_3Bchance) = 0 then '0' ,case when sum(street0_3Bchance) = 0 then '0'
else format(100.0*sum(street0_3Bdone)/sum(street0_3Bchance),1) else format(100.0*sum(street0_3Bdone)/sum(street0_3Bchance),1)
end AS pf3 end AS pf3
,case when sum(street0_4Bchance) = 0 then '0'
else format(100.0*sum(street0_4Bdone)/sum(street0_4Bchance),1)
end AS pf4
,case when sum(street0_FoldTo3Bchance) = 0 then '0'
else format(100.0*sum(street0_FoldTo3Bdone)/sum(street0_FoldTo3Bchance),1)
end AS pff3
,case when sum(street0_FoldTo4Bchance) = 0 then '0'
else format(100.0*sum(street0_FoldTo4Bdone)/sum(street0_FoldTo4Bchance),1)
end AS pff4
,case when sum(raiseFirstInChance) = 0 then '-' ,case when sum(raiseFirstInChance) = 0 then '-'
else format(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),1) else format(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),1)
end AS steals end AS steals
@ -3016,6 +3210,9 @@ class Sql:
,stats.vpip ,stats.vpip
,stats.pfr ,stats.pfr
,stats.pf3 ,stats.pf3
,stats.pf4
,stats.pff3
,stats.pff4
,stats.steals ,stats.steals
,stats.saw_f ,stats.saw_f
,stats.sawsd ,stats.sawsd
@ -3054,6 +3251,15 @@ class Sql:
,case when sum(street0_3Bchance) = 0 then '0' ,case when sum(street0_3Bchance) = 0 then '0'
else to_char(100.0*sum(street0_3Bdone)/sum(street0_3Bchance),'90D0') else to_char(100.0*sum(street0_3Bdone)/sum(street0_3Bchance),'90D0')
end AS pf3 end AS pf3
,case when sum(street0_4Bchance) = 0 then '0'
else to_char(100.0*sum(street0_4Bdone)/sum(street0_4Bchance),'90D0')
end AS pf4
,case when sum(street0_FoldTo3Bchance) = 0 then '0'
else to_char(100.0*sum(street0_FoldTo3Bdone)/sum(street0_FoldTo3Bchance),'90D0')
end AS pff3
,case when sum(street0_FoldTo4Bchance) = 0 then '0'
else to_char(100.0*sum(street0_FoldTo4Bdone)/sum(street0_FoldTo4Bchance),'90D0')
end AS pff4
,case when sum(raiseFirstInChance) = 0 then '-' ,case when sum(raiseFirstInChance) = 0 then '-'
else to_char(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),'90D0') else to_char(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),'90D0')
end AS steals end AS steals
@ -3279,8 +3485,15 @@ class Sql:
,street0_3BDone ,street0_3BDone
,street0_4BChance ,street0_4BChance
,street0_4BDone ,street0_4BDone
,other3BStreet0 ,street0_C4BChance
,other4BStreet0 ,street0_C4BDone
,street0_FoldTo3BChance
,street0_FoldTo3BDone
,street0_FoldTo4BChance
,street0_FoldTo4BDone
,street0_SqueezeChance
,street0_SqueezeDone
,success_Steal
,street1Seen ,street1Seen
,street2Seen ,street2Seen
,street3Seen ,street3Seen
@ -3378,8 +3591,15 @@ class Sql:
,sum(street0_3BDone) ,sum(street0_3BDone)
,sum(street0_4BChance) ,sum(street0_4BChance)
,sum(street0_4BDone) ,sum(street0_4BDone)
,sum(other3BStreet0) ,sum(street0_C4BChance)
,sum(other4BStreet0) ,sum(street0_C4BDone)
,sum(street0_FoldTo3BChance)
,sum(street0_FoldTo3BDone)
,sum(street0_FoldTo4BChance)
,sum(street0_FoldTo4BDone)
,sum(street0_SqueezeChance)
,sum(street0_SqueezeDone)
,sum(success_Steal)
,sum(street1Seen) ,sum(street1Seen)
,sum(street2Seen) ,sum(street2Seen)
,sum(street3Seen) ,sum(street3Seen)
@ -3477,8 +3697,15 @@ class Sql:
,street0_3BDone ,street0_3BDone
,street0_4BChance ,street0_4BChance
,street0_4BDone ,street0_4BDone
,other3BStreet0 ,street0_C4BChance
,other4BStreet0 ,street0_C4BDone
,street0_FoldTo3BChance
,street0_FoldTo3BDone
,street0_FoldTo4BChance
,street0_FoldTo4BDone
,street0_SqueezeChance
,street0_SqueezeDone
,success_Steal
,street1Seen ,street1Seen
,street2Seen ,street2Seen
,street3Seen ,street3Seen
@ -3576,8 +3803,15 @@ class Sql:
,sum(CAST(street0_3BDone as integer)) ,sum(CAST(street0_3BDone as integer))
,sum(CAST(street0_4BChance as integer)) ,sum(CAST(street0_4BChance as integer))
,sum(CAST(street0_4BDone as integer)) ,sum(CAST(street0_4BDone as integer))
,sum(CAST(other3BStreet0 as integer)) ,sum(CAST(street0_C4BChance as integer))
,sum(CAST(other4BStreet0 as integer)) ,sum(CAST(street0_C4BDone as integer))
,sum(CAST(street0_FoldTo3BChance as integer))
,sum(CAST(street0_FoldTo3BDone as integer))
,sum(CAST(street0_FoldTo4BChance as integer))
,sum(CAST(street0_FoldTo4BDone as integer))
,sum(CAST(street0_SqueezeChance as integer))
,sum(CAST(street0_SqueezeDone as integer))
,sum(CAST(success_Steal as integer))
,sum(CAST(street1Seen as integer)) ,sum(CAST(street1Seen as integer))
,sum(CAST(street2Seen as integer)) ,sum(CAST(street2Seen as integer))
,sum(CAST(street3Seen as integer)) ,sum(CAST(street3Seen as integer))
@ -3675,8 +3909,15 @@ class Sql:
,street0_3BDone ,street0_3BDone
,street0_4BChance ,street0_4BChance
,street0_4BDone ,street0_4BDone
,other3BStreet0 ,street0_C4BChance
,other4BStreet0 ,street0_C4BDone
,street0_FoldTo3BChance
,street0_FoldTo3BDone
,street0_FoldTo4BChance
,street0_FoldTo4BDone
,street0_SqueezeChance
,street0_SqueezeDone
,success_Steal
,street1Seen ,street1Seen
,street2Seen ,street2Seen
,street3Seen ,street3Seen
@ -3774,8 +4015,15 @@ class Sql:
,sum(CAST(street0_3BDone as integer)) ,sum(CAST(street0_3BDone as integer))
,sum(CAST(street0_4BChance as integer)) ,sum(CAST(street0_4BChance as integer))
,sum(CAST(street0_4BDone as integer)) ,sum(CAST(street0_4BDone as integer))
,sum(CAST(other3BStreet0 as integer)) ,sum(CAST(street0_C4BChance as integer))
,sum(CAST(other4BStreet0 as integer)) ,sum(CAST(street0_C4BDone as integer))
,sum(CAST(street0_FoldTo3BChance as integer))
,sum(CAST(street0_FoldTo3BDone as integer))
,sum(CAST(street0_FoldTo4BChance as integer))
,sum(CAST(street0_FoldTo4BDone as integer))
,sum(CAST(street0_SqueezeChance as integer))
,sum(CAST(street0_SqueezeDone as integer))
,sum(CAST(success_Steal as integer))
,sum(CAST(street1Seen as integer)) ,sum(CAST(street1Seen as integer))
,sum(CAST(street2Seen as integer)) ,sum(CAST(street2Seen as integer))
,sum(CAST(street3Seen as integer)) ,sum(CAST(street3Seen as integer))
@ -3868,8 +4116,15 @@ class Sql:
street0_3BDone, street0_3BDone,
street0_4BChance, street0_4BChance,
street0_4BDone, street0_4BDone,
other3BStreet0, street0_C4BChance,
other4BStreet0, street0_C4BDone,
street0_FoldTo3BChance,
street0_FoldTo3BDone,
street0_FoldTo4BChance,
street0_FoldTo4BDone,
street0_SqueezeChance,
street0_SqueezeDone,
success_Steal,
street1Seen, street1Seen,
street2Seen, street2Seen,
street3Seen, street3Seen,
@ -3956,7 +4211,9 @@ class Sql:
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s)""" %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s,
%s, %s)"""
self.query['update_hudcache'] = """ self.query['update_hudcache'] = """
UPDATE HudCache SET UPDATE HudCache SET
@ -3967,8 +4224,15 @@ class Sql:
street0_3BDone=street0_3BDone+%s, street0_3BDone=street0_3BDone+%s,
street0_4BChance=street0_4BChance+%s, street0_4BChance=street0_4BChance+%s,
street0_4BDone=street0_4BDone+%s, street0_4BDone=street0_4BDone+%s,
other3BStreet0=other3BStreet0+%s, street0_C4BChance=street0_C4BChance+%s,
other4BStreet0=other4BStreet0+%s, street0_C4BDone=street0_C4BDone+%s,
street0_FoldTo3BChance=street0_FoldTo3BChance+%s,
street0_FoldTo3BDone=street0_FoldTo3BDone+%s,
street0_FoldTo4BChance=street0_FoldTo4BChance+%s,
street0_FoldTo4BDone=street0_FoldTo4BDone+%s,
street0_SqueezeChance=street0_SqueezeChance+%s,
street0_SqueezeDone=street0_SqueezeDone+%s,
success_Steal=success_Steal+%s,
street1Seen=street1Seen+%s, street1Seen=street1Seen+%s,
street2Seen=street2Seen+%s, street2Seen=street2Seen+%s,
street3Seen=street3Seen+%s, street3Seen=street3Seen+%s,
@ -4057,12 +4321,13 @@ class Sql:
#################################### ####################################
self.query['select_sessionscache'] = """ self.query['select_sessionscache'] = """
SELECT sessionStart, SELECT id,
sessionStart,
sessionEnd, sessionEnd,
ringHDs, ringHDs,
tourHDs, tourHDs,
totalProfit, ringProfitUSD,
bigBets ringProfitEUR
FROM SessionsCache FROM SessionsCache
WHERE sessionEnd>=%s WHERE sessionEnd>=%s
AND sessionStart<=%s""" AND sessionStart<=%s"""
@ -4072,8 +4337,8 @@ class Sql:
sessionEnd, sessionEnd,
ringHDs, ringHDs,
tourHDs, tourHDs,
totalProfit, ringProfitUSD,
bigBets ringProfitEUR
FROM SessionsCache FROM SessionsCache
WHERE sessionEnd>=%s WHERE sessionEnd>=%s
AND sessionStart<=%s""" AND sessionStart<=%s"""
@ -4083,8 +4348,8 @@ class Sql:
sessionEnd, sessionEnd,
ringHDs, ringHDs,
tourHDs, tourHDs,
totalProfit, ringProfitUSD,
bigBets ringProfitEUR
FROM SessionsCache FROM SessionsCache
WHERE sessionStart>%s WHERE sessionStart>%s
AND sessionEnd>=%s AND sessionEnd>=%s
@ -4094,8 +4359,8 @@ class Sql:
UPDATE SessionsCache SET UPDATE SessionsCache SET
ringHDs=ringHDs+%s, ringHDs=ringHDs+%s,
tourHDs=tourHDs+%s, tourHDs=tourHDs+%s,
totalProfit=totalProfit+%s, ringProfitUSD=ringProfitUSD+%s,
bigBets=bigBets+%s ringProfitEUR=ringProfitEUR+%s
WHERE sessionStart<=%s WHERE sessionStart<=%s
AND sessionEnd>=%s""" AND sessionEnd>=%s"""
@ -4104,8 +4369,8 @@ class Sql:
sessionStart=%s, sessionStart=%s,
ringHDs=ringHDs+%s, ringHDs=ringHDs+%s,
tourHDs=tourHDs+%s, tourHDs=tourHDs+%s,
totalProfit=totalProfit+%s, ringProfitUSD=ringProfitUSD+%s,
bigBets=bigBets+%s ringProfitEUR=ringProfitEUR+%s
WHERE sessionStart>%s WHERE sessionStart>%s
AND sessionEnd>=%s AND sessionEnd>=%s
AND sessionStart<=%s""" AND sessionStart<=%s"""
@ -4115,8 +4380,8 @@ class Sql:
sessionEnd=%s, sessionEnd=%s,
ringHDs=ringHDs+%s, ringHDs=ringHDs+%s,
tourHDs=tourHDs+%s, tourHDs=tourHDs+%s,
totalProfit=totalProfit+%s, ringProfitUSD=ringProfitUSD+%s,
bigBets=bigBets+%s ringProfitEUR=ringProfitEUR+%s
WHERE sessionEnd<%s WHERE sessionEnd<%s
AND sessionEnd>=%s AND sessionEnd>=%s
AND sessionStart<=%s""" AND sessionStart<=%s"""
@ -4127,20 +4392,27 @@ class Sql:
sessionEnd, sessionEnd,
ringHDs, ringHDs,
tourHDs, tourHDs,
totalProfit, ringProfitUSD,
bigBets) ringProfitEUR)
VALUES (%s, %s, %s, %s, %s, %s)""" VALUES (%s, %s, %s, %s, %s, %s)"""
self.query['merge_sessionscache'] = """ self.query['merge_sessionscache'] = """
SELECT min(sessionStart), max(sessionEnd), sum(ringHDs), sum(tourHDs), sum(totalProfit), sum(bigBets) SELECT min(sessionStart), max(sessionEnd), sum(ringHDs), sum(tourHDs), sum(ringProfitUSD), sum(ringProfitEUR)
FROM SessionsCache FROM SessionsCache
WHERE sessionEnd>=%s WHERE (case when id=%s or id=%s then 1 else 0 end)=1"""
AND sessionStart<=%s"""
self.query['delete_sessions'] = """ self.query['delete_sessions'] = """
DELETE FROM SessionsCache DELETE FROM SessionsCache
WHERE sessionEnd>=%s WHERE id=%s"""
AND sessionStart<=%s"""
self.query['update_hands_sessionid'] = """
UPDATE Hands SET
sessionId=%s
WHERE (case when sessionId=%s or sessionId=%s then 1 else 0 end)=1"""
####################################
# Database management queries
####################################
if db_server == 'mysql': if db_server == 'mysql':
self.query['analyze'] = """ self.query['analyze'] = """
@ -4254,6 +4526,13 @@ class Sql:
WHERE s.name=%s AND t.siteTourneyNo=%s WHERE s.name=%s AND t.siteTourneyNo=%s
""" """
self.query['getSiteTourneyNos'] = """SELECT t.siteTourneyNo
FROM Tourneys t
INNER JOIN TourneyTypes tt ON (t.tourneyTypeId = tt.id)
INNER JOIN Sites s ON (tt.siteId = s.id)
WHERE tt.siteId=%s
"""
self.query['getTourneyPlayerInfo'] = """SELECT tp.* self.query['getTourneyPlayerInfo'] = """SELECT tp.*
FROM Tourneys t FROM Tourneys t
INNER JOIN TourneyTypes tt ON (t.tourneyTypeId = tt.id) INNER JOIN TourneyTypes tt ON (t.tourneyTypeId = tt.id)
@ -4323,11 +4602,12 @@ class Sql:
self.query['handsPlayersTTypeId_joiner'] = " OR TourneysPlayersId+0=" self.query['handsPlayersTTypeId_joiner'] = " OR TourneysPlayersId+0="
self.query['handsPlayersTTypeId_joiner_id'] = " OR id=" self.query['handsPlayersTTypeId_joiner_id'] = " OR id="
self.query['store_hand'] = """INSERT INTO Hands ( self.query['store_hand'] = """insert into Hands (
tablename, tablename,
gametypeid,
sitehandno, sitehandno,
tourneyId, tourneyId,
gametypeid,
sessionId,
startTime, startTime,
importtime, importtime,
seats, seats,
@ -4355,13 +4635,13 @@ class Sql:
street4Pot, street4Pot,
showdownPot showdownPot
) )
VALUES values
(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""" %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
self.query['store_hands_players'] = """INSERT INTO HandsPlayers ( self.query['store_hands_players'] = """insert into HandsPlayers (
handId, handId,
playerId, playerId,
startCash, startCash,
@ -4418,8 +4698,15 @@ class Sql:
street0_3BDone, street0_3BDone,
street0_4BChance, street0_4BChance,
street0_4BDone, street0_4BDone,
other3BStreet0, street0_C4BChance,
other4BStreet0, street0_C4BDone,
street0_FoldTo3BChance,
street0_FoldTo3BDone,
street0_FoldTo4BChance,
street0_FoldTo4BDone,
street0_SqueezeChance,
street0_SqueezeDone,
success_Steal,
otherRaisedStreet0, otherRaisedStreet0,
otherRaisedStreet1, otherRaisedStreet1,
otherRaisedStreet2, otherRaisedStreet2,
@ -4458,7 +4745,7 @@ class Sql:
street3Raises, street3Raises,
street4Raises street4Raises
) )
VALUES ( values (
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
@ -4477,11 +4764,14 @@ class Sql:
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s,
%s, %s
)""" )"""
self.query['store_hands_actions'] = """INSERT INTO HandsActions ( self.query['store_hands_actions'] = """insert into HandsActions (
handsPlayerId, handId,
playerId,
street, street,
actionNo, actionNo,
streetActionNo, streetActionNo,
@ -4493,10 +4783,10 @@ class Sql:
cardsDiscarded, cardsDiscarded,
allIn allIn
) )
VALUES ( values (
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s %s, %s
)""" )"""
################################ ################################

View File

@ -0,0 +1,82 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Copyright 2008-2011 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 <http://www.gnu.org/licenses/>.
#In the "official" distribution you can find the license in agpl-3.0.txt
"""A script for adding new stats to the regression test library"""
import Options
import logging, os, sys
import re, urllib2
import codecs
import pprint
pp = pprint.PrettyPrinter(indent=4)
def write_file(filename, data):
print data
f = open(filename, 'w')
f.write(data)
f.close()
print f
def update(leaf, stat, default):
filename = leaf
#print "DEBUG: fileanme: %s" % filename
# Test if this is a hand history file
if filename.endswith('.hp'):
in_fh = codecs.open(filename, 'r', 'utf8')
whole_file = in_fh.read()
in_fh.close()
hash = eval(whole_file)
for player in hash:
hash[player][stat] = default
string = pp.pformat(hash)
write_file(filename, string)
def walk_testfiles(dir, stat, default):
"""Walks a directory, and executes a callback on each file """
dir = os.path.abspath(dir)
for file in [file for file in os.listdir(dir) if not file in [".",".."]]:
nfile = os.path.join(dir,file)
if os.path.isdir(nfile):
walk_testfiles(nfile, stat, default)
else:
update(nfile, stat, default)
def usage():
print "USAGE:"
print "\t./ScriptAddStatToRegression.py"
sys.exit(0)
def main(argv=None):
if argv is None:
argv = sys.argv[1:]
(options, argv) = Options.fpdb_options()
if options.usage == True:
usage()
print "WARNING:"
print "This script will modify many files in the regression test suite"
print "As a safety precaution, you need to edit the file manually to run it"
#walk_testfiles('regression-test-files/', 'zzzzzzz', False)
if __name__ == '__main__':
main()

View File

@ -0,0 +1,74 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Copyright 2008-2011 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 <http://www.gnu.org/licenses/>.
#In the "official" distribution you can find the license in agpl-3.0.txt
"""A script for fetching Winamax tourney results"""
import Configuration
import Database
import logging, os, sys
import re, urllib2
def fetch_winamax_results_page(tourney_id):
url = "https://www.winamax.fr/poker/tournament.php?ID=%s" % tourney_id
data = urllib2.urlopen(url).read()
return data
def write_file(filename, data):
f = open(filename, 'w')
print f
f.write(data)
f.close()
print f
def main():
config = Configuration.Config()
db = Database.Database(config)
tourney_ids = db.getSiteTourneyNos("Winamax")
tids = []
for tid in tourney_ids:
blah, = tid # Unpack tuple
tids.append(str(blah))
# winamax_get_winning(tid,"blah")
results_dir = config.get_import_parameters().get("ResultsDirectory")
results_dir = os.path.expanduser(results_dir)
site_dir = os.path.join(results_dir, "Winamax")
print "DEBUG: site_dir: %s" % site_dir
filelist = [file for file in os.listdir(site_dir) if not file in [".",".."]]
print "DEBUG: filelist : %s" % filelist
print "DEBUG: tids : %s" % tids
for f in filelist:
try:
tids.remove(f)
except ValueError:
print "Warning: '%s' is not a known tourney_id" % f
if len(tids) == 0:
print "No tourney results files to fetch"
else:
for tid in tids:
filename = os.path.join(site_dir, tid)
data = fetch_winamax_results_page(tid)
print u"DEBUG: write_file(%s)" %(filename)
write_file(filename, data)
if __name__ == '__main__':
main()

100
pyfpdb/SitenameSummary.py Normal file
View File

@ -0,0 +1,100 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Copyright 2008-2010 Steffen Schaumburg
#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 <http://www.gnu.org/licenses/>.
#In the "official" distribution you can find the license in agpl-3.0.txt.
"""A site template for tounrey summary parsing"""
import L10n
_ = L10n.get_translation()
from decimal import Decimal
import datetime
from Exceptions import FpdbParseError
from HandHistoryConverter import *
import PokerStarsToFpdb
from TourneySummary import *
class Sitename(TourneySummary):
limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Limit':'fl', 'LIMIT':'fl' }
games = { # base, category
"Hold'em" : ('hold','holdem'),
'Omaha' : ('hold','omahahi'),
'Omaha Hi/Lo' : ('hold','omahahilo'),
'Razz' : ('stud','razz'),
'RAZZ' : ('stud','razz'),
'7 Card Stud' : ('stud','studhi'),
'7 Card Stud Hi/Lo' : ('stud','studhilo'),
'Badugi' : ('draw','badugi'),
'Triple Draw 2-7 Lowball' : ('draw','27_3draw'),
'5 Card Draw' : ('draw','fivedraw')
}
substitutions = {
'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes
'LS' : u"\$|\xe2\x82\xac|\u20AC|" # legal currency symbols
}
re_SplitTourneys = re.compile("PokerStars Tournament ")
re_TourNo = re.compile("\#(?P<TOURNO>[0-9]+),")
re_TourneyInfo = re.compile(u"""
\#(?P<TOURNO>[0-9]+),\s
(?P<LIMIT>No\sLimit|Limit|LIMIT|Pot\sLimit)\s
(?P<GAME>Hold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s+
(?P<DESC>[ a-zA-Z]+\s+)?
(Buy-In:\s[%(LS)s](?P<BUYIN>[.0-9]+)(\/[%(LS)s](?P<FEE>[.0-9]+))?(?P<CUR>\s(%(LEGAL_ISO)s))?\s+)?
(?P<ENTRIES>[0-9]+)\splayers\s+
([%(LS)s]?(?P<ADDED>[.\d]+)\sadded\sto\sthe\sprize\spool\sby\sPokerStars\.com\s+)?
(Total\sPrize\sPool:\s[%(LS)s]?(?P<PRIZEPOOL>[.0-9]+)(\s(%(LEGAL_ISO)s))?\s+)?
(Target\sTournament\s.*)?
Tournament\sstarted\s+(-\s)?
(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\-\s]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)\s?\(?(?P<TZ>[A-Z]+)\)?\s
""" % substitutions ,re.VERBOSE|re.MULTILINE|re.DOTALL)
re_Currency = re.compile(u"""(?P<CURRENCY>[%(LS)s]|FPP)""" % substitutions)
re_Player = re.compile(u"""(?P<RANK>[0-9]+):\s(?P<NAME>.*)\s\(.*\),(\s)?(\$(?P<WINNINGS>[0-9]+\.[0-9]+))?(?P<STILLPLAYING>still\splaying)?((?P<TICKET>Tournament\sTicket)\s\(WSOP\sStep\s(?P<LEVEL>\d)\))?(\s+)?""")
re_DateTime = re.compile("\[(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\- ]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)")
codepage = ["utf-8"]
def parseSummary(self):
m = self.re_TourneyInfo.search(self.summaryText)
if m == None:
tmp = self.summaryText[0:200]
log.error(_("parseSummary: Unable to recognise Tourney Info: '%s'") % tmp)
log.error(_("parseSummary: Raising FpdbParseError"))
raise FpdbParseError(_("Unable to recognise Tourney Info: '%s'") % tmp)
print "DEBUG: m.groupdict(): %s" % m.groupdict()
mg = m.groupdict()
self.tourNo = ''
self.gametype['limitType'] = ''
self.gametype['category'] = ''
self.buyin = 0
self.fee = 0
self.prizepool = 0
self.entries = 0
#self.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S")
self.currency = "USD"
#self.addPlayer(rank, name, winnings, self.currency, None, None, None)

117
pyfpdb/Stats.py Normal file → Executable file
View File

@ -378,6 +378,21 @@ def steal(stat_dict, player):
except: except:
return (stat, 'NA', 'st=NA', 'steal=NA', '(0/0)', '% steal attempted') return (stat, 'NA', 'st=NA', 'steal=NA', '(0/0)', '% steal attempted')
def s_steal(stat_dict, player):
""" Success Steal %."""
stat = 0.0
try:
stat = float(stat_dict[player]['suc_st'])/float(stat_dict[player]['steal'])
return (stat,
'%3.1f' % (100.0*stat),
's_st=%3.1f%%' % (100.0*stat),
's_steal=%3.1f%%' % (100.0*stat),
'(%d/%d)' % (stat_dict[player]['suc_st'], stat_dict[player]['steal']),
_('% success steal')
)
except:
return (stat, 'NA', 'st=NA', 's_steal=NA', '(0/0)', '% success steal')
def f_SB_steal(stat_dict, player): def f_SB_steal(stat_dict, player):
""" Folded SB to steal.""" """ Folded SB to steal."""
stat = 0.0 stat = 0.0
@ -448,14 +463,112 @@ def three_B(stat_dict, player):
'3B=%3.1f%%' % (100.0*stat), '3B=%3.1f%%' % (100.0*stat),
'3B_pf=%3.1f%%' % (100.0*stat), '3B_pf=%3.1f%%' % (100.0*stat),
'(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']), '(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']),
_('% 3/4 Bet preflop/3rd')) _('% 3 Bet preflop/3rd'))
except: except:
return (stat, return (stat,
'NA', 'NA',
'3B=NA', '3B=NA',
'3B_pf=NA', '3B_pf=NA',
'(0/0)', '(0/0)',
_('% 3/4 Bet preflop/3rd')) _('% 3 Bet preflop/3rd'))
def four_B(stat_dict, player):
""" Four bet preflop/4rd."""
stat = 0.0
try:
stat = float(stat_dict[player]['fb_0'])/float(stat_dict[player]['fb_opp_0'])
return (stat,
'%3.1f' % (100.0*stat),
'4B=%3.1f%%' % (100.0*stat),
'4B=%3.1f%%' % (100.0*stat),
'(%d/%d)' % (stat_dict[player]['fb_0'], stat_dict[player]['fb_opp_0']),
_('% 4 Bet preflop/4rd'))
except:
return (stat,
'NA',
'4B=NA',
'4B=NA',
'(0/0)',
_('% 4 Bet preflop/4rd'))
def cfour_B(stat_dict, player):
""" Cold Four bet preflop/4rd."""
stat = 0.0
try:
stat = float(stat_dict[player]['cfb_0'])/float(stat_dict[player]['cfb_opp_0'])
return (stat,
'%3.1f' % (100.0*stat),
'C4B=%3.1f%%' % (100.0*stat),
'C4B_pf=%3.1f%%' % (100.0*stat),
'(%d/%d)' % (stat_dict[player]['cfb_0'], stat_dict[player]['cfb_opp_0']),
_('% Cold 4 Bet preflop/4rd'))
except:
return (stat,
'NA',
'C4B=NA',
'C4B_pf=NA',
'(0/0)',
_('% Cold 4 Bet preflop/4rd'))
def squeeze(stat_dict, player):
""" Squeeze bet preflop."""
stat = 0.0
try:
stat = float(stat_dict[player]['sqz_0'])/float(stat_dict[player]['sqz_opp_0'])
return (stat,
'%3.1f' % (100.0*stat),
'SQZ=%3.1f%%' % (100.0*stat),
'SQZ_pf=%3.1f%%' % (100.0*stat),
'(%d/%d)' % (stat_dict[player]['sqz_0'], stat_dict[player]['sqz_opp_0']),
_('% Squeeze preflop'))
except:
return (stat,
'NA',
'SQZ=NA',
'SQZ_pf=NA',
'(0/0)',
_('% Squeeze preflop'))
def f_3bet(stat_dict, player):
""" Fold to 3bet preflop. """
stat = 0.0
try:
stat = float(stat_dict[player]['f3b_0'])/float(stat_dict[player]['f3b_opp_0'])
return (stat,
'%3.1f' % (100.0*stat),
'F3B=%3.1f%%' % (100.0*stat),
'F3B_pf=%3.1f%%' % (100.0*stat),
'(%d/%d)' % (stat_dict[player]['f3b_0'], stat_dict[player]['f3b_opp_0']),
_('% Fold to 3 Bet preflop'))
except:
return (stat,
'NA',
'F3B=NA',
'F3B_pf=NA',
'(0/0)',
_('% Fold to 3 Bet preflop'))
def f_4bet(stat_dict, player):
""" Fold to 4bet preflop. """
stat = 0.0
try:
stat = float(stat_dict[player]['f4b_0'])/float(stat_dict[player]['f4b_opp_0'])
return (stat,
'%3.1f' % (100.0*stat),
'F4B=%3.1f%%' % (100.0*stat),
'F4B_pf=%3.1f%%' % (100.0*stat),
'(%d/%d)' % (stat_dict[player]['f4b_0'], stat_dict[player]['f4b_opp_0']),
_('% Fold to 4 Bet preflop'))
except:
return (stat,
'NA',
'F4B=NA',
'F4B_pf=NA',
'(0/0)',
_('% Fold to 4 Bet preflop'))
def WMsF(stat_dict, player): def WMsF(stat_dict, player):
""" Won $ when saw flop/4th.""" """ Won $ when saw flop/4th."""

View File

@ -9,15 +9,19 @@
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License. # the Free Software Foundation, version 3 of the License.
# #
# TODO gettextify usage print
import L10n import L10n
_ = L10n.get_translation() _ = L10n.get_translation()
import sys, random import sys, random
import re
import pokereval import pokereval
SUITS = ['h', 'd', 's', 'c'] SUITS = ['h', 'd', 's', 'c']
CONNECTORS = ['32', '43', '54', '65', '76', '87', '98', 'T9', 'JT', 'QJ', 'KQ', 'AK']
ANY = 0 ANY = 0
SUITED = 1 SUITED = 1
OFFSUIT = 2 OFFSUIT = 2
@ -64,13 +68,6 @@ class Stove:
hands_in_range = string.strip().split(',') hands_in_range = string.strip().split(',')
for h in hands_in_range: for h in hands_in_range:
_h = h.strip() _h = h.strip()
if len(_h) > 3:
cc = _h.split()
r1 = cc[0]
r2 = cc[1]
vp = Cards(r1, r2)
h_range.add(vp)
else:
h_range.expand(expand_hands(_h, self.hand, self.board)) h_range.expand(expand_hands(_h, self.hand, self.board))
self.h_range = h_range self.h_range = h_range
@ -82,7 +79,7 @@ class Cards:
self.c2 = c2 self.c2 = c2
def get(self): def get(self):
return [c1, c2] return [self.c1, self.c2]
class Board: class Board:
def __init__(self, b1=None, b2=None, b3=None, b4=None, b5=None): def __init__(self, b1=None, b2=None, b3=None, b4=None, b5=None):
@ -174,6 +171,35 @@ def expand_hands(abbrev, hand, board):
known_cards.update(set([hand.c2, hand.c2])) known_cards.update(set([hand.c2, hand.c2]))
known_cards.update(set([board.b1, board.b2, board.b3, board.b4, board.b5])) known_cards.update(set([board.b1, board.b2, board.b3, board.b4, board.b5]))
re.search('[2-9TJQKA]{2}(s|o)',abbrev)
if re.search('^[2-9TJQKA]{2}(s|o)$',abbrev): #AKs or AKo
return standard_expand(abbrev, hand, known_cards)
elif re.search('^[2-9TJQKA]{2}(s|o)\+$',abbrev): #76s+ or 76o+
return iterative_expand(abbrev, hand, known_cards)
#elif: AhXh
#elif: Ah6h+A
def iterative_expand(abbrev, hand, known_cards):
r1 = abbrev[0]
r2 = abbrev[1]
h_range = []
considered = set()
idx = CONNECTORS.index('%s%s' % (r1, r2))
ltr = abbrev[2]
h_range = []
for h in CONNECTORS[idx:]:
abr = "%s%s" % (h, ltr)
h_range += standard_expand(abr, hand, known_cards)
return h_range
def standard_expand(abbrev, hand, known_cards):
# Card ranks may be different # Card ranks may be different
r1 = abbrev[0] r1 = abbrev[0]
r2 = abbrev[1] r2 = abbrev[1]

View File

@ -118,6 +118,7 @@ class Table_Window(object):
self.site = site self.site = site
self.hud = None # fill in later self.hud = None # fill in later
self.gdkhandle = None self.gdkhandle = None
self.number = None
if tournament is not None and table_number is not None: if tournament is not None and table_number is not None:
self.tournament = int(tournament) self.tournament = int(tournament)
self.table = int(table_number) self.table = int(table_number)
@ -135,7 +136,14 @@ class Table_Window(object):
return None return None
self.search_string = getTableTitleRe(self.config, self.site, self.type, **table_kwargs) self.search_string = getTableTitleRe(self.config, self.site, self.type, **table_kwargs)
trys = 0
while True:
self.find_table_parameters() self.find_table_parameters()
if self.number is not None: break
trys += 1
if trys > 4:
log.error("Can't find table %s" % table_name)
return None
geo = self.get_geometry() geo = self.get_geometry()
if geo is None: return None if geo is None: return None

79
pyfpdb/TestHandsPlayers.py Executable file → Normal file
View File

@ -91,7 +91,7 @@ def compare_gametypes_file(filename, importer, errors):
for hand in handlist: for hand in handlist:
ghash = hand.gametyperow ghash = hand.gametyperow
for i in range(len(ghash)): for i in range(len(ghash)):
print "DEBUG: about to compare: '%s' and '%s'" %(ghash[i], testhash[i]) #print "DEBUG: about to compare: '%s' and '%s'" %(ghash[i], testhash[i])
if ghash[i] == testhash[i]: if ghash[i] == testhash[i]:
# The stats match - continue # The stats match - continue
pass pass
@ -152,14 +152,14 @@ def compare_hands_file(filename, importer, errors):
pass pass
else: else:
# Stats don't match. # Stats don't match.
if datum == "gametypeId": if datum == "gametypeId" or datum == 'sessionId':
# Not an error. gametypeIds are dependent on the order added to the db. # Not an error. gametypeIds are dependent on the order added to the db.
#print "DEBUG: Skipping mismatched gamtypeId" #print "DEBUG: Skipping mismatched gamtypeId"
pass pass
else: else:
errors.error_report(filename, hand, datum, ghash, testhash, None) errors.error_report(filename, hand, datum, ghash, testhash, None)
except KeyError, e: except KeyError, e:
errors.error_report(filename, False, "KeyError: '%s'" % stat, False, False, p) errors.error_report(filename, False, "KeyError: '%s'" % datum, False, False, None)
def compare(leaf, importer, errors, site): def compare(leaf, importer, errors, site):
@ -189,12 +189,19 @@ def compare(leaf, importer, errors, site):
def walk_testfiles(dir, function, importer, errors, site): def walk_testfiles(dir, function, importer, errors, site):
"""Walks a directory, and executes a callback on each file """ """Walks a directory, and executes a callback on each file """
dir = os.path.abspath(dir) dir = os.path.abspath(dir)
try:
for file in [file for file in os.listdir(dir) if not file in [".",".."]]: for file in [file for file in os.listdir(dir) if not file in [".",".."]]:
nfile = os.path.join(dir,file) nfile = os.path.join(dir,file)
if os.path.isdir(nfile): if os.path.isdir(nfile):
walk_testfiles(nfile, compare, importer, errors, site) walk_testfiles(nfile, compare, importer, errors, site)
else: else:
compare(nfile, importer, errors, site) function(nfile, importer, errors, site)
except OSError as (errno, strerror):
if errno == 20:
# Error 20 is 'not a directory'
function(dir, importer, errors, site)
else:
raise OSError(errno, strerror)
def usage(): def usage():
print "USAGE:" print "USAGE:"
@ -202,6 +209,8 @@ def usage():
print "\t./TestHandsPlayers.py" print "\t./TestHandsPlayers.py"
print "Run tests for a sinlge site:" print "Run tests for a sinlge site:"
print "\t./TestHandsPlayers -s <Sitename>" print "\t./TestHandsPlayers -s <Sitename>"
print "Run tests for a sinlge file in a site:"
print "\t./TestHandsPlayers -s <Sitename> -f <filname>"
sys.exit(0) sys.exit(0)
def main(argv=None): def main(argv=None):
@ -215,10 +224,16 @@ def main(argv=None):
if options.usage == True: if options.usage == True:
usage() usage()
single_file_test = False
if options.sitename: if options.sitename:
options.sitename = Options.site_alias(options.sitename) options.sitename = Options.site_alias(options.sitename)
if options.sitename == False: if options.sitename == False:
usage() usage()
if options.filename:
print "Testing single hand: '%s'" % options.filename
single_file_test = True
else:
print "Only regression testing '%s' files" % (options.sitename) print "Only regression testing '%s' files" % (options.sitename)
test_all_sites = False test_all_sites = False
@ -245,6 +260,7 @@ def main(argv=None):
AbsoluteErrors = FpdbError('Absolute Poker') AbsoluteErrors = FpdbError('Absolute Poker')
UltimateBetErrors = FpdbError('Ultimate Bet') UltimateBetErrors = FpdbError('Ultimate Bet')
EverleafErrors = FpdbError('Everleaf Poker') EverleafErrors = FpdbError('Everleaf Poker')
EverestErrors = FpdbError('Everest Poker')
CarbonErrors = FpdbError('Carbon') CarbonErrors = FpdbError('Carbon')
PKRErrors = FpdbError('PKR') PKRErrors = FpdbError('PKR')
iPokerErrors = FpdbError('iPoker') iPokerErrors = FpdbError('iPoker')
@ -256,7 +272,7 @@ def main(argv=None):
BetfairErrors, OnGameErrors, AbsoluteErrors, BetfairErrors, OnGameErrors, AbsoluteErrors,
EverleafErrors, CarbonErrors, PKRErrors, EverleafErrors, CarbonErrors, PKRErrors,
iPokerErrors, WinamaxErrors, UltimateBetErrors, iPokerErrors, WinamaxErrors, UltimateBetErrors,
Win2dayErrors, Win2dayErrors, EverestErrors,
] ]
sites = { sites = {
@ -273,6 +289,7 @@ def main(argv=None):
'iPoker' : False, 'iPoker' : False,
'Win2day' : False, 'Win2day' : False,
'Winamax' : False, 'Winamax' : False,
'Everest' : False,
} }
if test_all_sites == True: if test_all_sites == True:
@ -281,36 +298,62 @@ def main(argv=None):
else: else:
sites[options.sitename] = True sites[options.sitename] = True
if sites['PokerStars'] == True: if sites['PokerStars'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars") walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars")
walk_testfiles("regression-test-files/tour/Stars/", compare, importer, PokerStarsErrors, "PokerStars") walk_testfiles("regression-test-files/tour/Stars/", compare, importer, PokerStarsErrors, "PokerStars")
if sites['Full Tilt Poker'] == True: elif sites['PokerStars'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, PokerStarsErrors, "PokerStars")
if sites['Full Tilt Poker'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/FTP/", compare, importer, FTPErrors, "Full Tilt Poker") walk_testfiles("regression-test-files/cash/FTP/", compare, importer, FTPErrors, "Full Tilt Poker")
walk_testfiles("regression-test-files/tour/FTP/", compare, importer, FTPErrors, "Full Tilt Poker") walk_testfiles("regression-test-files/tour/FTP/", compare, importer, FTPErrors, "Full Tilt Poker")
if sites['PartyPoker'] == True: elif sites['Full Tilt Poker'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, FTPErrors, "Full Tilt Poker")
if sites['PartyPoker'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker") walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker")
walk_testfiles("regression-test-files/tour/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker") walk_testfiles("regression-test-files/tour/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker")
if sites['Betfair'] == True: elif sites['PartyPoker'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, PartyPokerErrors, "PartyPoker")
if sites['Betfair'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/Betfair/", compare, importer, BetfairErrors, "Betfair") walk_testfiles("regression-test-files/cash/Betfair/", compare, importer, BetfairErrors, "Betfair")
if sites['OnGame'] == True: elif sites['Betfair'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, BetfairErrors, "Betfair")
if sites['OnGame'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/OnGame/", compare, importer, OnGameErrors, "OnGame") walk_testfiles("regression-test-files/cash/OnGame/", compare, importer, OnGameErrors, "OnGame")
if sites['Absolute'] == True: elif sites['OnGame'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, OnGameErrors, "OnGame")
if sites['Absolute'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/Absolute/", compare, importer, AbsoluteErrors, "Absolute") walk_testfiles("regression-test-files/cash/Absolute/", compare, importer, AbsoluteErrors, "Absolute")
if sites['UltimateBet'] == True: walk_testfiles("regression-test-files/tour/Absolute/", compare, importer, AbsoluteErrors, "Absolute")
elif sites['Absolute'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, AbsoluteErrors, "Absolute")
if sites['UltimateBet'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/UltimateBet/", compare, importer, UltimateBetErrors, "Absolute") walk_testfiles("regression-test-files/cash/UltimateBet/", compare, importer, UltimateBetErrors, "Absolute")
if sites['Everleaf'] == True: elif sites['UltimateBet'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, UltimateBetErrors, "Absolute")
if sites['Everleaf'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/Everleaf/", compare, importer, EverleafErrors, "Everleaf") walk_testfiles("regression-test-files/cash/Everleaf/", compare, importer, EverleafErrors, "Everleaf")
if sites['Carbon'] == True: elif sites['Everleaf'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, EverleafErrors, "Everleaf")
if sites['Carbon'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/Carbon/", compare, importer, CarbonErrors, "Carbon") walk_testfiles("regression-test-files/cash/Carbon/", compare, importer, CarbonErrors, "Carbon")
#if sites['PKR'] == True: elif sites['Carbon'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, CarbonErrors, "Carbon")
#if sites['PKR'] == True and not single_file_test:
# walk_testfiles("regression-test-files/cash/PKR/", compare, importer, PKRErrors, "PKR") # walk_testfiles("regression-test-files/cash/PKR/", compare, importer, PKRErrors, "PKR")
if sites['iPoker'] == True: if sites['iPoker'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/iPoker/", compare, importer, iPokerErrors, "iPoker") walk_testfiles("regression-test-files/cash/iPoker/", compare, importer, iPokerErrors, "iPoker")
if sites['Winamax'] == True: elif sites['iPoker'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, iPokerErrors, "iPoker")
if sites['Winamax'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/Winamax/", compare, importer, WinamaxErrors, "Winamax") walk_testfiles("regression-test-files/cash/Winamax/", compare, importer, WinamaxErrors, "Winamax")
walk_testfiles("regression-test-files/tour/Winamax/", compare, importer, WinamaxErrors, "Winamax") walk_testfiles("regression-test-files/tour/Winamax/", compare, importer, WinamaxErrors, "Winamax")
if sites['Win2day'] == True: elif sites['Winamax'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, WinamaxErrors, "Winamax")
if sites['Win2day'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/Win2day/", compare, importer, Win2dayErrors, "Win2day") walk_testfiles("regression-test-files/cash/Win2day/", compare, importer, Win2dayErrors, "Win2day")
elif sites['Win2day'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, Win2dayErrors, "Win2day")
totalerrors = 0 totalerrors = 0

View File

@ -56,8 +56,15 @@ class TourneyFilters(Filters.Filters):
if 'day_start' in gen: if 'day_start' in gen:
self.day_start = float(gen['day_start']) self.day_start = float(gen['day_start'])
self.sw = gtk.ScrolledWindow()
self.sw.set_border_width(0)
self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.sw.set_size_request(370, 300)
# Outer Packing box # Outer Packing box
self.mainVBox = gtk.VBox(False, 0) self.mainVBox = gtk.VBox(False, 0)
self.sw.add_with_viewport(self.mainVBox)
self.sw.show()
self.label = {} self.label = {}
self.callback = {} self.callback = {}

View File

@ -49,7 +49,7 @@ class TourneySummary(object):
LCS = {'H':'h', 'D':'d', 'C':'c', 'S':'s'} # SAL- TO KEEP ?? LCS = {'H':'h', 'D':'d', 'C':'c', 'S':'s'} # SAL- TO KEEP ??
SYMBOL = {'USD': '$', 'EUR': u'$', 'T$': '', 'play': ''} SYMBOL = {'USD': '$', 'EUR': u'$', 'T$': '', 'play': ''}
MS = {'horse' : 'HORSE', '8game' : '8-Game', 'hose' : 'HOSE', 'ha': 'HA'} MS = {'horse' : 'HORSE', '8game' : '8-Game', 'hose' : 'HOSE', 'ha': 'HA'}
SITEIDS = {'Fulltilt':1, 'Full Tilt Poker':1, 'PokerStars':2, 'Everleaf':3, 'Win2day':4, 'OnGame':5, 'UltimateBet':6, 'Betfair':7, 'Absolute':8, 'PartyPoker':9 } SITEIDS = {'Fulltilt':1, 'Full Tilt Poker':1, 'PokerStars':2, 'Everleaf':3, 'Win2day':4, 'OnGame':5, 'UltimateBet':6, 'Betfair':7, 'Absolute':8, 'PartyPoker':9, 'Winamax':14 }
def __init__(self, db, config, siteName, summaryText, builtFrom = "HHC"): def __init__(self, db, config, siteName, summaryText, builtFrom = "HHC"):

119
pyfpdb/WinamaxSummary.py Normal file
View File

@ -0,0 +1,119 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Copyright 2008-2011 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 <http://www.gnu.org/licenses/>.
#In the "official" distribution you can find the license in agpl-3.0.txt.
import L10n
_ = L10n.get_translation()
from decimal import Decimal
import datetime
from BeautifulSoup import BeautifulSoup
from Exceptions import FpdbParseError
from HandHistoryConverter import *
import PokerStarsToFpdb
from TourneySummary import *
class WinamaxSummary(TourneySummary):
limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Limit':'fl', 'LIMIT':'fl' }
games = { # base, category
"Hold'em" : ('hold','holdem'),
'Omaha' : ('hold','omahahi'),
'Omaha Hi/Lo' : ('hold','omahahilo'),
'Razz' : ('stud','razz'),
'RAZZ' : ('stud','razz'),
'7 Card Stud' : ('stud','studhi'),
'7 Card Stud Hi/Lo' : ('stud','studhilo'),
'Badugi' : ('draw','badugi'),
'Triple Draw 2-7 Lowball' : ('draw','27_3draw'),
'5 Card Draw' : ('draw','fivedraw')
}
substitutions = {
'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes
'LS' : u"\$|\xe2\x82\xac|\u20AC|" # legal currency symbols
}
re_GameType = re.compile("""<h1>((?P<LIMIT>No Limit|Pot Limit) (?P<GAME>Hold\'em))</h1>""")
re_SplitTourneys = re.compile("PokerStars Tournament ")
re_TourNo = re.compile("ID\=(?P<TOURNO>[0-9]+)")
re_Player = re.compile(u"""(?P<RANK>\d+)<\/td><td width="30%">(?P<PNAME>.+?)<\/td><td width="60%">(?P<WINNINGS>.+?)</td>""")
re_Details = re.compile(u"""<p class="text">(?P<LABEL>.+?) : (?P<VALUE>.+?)</p>""")
re_Prizepool = re.compile(u"""<div class="title2">.+: (?P<PRIZEPOOL>[0-9,]+)""")
re_DateTime = re.compile("\[(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\- ]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)")
codepage = ["utf-8"]
def parseSummary(self):
self.currency = "EUR"
soup = BeautifulSoup(self.summaryText)
tl = soup.findAll('div', {"class":"left_content"})
ps = soup.findAll('p', {"class": "text"})
for p in ps:
for m in self.re_Details.finditer(str(p)):
mg = m.groupdict()
#print mg
if mg['LABEL'] == 'Buy-in':
mg['VALUE'] = mg['VALUE'].replace(u"&euro;", "")
mg['VALUE'] = mg['VALUE'].replace(u"+", "")
mg['VALUE'] = mg['VALUE'].strip(" $")
bi, fee = mg['VALUE'].split(" ")
self.buyin = int(100*Decimal(bi))
self.fee = int(100*Decimal(fee))
#print "DEBUG: bi: '%s' fee: '%s" % (self.buyin, self.fee)
if mg['LABEL'] == 'Nombre de joueurs inscrits':
self.entries = mg['VALUE']
if mg['LABEL'] == 'D\xc3\xa9but du tournoi':
self.startTime = datetime.datetime.strptime(mg['VALUE'], "%d-%m-%Y %H:%M")
if mg['LABEL'] == 'Nombre de joueurs max':
# Max seats i think
pass
div = soup.findAll('div', {"class": "title2"})
for m in self.re_Prizepool.finditer(str(div)):
mg = m.groupdict()
#print mg
self.prizepool = mg['PRIZEPOOL'].replace(u',','.')
for m in self.re_GameType.finditer(str(tl[0])):
mg = m.groupdict()
#print mg
self.gametype['limitType'] = self.limits[mg['LIMIT']]
self.gametype['category'] = self.games[mg['GAME']][1]
for m in self.re_Player.finditer(str(tl[0])):
mg = m.groupdict()
#print mg
winnings = mg['WINNINGS'].strip(u'').replace(u',','.')
winnings = int(100*Decimal(winnings))
rank = mg['RANK']
name = mg['PNAME']
#print "DEBUG: %s: %s" %(name, winnings)
self.addPlayer(rank, name, winnings, self.currency, None, None, None)
for m in self.re_TourNo.finditer(self.summaryText):
mg = m.groupdict()
#print mg
self.tourNo = mg['TOURNO']

View File

@ -89,7 +89,7 @@ class Winamax(HandHistoryConverter):
buyIn:\s(?P<BUYIN>(?P<BIAMT>[%(LS)s\d\,]+)?\s\+?\s(?P<BIRAKE>[%(LS)s\d\,]+)?\+?(?P<BOUNTY>[%(LS)s\d\.]+)?\s?(?P<TOUR_ISO>%(LEGAL_ISO)s)?|Gratuit|Ticket\suniquement)?\s buyIn:\s(?P<BUYIN>(?P<BIAMT>[%(LS)s\d\,]+)?\s\+?\s(?P<BIRAKE>[%(LS)s\d\,]+)?\+?(?P<BOUNTY>[%(LS)s\d\.]+)?\s?(?P<TOUR_ISO>%(LEGAL_ISO)s)?|Gratuit|Ticket\suniquement)?\s
(level:\s(?P<LEVEL>\d+))? (level:\s(?P<LEVEL>\d+))?
.*)? .*)?
\s-\sHandId:\s\#(?P<HID1>\d+)-(?P<HID2>\d+)-(?P<HID3>\d+).*\s \s-\sHandId:\s\#(?P<HID1>\d+)-(?P<HID2>\d+)-(?P<HID3>\d+).*\s # REB says: HID3 is the correct hand number
(?P<GAME>Holdem|Omaha)\s (?P<GAME>Holdem|Omaha)\s
(?P<LIMIT>no\slimit|pot\slimit)\s (?P<LIMIT>no\slimit|pot\slimit)\s
\( \(
@ -107,6 +107,7 @@ class Winamax(HandHistoryConverter):
re_TailSplitHands = re.compile(r'\n\s*\n') re_TailSplitHands = re.compile(r'\n\s*\n')
re_Button = re.compile(r'Seat\s#(?P<BUTTON>\d+)\sis\sthe\sbutton') re_Button = re.compile(r'Seat\s#(?P<BUTTON>\d+)\sis\sthe\sbutton')
re_Board = re.compile(r"\[(?P<CARDS>.+)\]") re_Board = re.compile(r"\[(?P<CARDS>.+)\]")
re_Total = re.compile(r"Total pot (?P<TOTAL>[\.\d]+).*(No rake|Rake (?P<RAKE>[\.\d]+))" % substitutions)
# 2010/09/21 03:10:51 UTC # 2010/09/21 03:10:51 UTC
re_DateTime = re.compile(""" re_DateTime = re.compile("""
@ -221,13 +222,19 @@ class Winamax(HandHistoryConverter):
hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, "CET", "UTC") hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, "CET", "UTC")
if key == 'HID1': if key == 'HID1':
# Need to remove non-alphanumerics for MySQL # Need to remove non-alphanumerics for MySQL
hand.handid = "1%.9d%s%s"%(int(info['HID2']),info['HID1'],info['HID3']) # hand.handid = "1%.9d%s%s"%(int(info['HID2']),info['HID1'],info['HID3'])
hand.handid = "%s%s%s"%(int(info['HID2']),info['HID1'],info['HID3'])
if len (hand.handid) > 19: if len (hand.handid) > 19:
hand.handid = "%s" % info['HID1'] hand.handid = "%s%s" % (int(info['HID2']), int(info['HID3']))
# if key == 'HID3':
# hand.handid = int(info['HID3']) # correct hand no (REB)
if key == 'TOURNO': if key == 'TOURNO':
hand.tourNo = info[key] hand.tourNo = info[key]
if key == 'TABLE': if key == 'TABLE':
hand.tablename = info[key] hand.tablename = info[key]
if key == 'MAXPLAYER' and info[key] != None:
hand.maxseats = int(info[key])
if key == 'BUYIN': if key == 'BUYIN':
if hand.tourNo!=None: if hand.tourNo!=None:
@ -269,8 +276,15 @@ class Winamax(HandHistoryConverter):
hand.isKO = False hand.isKO = False
info['BIRAKE'] = info['BIRAKE'].strip(u'$€') info['BIRAKE'] = info['BIRAKE'].strip(u'$€')
hand.buyin = int(100*Decimal(info['BIAMT'])) rake_factor = 1
hand.fee = int(100*Decimal(info['BIRAKE'])) bi_factor = 1
if info['BIAMT'].find(".") == -1:
bi_factor = 100
if info['BIRAKE'].find(".") == -1:
rake_factor = 100
hand.buyin = bi_factor*info['BIAMT']
hand.fee = rake_factor*info['BIRAKE']
else: else:
hand.buyin = int(Decimal(info['BIAMT'])) hand.buyin = int(Decimal(info['BIAMT']))
hand.fee = 0 hand.fee = 0
@ -278,9 +292,9 @@ class Winamax(HandHistoryConverter):
if key == 'LEVEL': if key == 'LEVEL':
hand.level = info[key] hand.level = info[key]
# TODO: These m = self.re_Button.search(hand.handText)
hand.buttonpos = 1 hand.buttonpos = m.groupdict().get('BUTTON', None)
hand.maxseats = 10 # Set to None - Hand.py will guessMaxSeats()
hand.mixed = None hand.mixed = None
def readPlayerStacks(self, hand): def readPlayerStacks(self, hand):
@ -416,10 +430,6 @@ class Winamax(HandHistoryConverter):
# Return any uncalled bet. # Return any uncalled bet.
committed = sorted([ (v,k) for (k,v) in hand.pot.committed.items()]) committed = sorted([ (v,k) for (k,v) in hand.pot.committed.items()])
#print "DEBUG: committed: %s" % committed #print "DEBUG: committed: %s" % committed
#ERROR below. lastbet is correct in most cases, but wrong when
# additional money is committed to the pot in cash games
# due to an additional sb being posted. (Speculate that
# posting sb+bb is also potentially wrong)
returned = {} returned = {}
lastbet = committed[-1][0] - committed[-2][0] lastbet = committed[-1][0] - committed[-2][0]
if lastbet > 0: # uncalled if lastbet > 0: # uncalled
@ -430,14 +440,29 @@ class Winamax(HandHistoryConverter):
collectees = [] collectees = []
tp = self.re_Total.search(hand.handText)
rake = tp.group('RAKE')
if rake == None:
rake = 0
for m in self.re_CollectPot.finditer(hand.handText): for m in self.re_CollectPot.finditer(hand.handText):
collectees.append([m.group('PNAME'), m.group('POT')]) collectees.append([m.group('PNAME'), m.group('POT')])
#print "DEBUG: Total pot: %s" % tp.groupdict()
#print "DEBUG: According to pot: %s" % total
#print "DEBUG: Rake: %s" % rake
if len(collectees) == 1:
plyr, p = collectees[0]
# p may be wrong, use calculated total - rake
p = total - Decimal(rake)
#print "DEBUG: len1: addCollectPot(%s,%s)" %(plyr, p)
hand.addCollectPot(player=plyr,pot=p)
else:
for plyr, p in collectees: for plyr, p in collectees:
if plyr in returned.keys() and Decimal(p) - returned[plyr] == 0: if plyr in returned.keys():
p = Decimal(p) - returned[plyr] p = Decimal(p) - returned[plyr]
if p > 0: if p > 0:
print "DEBUG: addCollectPot(%s,%s)" %(plyr, p) #print "DEBUG: addCollectPot(%s,%s)" %(plyr, p)
hand.addCollectPot(player=plyr,pot=p) hand.addCollectPot(player=plyr,pot=p)
def readShownCards(self,hand): def readShownCards(self,hand):

View File

@ -35,11 +35,15 @@ import Xlib.display
# FPDB modules # FPDB modules
from TableWindow import Table_Window from TableWindow import Table_Window
import Configuration
# We might as well do this once and make them globals # We might as well do this once and make them globals
disp = Xlib.display.Display() disp = Xlib.display.Display()
root = disp.screen().root root = disp.screen().root
c = Configuration.Config()
log = Configuration.get_logger("logging.conf", "hud", log_dir=c.dir_log, log_file='HUD-log.txt')
class Table(Table_Window): class Table(Table_Window):
def find_table_parameters(self): def find_table_parameters(self):
@ -56,14 +60,18 @@ class Table(Table_Window):
self.number = None self.number = None
for listing in os.popen('xwininfo -root -tree').readlines(): for listing in os.popen('xwininfo -root -tree').readlines():
if re.search(self.search_string, listing, re.I): if re.search(self.search_string, listing, re.I):
log.info(listing)
mo = re.match(reg, listing, re.VERBOSE) mo = re.match(reg, listing, re.VERBOSE)
title = re.sub('\"', '', mo.groupdict()["TITLE"]) title = re.sub('\"', '', mo.groupdict()["TITLE"])
if self.check_bad_words(title): continue if self.check_bad_words(title): continue
self.number = int( mo.groupdict()["XID"], 0 ) self.number = int( mo.groupdict()["XID"], 0 )
self.title = title self.title = title
if self.number is None:
log.warning(_("Could not retrieve XID from table xwininfo. xwininfo is %s") % listing)
break break
if self.number is None: if self.number is None:
log.warning(_("No match in XTables for table '%s'.") % self.search_string)
return None return None
(self.window, self.parent) = self.get_window_from_xid(self.number) (self.window, self.parent) = self.get_window_from_xid(self.number)
@ -88,23 +96,51 @@ class Table(Table_Window):
if w.id == id: if w.id == id:
return (w, top_level) return (w, top_level)
#def get_geometry(self):
#try:
#my_geo = self.window.get_geometry()
#if self.parent is None:
#return {'x' : my_geo.x,
#'y' : my_geo.y,
#'width' : my_geo.width,
#'height' : my_geo.height
#}
#else:
#pa_geo = self.parent.get_geometry()
#return {'x' : my_geo.x + pa_geo.x,
#'y' : my_geo.y + pa_geo.y,
#'width' : my_geo.width,
#'height' : my_geo.height
#}
#except:
#return None
def get_geometry(self): def get_geometry(self):
geo_re = '''
Absolute\supper-left\sX: \s+ (?P<X>\d+) # x
.+
Absolute\supper-left\sY: \s+ (?P<Y>\d+) # y
.+
Width: \s+ (?P<W>\d+) # width
.+
Height: \s+ (?P<H>\d+) # height
'''
des_re = 'No such window with id'
listing = os.popen("xwininfo -id %d -stats" % (self.number)).read()
mo = re.search(des_re, listing)
if mo is not None:
return None # table has been destroyed
mo = re.search(geo_re, listing, re.VERBOSE|re.DOTALL)
try: try:
my_geo = self.window.get_geometry() return {'x' : int(mo.groupdict()['X']),
if self.parent is None: 'y' : int(mo.groupdict()['Y']),
return {'x' : my_geo.x, 'width' : int(mo.groupdict()['W']),
'y' : my_geo.y, 'height' : int(mo.groupdict()['H'])
'width' : my_geo.width,
'height' : my_geo.height
} }
else: except AttributeError:
pa_geo = self.parent.get_geometry()
return {'x' : my_geo.x + pa_geo.x,
'y' : my_geo.y + pa_geo.y,
'width' : my_geo.width,
'height' : my_geo.height
}
except:
return None return None
def get_window_title(self): def get_window_title(self):
@ -129,4 +165,3 @@ def treewalk(parent):
for ww in treewalk(w): for ww in treewalk(w):
yield ww yield ww
yield w yield w

4
pyfpdb/decimal.py Normal file
View File

@ -0,0 +1,4 @@
try:
from cdecimal import *
except ImportError:
from decimal import *

View File

@ -116,7 +116,10 @@ import GuiGraphViewer
import GuiTourneyGraphViewer import GuiTourneyGraphViewer
import GuiSessionViewer import GuiSessionViewer
import GuiReplayer import GuiReplayer
import GuiStove try:
import GuiStove
except:
print _("GuiStove not found. If you want to use it please install pypoker-eval.")
import SQL import SQL
import Database import Database
import Configuration import Configuration
@ -256,7 +259,6 @@ class fpdb:
, ('PyGTK', '.'.join([str(x) for x in gtk.pygtk_version])) , ('PyGTK', '.'.join([str(x) for x in gtk.pygtk_version]))
, ('matplotlib', matplotlib_version) , ('matplotlib', matplotlib_version)
, ('numpy', numpy_version) , ('numpy', numpy_version)
, ('sqlite3', sqlite3_version)
, ('sqlite', sqlite_version) , ('sqlite', sqlite_version)
, ('fpdb version', VERSION) , ('fpdb version', VERSION)
, ('database used', self.settings['db-server']) , ('database used', self.settings['db-server'])

View File

@ -83,7 +83,6 @@ class Importer:
self.pos_in_file = {} # dict to remember how far we have read in the file self.pos_in_file = {} # dict to remember how far we have read in the file
#Set defaults #Set defaults
self.callHud = self.config.get_import_parameters().get("callFpdbHud") self.callHud = self.config.get_import_parameters().get("callFpdbHud")
self.cacheSessions = self.config.get_import_parameters().get("cacheSessions")
# CONFIGURATION OPTIONS # CONFIGURATION OPTIONS
self.settings.setdefault("handCount", 0) self.settings.setdefault("handCount", 0)
@ -470,12 +469,20 @@ class Importer:
handlist = hhc.getProcessedHands() handlist = hhc.getProcessedHands()
self.pos_in_file[file] = hhc.getLastCharacterRead() self.pos_in_file[file] = hhc.getLastCharacterRead()
to_hud = [] to_hud = []
hp_bulk = []
ha_bulk = []
i = 0
for hand in handlist: for hand in handlist:
i += 1
if hand is not None: if hand is not None:
hand.prepInsert(self.database, printtest = self.settings['testData']) hand.prepInsert(self.database, printtest = self.settings['testData'])
try: try:
hand.insert(self.database, printtest = self.settings['testData']) hp_inserts, ha_inserts = hand.insert(self.database, hp_data = hp_bulk,
ha_data = ha_bulk, insert_data = len(handlist)==i,
printtest = self.settings['testData'])
hp_bulk += hp_inserts
ha_bulk += ha_inserts
except Exceptions.FpdbHandDuplicate: except Exceptions.FpdbHandDuplicate:
duplicates += 1 duplicates += 1
else: else:
@ -492,13 +499,6 @@ class Importer:
hand.updateHudCache(self.database) hand.updateHudCache(self.database)
self.database.commit() self.database.commit()
# Call sessionsCache update
if self.cacheSessions:
for hand in handlist:
if hand is not None and not hand.is_duplicate:
hand.updateSessionsCache(self.database)
self.database.commit()
#pipe the Hands.id out to the HUD #pipe the Hands.id out to the HUD
if self.caller: if self.caller:
for hid in to_hud: for hid in to_hud:

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3737
pyfpdb/locale/fpdb-es_ES.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -6,11 +6,13 @@ python /usr/share/doc/python-2.*/examples/Tools/i18n/pygettext.py --output-dir=l
echo "merging template with existing translations" echo "merging template with existing translations"
msgmerge --update locale/fpdb-de_DE.po locale/fpdb-en_GB.pot msgmerge --update locale/fpdb-de_DE.po locale/fpdb-en_GB.pot
msgmerge --update locale/fpdb-es_ES.po locale/fpdb-en_GB.pot
msgmerge --update locale/fpdb-fr_FR.po locale/fpdb-en_GB.pot msgmerge --update locale/fpdb-fr_FR.po locale/fpdb-en_GB.pot
msgmerge --update locale/fpdb-hu_HU.po locale/fpdb-en_GB.pot msgmerge --update locale/fpdb-hu_HU.po locale/fpdb-en_GB.pot
echo "compiling mo files" echo "compiling mo files"
python /usr/share/doc/python-2.*/examples/Tools/i18n/msgfmt.py --output-file=locale/de/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po python /usr/share/doc/python-2.*/examples/Tools/i18n/msgfmt.py --output-file=locale/de/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po
python /usr/share/doc/python-2.*/examples/Tools/i18n/msgfmt.py --output-file=locale/es/LC_MESSAGES/fpdb.mo locale/fpdb-es_ES.po
python /usr/share/doc/python-2.*/examples/Tools/i18n/msgfmt.py --output-file=locale/fr/LC_MESSAGES/fpdb.mo locale/fpdb-fr_FR.po python /usr/share/doc/python-2.*/examples/Tools/i18n/msgfmt.py --output-file=locale/fr/LC_MESSAGES/fpdb.mo locale/fpdb-fr_FR.po
python /usr/share/doc/python-2.*/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po python /usr/share/doc/python-2.*/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po

View File

@ -47,6 +47,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +91,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -271,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 4, 'totalProfit': 4,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -611,6 +665,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -647,6 +709,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -705,6 +768,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -741,6 +812,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -1,98 +1,4 @@
{ u'Player1': { 'card1': 0, { u'Hero': { 'card1': 13,
'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': 4,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 3,
'sitout': False,
'startCards': 0,
'startCash': 3413,
'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'Hero': { 'card1': 13,
'card2': 46, 'card2': 46,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,
@ -141,6 +47,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +91,110 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': 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': 4,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 3,
'sitout': False,
'startCards': 0,
'startCash': 3413,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +253,14 @@
'street0_3BDone': True, 'street0_3BDone': True,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True, 'street1Aggr': True,
'street1Bets': 1, 'street1Bets': 1,
'street1CBChance': True, 'street1CBChance': True,
@ -271,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 2700, 'totalProfit': 2700,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -25, 'totalProfit': -25,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': True, 'street0_4BChance': True,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -100, 'totalProfit': -100,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -611,6 +665,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': True, 'street0_4BChance': True,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -647,6 +709,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2867, 'totalProfit': -2867,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -705,6 +768,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -741,6 +812,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -0,0 +1,34 @@
<SESSION time="1291146443" tableName="Toulouse-2" id="1069.21.2" type="ring" money="€" screenName="Hero" game="omaha-hi" gametype="pot-limit"/>
<HAND time="1291155932" id="6351562000" index="0" blinds="5 €/10 €" stakes="10 €/10 €">
<SEAT position="0" name="Hero" balance="100000"/>
<SEAT position="4" name="Villain" balance="50000"/>
<DEALER position="0"/>
<BLIND position="0" amount="500" penalty="0"/>
<BLIND position="4" amount="1000" penalty="0"/>
<HOLE position="4">--</HOLE>
<HOLE position="0">8h</HOLE>
<HOLE position="4">--</HOLE>
<HOLE position="0">2c</HOLE>
<HOLE position="4">--</HOLE>
<HOLE position="0">Qc</HOLE>
<HOLE position="4">--</HOLE>
<HOLE position="0">Ah</HOLE>
<BET position="0" amount="2500"/>
<BET position="4" amount="2000"/>
<SWEEP rake="150" tax="100">5750</SWEEP>
<COMMUNITY>6s, 8c, Jh</COMMUNITY>
<BET position="4" amount="6000"/>
<BET position="0" amount="6000"/>
<SWEEP rake="150" tax="100">17750</SWEEP>
<COMMUNITY>6h</COMMUNITY>
<BET position="4" amount="0"/>
<BET position="0" amount="0"/>
<SWEEP rake="150" tax="100">17750</SWEEP>
<COMMUNITY>4c</COMMUNITY>
<BET position="4" amount="18000"/>
<FOLD position="0"/>
<PUSH position="4" amount="18000"/>
<SWEEP rake="150" tax="100">17750</SWEEP>
<XSHOW position="4"/>
<WIN position="4" amount="17750" pot="0" potAmount="17750"/>
</HAND>

View File

@ -0,0 +1 @@
(15, 'EUR', 'ring', 'hold', 'omahahi', 'pl', 'h', 500, 1000, 1000, 2000)

View File

@ -0,0 +1,31 @@
{ 'boardcard1': 44,
'boardcard2': 0,
'boardcard3': 0,
'boardcard4': 5,
'boardcard5': 29,
'gametypeId': 1,
'importTime': None,
'maxSeats': 10,
'playersAtShowdown': 0,
'playersAtStreet1': 2,
'playersAtStreet2': 2,
'playersAtStreet3': 2,
'playersAtStreet4': 0,
'playersVpi': 2,
'seats': 2,
'sessionId': 1,
'showdownPot': 0,
'siteHandNo': u'6351562000',
'startTime': datetime.datetime(2011, 2, 9, 11, 58),
'street0Raises': 1,
'street1Pot': 18000,
'street1Raises': 1,
'street2Pot': 18000,
'street2Raises': 0,
'street3Pot': 36000,
'street3Raises': 1,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Toulouse-2',
'texture': None,
'tourneyId': None}

View File

@ -0,0 +1,206 @@
{ u'Hero': { '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': True,
'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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': True,
'otherRaisedStreet4': False,
'position': 'S',
'raiseFirstInChance': True,
'raisedFirstIn': True,
'rake': 0,
'sawShowdown': False,
'seatNo': u'0',
'sitout': False,
'startCards': 0,
'startCash': 10000000,
'street0Aggr': True,
'street0Bets': 1,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 1,
'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,
'success_Steal': False,
'totalProfit': -9000,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Villain': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': True,
'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': 300,
'sawShowdown': False,
'seatNo': u'4',
'sitout': False,
'startCards': 0,
'startCash': 5000000,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True,
'street1Bets': 1,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': True,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': True,
'street3Bets': 1,
'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,
'success_Steal': False,
'totalProfit': 8700,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 17700,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.0,
'wonWhenSeenStreet4': 0.0}}

View File

@ -47,6 +47,14 @@
'street0_3BDone': True, 'street0_3BDone': True,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +91,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -98, 'totalProfit': -98,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': True, 'street0_4BChance': True,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -271,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': True, 'street0_4BChance': True,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 96, 'totalProfit': 96,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -611,6 +665,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -647,6 +709,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -3, 'totalProfit': -3,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -705,6 +768,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -741,6 +812,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -47,6 +47,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +91,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -5, 'totalProfit': -5,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True, 'street1Aggr': True,
'street1Bets': 1, 'street1Bets': 1,
'street1CBChance': True, 'street1CBChance': True,
@ -177,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 50, 'totalProfit': 50,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -271,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -50, 'totalProfit': -50,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -13,6 +13,7 @@
'playersAtStreet4': 0, 'playersAtStreet4': 0,
'playersVpi': 2, 'playersVpi': 2,
'seats': 5, 'seats': 5,
'sessionId': 1,
'showdownPot': 0, 'showdownPot': 0,
'siteHandNo': u'25325990000', 'siteHandNo': u'25325990000',
'startTime': datetime.datetime(2010, 12, 20, 15, 0, tzinfo=pytz.utc), 'startTime': datetime.datetime(2010, 12, 20, 15, 0, tzinfo=pytz.utc),

View File

@ -47,6 +47,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': True, 'street0_4BChance': True,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +91,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -7500, 'totalProfit': -7500,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': True, 'street0_4BChance': True,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': True, 'street0_4BChance': True,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -271,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -15000, 'totalProfit': -15000,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': True, 'street0_4BChance': True,
'street0_4BDone': True, 'street0_4BDone': True,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True, 'street1Aggr': True,
'street1Bets': 1, 'street1Bets': 1,
'street1CBChance': True, 'street1CBChance': True,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -135000, 'totalProfit': -135000,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': True, 'street0_3BDone': True,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 157200, 'totalProfit': 157200,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -14,6 +14,7 @@
'playersAtStreet4': 0, 'playersAtStreet4': 0,
'playersVpi': 1, 'playersVpi': 1,
'seats': 4, 'seats': 4,
'sessionId': 1,
'showdownPot': 0, 'showdownPot': 0,
'siteHandNo': u'25585334444', 'siteHandNo': u'25585334444',
'startTime': datetime.datetime(2010, 11, 15, 23, 8, tzinfo=pytz.utc), 'startTime': datetime.datetime(2010, 11, 15, 23, 8, tzinfo=pytz.utc),

View File

@ -47,6 +47,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +91,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -25000, 'totalProfit': -25000,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -12500, 'totalProfit': -12500,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -271,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 37500, 'totalProfit': 37500,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -0,0 +1 @@
(1, 'USD', 'ring', 'draw', 'fivedraw', 'fl', 'h', 5, 10, 10, 20)

View File

@ -0,0 +1,31 @@
{ 'boardcard1': 0,
'boardcard2': 0,
'boardcard3': 0,
'boardcard4': 0,
'boardcard5': 0,
'gametypeId': 1,
'importTime': None,
'maxSeats': 6,
'playersAtShowdown': 3,
'playersAtStreet1': 4,
'playersAtStreet2': 3,
'playersAtStreet3': 3,
'playersAtStreet4': 0,
'playersVpi': 4,
'seats': 5,
'sessionId': 1,
'showdownPot': 0,
'siteHandNo': u'25319060000',
'startTime': datetime.datetime(2010, 11, 6, 16, 4, tzinfo=pytz.utc),
'street0Raises': 1,
'street1Pot': 0,
'street1Raises': 2,
'street2Pot': 0,
'street2Raises': 0,
'street3Pot': 0,
'street3Raises': 0,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Shady Oak',
'texture': None,
'tourneyId': None}

View File

@ -0,0 +1,515 @@
{ u'Hero': { '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': True,
'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,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': 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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 1,
'raiseFirstInChance': True,
'raisedFirstIn': True,
'rake': 10,
'sawShowdown': True,
'seatNo': 1,
'sitout': False,
'startCards': 0,
'startCash': 273,
'street0Aggr': True,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True,
'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,
'success_Steal': False,
'totalProfit': 130,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 190,
'wonAtSD': 1.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.0,
'wonWhenSeenStreet4': 0.0},
u'Player2': { '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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 0,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': True,
'seatNo': 2,
'sitout': False,
'startCards': 0,
'startCash': 404,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': 0,
'street0_SqueezeDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 1,
'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,
'success_Steal': False,
'totalProfit': -60,
'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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 'S',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': True,
'seatNo': 3,
'sitout': False,
'startCards': 0,
'startCash': 188,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': 1,
'street0_SqueezeDone': False,
'street1Aggr': True,
'street1Bets': 1,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 1,
'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,
'success_Steal': False,
'totalProfit': -60,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player4': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': True,
'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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 'B',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 4,
'sitout': False,
'startCards': 0,
'startCash': 200,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': 1,
'street0_SqueezeDone': 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': 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,
'success_Steal': False,
'totalProfit': -20,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}}

View File

@ -0,0 +1 @@
(1, 'USD', 'ring', 'draw', 'fivedraw', 'nl', 'h', 25, 50, 50, 100)

View File

@ -0,0 +1,31 @@
{ 'boardcard1': 0,
'boardcard2': 0,
'boardcard3': 0,
'boardcard4': 0,
'boardcard5': 0,
'gametypeId': 117,
'importTime': None,
'maxSeats': 6,
'playersAtShowdown': 2,
'playersAtStreet1': 4,
'playersAtStreet2': 2,
'playersAtStreet3': 2,
'playersAtStreet4': 0,
'playersVpi': 4,
'seats': 6,
'sessionId': None,
'showdownPot': 0,
'siteHandNo': u'25340557279',
'startTime': datetime.datetime(2010, 11, 7, 8, 0, 26, tzinfo=pytz.utc),
'street0Raises': 1,
'street1Pot': 0,
'street1Raises': 1,
'street2Pot': 0,
'street2Raises': 0,
'street3Pot': 0,
'street3Raises': 0,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Calla Lily',
'texture': None,
'tourneyId': None}

View File

@ -0,0 +1,618 @@
{ u'Hero': { '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': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 5,
'sitout': False,
'startCards': 0,
'startCash': 5000,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': 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': 0,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 60,
'sawShowdown': True,
'seatNo': 1,
'sitout': False,
'startCards': 0,
'startCash': 5880,
'street0Aggr': True,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True,
'street1Bets': 1,
'street1CBChance': True,
'street1CBDone': True,
'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,
'success_Steal': False,
'totalProfit': 640,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 1140,
'wonAtSD': 1.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.0,
'wonWhenSeenStreet4': 0.0},
u'Player2': { '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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 'S',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': True,
'seatNo': 2,
'sitout': False,
'startCards': 0,
'startCash': 6010,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': 0,
'street0_SqueezeDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 1,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': True,
'street2CheckCallRaiseDone': True,
'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,
'success_Steal': False,
'totalProfit': -500,
'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': True,
'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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 'B',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 3,
'sitout': False,
'startCards': 0,
'startCash': 1860,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': 1,
'street0_SqueezeDone': 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': True,
'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,
'success_Steal': False,
'totalProfit': -100,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player4': { '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': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 4,
'sitout': False,
'startCards': 0,
'startCash': 3450,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': 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': True,
'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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 1,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 6,
'sitout': False,
'startCards': 0,
'startCash': 1815,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 2,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': 1,
'street0_SqueezeDone': 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': True,
'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,
'success_Steal': False,
'totalProfit': -100,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}}

View File

@ -0,0 +1,31 @@
{ 'boardcard1': 0,
'boardcard2': 0,
'boardcard3': 0,
'boardcard4': 0,
'boardcard5': 0,
'gametypeId': 1,
'importTime': None,
'maxSeats': 6,
'playersAtShowdown': 2,
'playersAtStreet1': 2,
'playersAtStreet2': 2,
'playersAtStreet3': 2,
'playersAtStreet4': 0,
'playersVpi': 1,
'seats': 4,
'sessionId': None,
'showdownPot': 0,
'siteHandNo': u'25340539000',
'startTime': datetime.datetime(2010, 11, 7, 7, 58, tzinfo=pytz.utc),
'street0Raises': 0,
'street1Pot': 0,
'street1Raises': 1,
'street2Pot': 0,
'street2Raises': 0,
'street3Pot': 0,
'street3Raises': 0,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Axe Handle',
'texture': None,
'tourneyId': None}

View File

@ -0,0 +1,412 @@
{ u'Hero': { '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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 'B',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': True,
'seatNo': 3,
'sitout': False,
'startCards': 0,
'startCash': 2713,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 1,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': True,
'street2CheckCallRaiseDone': True,
'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,
'success_Steal': False,
'totalProfit': -50,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player2': { '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': 2,
'sitout': False,
'startCards': 0,
'startCash': 1470,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': False,
'totalProfit': -10,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player4': { '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': 1,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 5,
'sawShowdown': True,
'seatNo': 4,
'sitout': False,
'startCards': 0,
'startCash': 800,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True,
'street1Bets': 1,
'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,
'success_Steal': False,
'totalProfit': 55,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 105,
'wonAtSD': 1.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.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': 0,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 6,
'sitout': False,
'startCards': 0,
'startCash': 2693,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': False,
'totalProfit': 0,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}}

View File

@ -0,0 +1 @@
(1, 'USD', 'ring', 'draw', 'badugi', 'fl', 'l', 2, 5, 5, 10)

View File

@ -0,0 +1,31 @@
{ 'boardcard1': 0,
'boardcard2': 0,
'boardcard3': 0,
'boardcard4': 0,
'boardcard5': 0,
'gametypeId': 2,
'importTime': None,
'maxSeats': 7,
'playersAtShowdown': 3,
'playersAtStreet1': 4,
'playersAtStreet2': 4,
'playersAtStreet3': 3,
'playersAtStreet4': 0,
'playersVpi': 3,
'seats': 7,
'sessionId': None,
'showdownPot': 0,
'siteHandNo': u'25340585274',
'startTime': datetime.datetime(2010, 11, 7, 8, 2, 56, tzinfo=pytz.utc),
'street0Raises': 0,
'street1Pot': 0,
'street1Raises': 1,
'street2Pot': 0,
'street2Raises': 1,
'street3Pot': 0,
'street3Raises': 1,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Laurelvale',
'texture': None,
'tourneyId': None}

View File

@ -0,0 +1,721 @@
{ u'Hero': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': True,
'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': True,
'otherRaisedStreet2': True,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 'B',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 1,
'sitout': False,
'startCards': 0,
'startCash': 100,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 1,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': True,
'street2CheckCallRaiseDone': True,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': True,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'success_Steal': False,
'totalProfit': -10,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player2': { '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': 4,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 2,
'sitout': False,
'startCards': 0,
'startCash': 275,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': 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'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': 3,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 3,
'sitout': False,
'startCards': 0,
'startCash': 345,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': 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'Player4': { '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': True,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 2,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 5,
'sawShowdown': True,
'seatNo': 4,
'sitout': False,
'startCards': 0,
'startCash': 90,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True,
'street1Bets': 1,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': True,
'street2CBDone': False,
'street2Calls': 1,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': True,
'street3Bets': 1,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': True,
'street3CheckCallRaiseDone': True,
'street3Raises': 0,
'street3Seen': True,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'success_Steal': False,
'totalProfit': 65,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 95,
'wonAtSD': 1.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': True,
'otherRaisedStreet4': False,
'position': 1,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': True,
'seatNo': 5,
'sitout': False,
'startCards': 0,
'startCash': 165,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 1,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': True,
'street2Bets': 1,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 1,
'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,
'success_Steal': False,
'totalProfit': -30,
'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': 0,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 6,
'sitout': False,
'startCards': 0,
'startCash': 236,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': 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'Player7': { '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': True,
'otherRaisedStreet2': True,
'otherRaisedStreet3': True,
'otherRaisedStreet4': False,
'position': 'S',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': True,
'seatNo': 7,
'sitout': False,
'startCards': 0,
'startCash': 220,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 1,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 1,
'street2CheckCallRaiseChance': True,
'street2CheckCallRaiseDone': True,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 1,
'street3CheckCallRaiseChance': True,
'street3CheckCallRaiseDone': True,
'street3Raises': 0,
'street3Seen': True,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'success_Steal': False,
'totalProfit': -30,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}}

View File

@ -0,0 +1 @@
(1, 'USD', 'ring', 'hold', 'holdem', 'fl', 'h', 50, 100, 100, 200)

View File

@ -0,0 +1,31 @@
{ 'boardcard1': 35,
'boardcard2': 41,
'boardcard3': 52,
'boardcard4': 17,
'boardcard5': 29,
'gametypeId': 99,
'importTime': None,
'maxSeats': 9,
'playersAtShowdown': 0,
'playersAtStreet1': 3,
'playersAtStreet2': 2,
'playersAtStreet3': 2,
'playersAtStreet4': 0,
'playersVpi': 3,
'seats': 7,
'sessionId': 1,
'showdownPot': 0,
'siteHandNo': u'26321049583',
'startTime': datetime.datetime(2010, 12, 12, 1, 26, 12, tzinfo=pytz.utc),
'street0Raises': 1,
'street1Pot': 1150,
'street1Raises': 2,
'street2Pot': 1550,
'street2Raises': 1,
'street3Pot': 1750,
'street3Raises': 1,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Slaw',
'texture': None,
'tourneyId': None}

View File

@ -0,0 +1,721 @@
{ u'Hero': { 'card1': 47,
'card2': 9,
'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': 9,
'sitout': False,
'startCards': 100,
'startCash': 7875,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': 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': True,
'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': True,
'otherRaisedStreet2': True,
'otherRaisedStreet3': True,
'otherRaisedStreet4': False,
'position': 2,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 1,
'sitout': False,
'startCards': 0,
'startCash': 2100,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True,
'street1Bets': 1,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 1,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 1,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': True,
'street3CheckCallRaiseDone': True,
'street3Raises': 0,
'street3Seen': True,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'success_Steal': False,
'totalProfit': -600,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player2': { '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': 1,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 2,
'sitout': False,
'startCards': 0,
'startCash': 3150,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': 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'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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 0,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 75,
'sawShowdown': False,
'seatNo': 3,
'sitout': False,
'startCards': 0,
'startCash': 1950,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': True,
'street2Bets': 1,
'street2CBChance': True,
'street2CBDone': True,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': True,
'street3Bets': 1,
'street3CBChance': True,
'street3CBDone': True,
'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,
'success_Steal': False,
'totalProfit': 875,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 1475,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.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': 'S',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 6,
'sitout': False,
'startCards': 0,
'startCash': 2000,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': False,
'totalProfit': -50,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player7': { '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': 7,
'sitout': False,
'startCards': 0,
'startCash': 4050,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': False,
'totalProfit': -100,
'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': True,
'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': True,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 4,
'raiseFirstInChance': True,
'raisedFirstIn': True,
'rake': 0,
'sawShowdown': False,
'seatNo': 8,
'sitout': False,
'startCards': 0,
'startCash': 7050,
'street0Aggr': True,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': True,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': True,
'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,
'success_Steal': False,
'totalProfit': -200,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}}

View File

@ -13,6 +13,7 @@
'playersAtStreet4': 0, 'playersAtStreet4': 0,
'playersVpi': 1, 'playersVpi': 1,
'seats': 6, 'seats': 6,
'sessionId': 1,
'showdownPot': 0, 'showdownPot': 0,
'siteHandNo': u'20000000801', 'siteHandNo': u'20000000801',
'startTime': datetime.datetime(2010, 8, 13, 19, 59, 2, tzinfo=pytz.utc), 'startTime': datetime.datetime(2010, 8, 13, 19, 59, 2, tzinfo=pytz.utc),

View File

@ -1,4 +1,107 @@
{ u'Player1': { 'card1': 0, { u'Hero': { 'card1': 1,
'card2': 34,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': True,
'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': True,
'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': 5,
'sitout': False,
'startCards': 8,
'startCash': 200,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': True,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': 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'Player1': { 'card1': 0,
'card2': 0, 'card2': 0,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,
@ -47,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -271,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 3, 'totalProfit': 3,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -1, 'totalProfit': -1,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -374,100 +513,6 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'Hero': { 'card1': 1,
'card2': 34,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': True,
'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': True,
'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': 5,
'sitout': False,
'startCards': 8,
'startCash': 200,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': True,
'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'Player6': { 'card1': 0, u'Player6': { 'card1': 0,
'card2': 0, 'card2': 0,
'card3': 0, 'card3': 0,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -13,6 +13,7 @@
'playersAtStreet4': 0, 'playersAtStreet4': 0,
'playersVpi': 0, 'playersVpi': 0,
'seats': 9, 'seats': 9,
'sessionId': 1,
'showdownPot': 0, 'showdownPot': 0,
'siteHandNo': u'22488827305', 'siteHandNo': u'22488827305',
'startTime': datetime.datetime(2010, 7, 21, 19, 13, tzinfo=pytz.utc), 'startTime': datetime.datetime(2010, 7, 21, 19, 13, tzinfo=pytz.utc),

View File

@ -1,4 +1,107 @@
{ u'MANUTD': { 'card1': 0, { u'Hero': { 'card1': 50,
'card2': 16,
'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': 6,
'sitout': False,
'startCards': 37,
'startCash': 200,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': False,
'totalProfit': 2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 4,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'MANUTD': { 'card1': 0,
'card2': 0, 'card2': 0,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,
@ -47,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -186,100 +307,6 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'Hero': { 'card1': 50,
'card2': 16,
'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': 6,
'sitout': False,
'startCards': 37,
'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': 2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 4,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'proud2Bwhack': { 'card1': 0, u'proud2Bwhack': { 'card1': 0,
'card2': 0, 'card2': 0,
'card3': 0, 'card3': 0,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -611,6 +665,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -647,6 +709,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -705,6 +768,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -741,6 +812,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -799,6 +871,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -835,6 +915,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -13,6 +13,7 @@
'playersAtStreet4': 0, 'playersAtStreet4': 0,
'playersVpi': 3, 'playersVpi': 3,
'seats': 6, 'seats': 6,
'sessionId': 1,
'showdownPot': 0, 'showdownPot': 0,
'siteHandNo': u'18932478237', 'siteHandNo': u'18932478237',
'startTime': datetime.datetime(2010, 3, 3, 16, 37, 56, tzinfo=pytz.utc), 'startTime': datetime.datetime(2010, 3, 3, 16, 37, 56, tzinfo=pytz.utc),

View File

@ -47,6 +47,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +91,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +194,110 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': 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'Hero': { 'card1': 15,
'card2': 10,
'card3': 42,
'card4': 25,
'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': 1,
'sitout': False,
'startCards': 0,
'startCash': 209,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -271,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -16, 'totalProfit': -16,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -280,100 +410,6 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'Hero': { 'card1': 15,
'card2': 10,
'card3': 42,
'card4': 25,
'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': 1,
'sitout': False,
'startCards': 0,
'startCash': 209,
'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'Timoha777': { 'card1': 24, u'Timoha777': { 'card1': 24,
'card2': 23, 'card2': 23,
'card3': 16, 'card3': 16,
@ -423,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 53, 'totalProfit': 53,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True, 'street1Aggr': True,
'street1Bets': 1, 'street1Bets': 1,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -41, 'totalProfit': -41,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -1,98 +1,4 @@
{ u'Hero': { 'card1': 43, { u'FILL A RACK': { 'card1': 0,
'card2': 1,
'card3': 9,
'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': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 5,
'sitout': False,
'startCards': 0,
'startCash': 26550,
'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': -50,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'FILL A RACK': { 'card1': 0,
'card2': 0, 'card2': 0,
'card3': 26, 'card3': 26,
'card4': 0, 'card4': 0,
@ -141,6 +47,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +91,110 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -50,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Hero': { 'card1': 43,
'card2': 1,
'card3': 9,
'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': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 5,
'sitout': False,
'startCards': 0,
'startCash': 26550,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': False,
'totalProfit': -50, 'totalProfit': -50,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True, 'street1Aggr': True,
'street1Bets': 1, 'street1Bets': 1,
'street1CBChance': True, 'street1CBChance': True,
@ -271,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 600, 'totalProfit': 600,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -50, 'totalProfit': -50,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -50, 'totalProfit': -50,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -50, 'totalProfit': -50,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -611,6 +665,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -647,6 +709,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -350, 'totalProfit': -350,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -13,6 +13,7 @@
'playersAtStreet4': 0, 'playersAtStreet4': 0,
'playersVpi': 3, 'playersVpi': 3,
'seats': 7, 'seats': 7,
'sessionId': 1,
'showdownPot': 0, 'showdownPot': 0,
'siteHandNo': u'26190453000', 'siteHandNo': u'26190453000',
'startTime': datetime.datetime(2010, 12, 7, 9, 10, 10, tzinfo=pytz.utc), 'startTime': datetime.datetime(2010, 12, 7, 9, 10, 10, tzinfo=pytz.utc),

View File

@ -47,6 +47,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +91,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -271,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -22, 'totalProfit': -22,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -5, 'totalProfit': -5,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -42, 'totalProfit': -42,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -611,6 +665,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True, 'street1Aggr': True,
'street1Bets': 1, 'street1Bets': 1,
'street1CBChance': False, 'street1CBChance': False,
@ -647,6 +709,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 70, 'totalProfit': 70,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -13,6 +13,7 @@
'playersAtStreet4': 0, 'playersAtStreet4': 0,
'playersVpi': 2, 'playersVpi': 2,
'seats': 7, 'seats': 7,
'sessionId': 1,
'showdownPot': 0, 'showdownPot': 0,
'siteHandNo': u'26190500040', 'siteHandNo': u'26190500040',
'startTime': datetime.datetime(2010, 12, 7, 9, 19, tzinfo=pytz.utc), 'startTime': datetime.datetime(2010, 12, 7, 9, 19, tzinfo=pytz.utc),

View File

@ -47,6 +47,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': True, 'street1Aggr': True,
'street1Bets': 1, 'street1Bets': 1,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +91,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -15, 'totalProfit': -15,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -235,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -271,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -5, 'totalProfit': -5,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -517,6 +562,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -553,6 +606,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -611,6 +665,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -647,6 +709,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -2, 'totalProfit': -2,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -705,6 +768,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -741,6 +812,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 26, 'totalProfit': 26,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -1,4 +1,107 @@
{ u'player1': { 'card1': 0, { u'Hero': { 'card1': 25,
'card2': 51,
'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': True,
'raisedFirstIn': True,
'rake': 215,
'sawShowdown': True,
'seatNo': 1,
'sitout': False,
'startCards': 155,
'startCash': 2610,
'street0Aggr': True,
'street0Bets': 1,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': True,
'street0_4BDone': True,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': 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,
'success_Steal': False,
'totalProfit': 120,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 325,
'wonAtSD': 1.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.0,
'wonWhenSeenStreet4': 0.0},
u'player1': { 'card1': 0,
'card2': 0, 'card2': 0,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,
@ -47,6 +150,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -83,6 +194,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -105, 'totalProfit': -105,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -141,6 +253,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -177,6 +297,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': 0, 'totalProfit': 0,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -186,100 +307,6 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'Hero': { 'card1': 25,
'card2': 51,
'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': True,
'raisedFirstIn': True,
'rake': 215,
'sawShowdown': True,
'seatNo': 1,
'sitout': False,
'startCards': 155,
'startCash': 2610,
'street0Aggr': True,
'street0Bets': 1,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': True,
'street0_4BDone': True,
'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': 120,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 325,
'wonAtSD': 1.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.0,
'wonWhenSeenStreet4': 0.0},
u'player4': { 'card1': 0, u'player4': { 'card1': 0,
'card2': 0, 'card2': 0,
'card3': 0, 'card3': 0,
@ -329,6 +356,14 @@
'street0_3BDone': False, 'street0_3BDone': False,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -365,6 +400,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -25, 'totalProfit': -25,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,
@ -423,6 +459,14 @@
'street0_3BDone': True, 'street0_3BDone': True,
'street0_4BChance': False, 'street0_4BChance': False,
'street0_4BDone': False, 'street0_4BDone': False,
'street0_C4BChance': False,
'street0_C4BDone': False,
'street0_FoldTo3BChance': False,
'street0_FoldTo3BDone': False,
'street0_FoldTo4BChance': False,
'street0_FoldTo4BDone': False,
'street0_SqueezeChance': False,
'street0_SqueezeDone': False,
'street1Aggr': False, 'street1Aggr': False,
'street1Bets': 0, 'street1Bets': 0,
'street1CBChance': False, 'street1CBChance': False,
@ -459,6 +503,7 @@
'street4CheckCallRaiseDone': False, 'street4CheckCallRaiseDone': False,
'street4Raises': 0, 'street4Raises': 0,
'street4Seen': False, 'street4Seen': False,
'success_Steal': False,
'totalProfit': -205, 'totalProfit': -205,
'tourneyTypeId': None, 'tourneyTypeId': None,
'tourneysPlayersIds': None, 'tourneysPlayersIds': None,

View File

@ -0,0 +1,48 @@
***** History for hand R5-22678800-36 *****
Start hand: Sun Feb 13 14:14:04 GMT+0100 2011
Table: [SPEED] Dijon [22678800] (NO_LIMIT TEXAS_HOLDEM €0.02/€0.04, Real money)
User: Hero
Button: seat 10
Players in round: 6
Seat 2: Player2 (€2.26)
Seat 3: Hero (€4)
Seat 5: Player5 (€1.60)
Seat 7: Player7 (€1.35)
Seat 8: Player8 (€1.70)
Seat 10: Player10 (€3.66)
Player2 posts small blind (€0.02)
Hero posts big blind (€0.04)
---
Dealing pocket cards
Dealing to Hero: [7d, Td]
Player5 folds
Player7 folds
Player8 calls €0.04
Player10 calls €0.04
Player2 calls €0.02
Hero checks
--- Dealing flop [Jc, 4d, Qs]
Player2 checks
Hero checks
Player8 checks
Player10 checks
--- Dealing turn [Js]
Player2 checks
Hero bets €0.10
Player8 calls €0.10
Player10 folds
Player2 folds
--- Dealing river [Ts]
Hero checks
Player8 checks
---
Summary:
Main pot: €0.36 won by Hero (€0.35)
Rake taken: €0.01
Seat 2: Player2 (€2.22), net: -€0.04
Seat 3: Hero (€4.21), net: +€0.21, [7d, Td] (TWO_PAIR JACK, TEN)
Seat 5: Player5 (€1.60)
Seat 7: Player7 (€1.35)
Seat 8: Player8 (€1.56), net: -€0.14
Seat 10: Player10 (€3.62), net: -€0.04
***** End of hand R5-22678800-36 *****

Some files were not shown because too many files have changed in this diff Show More