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

This commit is contained in:
Erki Ferenc 2010-12-19 22:15:01 +01:00
commit bfe3325c9a
152 changed files with 12406 additions and 8162 deletions

View File

@ -30,14 +30,17 @@ py2exe 0.6.9 ... http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2ex
psycopg2 ... http://www.stickpeople.com/projects/python/win-psycopg/psycopg2-2.2.1.win32-py2.6-pg8.4.3-release.exe
(Note: stickpeople is the offical repository, not a community build)
(py)pokereval v138 ... http://sourceforge.net/projects/fpdb/files/fpdb/pypoker-eval-win32/pokereval-138.win32.exe/download
(Note: There are no official windows builds, this installer is built from source. A walkthrough is in the same directory as this walkthrough.
1.2/ MySQL
MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe ... http://www.mediafire.com/file/iodnnnznmj1/MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe
Install the following file:
This is an intaller built from source by gimick. There are no official mysql-python2.6 builds for windows.
MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe ... http://sourceforge.net/projects/fpdb/files/fpdb/MySQL-python-1.2.3-win32-py2.6/MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe/download
Community builds are also available from some developers. see www.codegood.com for example.
Note: This is an intaller built from source by gimick. A walkthrough to build this installer is in the same directory as this walkthrough.
Note: There is no official mysql-python2.6 build for windows. Community builds are available from some developers. see www.codegood.com for example.
1.3/ pytz fixup to work in an executable package

View File

@ -68,7 +68,6 @@ import matplotlib
import shutil
#from datetime import date
def isSystemDLL(pathname):
#dwmapi appears to be vista-specific file, not XP
if os.path.basename(pathname).lower() in ("dwmapi.dll"):
@ -112,7 +111,7 @@ def copy_file(source,destination):
shutil.copy( source, destination )
fpdbver = '0.20.906'
fpdbver = '0.21.rc1'
distdir = r'fpdb-' + fpdbver
rootdir = r'../../' #cwd is normally /packaging/windows
@ -120,6 +119,7 @@ pydir = rootdir+'pyfpdb/'
gfxdir = rootdir+'gfx/'
sys.path.append( pydir ) # allows fpdb modules to be found by options/includes below
print "\n" + r"Output will be created in "+distdir
print "*** Cleaning working folders ***"
@ -142,15 +142,19 @@ setup(
{'script': pydir+'Configuration.py', }
],
console = [ {'script': pydir+'Stove.py', }
],
options = {'py2exe': {
'packages' : ['encodings', 'matplotlib'],
'includes' : ['gio', 'cairo', 'pango', 'pangocairo', 'atk', 'gobject'
,'matplotlib.numerix.random_array'
,'AbsoluteToFpdb', 'BetfairToFpdb'
,'CarbonToFpdb', 'EverleafToFpdb'
,'FulltiltToFpdb', 'OnGameToFpdb'
,'PartyPokerToFpdb', 'PokerStarsToFpdb'
,'UltimateBetToFpdb', 'Win2dayToFpdb'
,'FulltiltToFpdb', 'iPokerToFpdb'
,'OnGameToFpdb', 'PartyPokerToFpdb'
,'PkrToFpdb', 'PokerStarsToFpdb'
,'Win2dayToFpdb', 'WinamaxToFpdb'
],
'excludes' : ['_tkagg', '_agg2', 'cocoaagg', 'fltkagg'],
'dll_excludes': ['libglade-2.0-0.dll', 'libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll'

View File

@ -0,0 +1,191 @@
pypokereval build for windows stepbystep guide
----------------------------------------------
Created by Gimick on 3rd December 2010
This walkthrough is derived with the assistance of EricBlade and the build notes
supplied by Loic Dachary <loic@dachary.org> http://dachary.org/
Content is available under the the GNU Affero General Public License version 3
0. Build environ
----------------
We are building against the 2008 runtime because Python 2.6
has the same dependency (msvcr90.dll version 9.0.21022.8)
Using winXPhome 32 bit
1 Visual studio
---------------
1.1/ Get the ISO CD from here ... http://www.microsoft.com/express/Downloads/#2008-All
1.2/ Run and install Visual C++ only, don't bother with the additional packages offered
This package will run 30 days before registration is needed
2. Python runtime
-----------------
2.1/ Install python runtime from here ...
Python 2.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi
3. Source install
-----------------
3.1/ grab sources from here
pypoker-eval v138 ... http://download.gna.org/pokersource/sources/pypoker-eval-138.0.tar.gz
poker-eval v138 ... http://download.gna.org/pokersource/sources/poker-eval-138.0.tar.gz
3.2/ unpack and place the pypoker-eval-138 directory in c:\
3.2.1/ rename to pypoker-eval
3.3/ unpack and place the poker-eval-138 directory in c:\
3.3.1/ rename to poker-eval
Important: the build will fail with bizarre missing header files if the project is placed
in a directory containing a space character - you have been warned!
4. Update source file
---------------------
4.1/ dos> write c:/pypoker-eval/pypokereval.c
change this:
#define VERSION_NAME(W) W##2_4
#define PYTHON_VERSION "2_4"
to be this:
#define VERSION_NAME(W) W##2_6
#define PYTHON_VERSION "2_6"
4.2/ save and exit
4.3/ dos> write c:/pypoker-eval/pokereval.py
Comment-out this line:
_pokereval = __import__('_pokereval_' + sys.version[0] + '_' + sys.version[2])
Insert this one in its' place:
import _pokereval_2_6 as _pokereval
4.4/ save and exit
5. Build pre-preparation
------------------------
(Here we are converting the two project definition files to 2008)
5.1 navigate to directory c:/poker-eval
5.1.1 double click poker-eval.vcproj
5.1.2 Visual studio will launch and make a conversion - accept all defaults
5.1.3 exit and save
5.2 navigate to directory c:/pypoker-eval
5.2.1 double click pypoker-eval.vcproj
5.2.2 Visual studio will launch and make a conversion - accept all defaults
5.2.3 exit
6. build preparation
--------------------
6.2 navigate to directory c:/pypoker-eval
6.2.1 double click pypoker-eval.vcproj - visual studio should launch
6.2.3 Select Build...configuration manager...
Select "active solution configuration" to "Release"
(The configuration for both projects will change to "Release")
6.2.3 Close the configuration manager
6.2.4 In the solution explorer window, hilight pythonpoker-eval / right mouse / properties...
6.2.5 In the pythonpoker-eval properties dialog,
change references to "python24" to "python26" in the following:
= C/C++/Additional Include Directories/
= linker/general/Additional library directories
= linker/input/Additional Dependencies
Change the following
= linker/generate debug info - set to No
= linker/debugging/Generate debug info - set to No
6.2.6 Apply all changes to the properties dialog and close
6.3 Exit from visual studio
7. Build poker eval
-------------------
7.1 navigate to directory c:/poker-eval
7.1.1 double click poker-eval.vcproj
7.1.2 Visual studio will launch
7.2 In the solution explorer window, hilight poker-eval / right mouse / build
7.3 There should be no errors
7.4 Exit from visual studio
8. Build pypoker eval
---------------------
8.1 navigate to directory c:/pypoker-eval
8.1.1 double click pypoker-eval.vcproj
8.1.2 Visual studio will launch
8.2 In the solution explorer window, hilight pythonpoker-eval / right mouse / build
8.3 There should be no errors (but a few warnings)
8.4 Exit from visual studio
9. packaging
------------
9.1 Navigate to c:/pypoker-eval/release
9.2 the output file is pypokereval.dll
9.3 rename this file to _pokereval_2_6.pyd
9.4 create a zip file containing :
_pokereval_2_6.pyd from releases
test.py from pypoker-eval-138.0
pokereval.py from pypoker-eval-138.0
poker-eval.vcproj from c:\poker-eval
pypoker-eval.vcproj from c:\pypoker-eval
pypokereval.c from c:\pypoker-eval
Remember to include the version (138), python 265 and win32 in the package filename
10. Installation and Testing
----------------------------
Python 2.6.5 must be installed
10.1 Extract this package to directory
10.2 Change directory to the directory in 10.1
10.3 execute dos> c:\Python26\python.exe test.py
10.4 hand-output should scroll down the screen
10.5 start the python interpreter
10.6 >>> import pokereval
10.7 No errors should be seen

View File

@ -0,0 +1,159 @@
pypokereval packaging for fpdb project
--------------------------------------
Created by Gimick on 11th December 2010
Content is available under the the GNU Affero General Public License version 3
Background
----------
The walktrough builds an unoffical python installer package for pypokereval.
In a previous walkthrough, the pypokereval dll(pyd) was built from source.
In this walkthrough, we are going to generate a windows package which will allow
the sources to be installed through distutils onto a client computer
The current situation is that there is no windows build or windows installer provided
by the package authors.
Until a package is available, the fpdb project needs some method of providing a windows
installation for the pypokereval module. This walkthrough will therefore be obsolete once
an official package becomes available.
Actually, for windows fpdb users, the majority will use a pre-built fpdb executable (which contains the
pypokereval package) Therefore, pypokereval installation will only be needed for two groups of people:
i) anyone wanting to build an fpdb package using py2exe
ii) anyone wanting to run fpdb on windows from source
Credits
-------
To loic@dachary.org at pokersource http://pokersource.sourceforge.net/
To donn.ingle@gmail.com for the tutorial here ... http://wiki.python.org/moin/Distutils/Tutorial
Official python reference here ... http://docs.python.org/distutils/index.html
Assumptions
-----------
The underlying dll(pyd) and pokereval library is built for win32 x86 platform only, so we will assume
32bit only in this walkthrough. Contributions for a x86-64 build are most welcome.
Similarly, the underlying package is built against the python 2-6 library and is valid only for that version.
The underlying package was not built with sse enabled, and therefore should work for legacy systems.
1. Install pre-requisites
-------------------------
System used for building is winXP home
1.1/ Install python runtime from here ...
Python 2.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi
1.2/ Grab pypokereval stuff from fpdb project here ...
pypokereval ... http://sourceforge.net/projects/fpdb/files/fpdb/pypoker-eval-win32/dev/pypokereval-138-win32-py265-fpdb-1.1.exe/download
1.3/ Double click the pypokereval-138-win32-py265-fpdb-1.1.exe and extract the folder to the desktop
2. Prepare a folder containing the items needing packaging
----------------------------------------------------------
dos>cd desktop
dos>mkdir temp
dos>cd temp
dos>mkdir pokereval
dos>cd pokereval
dos>copy ..\..\pypokereval-138-win32-py265-fpdb-1.1\_pokereval_2_6.pyd
dos>copy ..\..\pypokereval-138-win32-py265-fpdb-1.1\pokereval.py
dos>mkdir utils
dos>cd utils
dos>copy ..\..\..\pypokereval-138-win32-py265-fpdb-1.1\test.py
dos>cd ..
The next step is to rename the pokereval.py file to __init__.py. The reason for doing this
is that site-packages require an __init__ file to be found when the module is imported at runtime
Inserting a dummy __init__.py which simply imports pokereval does not work, the reason being that the
PokerEval class is not seen by the caller. Syntax such as "from pokereval import PokerEval"
does not work unless the pokereval.py (which defines the PokerEval class) is renamed to __init__.py.
dos> rename pokereval.py __init__.py
3. Prepare the additional packaging files
-----------------------------------------
dos>cd desktop
dos>cd temp
3.1/ setup.py
-------------
dos> edit setup.py
Include the following python code:
#==================================================
from distutils.core import setup
filelist = ["utils/*", "_pokereval_2_6.pyd"]
setup(name = "pokereval",
version = "138",
description = "pypokereval installer (unofficial)",
author = "project fpdb",
author_email = "Fpdb-main@lists.sourceforge.net",
url = "fpdb.sourceforge.net",
packages = ['pokereval'],
package_data = {'pokereval' : filelist },
long_description = """An unofficial and experimental installer for pypokereval v138
Built for 32bit windows and python v2.6.5
pokereval official project page is at http://www.pokersource.info/"""
)
#==================================================
3.2 / review directory tree
---------------------------
The following structure should now exist.
temp
|--setup.py
|--pokereval
|--_pokereval_2_6.pyd
|--__init__.py
|--utils
|--test.py
3.3 Build
---------
Navigate to the desktop/temp directory
dos>c:\Python26\python.exe setup.py bdist_wininst --plat-name=win32 --user-access-control force
Note: UAC auto seems to cause lockup on my win7 system
3.4 Complete
------------
The executable file pokereval-138.win32.exe will be in the newly-created dist folder.
3.5 Install and test
--------------------
Double click to install
Navigate to c:\python26\lib\site-packages\pokereval\test
execute dos>c:\Python26\python.exe test.py
Output should scroll down the screen

View File

@ -211,7 +211,7 @@ class HandInternal(DerivedStats):
def isDuplicate(self, session):
"""Checks if current hand already exists in db
siteHandNo ans gameTypeId have to be setted
siteHandNo ans gametypeId have to be setted
"""
return session.query(HandInternal).filter_by(
siteHandNo=self.siteHandNo, gametypeId=self.gametypeId).count()!=0

2
pyfpdb/Anonymise.py Normal file → Executable file
View File

@ -26,6 +26,8 @@ import HandHistoryConverter
import Configuration
import sys
# command line is:
# ./Anonymise.py -f <valid path to HH file> -k <name of input filter>
(options, argv) = Options.fpdb_options()
config = Configuration.Config()

View File

@ -66,7 +66,7 @@ class Carbon(HandHistoryConverter):
# Static regexes
re_SplitHands = re.compile(r'</game>\n+(?=<game)')
re_TailSplitHands = re.compile(r'(</game>)')
re_GameInfo = re.compile(r'<description type="(?P<GAME>[a-zA-Z ]+)" stakes="(?P<LIMIT>[a-zA-Z ]+) ?\(\$(?P<SB>[.0-9]+)/\$(?P<BB>[.0-9]+)?\)"/>', re.MULTILINE)
re_GameInfo = re.compile(r'<description type="(?P<GAME>[a-zA-Z ]+)" stakes="(?P<LIMIT>[a-zA-Z ]+) \(\$(?P<SB>[.0-9]+)/\$(?P<BB>[.0-9]+)\)"/>', re.MULTILINE)
re_HandInfo = re.compile(r'<game id="(?P<HID1>[0-9]+)-(?P<HID2>[0-9]+)" starttime="(?P<DATETIME>[0-9]+)" numholecards="2" gametype="2" realmoney="true" data="[0-9]+\|(?P<TABLE>[^\(]+)', re.MULTILINE)
re_Button = re.compile(r'<players dealer="(?P<BUTTON>[0-9]+)">')
re_PlayerInfo = re.compile(r'<player seat="(?P<SEAT>[0-9]+)" nickname="(?P<PNAME>.+)" balance="\$(?P<CASH>[.0-9]+)" dealtin="(?P<DEALTIN>(true|false))" />', re.MULTILINE)

View File

@ -303,6 +303,7 @@ def encodeRazzStartHand(cards):
encodeRazzList = {
'(00)A':-13,'(00)2':-12,'(00)3':-11,'(00)4':-10,'(00)5':-9,'(00)6':-8,'(00)7':-7,'(00)8':-6,'(00)9':-5,'(00)T':-4,
'(00)J':-3,'(00)Q':-2,'(00)K':-1,
'(00)0':0,
'(32)A':1,'(3A)2':2,'(2A)3':3,'(42)A':4,'(4A)2':5,'(2A)4':6,'(43)A':7,'(4A)3':8,'(3A)4':9,
'(43)2':10,'(42)3':11,'(32)4':12,'(52)A':13,'(5A)2':14,'(2A)5':15,'(53)A':16,'(5A)3':17,'(3A)5':18,'(53)2':19,
'(52)3':20,'(32)5':21,'(54)A':22,'(5A)4':23,'(4A)5':24,'(54)2':25,'(52)4':26,'(42)5':27,'(54)3':28,'(53)4':29,

View File

@ -479,12 +479,14 @@ class Import:
self.hhArchiveBase = node.getAttribute("hhArchiveBase")
self.hhBulkPath = node.getAttribute("hhBulkPath")
self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=False)
self.cacheSessions = string_to_bool(node.getAttribute("cacheSessions"), default=False)
self.sessionTimeout = string_to_bool(node.getAttribute("sessionTimeout"), default=30)
self.fastStoreHudCache = string_to_bool(node.getAttribute("fastStoreHudCache"), default=False)
self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False)
def __str__(self):
return " interval = %s\n callFpdbHud = %s\n hhArchiveBase = %s\n saveActions = %s\n fastStoreHudCache = %s\n" \
% (self.interval, self.callFpdbHud, self.hhArchiveBase, self.saveActions, self.fastStoreHudCache)
% (self.interval, self.callFpdbHud, self.hhArchiveBase, self.saveActions, self.cacheSessions, self.sessionTimeout, self.fastStoreHudCache)
class HudUI:
def __init__(self, node):
@ -1260,6 +1262,12 @@ class Config:
try: imp['saveActions'] = self.imp.saveActions
except: imp['saveActions'] = False
try: imp['cacheSessions'] = self.imp.cacheSessions
except: imp['cacheSessions'] = False
try: imp['sessionTimeout'] = self.imp.sessionTimeout
except: imp['sessionTimeout'] = 30
try: imp['saveStarsHH'] = self.imp.saveStarsHH
except: imp['saveStarsHH'] = False

View File

@ -73,7 +73,7 @@ except ImportError:
use_numpy = False
DB_VERSION = 144
DB_VERSION = 147
# Variance created as sqlite has a bunch of undefined aggregate functions.
@ -255,6 +255,13 @@ class Database:
self.database = db_params['db-databaseName']
self.host = db_params['db-host']
self.db_path = ''
gen = c.get_general_params()
self.day_start = 0
if 'day_start' in gen:
self.day_start = float(gen['day_start'])
self.sessionTimeout = float(self.import_options['sessionTimeout'])
# where possible avoid creating new SQL instance by using the global one passed in
if sql is None:
@ -307,7 +314,7 @@ class Database:
tables=self.cursor.execute(self.sql.query['list_tables'])
tables=self.cursor.fetchall()
for table in (u'Actions', u'Autorates', u'Backings', u'Gametypes', u'Hands', u'HandsActions', u'HandsPlayers', u'HudCache', u'Players', u'RawHands', u'RawTourneys', u'Settings', u'Sites', u'TourneyTypes', u'Tourneys', u'TourneysPlayers'):
for table in (u'Actions', u'Autorates', u'Backings', u'Gametypes', u'Hands', u'HandsActions', u'HandsPlayers', u'HudCache', u'SessionsCache', u'Players', u'RawHands', u'RawTourneys', u'Settings', u'Sites', u'TourneyTypes', u'Tourneys', u'TourneysPlayers'):
print "table:", table
result+="###################\nTable "+table+"\n###################\n"
rows=self.cursor.execute(self.sql.query['get'+table])
@ -690,11 +697,15 @@ class Database:
if row and row[0]:
self.hand_1day_ago = int(row[0])
d = timedelta(days=hud_days)
tz = datetime.utcnow() - datetime.today()
tz_offset = tz.seconds/3600
tz_day_start_offset = self.day_start + tz_offset
d = timedelta(days=hud_days, hours=tz_day_start_offset)
now = datetime.utcnow() - d
self.date_ndays_ago = "d%02d%02d%02d" % (now.year - 2000, now.month, now.day)
d = timedelta(days=h_hud_days)
d = timedelta(days=h_hud_days, hours=tz_day_start_offset)
now = datetime.utcnow() - d
self.h_date_ndays_ago = "d%02d%02d%02d" % (now.year - 2000, now.month, now.day)
@ -788,7 +799,7 @@ class Database:
elif h_hud_style == 'S':
h_stylekey = 'zzzzzzz' # all stylekey values should be lower than this
else:
h_stylekey = '000000'
h_stylekey = '00000000'
log.info('h_hud_style: %s' % h_hud_style)
#elif h_hud_style == 'H':
@ -904,6 +915,56 @@ class Database:
result = c.fetchall()
return result
def resetPlayerIDs(self):
self.pcache = None
def getSqlPlayerIDs(self, pnames, siteid):
result = {}
if(self.pcache == None):
self.pcache = LambdaDict(lambda key:self.insertPlayer(key[0], key[1]))
for player in pnames:
result[player] = self.pcache[(player,siteid)]
# NOTE: Using the LambdaDict does the same thing as:
#if player in self.pcache:
# #print "DEBUG: cachehit"
# pass
#else:
# self.pcache[player] = self.insertPlayer(player, siteid)
#result[player] = self.pcache[player]
return result
def insertPlayer(self, name, site_id):
result = None
_name = Charset.to_db_utf8(name)
c = self.get_cursor()
q = "SELECT name, id FROM Players WHERE siteid=%s and name=%s"
q = q.replace('%s', self.sql.query['placeholder'])
#NOTE/FIXME?: MySQL has ON DUPLICATE KEY UPDATE
#Usage:
# INSERT INTO `tags` (`tag`, `count`)
# VALUES ($tag, 1)
# ON DUPLICATE KEY UPDATE `count`=`count`+1;
#print "DEBUG: name: %s site: %s" %(name, site_id)
c.execute (q, (site_id, _name))
tmp = c.fetchone()
if (tmp == None): #new player
c.execute ("INSERT INTO Players (name, siteId) VALUES (%s, %s)".replace('%s',self.sql.query['placeholder'])
,(_name, site_id))
#Get last id might be faster here.
#c.execute ("SELECT id FROM Players WHERE name=%s", (name,))
result = self.get_last_insert_id(c)
else:
result = tmp[1]
return result
def get_last_insert_id(self, cursor=None):
ret = None
try:
@ -1168,6 +1229,7 @@ class Database:
c.execute(self.sql.query['createHandsPlayersTable'])
c.execute(self.sql.query['createHandsActionsTable'])
c.execute(self.sql.query['createHudCacheTable'])
c.execute(self.sql.query['createSessionsCacheTable'])
c.execute(self.sql.query['createBackingsTable'])
c.execute(self.sql.query['createRawHands'])
c.execute(self.sql.query['createRawTourneys'])
@ -1535,6 +1597,11 @@ class Database:
print err
#end def rebuild_hudcache
def rebuild_sessionscache(self, h_start=None, v_start=None):
"""clears sessionscache and rebuilds from the individual handsplayers records"""
#Will get to this soon
pass
def get_hero_hudcache_start(self):
"""fetches earliest stylekey from hudcache for one of hero's player ids"""
@ -1625,7 +1692,13 @@ class Database:
# NEWIMPORT CODE
###########################
def storeHand(self, p):
def storeHand(self, p, printdata = False):
if printdata:
print _("######## Hands ##########")
import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(p)
print _("###### End Hands ########")
#stores into table hands:
q = self.sql.query['store_hand']
@ -1635,7 +1708,7 @@ class Database:
c.execute(q, (
p['tableName'],
p['gameTypeId'],
p['gametypeId'],
p['siteHandNo'],
p['tourneyId'],
p['startTime'],
@ -1793,10 +1866,12 @@ class Database:
def storeHandsActions(self, hid, pids, hpid, adata, printdata = False):
#print "DEBUG: %s %s %s" %(hid, pids, adata)
if printdata:
import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(adata)
# This can be used to generate test data. Currently unused
#if printdata:
# import pprint
# pp = pprint.PrettyPrinter(indent=4)
# pp.pprint(adata)
inserts = []
for a in adata:
@ -1823,8 +1898,15 @@ class Database:
def storeHudCache(self, gid, pids, starttime, pdata):
"""Update cached statistics. If update fails because no record exists, do an insert."""
tz = datetime.utcnow() - datetime.today()
tz_offset = tz.seconds/3600
tz_day_start_offset = self.day_start + tz_offset
d = timedelta(hours=tz_day_start_offset)
starttime_offset = starttime - d
if self.use_date_in_hudcache:
styleKey = datetime.strftime(starttime, 'd%y%m%d')
styleKey = datetime.strftime(starttime_offset, 'd%y%m%d')
#styleKey = "d%02d%02d%02d" % (hand_start_time.year-2000, hand_start_time.month, hand_start_time.day)
else:
# hard-code styleKey as 'A000000' (all-time cache, no key) for now
@ -1951,6 +2033,127 @@ class Database:
#print "DEBUG: Successfully updated HudCacho using UPDATE"
pass
def storeSessionsCache(self, pids, startTime, game, pdata):
"""Update cached sessions. If update fails because no record exists, do an insert"""
THRESHOLD = timedelta(seconds=int(self.sessionTimeout * 60))
bigBet = int(Decimal(game['bb'])*200)
select_sessionscache = self.sql.query['select_sessionscache']
select_sessionscache = select_sessionscache.replace('%s', self.sql.query['placeholder'])
select_sessionscache_mid = self.sql.query['select_sessionscache_mid']
select_sessionscache_mid = select_sessionscache_mid.replace('%s', self.sql.query['placeholder'])
select_sessionscache_start = self.sql.query['select_sessionscache_start']
select_sessionscache_start = select_sessionscache_start.replace('%s', self.sql.query['placeholder'])
update_sessionscache_mid = self.sql.query['update_sessionscache_mid']
update_sessionscache_mid = update_sessionscache_mid.replace('%s', self.sql.query['placeholder'])
update_sessionscache_start = self.sql.query['update_sessionscache_start']
update_sessionscache_start = update_sessionscache_start.replace('%s', self.sql.query['placeholder'])
update_sessionscache_end = self.sql.query['update_sessionscache_end']
update_sessionscache_end = update_sessionscache_end.replace('%s', self.sql.query['placeholder'])
insert_sessionscache = self.sql.query['insert_sessionscache']
insert_sessionscache = insert_sessionscache.replace('%s', self.sql.query['placeholder'])
merge_sessionscache = self.sql.query['merge_sessionscache']
merge_sessionscache = merge_sessionscache.replace('%s', self.sql.query['placeholder'])
delete_sessions = self.sql.query['delete_sessions']
delete_sessions = delete_sessions.replace('%s', self.sql.query['placeholder'])
#Grab playerIds using hero names in HUD_Config.xml
try:
# derive list of program owner's player ids
self.hero = {} # name of program owner indexed by site id
self.hero_ids = []
# make sure at least two values in list
# so that tuple generation creates doesn't use
# () or (1,) style
for site in self.config.get_supported_sites():
result = self.get_site_id(site)
if result:
site_id = result[0][0]
self.hero[site_id] = self.config.supported_sites[site].screen_name
p_id = self.get_player_id(self.config, site, self.hero[site_id])
if p_id:
self.hero_ids.append(int(p_id))
except:
err = traceback.extract_tb(sys.exc_info()[2])[-1]
print _("Error aquiring hero ids:"), str(sys.exc_value)
print err
inserts = []
for p in pdata:
if pids[p] in self.hero_ids:
line = [0]*5
if (game['type']=='ring'): line[0] = 1 # count ring 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'): line[3] = float(Decimal(pdata[p]['totalProfit'])/Decimal(bigBet)) #sum of big bets won
line[4] = startTime
inserts.append(line)
cursor = self.get_cursor()
for row in inserts:
threshold = []
threshold.append(row[-1]-THRESHOLD)
threshold.append(row[-1]+THRESHOLD)
cursor.execute(select_sessionscache, threshold)
num = cursor.rowcount
if (num == 1):
# Try to do the update first:
#print "DEBUG: found 1 record to update"
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)
elif (num > 1):
# Multiple matches found - merge them into one session and update:
#print "DEBUG:", num, "matches found"
cursor.execute(merge_sessionscache, threshold)
merge = cursor.fetchone()
cursor.execute(delete_sessions, threshold)
cursor.execute(insert_sessionscache, merge)
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)
elif (num == 0):
# No matches found, insert new session:
insert = row + row[-1:]
insert = insert[-2:] + insert[:-2]
#print "DEBUG: No matches found. Insert record", insert
cursor.execute(insert_sessionscache, insert)
else:
# Something bad happened
pass
def isDuplicate(self, gametypeID, siteHandNo):
dup = False
c = self.get_cursor()
@ -1978,54 +2181,6 @@ class Database:
#FIXME: recognise currency
return tmp[0]
def resetPlayerIDs(self):
self.pcache = None
def getSqlPlayerIDs(self, pnames, siteid):
result = {}
if(self.pcache == None):
self.pcache = LambdaDict(lambda key:self.insertPlayer(key[0], key[1]))
for player in pnames:
result[player] = self.pcache[(player,siteid)]
# NOTE: Using the LambdaDict does the same thing as:
#if player in self.pcache:
# #print "DEBUG: cachehit"
# pass
#else:
# self.pcache[player] = self.insertPlayer(player, siteid)
#result[player] = self.pcache[player]
return result
def insertPlayer(self, name, site_id):
result = None
_name = Charset.to_db_utf8(name)
c = self.get_cursor()
q = "SELECT name, id FROM Players WHERE siteid=%s and name=%s"
q = q.replace('%s', self.sql.query['placeholder'])
#NOTE/FIXME?: MySQL has ON DUPLICATE KEY UPDATE
#Usage:
# INSERT INTO `tags` (`tag`, `count`)
# VALUES ($tag, 1)
# ON DUPLICATE KEY UPDATE `count`=`count`+1;
#print "DEBUG: name: %s site: %s" %(name, site_id)
c.execute (q, (site_id, _name))
tmp = c.fetchone()
if (tmp == None): #new player
c.execute ("INSERT INTO Players (name, siteId) VALUES (%s, %s)".replace('%s',self.sql.query['placeholder'])
,(_name, site_id))
#Get last id might be faster here.
#c.execute ("SELECT id FROM Players WHERE name=%s", (name,))
result = self.get_last_insert_id(c)
else:
result = tmp[1]
return result
def insertGameTypes(self, row):
c = self.get_cursor()

View File

@ -135,7 +135,7 @@ class DerivedStats():
#print "DEBUG: vpip: %s" %(self.hands['playersVpi'])
self.playersAtStreetX(hand) # Gives playersAtStreet1..4 and Showdown
#print "DEBUG: playersAtStreet 1:'%s' 2:'%s' 3:'%s' 4:'%s'" %(self.hands['playersAtStreet1'],self.hands['playersAtStreet2'],self.hands['playersAtStreet3'],self.hands['playersAtStreet4'])
self.streetXRaises(hand) # Empty function currently
self.streetXRaises(hand)
def assembleHandsPlayers(self, hand):
#street0VPI/vpip already called in Hand

View File

@ -106,7 +106,10 @@ or None if we fail to get the info """
m = self.re_GameInfo.search(handText)
if not m:
return None
tmp = handText[0:100]
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
log.error(_("determineGameType: Raising FpdbParseError"))
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
mg = m.groupdict()

View File

@ -33,6 +33,7 @@ class FullTiltPokerSummary(TourneySummary):
games = { # base, category
"Hold'em" : ('hold','holdem'),
'Omaha' : ('hold','omahahi'),
'Omahai Hi' : ('hold','omahahi'),
'Omaha Hi/Lo' : ('hold','omahahilo'),
'Razz' : ('stud','razz'),
'RAZZ' : ('stud','razz'),
@ -55,7 +56,7 @@ class FullTiltPokerSummary(TourneySummary):
re_TourneyInfo = re.compile(u"""
\s.*
(?P<TYPE>Tournament|Sit\s\&\sGo)\s\((?P<TOURNO>[0-9]+)\)(\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<GAME>Hold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s+
(?P<LIMIT>No\sLimit|Limit|LIMIT|Pot\sLimit)\s+
(Buy-In:\s\$(?P<BUYIN>[.\d]+)(\s\+\s\$(?P<FEE>[.\d]+))?\s+)?
(Buy-In\sChips:\s(?P<CHIPS>\d+)\s+)?

View File

@ -63,10 +63,10 @@ class Fulltilt(HandHistoryConverter):
[%(LS)s]?(?P<SB>[.0-9]+)/[%(LS)s]?(?P<BB>[.0-9]+)\s(Ante\s[%(LS)s]?(?P<ANTE>[.0-9]+)\s)?-\s
[%(LS)s]?(?P<CAP>[.0-9]+\sCap\s)?
(?P<GAMETYPE>[-\da-zA-Z\/\'\s]+)\s-\s
(?P<DATETIME>\d+:\d+:\d+\s(?P<TZ1>\w+)\s-\s\d+/\d+/\d+|\d+:\d+\s(?P<TZ2>\w+)\s-\s\w+\,\s\w+\s\d+\,\s\d+)
(?P<DATETIME>.*$)
(?P<PARTIAL>\(partial\))?\n
(?:.*?\n(?P<CANCELLED>Hand\s\#(?P=HID)\shas\sbeen\scanceled))?
''' % substitutions, re.VERBOSE|re.DOTALL)
''' % substitutions, re.MULTILINE|re.VERBOSE)
re_TourneyExtraInfo = re.compile('''(((?P<TOURNEY_NAME>[^$]+)?
(?P<CURRENCY>[%(LS)s])?(?P<BUYIN>[.0-9]+)?\s*\+\s*[%(LS)s]?(?P<FEE>[.0-9]+)?
(\s(?P<SPECIAL>(KO|Heads\sUp|Matrix\s\dx|Rebuy|Madness)))?
@ -123,6 +123,7 @@ class Fulltilt(HandHistoryConverter):
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)
# 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)
@ -225,15 +226,21 @@ class Fulltilt(HandHistoryConverter):
hand.handid = m.group('HID')
hand.tablename = m.group('TABLE')
if m.group('DATETIME'):
# This section of code should match either a single date (which is ET) or
# the last date in the header, which is also recorded in ET.
timezone = "ET"
if m.group('TZ1') == "CET" or m.group('TZ2') == "CET":
timezone = "CET"
try:
stringformat = "%H:%M:%S " + m.group('TZ1') + " - %Y/%m/%d"
hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), stringformat)
except:
stringformat = "%H:%M " + m.group('TZ2') + " - %a, %B %d, %Y"
hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), stringformat)
m1 = self.re_DateTime.finditer(m.group('DATETIME'))
datetimestr = "2000/01/01 00:00:00"
for a in m1:
if a.group('TZ2') == None:
datetimestr = "%s/%s/%s %s:%s:%s" % (a.group('Y'), a.group('M'),a.group('D'),a.group('H'),a.group('MIN'),a.group('S'))
timezone = a.group('TZ')
hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S")
else: # Short-lived date format
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')
hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%B/%d %H:%M")
hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, timezone, "UTC")

View File

@ -204,15 +204,18 @@ class GuiAutoImport (threading.Thread):
# That is not correct. It should open another dir for importing while piping the
# results to the same pipe. This means that self.path should be a a list of dirs
# to watch.
if widget.get_active(): # toggled on
if data == "autostart" or (widget == self.startButton and self.startButton.get_active()):
self.startButton.set_active(True)
# - Does the lock acquisition need to be more sophisticated for multiple dirs?
# (see comment above about what to do if pipe already open)
# - Ideally we want to release the lock if the auto-import is killed by some
# kind of exception - is this possible?
if self.settings['global_lock'].acquire(False): # returns false immediately if lock not acquired
if self.settings['global_lock'].acquire(wait=False, source="AutoImport"): # returns false immediately if lock not acquired
self.addText(_("\nGlobal lock taken ... Auto Import Started.\n"))
self.doAutoImportBool = True
widget.set_label(_(u' _Stop Auto Import '))
self.startButton.set_label(_(u' _Stop Auto Import '))
while gtk.events_pending(): # change the label NOW don't wait for the pipe to open
gtk.main_iteration(False)
if self.pipe_to_hud is None:
if Configuration.FROZEN: # if py2exe, run hud_main.exe
path = Configuration.EXEC_PATH
@ -224,15 +227,14 @@ class GuiAutoImport (threading.Thread):
command = 'pythonw "'+path+'\\HUD_main.pyw" ' + self.settings['cl_options']
else:
command = 'python "'+path+'\\HUD_main.pyw" ' + self.settings['cl_options']
# uncomment above line if you want hud_main stdout to work ... and make sure you are running fpdb.py using python.exe not pythonw.exe
bs = 0
else:
command = os.path.join(sys.path[0], 'HUD_main.pyw')
command = [command, ] + string.split(self.settings['cl_options'])
bs = 1
try:
print _("opening pipe to HUD")
try:
if Configuration.FROZEN or (os.name == "nt" and win32console.GetConsoleWindow()) == 0:
self.pipe_to_hud = subprocess.Popen(command, bufsize=bs,
stdin=subprocess.PIPE,
@ -242,8 +244,6 @@ class GuiAutoImport (threading.Thread):
)
else:
self.pipe_to_hud = subprocess.Popen(command, bufsize=bs, stdin=subprocess.PIPE, universal_newlines=True)
#self.pipe_to_hud.stdout.close()
#self.pipe_to_hud.stderr.close()
except:
err = traceback.extract_tb(sys.exc_info()[2])[-1]
#self.addText( "\n*** GuiAutoImport Error opening pipe: " + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]))
@ -268,8 +268,9 @@ class GuiAutoImport (threading.Thread):
if self.pipe_to_hud.poll() is not None:
self.addText(_("\n * Stop Auto Import: HUD already terminated"))
else:
self.pipe_to_hud.terminate()
#print >>self.pipe_to_hud.stdin, "\n"
self.pipe_to_hud.communicate('\n') # waits for process to terminate
# self.pipe_to_hud.communicate('\n') # waits for process to terminate
self.pipe_to_hud = None
self.startButton.set_label(_(u' Start _Auto Import '))

View File

@ -224,9 +224,6 @@ class GuiGraphViewer (threading.Thread):
self.graphBox.add(self.canvas)
self.canvas.show()
self.canvas.draw()
#TODO: Do something useful like alert user
#print "No hands returned by graph query"
else:
self.ax.set_title(_("Profit graph for ring games"+names),fontsize=12)
@ -340,7 +337,10 @@ class GuiGraphViewer (threading.Thread):
if len(winnings) == 0:
return (None, None, None)
green = map(lambda x:float(x[1]), winnings)
#Insert a 0th entry into winnings so graph starts 'zerod'
winnings.insert(0, (0,0,0))
green = map(lambda x: float(x[1]), winnings)
blue = map(lambda x: float(x[1]) if x[2] == True else 0.0, winnings)
red = map(lambda x: float(x[1]) if x[2] == False else 0.0, winnings)
greenline = cumsum(green)

View File

@ -397,7 +397,7 @@ class GuiPositionalStats (threading.Thread):
query = query.replace("<selectgt.bigBlind>", bigblindselect)
query = query.replace("<groupbygt.bigBlind>", "")
query = query.replace("<hcgametypeId>", "-1")
query = query.replace("<hgameTypeId>", "-1")
query = query.replace("<hgametypeId>", "-1")
else:
if self.db.backend == self.MYSQL_INNODB:
bigblindselect = """concat('$', trim(leading ' ' from
@ -416,7 +416,7 @@ class GuiPositionalStats (threading.Thread):
query = query.replace("<selectgt.bigBlind>", bigblindselect)
query = query.replace("<groupbygt.bigBlind>", ",gt.bigBlind")
query = query.replace("<hcgametypeId>", "hc.gametypeId")
query = query.replace("<hgameTypeId>", "h.gameTypeId")
query = query.replace("<hgametypeId>", "h.gametypeId")
# Filter on dates
query = query.replace("<datestest>", " between '" + dates[0] + "' and '" + dates[1] + "'")

338
pyfpdb/GuiReplayer.py Normal file
View File

@ -0,0 +1,338 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Copyright 2010 Maxime Grandchamp
#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 Hand import *
import Configuration
import Database
import SQL
import fpdb_import
import Filters
import pygtk
pygtk.require('2.0')
import gtk
import math
import gobject
class GuiReplayer:
def __init__(self, config, querylist, mainwin, options = None, debug=True):
self.debug = debug
self.conf = config
self.main_window = mainwin
self.sql = querylist
# These are temporary variables until it becomes possible
# to select() a Hand object from the database
self.filename="regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201005.microgrind.txt"
self.site="PokerStars"
if options.filename != None:
self.filename = options.filename
if options.sitename != None:
self.site = options.sitename
self.db = Database.Database(self.conf, sql=self.sql)
filters_display = { "Heroes" : True,
"Sites" : False,
"Games" : False,
"Limits" : False,
"LimitSep" : False,
"LimitType" : False,
"Type" : False,
"Seats" : False,
"SeatSep" : False,
"Dates" : True,
"Groups" : False,
"GroupsAll" : False,
"Button1" : True,
"Button2" : False
}
self.filters = Filters.Filters(self.db, self.conf, self.sql, display = filters_display)
#self.filters.registerButton1Name(_("Import Hand"))
#self.filters.registerButton1Callback(self.importhand)
#self.filters.registerButton2Name(_("temp"))
#self.filters.registerButton2Callback(self.temp())
# hierarchy: self.mainHBox / self.hpane / self.replayBox / self.area
self.mainHBox = gtk.HBox(False, 0)
self.mainHBox.show()
self.leftPanelBox = self.filters.get_vbox()
self.hpane = gtk.HPaned()
self.hpane.pack1(self.leftPanelBox)
self.mainHBox.add(self.hpane)
self.replayBox = gtk.VBox(False, 0)
self.replayBox.show()
self.hpane.pack2(self.replayBox)
self.hpane.show()
self.area=gtk.DrawingArea()
self.pangolayout = self.area.create_pango_layout("")
self.area.connect("expose-event", self.area_expose)
self.style = self.area.get_style()
self.gc = self.style.fg_gc[gtk.STATE_NORMAL]
self.area.show()
self.replayBox.pack_start(self.area)
self.MyHand = self.importhand()
self.maxseats=self.MyHand.maxseats
if self.MyHand.gametype['currency']=="USD": #TODO: check if there are others ..
self.currency="$"
elif self.MyHand.gametype['currency']=="EUR":
self.currency=""
self.table={} #create table with positions, player names, status (live/folded), stacks and chips on table
for i in range(0,self.maxseats): # radius: 200, center: 250,250
x= int (round(250+200*math.cos(2*i*math.pi/self.maxseats)))
y= int (round(250+200*math.sin(2*i*math.pi/self.maxseats)))
try:
self.table[i]={"name":self.MyHand.players[i][1],"stack":Decimal(self.MyHand.players[i][2]),"x":x,"y":y,"chips":0,"status":"live"} #save coordinates of each player
try:
self.table[i]['holecards']=self.MyHand.holecards["PREFLOP"][self.MyHand.players[i][1]][1]+' '+self.MyHand.holecards["PREFLOP"][self.MyHand.players[i][1]][2]
print "holecards: ",self.table[i]['holecards']
except:
self.table[i]['holecards']=''
except IndexError: #if seat is empty
print "seat ",i+1," out of ",self.maxseats," empty"
self.actions=[] #create list with all actions
if isinstance(self.MyHand, HoldemOmahaHand):
if self.MyHand.gametype['category'] == 'holdem':
self.play_holdem()
self.action_number=0
self.action_level=0
self.pot=0
gobject.timeout_add(1000,self.draw_action)
def area_expose(self, area, event):
self.style = self.area.get_style()
self.gc = self.style.fg_gc[gtk.STATE_NORMAL]
playerid='999' #makes sure we have an error if player is not recognised
for i in range(0,len(self.table)): #surely there must be a better way to find the player id in the table...
if self.table[i]['name']==self.actions[self.action_number][1]:
playerid=i
if self.actions[self.action_number][2]=="folds":
self.table[playerid]["status"]="folded"
if self.actions[self.action_number][3]:
self.table[playerid]["stack"] -= Decimal(self.actions[self.action_number][3]) #decreases stack if player bets
self.pot += Decimal(self.actions[self.action_number][3]) #increase pot
self.table[playerid]["chips"] += Decimal(self.actions[self.action_number][3]) #increase player's chips on table
cm = self.gc.get_colormap() #create colormap toi be able to play with colours
color = cm.alloc_color("black") #defaults to black
self.gc.set_foreground(color)
self.area.window.draw_arc(self.gc, 0, 125, 125, 300, 300, 0, 360*64) #table
for i in self.table:
if self.table[i]["status"]=="folded":
color = cm.alloc_color("grey") #player has folded => greyed out
self.gc.set_foreground(color)
else:
color = cm.alloc_color("black") #player is live
self.gc.set_foreground(color)
self.pangolayout.set_text(self.table[i]["name"]+self.table[i]["holecards"]) #player names + holecards
self.area.window.draw_layout(self.gc, self.table[i]["x"],self.table[i]["y"], self.pangolayout)
self.pangolayout.set_text('$'+str(self.table[i]["stack"])) #player stacks
self.area.window.draw_layout(self.gc, self.table[i]["x"]+10,self.table[i]["y"]+20, self.pangolayout)
color = cm.alloc_color("green")
self.gc.set_foreground(color)
self.pangolayout.set_text(self.currency+str(self.pot)) #displays pot
self.area.window.draw_layout(self.gc,270,270, self.pangolayout)
if self.actions[self.action_number][0]>1: #displays flop
self.pangolayout.set_text(self.MyHand.board['FLOP'][0]+" "+self.MyHand.board['FLOP'][1]+" "+self.MyHand.board['FLOP'][2])
self.area.window.draw_layout(self.gc,210,240, self.pangolayout)
if self.actions[self.action_number][0]>2: #displays turn
self.pangolayout.set_text(self.MyHand.board['TURN'][0])
self.area.window.draw_layout(self.gc,270,240, self.pangolayout)
if self.actions[self.action_number][0]>3: #displays river
self.pangolayout.set_text(self.MyHand.board['RIVER'][0])
self.area.window.draw_layout(self.gc,290,240, self.pangolayout)
color = cm.alloc_color("red") #highlights the action
self.gc.set_foreground(color)
self.pangolayout.set_text(self.actions[self.action_number][2]) #displays action
self.area.window.draw_layout(self.gc, self.table[playerid]["x"]+10,self.table[playerid]["y"]+35, self.pangolayout)
if self.actions[self.action_number][3]: #displays amount
self.pangolayout.set_text(self.currency+self.actions[self.action_number][3])
self.area.window.draw_layout(self.gc, self.table[playerid]["x"]+10,self.table[playerid]["y"]+55, self.pangolayout)
color = cm.alloc_color("black") #we don't want to draw the filters and others in red
self.gc.set_foreground(color)
def play_holdem(self):
actions=('BLINDSANTES','PREFLOP','FLOP','TURN','RIVER')
for action in actions:
for i in range(0,len(self.MyHand.actions[action])):
player=self.MyHand.actions[action][i][0]
act=self.MyHand.actions[action][i][1]
try:
amount=str(self.MyHand.actions[action][i][2])
except:
amount='' #no amount
self.actions.append([actions.index(action),player,act,amount]) #create table with all actions
def draw_action(self):
if self.action_number==len(self.actions)-1: #no more actions, we exit the loop
return False
if self.actions[self.action_number][0]!=self.action_level: #have we changed street ?
self.action_level=self.actions[self.action_number][0] #record the new street
if self.action_level>1: #we don't want to refresh if simply moving from antes/blinds to preflop action
alloc = self.area.get_allocation()
rect = gtk.gdk.Rectangle(0, 0, alloc.width, alloc.height)
self.area.window.invalidate_rect(rect, True) #make sure we refresh the whole screen
self.action_number+=1
if self.area.window:
playerid='999' #makes sure we have an error if player is not recognised
for i in range(0,len(self.table)): #surely there must be a better way to find the player id in the table...
if self.table[i]['name']==self.actions[self.action_number][1]:
playerid=i
rect = gtk.gdk.Rectangle(self.table[playerid]["x"],self.table[playerid]["y"],100,100)
self.area.window.invalidate_rect(rect, True) #refresh player area of the screen
rect = gtk.gdk.Rectangle(270,270,100,50)
self.area.window.invalidate_rect(rect, True) #refresh pot area
self.area.window.process_updates(True)
print "draw action: ",self.action_number,self.actions[self.action_number][1],self.actions[self.action_number][2],self.actions[self.action_number][3]
return True
def get_vbox(self):
"""returns the vbox of this thread"""
return self.mainHBox
def importhand(self, handnumber=1):
"""Temporary function that grabs a Hand object from a specified file. Obviously this will
be replaced by a function to select a hand from the db in the not so distant future.
This code has been shamelessly stolen from Carl
"""
if True:
settings = {}
settings.update(self.conf.get_db_parameters())
settings.update(self.conf.get_import_parameters())
settings.update(self.conf.get_default_paths())
importer = fpdb_import.Importer(False, settings, self.conf, None)
importer.setDropIndexes("don't drop")
importer.setFailOnError(True)
importer.setThreads(-1)
importer.setCallHud(False)
importer.setFakeCacheHHC(True)
print "DEBUG: self.filename: '%s' self.site: '%s'" %(self.filename, self.site)
importer.addBulkImportImportFileOrDir(self.filename, site=self.site)
(stored, dups, partial, errs, ttime) = importer.runImport()
hhc = importer.getCachedHHC()
handlist = hhc.getProcessedHands()
return handlist[0]
else:
# Fetch hand info
# We need at least sitename, gametype, handid
# for the Hand.__init__
####### Shift this section in Database.py for all to use ######
handid = 40
q = self.sql.query['get_gameinfo_from_hid']
q = q.replace('%s', self.sql.query['placeholder'])
c = self.db.get_cursor()
c.execute(q, (handid,))
res = c.fetchone()
gametype = {'category':res[1],'base':res[2],'type':res[3],'limitType':res[4],'hilo':res[5],'sb':res[6],'bb':res[7], 'currency':res[10]}
#FIXME: smallbet and bigbet are res[8] and res[9] respectively
###### End section ########
print "DEBUG: gametype: %s" % gametype
if gametype['base'] == 'hold':
h = HoldemOmahaHand(config = self.conf, hhc = None, sitename=res[0], gametype = gametype, handText=None, builtFrom = "DB", handid=handid)
h.select(self.db, handid)
elif gametype['base'] == 'stud':
print "DEBUG: Create stud hand here"
elif gametype['base'] == 'draw':
print "DEBUG: Create draw hand here"
def temp(self):
pass
def main(argv=None):
"""main can also be called in the python interpreter, by supplying the command line as the argument."""
if argv is None:
argv = sys.argv[1:]
def destroy(*args): # call back for terminating the main eventloop
gtk.main_quit()
import Options
(options, argv) = Options.fpdb_options()
if options.usage == True:
#Print usage examples and exit
sys.exit(0)
if options.sitename:
options.sitename = Options.site_alias(options.sitename)
if options.sitename == False:
usage()
config = Configuration.Config(file = "HUD_config.test.xml")
db = Database.Database(config)
sql = SQL.Sql(db_server = 'sqlite')
main_window = gtk.Window()
main_window.connect('destroy', destroy)
replayer = GuiReplayer(config, sql, main_window, options=options, debug=True)
main_window.add(replayer.get_vbox())
main_window.set_default_size(800,800)
main_window.show()
gtk.main()
if __name__ == '__main__':
sys.exit(main())

View File

@ -75,10 +75,6 @@ onlinehelp = {'Game':_('Type of Game'),
class DemoTips(TreeViewTooltips):
def __init__(self, customer_column):
# customer_column is an instance of gtk.TreeViewColumn and
# is being used in the gtk.TreeView to show customer names.
# self.cust_col = customer_column
# call base class init
TreeViewTooltips.__init__(self)
@ -91,11 +87,6 @@ class DemoTips(TreeViewTooltips):
return (display)
def location(self, x, y, w, h):
# rename me to "location" so I override the base class
# method. This will demonstrate being able to change
# where the tooltip window popups, relative to the
# pointer.
# this will place the tooltip above and to the right
return x + 30, y - (h + 10)
@ -661,18 +652,18 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats):
query = query.replace("<gtbigBlind_test>", bbtest)
if holecards: # re-use level variables for hole card query
query = query.replace("<hgameTypeId>", "hp.startcards")
query = query.replace("<orderbyhgameTypeId>"
query = query.replace("<hgametypeId>", "hp.startcards")
query = query.replace("<orderbyhgametypeId>"
, ",case when floor((hp.startcards-1)/13) >= mod((hp.startcards-1),13) then hp.startcards + 0.1 "
+ " else 13*mod((hp.startcards-1),13) + floor((hp.startcards-1)/13) + 1 "
+ " end desc ")
else:
query = query.replace("<orderbyhgameTypeId>", "")
query = query.replace("<orderbyhgametypeId>", "")
groupLevels = "show" not in str(limits)
if groupLevels:
query = query.replace("<hgameTypeId>", "p.name") # need to use p.name for sqlite posn stats to work
query = query.replace("<hgametypeId>", "p.name") # need to use p.name for sqlite posn stats to work
else:
query = query.replace("<hgameTypeId>", "h.gameTypeId")
query = query.replace("<hgametypeId>", "h.gametypeId")
# process self.detailFilters (a list of tuples)
flagtest = ''

View File

@ -37,8 +37,6 @@ try:
from matplotlib.finance import candlestick2
from numpy import diff, nonzero, sum, cumsum, max, min, append
# from matplotlib.dates import DateFormatter, WeekdayLocator, HourLocator, \
# DayLocator, MONDAY, timezone
except ImportError, inst:
print _("""Failed to load numpy and/or matplotlib in Session Viewer""")
@ -157,15 +155,10 @@ class GuiSessionViewer (threading.Thread):
# make sure Hand column is not displayed
#[x for x in self.columns if x[0] == 'hand'][0][1] = False
if DEBUG == False:
warning_string = """
Session Viewer is proof of concept code only, and contains many bugs.
Feel free to use the viewer, but there is no guarantee that the data is accurate.
If you are interested in developing the code further please contact us via the usual channels.
Thankyou
"""
warning_string = _("Session Viewer is proof of concept code only, and contains many bugs.\n")
warning_string += _("Feel free to use the viewer, but there is no guarantee that the data is accurate.\n")
warning_string += _("If you are interested in developing the code further please contact us via the usual channels.\n")
warning_string += _("Thankyou")
self.warning_box(warning_string)
def warning_box(self, str, diatitle=_("FPDB WARNING")):
@ -265,8 +258,9 @@ Thankyou
#end def fillStatsFrame(self, vbox):
def generateDatasets(self, playerids, sitenos, limits, seats):
THRESHOLD = 1800 # Minimum number of seconds between consecutive hands before being considered a new session
PADDING = 5 # Additional time in minutes to add to a session, session startup, shutdown etc (FiXME: user configurable)
print "DEBUG: Starting generateDatasets"
THRESHOLD = 1800 # Min # of secs between consecutive hands before being considered a new session
PADDING = 5 # Additional time in minutes to add to a session, session startup, shutdown etc
# Get a list of all handids and their timestampts
#FIXME: Query still need to filter on blind levels
@ -284,10 +278,15 @@ Thankyou
self.db.cursor.execute(q)
hands = self.db.cursor.fetchall()
hands.insert(0, (hands[0][0], 0, 0, 0, 0))
# Take that list and create an array of the time between hands
times = map(lambda x:long(x[0]), hands)
handids = map(lambda x:int(x[1]), hands)
winnings = map(lambda x:float(x[4]), hands)
#print "DEBUG: times : %s" % times
#print "DEBUG: handids : %s" % handids
#print "DEBUG: winnings: %s" % winnings
#print "DEBUG: len(times) %s" %(len(times))
diffs = diff(times) # This array is the difference in starttime between consecutive hands
diffs2 = append(diffs,THRESHOLD + 1) # Append an additional session to the end of the diffs, so the next line
@ -318,8 +317,9 @@ Thankyou
cum_sum = cum_sum/100
sid = 1
# Take all results and format them into a list for feeding into gui model.
#print "DEBUG: range(len(index[0]): %s" % range(len(index[0]))
for i in range(len(index[0])):
hds = index[0][i] - first_idx + 1 # Number of hands in session
hds = index[0][i] - first_idx # Number of hands in session
if hds > 0:
stime = strftime("%d/%m/%Y %H:%M", localtime(times[first_idx])) # Formatted start time
etime = strftime("%d/%m/%Y %H:%M", localtime(times[index[0][i]])) # Formatted end time
@ -328,12 +328,14 @@ Thankyou
minutesplayed = 1
minutesplayed = minutesplayed + PADDING
hph = hds*60/minutesplayed # Hands per hour
won = sum(winnings[first_idx:index[0][i]])/100.0
hwm = max(cum_sum[first_idx:index[0][i]])
lwm = min(cum_sum[first_idx:index[0][i]])
end_idx = first_idx+hds+1
won = sum(winnings[first_idx:end_idx])/100.0
#print "DEBUG: winnings[%s:%s]: %s" % (first_idx, end_idx, winnings[first_idx:end_idx])
hwm = max(cum_sum[first_idx:end_idx])
lwm = min(cum_sum[first_idx:end_idx])
open = (sum(winnings[:first_idx]))/100
close = (sum(winnings[:index[0][i]]))/100
#print "DEBUG: range: (%s, %s) - (min, max): (%s, %s) - (open,close): (%s, %s)" %(first_idx, index[0][i], lwm, hwm, open, close)
close = (sum(winnings[:end_idx]))/100
#print "DEBUG: range: (%s, %s) - (min, max): (%s, %s) - (open,close): (%s, %s)" %(first_idx, end_idx, lwm, hwm, open, close)
results.append([sid, hds, stime, etime, hph, won])
opens.append(open)
@ -374,17 +376,17 @@ Thankyou
def generateGraph(self, opens, closes, highs, lows):
self.clearGraphData()
# print "DEBUG:"
# print "highs = %s" % highs
# print "lows = %s" % lows
# print "opens = %s" % opens
# print "closes = %s" % closes
# print "len(highs): %s == len(lows): %s" %(len(highs), len(lows))
# print "len(opens): %s == len(closes): %s" %(len(opens), len(closes))
#
# for i in range(len(highs)):
# print "DEBUG: (%s, %s, %s, %s)" %(lows[i], opens[i], closes[i], highs[i])
# print "DEBUG: diffs h/l: %s o/c: %s" %(lows[i] - highs[i], opens[i] - closes[i])
#print "DEBUG:"
#print "\thighs = %s" % highs
#print "\tlows = %s" % lows
#print "\topens = %s" % opens
#print "\tcloses = %s" % closes
#print "\tlen(highs): %s == len(lows): %s" %(len(highs), len(lows))
#print "\tlen(opens): %s == len(closes): %s" %(len(opens), len(closes))
#for i in range(len(highs)):
# print "DEBUG: (%s, %s, %s, %s)" %(lows[i], opens[i], closes[i], highs[i])
# print "DEBUG: diffs h/l: %s o/c: %s" %(lows[i] - highs[i], opens[i] - closes[i])
self.ax = self.fig.add_subplot(111)

222
pyfpdb/GuiStove.py Normal file
View File

@ -0,0 +1,222 @@
#!/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.
import L10n
_ = L10n.get_translation()
import pygtk
pygtk.require('2.0')
import gtk
import os
import sys
import Charset
DEBUG = False
class GuiStove():
def __init__(self, config, parent, debug=True):
"""Constructor for GraphViewer"""
self.conf = config
self.parent = parent
self.mainHBox = gtk.HBox(False, 0)
# hierarchy: self.mainHBox / self.notebook
self.notebook = gtk.Notebook()
self.notebook.set_tab_pos(gtk.POS_TOP)
self.notebook.set_show_tabs(True)
self.notebook.set_show_border(True)
self.createFlopTab()
self.createStudTab()
self.createDrawTab()
self.mainHBox.add(self.notebook)
self.mainHBox.show_all()
if DEBUG == False:
warning_string = _("Stove is a GUI mockup of a EV calculation page, and completely non functional.\n")
warning_string = _("Unless you are interested in developing this feature, please ignore this page.\n")
warning_string = _("If you are interested in developing the code further see GuiStove.py and Stove.py\n")
warning_string = _("Thank you\n")
self.warning_box(warning_string)
def warning_box(self, str, diatitle=_("FPDB WARNING")):
diaWarning = gtk.Dialog(title=diatitle, parent=self.parent, flags=gtk.DIALOG_DESTROY_WITH_PARENT, buttons=(gtk.STOCK_OK,gtk.RESPONSE_OK))
label = gtk.Label(str)
diaWarning.vbox.add(label)
label.show()
response = diaWarning.run()
diaWarning.destroy()
return response
def get_active_text(combobox):
model = combobox.get_model()
active = combobox.get_active()
if active < 0:
return None
return model[active][0]
def create_combo_box(self, strings):
combobox = gtk.combo_box_new_text()
for label in strings:
combobox.append_text(label)
combobox.set_active(0)
return combobox
def createDrawTab(self):
tab_title = "Draw"
label = gtk.Label(tab_title)
ddbox = gtk.VBox(False, 0)
self.notebook.append_page(ddbox, label)
def createStudTab(self):
tab_title = "Stud"
label = gtk.Label(tab_title)
ddbox = gtk.VBox(False, 0)
self.notebook.append_page(ddbox, label)
def createFlopTab(self):
# hierarchy: hbox / ddbox / ddhbox / Label + flop_games_cb | label + players_cb
# / gamehbox / in_frame / table /
# / out_frame
tab_title = "Flop"
label = gtk.Label(tab_title)
ddbox = gtk.VBox(False, 0)
self.notebook.append_page(ddbox, label)
ddhbox = gtk.HBox(False, 0)
gamehbox = gtk.HBox(False, 0)
ddbox.add(ddhbox)
ddbox.add(gamehbox)
# Combo boxes in the top row
games = [ "Holdem", "Omaha", "Omaha 8", ]
players = [ "2", "3", "4", "5", "6", "7", "8", "9", "10" ]
flop_games_cb = self.create_combo_box(games)
players_cb = self.create_combo_box(players)
label = gtk.Label("Gametype:")
ddhbox.add(label)
ddhbox.add(flop_games_cb)
label = gtk.Label("Players:")
ddhbox.add(label)
ddhbox.add(players_cb)
# Frames for Stove input and output
in_frame = gtk.Frame("Input:")
out_frame = gtk.Frame("Output:")
gamehbox.add(in_frame)
gamehbox.add(out_frame)
outstring = """
No board given. Using Monte-Carlo simulation...
Enumerated 2053443 possible plays.
Your hand: (Ad Ac)
Against the range: {
AhAd, AhAs, AdAs, KhKd, KhKs,
KhKc, KdKs, KdKc, KsKc, QhQd,
QhQs, QhQc, QdQs, QdQc, QsQc,
JhJd, JhJs, JhJc, JdJs, JdJc,
JsJc
}
Win Lose Tie
69.91% 15.83% 14.26%
"""
self.outputlabel = gtk.Label(outstring)
out_frame.add(self.outputlabel)
# Input Frame
table = gtk.Table(4, 4, True)
label = gtk.Label("Board:")
board = gtk.Entry()
board.connect("changed", self.set_board_flop, board)
btn1 = gtk.Button()
btn1.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
#btn.connect('clicked', self._some_function, arg)
table.attach(label, 0, 1, 0, 1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
table.attach(board, 1, 2, 0, 1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
table.attach(btn1, 2, 3, 0, 1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
label = gtk.Label("Player1:")
board = gtk.Entry()
board.connect("changed", self.set_hero_cards_flop, board)
btn2 = gtk.Button()
btn2.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
#btn.connect('clicked', self._some_function, arg)
btn3 = gtk.Button()
btn3.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
#btn.connect('clicked', self._some_function, arg)
table.attach(label, 0, 1, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
table.attach(board, 1, 2, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
table.attach(btn2, 2, 3, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
table.attach(btn3, 3, 4, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
label = gtk.Label("Player2:")
board = gtk.Entry()
board.connect("changed", self.set_villain_cards_flop, board)
btn4 = gtk.Button()
btn4.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
#btn.connect('clicked', self._some_function, arg)
btn5 = gtk.Button()
btn5.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
#btn.connect('clicked', self._some_function, arg)
table.attach(label, 0, 1, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
table.attach(board, 1, 2, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
table.attach(btn4, 2, 3, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
table.attach(btn5, 3, 4, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
#table.attach(label, i, i+1, j, j+1,)
in_frame.add(table)
def set_board_flop(self, caller, string):
print "DEBUG: called set_board_flop: '%s' '%s'" %(caller ,string)
def set_hero_cards_flop(self, caller, string):
print "DEBUG: called set_hero_cards_flop"
def set_villain_cards_flop(self, caller, string):
print "DEBUG: called set_villain_cards_flop"
def get_vbox(self):
"""returns the vbox of this thread"""
return self.mainHBox
#end def get_vbox

View File

@ -382,7 +382,7 @@ class GuiTourneyPlayerStats (GuiPlayerStats.GuiPlayerStats):
#query = query.replace("<gtbigBlind_test>", bbtest)
#query = query.replace("<orderbyhgameTypeId>", "")
#query = query.replace("<orderbyhgametypeId>", "")
# process self.detailFilters (a list of tuples)
flagtest = ''

View File

@ -2,7 +2,7 @@
<FreePokerToolsConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FreePokerToolsConfig.xsd">
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True"></import>
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True" cacheSessions="True" sessionTimeout="30"></import>
<!-- These values determine what stats are displayed in the HUD
@ -104,9 +104,9 @@ Left-Drag to Move"
<site enabled="True"
site_name="PokerStars"
table_finder="PokerStars.exe"
screen_name="YOUR SCREEN NAME HERE"
screen_name="Hero"
site_path="C:/Program Files/PokerStars/"
HH_path="C:/Program Files/PokerStars/HandHistory/YOUR SCREEN NAME HERE/"
HH_path="C:/Program Files/PokerStars/HandHistory/Hero/"
decoder="pokerstars_decode_table"
converter="PokerStarsToFpdb"
bgcolor="#000000"
@ -165,9 +165,9 @@ Left-Drag to Move"
<site enabled="True"
site_name="Full Tilt Poker"
table_finder="FullTiltPoker"
screen_name="YOUR SCREEN NAME HERE"
screen_name="Hero"
site_path="C:/Program Files/Full Tilt Poker/"
HH_path="C:/Program Files/Full Tilt Poker/HandHistory/YOUR SCREEN NAME HERE/"
HH_path="C:/Program Files/Full Tilt Poker/HandHistory/Hero/"
decoder="fulltilt_decode_table"
converter="FulltiltToFpdb"
bgcolor="#000000"
@ -214,7 +214,7 @@ Left-Drag to Move"
<site enabled="False"
site_name="Everleaf"
table_finder="Everleaf.exe"
screen_name="YOUR SCREEN NAME HERE"
screen_name="Hero"
site_path=""
HH_path=""
decoder="everleaf_decode_table"
@ -258,7 +258,7 @@ Left-Drag to Move"
<site enabled="False"
site_name="Win2day"
table_finder="Win2day.exe"
screen_name="YOUR SCREEN NAME HERE"
screen_name="Hero"
site_path=""
HH_path=""
decoder="everleaf_decode_table"
@ -303,7 +303,7 @@ Left-Drag to Move"
<site enabled="False"
site_name="Absolute"
table_finder="AbsolutePoker.exe"
screen_name="YOUR SCREEN NAME HERE"
screen_name="Hero"
site_path=""
HH_path=""
decoder="everleaf_decode_table"
@ -348,9 +348,9 @@ Left-Drag to Move"
<site enabled="False"
site_name="PartyPoker"
table_finder="PartyGaming.exe"
screen_name="YOUR SCREEN NAME HERE"
screen_name="Hero"
site_path="C:/Program Files/PartyGaming/PartyPoker"
HH_path="C:/Program Files/PartyGaming/PartyPoker/HandHistory/YOUR SCREEN NAME HERE/"
HH_path="C:/Program Files/PartyGaming/PartyPoker/HandHistory/Hero/"
decoder="everleaf_decode_table"
converter="PartyPokerToFpdb"
supported_games="holdem">
@ -393,9 +393,9 @@ Left-Drag to Move"
<site enabled="False"
site_name="Betfair"
table_finder="Betfair Poker.exe"
screen_name="YOUR SCREEN NAME HERE"
screen_name="Hero"
site_path="C:/Program Files/Betfair/Betfair Poker/"
HH_path="C:/Program Files/Betfair/Betfair Poker/HandHistory/YOUR SCREEN NAME HERE/"
HH_path="C:/Program Files/Betfair/Betfair Poker/HandHistory/Hero/"
decoder="everleaf_decode_table"
converter="BetfairToFpdb"
supported_games="holdem">

View File

@ -12,7 +12,7 @@
config_difficulty="expert"
/>
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True"></import>
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True" cacheSessions="False" sessionTimeout="30"></import>
<gui_cash_stats>
<col col_name="game" disp_all="True" disp_posn="True" col_title="Game" xalignment="0.0" field_format="%s" field_type="str" />

View File

@ -23,42 +23,33 @@
Main for FreePokerTools HUD.
"""
# TODO allow window resizing
# TODO hud to echo, but ignore non numbers
# TODO no stat window for hero
# TODO things to add to config.xml
# Standard Library modules
import sys
import os
import Options
import traceback
(options, argv) = Options.fpdb_options()
import thread
import time
import string
import re
# pyGTK modules
import pygtk
import gtk
import gobject
# FreePokerTools modules
import Configuration
import Database
from HandHistoryConverter import getTableTitleRe
# get the correct module for the current os
if os.name == 'posix':
import XTables as Tables
elif os.name == 'nt':
import WinTables as Tables
#import Tables
import Hud
import Options
(options, argv) = Options.fpdb_options()
# get the correct module for the current os
if sys.platform == 'linux2':
import XTables as Tables
elif sys.platform == 'darwin':
import OSXTables as Tables
else: # This is bad--figure out the values for the various windows flavors
import WinTables as Tables
import locale
lang = locale.getdefaultlocale()[0][0:2]
@ -79,28 +70,23 @@ else:
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')
class HUD_main(object):
"""A main() object to own both the read_stdin thread and the gui."""
# This class mainly provides state for controlling the multiple HUDs.
def __init__(self, db_name='fpdb'):
print _("\nHUD_main: starting ...")
self.db_name = db_name
self.config = c
print _("Logfile is ") + os.path.join(self.config.dir_log, 'HUD-log.txt')
log.info(_("HUD_main starting: using db name = %s") % (db_name))
log.info("HUD_main starting: using db name = %s" % (db_name))
try:
if not options.errorsToConsole:
fileName = os.path.join(self.config.dir_log, 'HUD-errors.txt')
print _("Note: error output is being diverted to:\n") + fileName \
+ _("\nAny major error will be reported there _only_.\n")
log.info(_("Note: error output is being diverted to:") + fileName)
log.info(_("Any major error will be reported there _only_."))
log.info("Note: error output is being diverted to:" + fileName)
log.info("Any major error will be reported there _only_.")
errorFile = open(fileName, 'w', 0)
sys.stderr = errorFile
sys.stderr.write(_("HUD_main: starting ...\n"))
sys.stderr.write("HUD_main: starting ...\n")
self.hud_dict = {}
self.hud_params = self.config.get_hud_ui_parameters()
@ -111,6 +97,17 @@ class HUD_main(object):
# a main window
self.main_window = gtk.Window()
if options.minimized:
self.main_window.iconify()
if options.hidden:
self.main_window.hide()
if options.xloc is not None or options.yloc is not None:
if options.xloc is None:
options.xloc = 0
if options.yloc is None:
options.yloc = 0
self.main_window.move(options.xloc,options.yloc)
self.main_window.connect("client_moved", self.client_moved)
self.main_window.connect("client_resized", self.client_resized)
self.main_window.connect("client_destroyed", self.client_destroyed)
@ -118,10 +115,10 @@ class HUD_main(object):
self.main_window.connect("table_changed", self.table_changed)
self.main_window.connect("destroy", self.destroy)
self.vb = gtk.VBox()
self.label = gtk.Label(_('Closing this window will exit from the HUD.'))
self.label = gtk.Label('Closing this window will exit from the HUD.')
self.vb.add(self.label)
self.main_window.add(self.vb)
self.main_window.set_title(_("HUD Main Window"))
self.main_window.set_title("HUD Main Window")
cards = os.path.join(os.getcwd(), '..','gfx','fpdb-cards.png')
if os.path.exists(cards):
self.main_window.set_icon_from_file(cards)
@ -129,91 +126,60 @@ class HUD_main(object):
self.main_window.set_icon_from_file('/usr/share/pixmaps/fpdb-cards.png')
else:
self.main_window.set_icon_stock(gtk.STOCK_HOME)
if not options.hidden:
self.main_window.show_all()
gobject.timeout_add(100, self.check_tables)
# gobject.timeout_add(100, self.check_tables)
except:
log.error("*** Exception in HUD_main.init() *** ")
for e in traceback.format_tb(sys.exc_info()[2]):
log.error(e)
log.exception("Error initializing main_window")
gtk.main_quit() # we're hosed, just terminate
def client_moved(self, widget, hud):
hud.up_update_table_position()
def client_resized(self, widget, hud):
pass
gobject.idle_add(idle_resize, hud)
def client_destroyed(self, widget, hud): # call back for terminating the main eventloop
self.kill_hud(None, hud.table.name)
self.kill_hud(None, hud.table.key)
def game_changed(self, widget, hud):
print _("hud_main: Game changed.")
print "hud_main: Game changed."
def table_changed(self, widget, hud):
print _("hud_main: Table changed.")
self.kill_hud(None, hud.table.name)
self.kill_hud(None, hud.table.key)
def destroy(self, *args): # call back for terminating the main eventloop
log.info(_("Terminating normally."))
log.info("Terminating normally.")
gtk.main_quit()
def kill_hud(self, event, table):
# called by an event in the HUD, to kill this specific HUD
if table in self.hud_dict:
self.hud_dict[table].kill()
self.hud_dict[table].main_window.destroy()
self.vb.remove(self.hud_dict[table].tablehudlabel)
del(self.hud_dict[table])
self.main_window.resize(1, 1)
gobject.idle_add(idle_kill, self, table)
def check_tables(self):
for hud in self.hud_dict.keys():
self.hud_dict[hud].table.check_table(self.hud_dict[hud])
return True
def create_HUD(self, new_hand_id, table, table_name, max, poker_game, type, stat_dict, cards):
def create_HUD(self, new_hand_id, table, temp_key, max, poker_game, type, stat_dict, cards):
"""type is "ring" or "tour" used to set hud_params"""
def idle_func():
gtk.gdk.threads_enter()
try:
table.gdkhandle = gtk.gdk.window_foreign_new(table.number)
newlabel = gtk.Label("%s - %s" % (table.site, table_name))
self.vb.add(newlabel)
newlabel.show()
self.main_window.resize_children()
self.hud_dict[table_name].tablehudlabel = newlabel
self.hud_dict[table_name].create(new_hand_id, self.config, stat_dict, cards)
for m in self.hud_dict[table_name].aux_windows:
m.create()
m.update_gui(new_hand_id)
self.hud_dict[table_name].update(new_hand_id, self.config)
self.hud_dict[table_name].reposition_windows()
except:
log.error("*** Exception in HUD_main::idle_func() *** " + str(sys.exc_info()))
for e in traceback.format_tb(sys.exc_info()[2]):
log.error(e)
finally:
gtk.gdk.threads_leave()
return False
self.hud_dict[table_name] = Hud.Hud(self, table, max, poker_game, self.config, self.db_connection)
self.hud_dict[table_name].table_name = table_name
self.hud_dict[table_name].stat_dict = stat_dict
self.hud_dict[table_name].cards = cards
self.hud_dict[temp_key] = Hud.Hud(self, table, max, poker_game, self.config, self.db_connection)
self.hud_dict[temp_key].table_name = temp_key
self.hud_dict[temp_key].stat_dict = stat_dict
self.hud_dict[temp_key].cards = cards
table.hud = self.hud_dict[temp_key]
# set agg_bb_mult so that aggregate_tour and aggregate_ring can be ignored,
# agg_bb_mult == 1 means no aggregation after these if statements:
if type == "tour" and self.hud_params['aggregate_tour'] == False:
self.hud_dict[table_name].hud_params['agg_bb_mult'] = 1
self.hud_dict[temp_key].hud_params['agg_bb_mult'] = 1
elif type == "ring" and self.hud_params['aggregate_ring'] == False:
self.hud_dict[table_name].hud_params['agg_bb_mult'] = 1
self.hud_dict[temp_key].hud_params['agg_bb_mult'] = 1
if type == "tour" and self.hud_params['h_aggregate_tour'] == False:
self.hud_dict[table_name].hud_params['h_agg_bb_mult'] = 1
self.hud_dict[temp_key].hud_params['h_agg_bb_mult'] = 1
elif type == "ring" and self.hud_params['h_aggregate_ring'] == False:
self.hud_dict[table_name].hud_params['h_agg_bb_mult'] = 1
self.hud_dict[temp_key].hud_params['h_agg_bb_mult'] = 1
# sqlcoder: I forget why these are set to true (aren't they ignored from now on?)
# but I think it's needed:
self.hud_params['aggregate_ring'] = True
@ -222,28 +188,12 @@ class HUD_main(object):
self.hud_params['aggregate_tour'] = True
self.hud_params['h_aggregate_tour'] = True
[aw.update_data(new_hand_id, self.db_connection) for aw in self.hud_dict[table_name].aux_windows]
gobject.idle_add(idle_func)
[aw.update_data(new_hand_id, self.db_connection) for aw in self.hud_dict[temp_key].aux_windows]
gobject.idle_add(idle_create, self, new_hand_id, table, temp_key, max, poker_game, type, stat_dict, cards)
def update_HUD(self, new_hand_id, table_name, config):
"""Update a HUD gui from inside the non-gui read_stdin thread."""
# This is written so that only 1 thread can touch the gui--mainly
# for compatibility with Windows. This method dispatches the
# function idle_func() to be run by the gui thread, at its leisure.
def idle_func():
gtk.gdk.threads_enter()
try:
self.hud_dict[table_name].update(new_hand_id, config)
# The HUD could get destroyed in the above call ^^, which leaves us with a KeyError here vv
# if we ever get an error we need to expect ^^ then we need to handle it vv - Eric
[aw.update_gui(new_hand_id) for aw in self.hud_dict[table_name].aux_windows]
except KeyError:
pass
finally:
gtk.gdk.threads_leave()
return False
gobject.idle_add(idle_func)
gobject.idle_add(idle_update, self, new_hand_id, table_name, config)
def read_stdin(self): # This is the thread function
"""Do all the non-gui heavy lifting for the HUD program."""
@ -260,14 +210,17 @@ class HUD_main(object):
while 1: # wait for a new hand number on stdin
new_hand_id = sys.stdin.readline()
t0 = time.time()
t1 = t2 = t3 = t4 = t5 = t6 = t0
new_hand_id = string.rstrip(new_hand_id)
log.debug(_("Received hand no %s") % new_hand_id)
log.debug("Received hand no %s" % new_hand_id)
if new_hand_id == "": # blank line means quit
self.destroy()
break # this thread is not always killed immediately with gtk.main_quit()
# This block cannot be hoisted outside the while loop, because it would
# cause a problem when auto importing into an empty db.
# FIXME: This doesn't work in the case of the player playing on 2
# sites at once (???) Eratosthenes
if not found:
for site in self.config.get_supported_sites():
result = self.db_connection.get_site_id(site)
@ -282,17 +235,16 @@ class HUD_main(object):
# get basic info about the new hand from the db
# if there is a db error, complain, skip hand, and proceed
log.info(_("HUD_main.read_stdin: hand processing starting ..."))
log.info("HUD_main.read_stdin: hand processing starting ...")
try:
(table_name, max, poker_game, type, site_id, site_name, num_seats, tour_number, tab_number) = \
self.db_connection.get_table_info(new_hand_id)
except Exception:
log.error(_("db error: skipping %s" % new_hand_id))
log.exception("db error: skipping %s" % new_hand_id)
continue
t1 = time.time()
if type == "tour": # hand is from a tournament
temp_key = tour_number
temp_key = "%s Table %s" % (tour_number, tab_number)
else:
temp_key = table_name
@ -301,26 +253,19 @@ class HUD_main(object):
# get stats using hud's specific params and get cards
self.db_connection.init_hud_stat_vars( self.hud_dict[temp_key].hud_params['hud_days']
, self.hud_dict[temp_key].hud_params['h_hud_days'])
t2 = time.time()
stat_dict = self.db_connection.get_stats_from_hand(new_hand_id, type, self.hud_dict[temp_key].hud_params,
self.hero_ids[site_id], num_seats)
t3 = time.time()
try:
self.hud_dict[temp_key].stat_dict = stat_dict
except KeyError: # HUD instance has been killed off, key is stale
log.error(_('hud_dict[%s] was not found\n') % temp_key)
log.error(_('will not send hand\n'))
log.error('hud_dict[%s] was not found\n' % temp_key)
log.error('will not send hand\n')
# Unlocks table, copied from end of function
self.db_connection.connection.rollback()
return
cards = self.db_connection.get_cards(new_hand_id)
t4 = time.time()
comm_cards = self.db_connection.get_common_cards(new_hand_id)
t5 = time.time()
if comm_cards != {}: # stud!
cards['common'] = comm_cards['common']
self.hud_dict[temp_key].cards = cards
self.hud_dict[temp_key].cards = self.get_cards(new_hand_id)
[aw.update_data(new_hand_id, self.db_connection) for aw in self.hud_dict[temp_key].aux_windows]
self.update_HUD(new_hand_id, temp_key, self.config)
@ -330,19 +275,16 @@ class HUD_main(object):
self.db_connection.init_hud_stat_vars( self.hud_params['hud_days'], self.hud_params['h_hud_days'] )
stat_dict = self.db_connection.get_stats_from_hand(new_hand_id, type, self.hud_params,
self.hero_ids[site_id], num_seats)
cards = self.db_connection.get_cards(new_hand_id)
comm_cards = self.db_connection.get_common_cards(new_hand_id)
if comm_cards != {}: # stud!
cards['common'] = comm_cards['common']
cards = self.get_cards(new_hand_id)
table_kwargs = dict(table_name=table_name, tournament=tour_number, table_number=tab_number)
tablewindow = Tables.Table(self.config, site_name, **table_kwargs)
if tablewindow is None:
# If no client window is found on the screen, complain and continue
if type == "tour":
table_name = "%s %s" % (tour_number, tab_number)
log.error(_("HUD create: table name %s not found, skipping.") % table_name)
log.error("HUD create: table name %s not found, skipping." % table_name)
else:
tablewindow.key = temp_key
tablewindow.max = max
tablewindow.site = site_name
# Test that the table window still exists
@ -350,14 +292,90 @@ class HUD_main(object):
self.create_HUD(new_hand_id, tablewindow, temp_key, max, poker_game, type, stat_dict, cards)
else:
log.error(_('Table "%s" no longer exists\n') % table_name)
return
t6 = time.time()
log.info(_("HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%4.3f)")
% (t6 - t0,t1 - t0,t2 - t0,t3 - t0,t4 - t0,t5 - t0,t6 - t0))
self.db_connection.connection.rollback()
# if type == "tour":
# tablewindow.check_table_no(None)
# # Ray!! tablewindow::check_table_no expects a HUD as an argument!
if type == "tour":
try:
self.hud_dict[temp_key].table.check_table_no(self.hud_dict[temp_key])
except KeyError:
pass
def get_cards(self, new_hand_id):
cards = self.db_connection.get_cards(new_hand_id)
comm_cards = self.db_connection.get_common_cards(new_hand_id)
if comm_cards != {}: # stud!
cards['common'] = comm_cards['common']
return cards
######################################################################
# idle FUNCTIONS
#
# These are passed to the event loop by the non-gui thread to do
# gui things in a thread-safe way. They are passed to the event
# loop using the gobject.idle_add() function.
#
# A general rule for gtk is that only 1 thread should be messing
# with the gui.
def idle_resize(hud):
gtk.gdk.threads_enter()
try:
[aw.update_card_positions() for aw in hud.aux_windows]
hud.resize_windows()
except:
log.exception(_("Error resizing HUD for table: %s.") % hud.table.title)
finally:
gtk.gdk.threads_leave()
def idle_kill(hud_main, table):
gtk.gdk.threads_enter()
try:
if table in hud_main.hud_dict:
hud_main.vb.remove(hud_main.hud_dict[table].tablehudlabel)
hud_main.hud_dict[table].main_window.destroy()
hud_main.hud_dict[table].kill()
del(hud_main.hud_dict[table])
hud_main.main_window.resize(1, 1)
except:
log.exception(_("Error killing HUD for table: %s.") % table.title)
finally:
gtk.gdk.threads_leave()
def idle_create(hud_main, new_hand_id, table, temp_key, max, poker_game, type, stat_dict, cards):
gtk.gdk.threads_enter()
try:
if table.gdkhandle is not None: # on windows this should already be set
table.gdkhandle = gtk.gdk.window_foreign_new(table.number)
newlabel = gtk.Label("%s - %s" % (table.site, temp_key))
hud_main.vb.add(newlabel)
newlabel.show()
hud_main.main_window.resize_children()
hud_main.hud_dict[temp_key].tablehudlabel = newlabel
hud_main.hud_dict[temp_key].create(new_hand_id, hud_main.config, stat_dict, cards)
for m in hud_main.hud_dict[temp_key].aux_windows:
m.create()
m.update_gui(new_hand_id)
hud_main.hud_dict[temp_key].update(new_hand_id, hud_main.config)
hud_main.hud_dict[temp_key].reposition_windows()
except:
log.exception(_("Error creating HUD for hand %s.") % new_hand_id)
finally:
gtk.gdk.threads_leave()
return False
def idle_update(hud_main, new_hand_id, table_name, config):
gtk.gdk.threads_enter()
try:
hud_main.hud_dict[table_name].update(new_hand_id, config)
[aw.update_gui(new_hand_id) for aw in hud_main.hud_dict[table_name].aux_windows]
except:
log.exception(_("Error updating HUD for hand %s.") % new_hand_id)
finally:
gtk.gdk.threads_leave()
return False
if __name__== "__main__":
# start the HUD_main object

View File

@ -261,11 +261,11 @@ db: a connected Database object"""
if not db.isDuplicate(self.dbid_gt, hh['siteHandNo']):
# Hands - Summary information of hand indexed by handId - gameinfo
hh['gameTypeId'] = self.dbid_gt
hh['gametypeId'] = self.dbid_gt
# seats TINYINT NOT NULL,
hh['seats'] = len(self.dbid_pids)
self.dbid_hands = db.storeHand(hh)
self.dbid_hands = db.storeHand(hh, printdata = printtest)
self.dbid_hpid = db.storeHandsPlayers(self.dbid_hands, self.dbid_pids,
self.stats.getHandsPlayers(), printdata = printtest)
if self.saveActions:
@ -279,75 +279,13 @@ db: a connected Database object"""
def updateHudCache(self, db):
db.storeHudCache(self.dbid_gt, self.dbid_pids, self.startTime, self.stats.getHandsPlayers())
def select(self, handId):
def updateSessionsCache(self, db):
db.storeSessionsCache(self.dbid_pids, self.startTime, self.gametype, self.stats.getHandsPlayers())
def select(self, db, handId):
""" Function to create Hand object from database """
c = cnxn.cursor()
# We need at least sitename, gametype, handid
# for the Hand.__init__
c.execute("""SELECT
s.name,
g.category,
g.base,
g.type,
g.limitType,
g.hilo,
round(g.smallBlind / 100.0,2),
round(g.bigBlind / 100.0,2),
round(g.smallBet / 100.0,2),
round(g.bigBet / 100.0,2),
s.currency,
h.boardcard1,
h.boardcard2,
h.boardcard3,
h.boardcard4,
h.boardcard5
FROM
hands as h,
sites as s,
gametypes as g,
handsplayers as hp,
players as p
WHERE
h.id = %(handid)s
and g.id = h.gametypeid
and hp.handid = h.id
and p.id = hp.playerid
and s.id = p.siteid
limit 1""", {'handid':handid})
#TODO: siteid should be in hands table - we took the scenic route through players here.
res = c.fetchone()
gametype = {'category':res[1],'base':res[2],'type':res[3],'limitType':res[4],'hilo':res[5],'sb':res[6],'bb':res[7], 'currency':res[10]}
c = Configuration.Config()
h = HoldemOmahaHand(config = c, hhc = None, sitename=res[0], gametype = gametype, handText=None, builtFrom = "DB", handid=handid)
cards = map(Card.valueSuitFromCard, res[11:16] )
if cards[0]:
h.setCommunityCards('FLOP', cards[0:3])
if cards[3]:
h.setCommunityCards('TURN', [cards[3]])
if cards[4]:
h.setCommunityCards('RIVER', [cards[4]])
#[Card.valueSuitFromCard(x) for x in cards]
# HandInfo : HID, TABLE
# BUTTON - why is this treated specially in Hand?
# answer: it is written out in hand histories
# still, I think we should record all the active seat positions in a seat_order array
c.execute("""SELECT
h.sitehandno as hid,
h.tablename as table,
h.startTime as startTime
FROM
hands as h
WHERE h.id = %(handid)s
""", {'handid':handid})
res = c.fetchone()
h.handid = res[0]
h.tablename = res[1]
h.startTime = res[2] # automatically a datetime
# PlayerStacks
c.execute("""SELECT
c = db.get_cursor()
q = """SELECT
hp.seatno,
round(hp.winnings / 100.0,2) as winnings,
p.name,
@ -355,69 +293,101 @@ db: a connected Database object"""
hp.card1,hp.card2,
hp.position
FROM
handsplayers as hp,
players as p
HandsPlayers as hp,
Players as p
WHERE
hp.handid = %(handid)s
hp.handId = %s
and p.id = hp.playerid
""", {'handid':handid})
"""
q = q.replace('%s', db.sql.query['placeholder'])
# PlayerStacks
c.execute(q, (handId,))
for (seat, winnings, name, chips, card1,card2, position) in c.fetchall():
h.addPlayer(seat,name,chips)
if card1 and card2:
h.addHoleCards(map(Card.valueSuitFromCard, (card1,card2)), name, dealt=True)
if winnings > 0:
h.addCollectPot(name, winnings)
if position == 'B':
h.buttonpos = seat
print "DEBUG: seat: '%s'\tname: '%s'\tchips: '%s'" % (seat, name, chips)
self.addPlayer(seat,name,str(chips))
#if card1 and card2:
# self.addHoleCards(map(Card.valueSuitFromCard, (card1,card2)), name, dealt=True)
#if winnings > 0:
# self.addCollectPot(name, winnings)
#if position == 'B':
# self.buttonpos = seat
# HandInfo : HID, TABLE
# BUTTON - why is this treated specially in Hand?
# answer: it is written out in hand histories
# still, I think we should record all the active seat positions in a seat_order array
#c.execute("""SELECT
# h.sitehandno as hid,
# h.tablename as table,
# h.startTime as startTime
# FROM
# Hands as h
# WHERE h.id = %(handid)s
# """, {'handid':handid})
#res = c.fetchone()
#h.handid = res[0]
#h.tablename = res[1]
#h.startTime = res[2] # automatically a datetime
#cards = map(Card.valueSuitFromCard, res[11:16] )
#if cards[0]:
# h.setCommunityCards('FLOP', cards[0:3])
#if cards[3]:
# h.setCommunityCards('TURN', [cards[3]])
#if cards[4]:
# h.setCommunityCards('RIVER', [cards[4]])
#[Card.valueSuitFromCard(x) for x in cards]
# actions
c.execute("""SELECT
(ha.street,ha.actionno) as actnum,
p.name,
ha.street,
ha.action,
ha.allin,
round(ha.amount / 100.0,2)
FROM
handsplayers as hp,
handsactions as ha,
players as p
WHERE
hp.handid = %(handid)s
and ha.handsplayerid = hp.id
and p.id = hp.playerid
ORDER BY
ha.street,ha.actionno
""", {'handid':handid})
res = c.fetchall()
for (actnum,player, streetnum, act, allin, amount) in res:
act=act.strip()
street = h.allStreets[streetnum+1]
if act==u'blind':
h.addBlind(player, 'big blind', amount)
# TODO: The type of blind is not recorded in the DB.
# TODO: preflop street name anomalies in Hand
elif act==u'fold':
h.addFold(street,player)
elif act==u'call':
h.addCall(street,player,amount)
elif act==u'bet':
h.addBet(street,player,amount)
elif act==u'check':
h.addCheck(street,player)
elif act==u'unbet':
pass
else:
print act, player, streetnum, allin, amount
# TODO : other actions
#c.execute("""SELECT
# (ha.street,ha.actionno) as actnum,
# p.name,
# ha.street,
# ha.action,
# ha.allin,
# round(ha.amount / 100.0,2)
# FROM
# handsplayers as hp,
# handsactions as ha,
# players as p
# WHERE
# hp.handid = %(handid)s
# and ha.handsplayerid = hp.id
# and p.id = hp.playerid
# ORDER BY
# ha.street,ha.actionno
# """, {'handid':handid})
#res = c.fetchall()
#for (actnum,player, streetnum, act, allin, amount) in res:
# act=act.strip()
# street = h.allStreets[streetnum+1]
# if act==u'blind':
# h.addBlind(player, 'big blind', amount)
# # TODO: The type of blind is not recorded in the DB.
# # TODO: preflop street name anomalies in Hand
# elif act==u'fold':
# h.addFold(street,player)
# elif act==u'call':
# h.addCall(street,player,amount)
# elif act==u'bet':
# h.addBet(street,player,amount)
# elif act==u'check':
# h.addCheck(street,player)
# elif act==u'unbet':
# pass
# else:
# print act, player, streetnum, allin, amount
# # TODO : other actions
#hhc.readShowdownActions(self)
#hc.readShownCards(self)
h.totalPot()
h.rake = h.totalpot - h.totalcollected
#h.totalPot()
#h.rake = h.totalpot - h.totalcollected
return h
def addPlayer(self, seat, name, chips):
"""\
@ -850,10 +820,11 @@ class HoldemOmahaHand(Hand):
hhc.readOther(self)
#print "\nHand:\n"+str(self)
elif builtFrom == "DB":
if handid is not None:
self.select(handid) # Will need a handId
else:
log.warning(_("HoldemOmahaHand.__init__:Can't assemble hand from db without a handid"))
#if handid is not None:
# self.select(handid) # Will need a handId
#else:
# log.warning(_("HoldemOmahaHand.__init__:Can't assemble hand from db without a handid"))
print "DEBUG: HoldemOmaha hand initialised for select()"
else:
log.warning(_("HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided"))
pass
@ -1577,6 +1548,11 @@ Add a complete on [street] by [player] to [amountTo]
else:
log.warning(_("join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should be impossible for anyone who is not a hero"))
log.warning(_("join_holcards: holecards(%s): %s") %(player, holecards))
if holecards == [u'0x', u'0x']:
log.warning(_("join_holecards: Player '%s' appears not to have been dealt a card"))
# If a player is listed but not dealt a card in a cash game this can occur
# Noticed in FTP Razz hand. Return 3 empty cards in this case
holecards = [u'0x', u'0x', u'0x']
return holecards

View File

@ -664,7 +664,7 @@ or None if we fail to get the info """
def getTableTitleRe(type, table_name=None, tournament = None, table_number=None):
"Returns string to search in windows titles"
if type=="tour":
return "%s.+Table.+%s" % (tournament, table_number)
return "%s.+Table %s" % (tournament, table_number)
else:
return table_name

View File

@ -32,6 +32,8 @@ import sys
import pygtk
import gtk
import gobject
import L10n
_ = L10n.get_translation()
# FreePokerTools modules
from Mucked import Aux_Window

View File

@ -536,6 +536,16 @@ class Hud:
aux.destroy()
self.aux_windows = []
def resize_windows(self, *args):
for w in self.stat_windows.itervalues():
if type(w) == int:
continue
rel_x = (w.x - self.table.x) * self.table.width / self.table.oldwidth
rel_y = (w.y - self.table.y) * self.table.height / self.table.oldheight
w.x = self.table.x + rel_x
w.y = self.table.y + rel_y
w.window.move(w.x, w.y)
def reposition_windows(self, *args):
self.update_table_position()
for w in self.stat_windows.itervalues():

0
pyfpdb/IdentifySite.py Normal file → Executable file
View File

13
pyfpdb/Mucked.py Executable file → Normal file
View File

@ -25,17 +25,17 @@ Mucked cards display for FreePokerTools HUD.
# to do
# Standard Library modules
import sys
import pprint
#import sys
#import pprint
# pyGTK modules
import pygtk
#import pygtk
import gtk
import gobject
# FreePokerTools modules
import Configuration
import Database
#import Configuration
#import Database
import Card
class Aux_Window(object):
@ -415,9 +415,12 @@ class Aux_Seats(Aux_Window):
# Methods likely to be of use for any Seat_Window implementation
def destroy(self):
"""Destroy all of the seat windows."""
try:
for i in self.m_windows.keys():
self.m_windows[i].destroy()
del(self.m_windows[i])
except AttributeError:
pass
# Methods likely to be useful for mucked card windows (or similar) only
def hide(self):

90
pyfpdb/OSXTables.py Normal file
View File

@ -0,0 +1,90 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""XWindows specific methods for TableWindows Class.
"""
# 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
########################################################################
import L10n
_ = L10n.get_translation()
# Standard Library modules
import re
import os
# pyGTK modules
import gtk
# Other Library modules
from Quartz.CoreGraphics import *
# FPDB modules
from TableWindow import Table_Window
class Table(Table_Window):
def find_table_parameters(self):
# This is called by __init__(). Find the poker table window of interest,
# given the self.search_string. Then populate self.number, self.title,
# self.window, and self.parent (if required).
self.number = None
WinList = CGWindowListCreate(0,0)
WinListDict = CGWindowListCreateDescriptionFromArray(WinList)
for d in WinListDict:
if re.search(self.search_string, d.get(kCGWindowName, ""), re.I):
title = d[kCGWindowName]
if self.check_bad_words(title): continue
self.number = d[kCGWindowNumber]
self.title = title
if self.number is None:
return None
def get_geometry(self):
WinList = CGWindowListCreate(0,0)
WinListDict = CGWindowListCreateDescriptionFromArray(WinList)
for d in WinListDict:
if d[CGWindowNumber] == self.number:
return {'x' : d[kCGWindowBounds][X],
'y' : d[kCGWindowBounds][Y],
'width' : d[kCGWindowBounds][Width],
'height' : d[kCGWindowBounds][Height]
}
return None
def get_window_title(self):
WinList = CGWindowListCreate(0,0)
WinListDict = CGWindowListCreateDescriptionFromArray(WinList)
for d in WinListDict:
if d[kCGWindowNumber] == self.number:
return d[kCGWindowName]
return None
def topify(self, window):
# The idea here is to call set_transient_for on the HUD window, with the table window
# as the argument. This should keep the HUD window on top of the table window, as if
# the hud window was a dialog belonging to the table.
# This is the gdkhandle for the HUD window
gdkwindow = gtk.gdk.window_foreign_new(window.number)
gdkwindow.set_transient_for(self.gdkhandle)

View File

@ -42,11 +42,12 @@ class OnGame(HandHistoryConverter):
siteId = 5 # Needs to match id entry in Sites database
mixes = { } # Legal mixed games
sym = {'USD': "\$", 'CAD': "\$", 'T$': "", "EUR": "\xe2\x82\xac", "GBP": "\xa3"} # ADD Euro, Sterling, etc HERE
sym = {'USD': "\$", 'CAD': "\$", 'T$': "", "EUR": u"\u20ac", "GBP": "\xa3"} # ADD Euro, Sterling, etc HERE
substitutions = {
'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes
'LS' : "\$|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8)
'LS' : u"\$|\xe2\x82\xac|\u20ac" # legal currency symbols - Euro(cp1252, utf-8)
}
currencies = { u'\u20ac':'EUR', u'\xe2\x82\xac':'EUR', '$':'USD', '':'T$' }
limits = { 'NO_LIMIT':'nl', 'LIMIT':'fl'}
@ -89,10 +90,10 @@ class OnGame(HandHistoryConverter):
(
(?P<LIMIT>NO_LIMIT|Limit|LIMIT|Pot\sLimit)\s
(?P<GAME>TEXAS_HOLDEM|OMAHA_HI|SEVEN_CARD_STUD|SEVEN_CARD_STUD_HI_LO|RAZZ|FIVE_CARD_DRAW)\s
(%(LS)s)?(?P<SB>[.0-9]+)/
(?P<CURRENCY>%(LS)s|)?(?P<SB>[.0-9]+)/
(%(LS)s)?(?P<BB>[.0-9]+)
)?
""" % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE)
""" % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE) #TODO: detect play money (identified by "Play money" rather than "Real money" and set currency accordingly
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
@ -174,7 +175,8 @@ class OnGame(HandHistoryConverter):
mg = m.groupdict()
info['type'] = 'ring'
info['currency'] = 'USD'
if 'CURRENCY' in mg:
info['currency'] = self.currencies[mg['CURRENCY']]
if 'LIMIT' in mg:
if mg['LIMIT'] in self.limits:
@ -326,7 +328,7 @@ class OnGame(HandHistoryConverter):
def readAction(self, hand, street):
m = self.re_Action.finditer(hand.streets[street])
for action in m:
acts = action.groupdict()
#acts = action.groupdict()
#log.debug("readaction: acts: %s" %acts)
if action.group('ATYPE') == ' raises':
hand.addRaiseBy( street, action.group('PNAME'), action.group('BET') )

View File

@ -41,6 +41,9 @@ def fpdb_options():
parser.add_option("-k", "--konverter",
dest="hhc", default="PokerStarsToFpdb",
help=_("Module name for Hand History Converter"))
parser.add_option("-s", "--sitename",
dest="sitename", default=None,
help=_("A sitename"))
parser.add_option("-l", "--logging",
dest = "log_level",
choices = ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL', 'EMPTY'),
@ -59,11 +62,51 @@ def fpdb_options():
help=_("File to be split is a PokerStars or Full Tilt Poker archive file"))
parser.add_option("-n", "--numhands", dest="hands", default="100", type="int",
help=_("How many hands do you want saved to each file. Default is 100"))
parser.add_option("--xloc", dest="xloc", default=None, type="int",
help=_("X location to open window"))
parser.add_option("--yloc", dest="yloc", default=None, type="int",
help=_("Y location to open Window"))
parser.add_option("--autoimport", action="store_true", dest="autoimport",
help=_("Auto-start Auto-import"))
parser.add_option("--minimized", action="store_true", dest="minimized",
help=_("Start Minimized"))
parser.add_option("--hidden", action="store_true", dest="hidden",
help=_("Start Hidden"))
(options, argv) = parser.parse_args()
return (options, argv)
def site_alias(alias):
"""Function for converting various site aliases to the FPDB name"""
tmp = alias
aliases = {
"PokerStars" : "PokerStars",
"Full Tilt Poker": "Full Tilt Poker",
"PartyPoker" : "PartyPoker",
"Betfair" : "Betfair",
"OnGame" : "OnGame",
"Absolute" : "Absolute",
"UltimateBet" : "UltimateBet",
"Everleaf" : "Everleaf",
"Carbon" : "Carbon",
"iPoker" : "iPoker",
"Winamax" : "Winamax",
"Win2day" : "Win2day",
"Stars" : "PokerStars",
"FTP" : "Full Tilt Poker",
"Party" : "PartyPoker",
"AP" : "Absolute",
"UB" : "UltimateBet",
}
try:
tmp = aliases[alias]
except KeyError, e:
tmp = False
print _("Alias '%s' unknown" % alias)
return tmp
if __name__== "__main__":
(options, argv) = fpdb_options()
print "errorsToConsole =", options.errorsToConsole

View File

@ -45,22 +45,27 @@ class PartyPoker(HandHistoryConverter):
codepage = "utf8"
siteId = 9
filetype = "text"
sym = {'USD': "\$", }
sym = {'USD': "\$", 'EUR': u"\u20ac", 'T$': ""}
currencies = {"\$": "USD", "$": "USD", u"\xe2\x82\xac": "EUR", u"\u20ac": "EUR", '': "T$"}
substitutions = {
'LEGAL_ISO' : "USD|EUR", # legal ISO currency codes
'LS' : "\$|\u20AC|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8)
}
# Static regexes
# $5 USD NL Texas Hold'em - Saturday, July 25, 07:53:52 EDT 2009
# NL Texas Hold'em $1 USD Buy-in Trny:45685440 Level:8 Blinds-Antes(600/1 200 -50) - Sunday, May 17, 11:25:07 MSKS 2009
re_GameInfoRing = re.compile("""
(?P<CURRENCY>\$|)\s*(?P<RINGLIMIT>[.,0-9]+)([.,0-9/$]+)?\s*(?:USD)?\s*
re_GameInfoRing = re.compile(u"""
(?P<CURRENCY>[%(LS)s])\s*(?P<RINGLIMIT>[.,0-9]+)([.,0-9/$]+)?\s*(?:%(LEGAL_ISO)s)?\s*
(?P<LIMIT>(NL|PL|))\s*
(?P<GAME>(Texas\ Hold\'em|Omaha|7 Card Stud Hi-Lo))
(?P<GAME>(Texas\ Hold\'em|Omaha|7\ Card\ Stud\ Hi-Lo))
\s*\-\s*
(?P<DATETIME>.+)
""", re.VERBOSE | re.UNICODE)
""" % substitutions, re.VERBOSE | re.UNICODE)
re_GameInfoTrny = re.compile("""
(?P<LIMIT>(NL|PL|))\s*
(?P<GAME>(Texas\ Hold\'em|Omaha))\s+
(?:(?P<BUYIN>\$?[.,0-9]+)\s*(?P<BUYIN_CURRENCY>USD)?\s*Buy-in\s+)?
(?:(?P<BUYIN>\$?[.,0-9]+)\s*(?P<BUYIN_CURRENCY>%(LEGAL_ISO)s)?\s*Buy-in\s+)?
Trny:\s?(?P<TOURNO>\d+)\s+
Level:\s*(?P<LEVEL>\d+)\s+
((Blinds|Stakes)(?:-Antes)?)\(
@ -70,15 +75,14 @@ class PartyPoker(HandHistoryConverter):
\)
\s*\-\s*
(?P<DATETIME>.+)
""", re.VERBOSE | re.UNICODE)
re_Hid = re.compile("^Game \#(?P<HID>\d+) starts.")
""" % substitutions, re.VERBOSE | re.UNICODE)
re_Hid = re.compile("Game \#(?P<HID>\d+) starts.")
re_PlayerInfo = re.compile("""
re_PlayerInfo = re.compile(u"""
Seat\s(?P<SEAT>\d+):\s
(?P<PNAME>.*)\s
\(\s*\$?(?P<CASH>[0-9,.]+)\s*(?:USD|)\s*\)
""" ,
re.VERBOSE)
\(\s*[%(LS)s]?(?P<CASH>[0-9,.]+)\s*(?:%(LEGAL_ISO)s|)\s*\)
""" % substitutions, re.VERBOSE| re.UNICODE)
re_HandInfo = re.compile("""
^Table\s+(?P<TTYPE>[$a-zA-Z0-9 ]+)?\s+
@ -123,18 +127,16 @@ class PartyPoker(HandHistoryConverter):
self.compiledPlayers = players
player_re = "(?P<PNAME>" + "|".join(map(re.escape, players)) + ")"
subst = {'PLYR': player_re, 'CUR_SYM': hand.SYMBOL[hand.gametype['currency']],
subst = {'PLYR': player_re, 'CUR_SYM': self.sym[hand.gametype['currency']],
'CUR': hand.gametype['currency'] if hand.gametype['currency']!='T$' else ''}
for key in ('CUR_SYM', 'CUR'):
subst[key] = re.escape(subst[key])
self.re_PostSB = re.compile(
r"^%(PLYR)s posts small blind \[%(CUR_SYM)s(?P<SB>[.,0-9]+) ?%(CUR)s\]\." % subst,
re.MULTILINE)
r"^%(PLYR)s posts small blind \[%(CUR_SYM)s(?P<SB>[.,0-9]+) ?%(CUR)s\]\."
% subst, re.MULTILINE)
self.re_PostBB = re.compile(
r"^%(PLYR)s posts big blind \[%(CUR_SYM)s(?P<BB>[.,0-9]+) ?%(CUR)s\]\." % subst,
re.MULTILINE)
u"%(PLYR)s posts big blind \[%(CUR_SYM)s(?P<BB>[.,0-9]+) ?%(CUR)s\]\."
% subst, re.MULTILINE)
self.re_PostDead = re.compile(
r"^%(PLYR)s posts big blind \+ dead \[(?P<BBNDEAD>[.,0-9]+) ?%(CUR_SYM)s\]\." % subst,
r"^%(PLYR)s posts big blind + dead \[(?P<BBNDEAD>[.,0-9]+) ?%(CUR_SYM)s\]\." % subst,
re.MULTILINE)
self.re_Antes = re.compile(
r"^%(PLYR)s posts ante \[%(CUR_SYM)s(?P<ANTE>[.,0-9]+) ?%(CUR)s\]" % subst,
@ -142,11 +144,10 @@ class PartyPoker(HandHistoryConverter):
self.re_HeroCards = re.compile(
r"^Dealt to %(PLYR)s \[\s*(?P<NEWCARDS>.+)\s*\]" % subst,
re.MULTILINE)
self.re_Action = re.compile(r"""
self.re_Action = re.compile(u"""
^%(PLYR)s\s+(?P<ATYPE>bets|checks|raises|calls|folds|is\sall-In)
(?:\s+\[%(CUR_SYM)s(?P<BET>[.,\d]+)\s*%(CUR)s\])?
""" % subst,
re.MULTILINE|re.VERBOSE)
""" % subst, re.MULTILINE|re.VERBOSE)
self.re_ShownCards = re.compile(
r"^%s (?P<SHOWED>(?:doesn\'t )?shows?) " % player_re +
r"\[ *(?P<CARDS>.+) *\](?P<COMBINATION>.+)\.",
@ -181,10 +182,6 @@ class PartyPoker(HandHistoryConverter):
return self._gameType
return self._gameType
@staticmethod
def decode_hand_text(handText):
return handText.encode("latin1").decode(LOCALE_ENCODING)
def determineGameType(self, handText):
"""inspect the handText and return the gametype dict
@ -192,7 +189,6 @@ class PartyPoker(HandHistoryConverter):
{'limitType': xxx, 'base': xxx, 'category': xxx}"""
info = {}
handText = self.decode_hand_text(handText)
m = self._getGameType(handText)
m_20BBmin = self.re_20BBmin.search(handText)
if m is None:
@ -210,7 +206,6 @@ class PartyPoker(HandHistoryConverter):
'Omaha' : ('hold','omahahi'),
"7 Card Stud Hi-Lo" : ('stud','studhi'),
}
currencies = { '$':'USD', '':'T$' }
for expectedField in ['LIMIT', 'GAME']:
if mg[expectedField] is None:
@ -243,7 +238,7 @@ class PartyPoker(HandHistoryConverter):
info['bb'] = "%.2f" % (bb)
info['sb'] = "%.2f" % (sb)
info['currency'] = currencies[mg['CURRENCY']]
info['currency'] = self.currencies[mg['CURRENCY']]
else:
info['sb'] = clearMoneyString(mg['SB'])
info['bb'] = clearMoneyString(mg['BB'])
@ -253,15 +248,11 @@ class PartyPoker(HandHistoryConverter):
def readHandInfo(self, hand):
# we should redecode handtext here (as it imposible to it above)
# if you know more accurate way to do it - tell me
hand.handText = self.decode_hand_text(hand.handText)
info = {}
try:
info.update(self.re_Hid.search(hand.handText).groupdict())
except:
raise FpdbParseError(_("Cannot read HID for current hand"))
except AttributeError, e:
raise FpdbParseError(_("Cannot read HID for current hand: %s" % e))
try:
info.update(self.re_HandInfo.search(hand.handText,re.DOTALL).groupdict())
@ -374,7 +365,6 @@ class PartyPoker(HandHistoryConverter):
else:
#zero stacked players are added later
zeroStackPlayers.append([int(a.group('SEAT')), a.group('PNAME'), clearMoneyString(a.group('CASH'))])
if hand.gametype['type'] == 'ring':
#finds first vacant seat after an exact seat
def findFirstEmptySeat(startSeat):

View File

@ -57,9 +57,11 @@ class PokerStars(HandHistoryConverter):
'20.00': ('5.00', '10.00'), '20': ('5.00', '10.00'),
'30.00': ('10.00', '15.00'), '30': ('10.00', '15.00'),
'60.00': ('15.00', '30.00'), '60': ('15.00', '30.00'),
'80.00': ('20.00', '40.00'), '80': ('20.00', '40.00'),
'100.00': ('25.00', '50.00'), '100': ('25.00', '50.00'),
'200.00': ('50.00', '100.00'), '200': ('50.00', '100.00'),
'400.00': ('100.00', '200.00'), '400': ('100.00', '200.00'),
'800.00': ('200.00', '400.00'), '800': ('200.00', '400.00'),
'1000.00': ('250.00', '500.00'),'1000': ('250.00', '500.00')
}
@ -153,7 +155,7 @@ class PokerStars(HandHistoryConverter):
(\scards?(\s\[(?P<DISCARDED>.+?)\])?)?\s*$"""
% subst, re.MULTILINE|re.VERBOSE)
self.re_ShowdownAction = re.compile(r"^%s: shows \[(?P<CARDS>.*)\]" % player_re, re.MULTILINE)
self.re_CollectPot = re.compile(r"Seat (?P<SEAT>[0-9]+): %(PLYR)s (\(button\) |\(small blind\) |\(big blind\) |\(button\) \(small blind\) )?(collected|showed \[.*\] and won) \(%(CUR)s(?P<POT>[.\d]+)\)(, mucked| with.*|)" % subst, re.MULTILINE)
self.re_CollectPot = re.compile(r"Seat (?P<SEAT>[0-9]+): %(PLYR)s (\(button\) |\(small blind\) |\(big blind\) |\(button\) \(small blind\) |\(button\) \(big blind\) )?(collected|showed \[.*\] and won) \(%(CUR)s(?P<POT>[.\d]+)\)(, mucked| with.*|)" % subst, re.MULTILINE)
self.re_sitsOut = re.compile("^%s sits out" % player_re, re.MULTILINE)
self.re_ShownCards = re.compile("^Seat (?P<SEAT>[0-9]+): %s (\(.*\) )?(?P<SHOWED>showed|mucked) \[(?P<CARDS>.*)\].*" % player_re, re.MULTILINE)
@ -264,7 +266,7 @@ class PokerStars(HandHistoryConverter):
hand.buyinCurrency="PSFP"
else:
#FIXME: handle other currencies, FPP, play money
raise FpdbParseError(_("failed to detect currency"))
raise FpdbParseError(_("Failed to detect currency: '%s'" % info[key]))
info['BIAMT'] = info['BIAMT'].strip(u'$€FPP')
@ -297,7 +299,7 @@ class PokerStars(HandHistoryConverter):
hand.tablename = info[key]
if key == 'BUTTON':
hand.buttonpos = info[key]
if key == 'MAX':
if key == 'MAX' and info[key] != None:
hand.maxseats = int(info[key])
if key == 'MIXED':

View File

@ -1356,6 +1356,41 @@ class Sql:
street4Raises INT)
"""
################################
# Create SessionsCache
################################
if db_server == 'mysql':
self.query['createSessionsCacheTable'] = """CREATE TABLE SessionsCache (
id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
sessionStart DATETIME NOT NULL,
sessionEnd DATETIME NOT NULL,
ringHDs INT NOT NULL,
tourHDs INT NOT NULL,
totalProfit INT NOT NULL,
bigBets FLOAT UNSIGNED NOT NULL)
ENGINE=INNODB"""
elif db_server == 'postgresql':
self.query['createSessionsCacheTable'] = """CREATE TABLE SessionsCache (
id BIGSERIAL, PRIMARY KEY (id),
sessionStart REAL NOT NULL,
sessionEnd REAL NOT NULL,
ringHDs INT NOT NULL,
tourHDs INT NOT NULL,
totalProfit INT NOT NULL,
bigBets FLOAT NOT NULL)
"""
elif db_server == 'sqlite':
self.query['createSessionsCacheTable'] = """CREATE TABLE SessionsCache (
id INTEGER PRIMARY KEY,
sessionStart REAL NOT NULL,
sessionEnd REAL NOT NULL,
ringHDs INT NOT NULL,
tourHDs INT NOT NULL,
totalProfit INT NOT NULL,
bigBets REAL UNSIGNED NOT NULL)
"""
if db_server == 'mysql':
self.query['addTourneyIndex'] = """ALTER TABLE Tourneys ADD UNIQUE INDEX siteTourneyNo(siteTourneyNo, tourneyTypeId)"""
@ -1365,11 +1400,11 @@ class Sql:
self.query['addTourneyIndex'] = """CREATE UNIQUE INDEX siteTourneyNo ON Tourneys (siteTourneyNo, tourneyTypeId)"""
if db_server == 'mysql':
self.query['addHandsIndex'] = """ALTER TABLE Hands ADD UNIQUE INDEX siteHandNo(siteHandNo, gameTypeId)"""
self.query['addHandsIndex'] = """ALTER TABLE Hands ADD UNIQUE INDEX siteHandNo(siteHandNo, gametypeId)"""
elif db_server == 'postgresql':
self.query['addHandsIndex'] = """CREATE UNIQUE INDEX siteHandNo ON Hands (siteHandNo, gameTypeId)"""
self.query['addHandsIndex'] = """CREATE UNIQUE INDEX siteHandNo ON Hands (siteHandNo, gametypeId)"""
elif db_server == 'sqlite':
self.query['addHandsIndex'] = """CREATE UNIQUE INDEX siteHandNo ON Hands (siteHandNo, gameTypeId)"""
self.query['addHandsIndex'] = """CREATE UNIQUE INDEX siteHandNo ON Hands (siteHandNo, gametypeId)"""
if db_server == 'mysql':
self.query['addPlayersIndex'] = """ALTER TABLE Players ADD UNIQUE INDEX name(name, siteId)"""
@ -1416,6 +1451,34 @@ class Sql:
and (p.siteId = %s or %s = -1)
"""
self.query['get_gameinfo_from_hid'] = """
SELECT
s.name,
g.category,
g.base,
g.type,
g.limitType,
g.hilo,
round(g.smallBlind / 100.0,2),
round(g.bigBlind / 100.0,2),
round(g.smallBet / 100.0,2),
round(g.bigBet / 100.0,2),
g.currency
FROM
Hands as h,
Sites as s,
Gametypes as g,
HandsPlayers as hp,
Players as p
WHERE
h.id = %s
and g.id = h.gametypeid
and hp.handid = h.id
and p.id = hp.playerid
and s.id = p.siteid
limit 1
"""
self.query['get_stats_from_hand'] = """
SELECT hc.playerId AS player_id,
hp.seatNo AS seat,
@ -2110,7 +2173,7 @@ class Sql:
if db_server == 'mysql':
self.query['playerDetailedStats'] = """
select <hgameTypeId> AS hgametypeid
select <hgametypeId> AS hgametypeid
,<playerName> AS pname
,gt.base
,gt.category
@ -2196,7 +2259,7 @@ class Sql:
,variance(hp.totalProfit/100.0) AS variance
from HandsPlayers hp
inner join Hands h on (h.id = hp.handId)
inner join Gametypes gt on (gt.Id = h.gameTypeId)
inner join Gametypes gt on (gt.Id = h.gametypeId)
inner join Sites s on (s.Id = gt.siteId)
inner join Players p on (p.Id = hp.playerId)
where hp.playerId in <player_test>
@ -2207,7 +2270,7 @@ class Sql:
<flagtest>
<gtbigBlind_test>
and date_format(h.startTime, '%Y-%m-%d %T') <datestest>
group by hgameTypeId
group by hgametypeId
,pname
,gt.base
,gt.category
@ -2224,14 +2287,14 @@ class Sql:
when 'S' then 'S'
else concat('Z', <position>)
end
<orderbyhgameTypeId>
<orderbyhgametypeId>
,upper(gt.limitType) desc
,maxbigblind desc
,s.name
"""
elif db_server == 'postgresql':
self.query['playerDetailedStats'] = """
select <hgameTypeId> AS hgametypeid
select <hgametypeId> AS hgametypeid
,<playerName> AS pname
,gt.base
,gt.category
@ -2317,7 +2380,7 @@ class Sql:
,variance(hp.totalProfit/100.0) AS variance
from HandsPlayers hp
inner join Hands h on (h.id = hp.handId)
inner join Gametypes gt on (gt.Id = h.gameTypeId)
inner join Gametypes gt on (gt.Id = h.gametypeId)
inner join Sites s on (s.Id = gt.siteId)
inner join Players p on (p.Id = hp.playerId)
where hp.playerId in <player_test>
@ -2328,7 +2391,7 @@ class Sql:
<flagtest>
<gtbigBlind_test>
and to_char(h.startTime, 'YYYY-MM-DD HH24:MI:SS') <datestest>
group by hgameTypeId
group by hgametypeId
,pname
,gt.base
,gt.category
@ -2346,14 +2409,14 @@ class Sql:
when '0' then 'Y'
else 'Z'||<position>
end
<orderbyhgameTypeId>
<orderbyhgametypeId>
,upper(gt.limitType) desc
,maxbigblind desc
,s.name
"""
elif db_server == 'sqlite':
self.query['playerDetailedStats'] = """
select <hgameTypeId> AS hgametypeid
select <hgametypeId> AS hgametypeid
,<playerName> AS pname
,gt.base
,gt.category AS category
@ -2439,7 +2502,7 @@ class Sql:
,variance(hp.totalProfit/100.0) AS variance
from HandsPlayers hp
inner join Hands h on (h.id = hp.handId)
inner join Gametypes gt on (gt.Id = h.gameTypeId)
inner join Gametypes gt on (gt.Id = h.gametypeId)
inner join Sites s on (s.Id = gt.siteId)
inner join Players p on (p.Id = hp.playerId)
where hp.playerId in <player_test>
@ -2450,7 +2513,7 @@ class Sql:
<flagtest>
<gtbigBlind_test>
and datetime(h.startTime) <datestest>
group by hgameTypeId
group by hgametypeId
,hp.playerId
,gt.base
,gt.category
@ -2468,7 +2531,7 @@ class Sql:
when '0' then 'Y'
else 'Z'||<position>
end
<orderbyhgameTypeId>
<orderbyhgametypeId>
,upper(gt.limitType) desc
,max(gt.bigBlind) desc
,s.name
@ -2479,7 +2542,11 @@ class Sql:
select s.name AS siteName
,t.tourneyTypeId AS tourneyTypeId
,tt.currency AS currency
,(CASE WHEN tt.currency = 'USD' THEN tt.buyIn/100.0 ELSE tt.buyIn END) AS buyIn
,(CASE
WHEN tt.currency = 'USD' THEN tt.buyIn/100.0
WHEN tt.currency = 'EUR' THEN tt.buyIn/100.0
ELSE tt.buyIn
END) AS buyIn
,tt.fee/100.0 AS fee
,tt.category AS category
,tt.limitType AS limitType
@ -2512,7 +2579,11 @@ class Sql:
select s.name AS siteName
,t.tourneyTypeId AS tourneyTypeId
,tt.currency AS currency
,(CASE WHEN tt.currency = 'USD' THEN tt.buyIn/100.0 ELSE tt.buyIn END) AS buyIn
,(CASE
WHEN tt.currency = 'USD' THEN tt.buyIn/100.0
WHEN tt.currency = 'EUR' THEN tt.buyIn/100.0
ELSE tt.buyIn
END) AS buyIn
,tt.fee/100.0 AS fee
,tt.category AS category
,tt.limitType AS limitType
@ -2546,7 +2617,11 @@ class Sql:
select s.name AS siteName
,t.tourneyTypeId AS tourneyTypeId
,tt.currency AS currency
,(CASE WHEN tt.currency = 'USD' THEN tt.buyIn/100.0 ELSE tt.buyIn END) AS buyIn
,(CASE
WHEN tt.currency = 'USD' THEN tt.buyIn/100.0
WHEN tt.currency = 'EUR' THEN tt.buyIn/100.0
ELSE tt.buyIn
END) AS buyIn
,tt.fee/100.0 AS fee
,tt.category AS category
,tt.limitType AS limitType
@ -2646,7 +2721,7 @@ class Sql:
,format( sum(activeSeats*HDs)/(sum(HDs)+0.0), 2) AS AvgSeats
from Gametypes gt
inner join Sites s on s.Id = gt.siteId
inner join HudCache hc on hc.gameTypeId = gt.Id
inner join HudCache hc on hc.gametypeId = gt.Id
where hc.playerId in <player_test>
and <gtbigBlind_test>
and hc.activeSeats <seats_test>
@ -2667,7 +2742,7 @@ class Sql:
else variance(hprof.profit/100.0)
end as variance
from
(select hp.handId, <hgameTypeId> as gtId, hp.totalProfit as profit
(select hp.handId, <hgametypeId> as gtId, hp.totalProfit as profit
from HandsPlayers hp
inner join Hands h ON h.id = hp.handId
where hp.playerId in <player_test>
@ -2751,7 +2826,7 @@ class Sql:
,to_char(sum(activeSeats*HDs)/(sum(HDs)+0.0),'90D00') AS AvgSeats
from Gametypes gt
inner join Sites s on s.Id = gt.siteId
inner join HudCache hc on hc.gameTypeId = gt.Id
inner join HudCache hc on hc.gametypeId = gt.Id
where hc.playerId in <player_test>
and <gtbigBlind_test>
and hc.activeSeats <seats_test>
@ -2772,7 +2847,7 @@ class Sql:
else variance(hprof.profit/100.0)
end as variance
from
(select hp.handId, <hgameTypeId> as gtId, hp.totalProfit as profit
(select hp.handId, <hgametypeId> as gtId, hp.totalProfit as profit
from HandsPlayers hp
inner join Hands h ON (h.id = hp.handId)
where hp.playerId in <player_test>
@ -2874,7 +2949,7 @@ class Sql:
,format( sum(activeSeats*HDs)/(sum(HDs)+0.0), 2) AS AvgSeats
from Gametypes gt
inner join Sites s on s.Id = gt.siteId
inner join HudCache hc on hc.gameTypeId = gt.Id
inner join HudCache hc on hc.gametypeId = gt.Id
where hc.playerId in <player_test>
and <gtbigBlind_test>
and hc.activeSeats <seats_test>
@ -2904,7 +2979,7 @@ class Sql:
else variance(hprof.profit/100.0)
end as variance
from
(select hp.handId, <hgameTypeId> as gtId, hp.position
(select hp.handId, <hgametypeId> as gtId, hp.position
, hp.totalProfit as profit
from HandsPlayers hp
inner join Hands h ON (h.id = hp.handId)
@ -3013,7 +3088,7 @@ class Sql:
,to_char(sum(activeSeats*HDs)/(sum(HDs)+0.0),'90D00') AS AvgSeats
from Gametypes gt
inner join Sites s on (s.Id = gt.siteId)
inner join HudCache hc on (hc.gameTypeId = gt.Id)
inner join HudCache hc on (hc.gametypeId = gt.Id)
where hc.playerId in <player_test>
and <gtbigBlind_test>
and hc.activeSeats <seats_test>
@ -3043,14 +3118,14 @@ class Sql:
else variance(hprof.profit/100.0)
end as variance
from
(select hp.handId, <hgameTypeId> as gtId, hp.position
(select hp.handId, <hgametypeId> as gtId, hp.position
, hp.totalProfit as profit
from HandsPlayers hp
inner join Hands h ON (h.id = hp.handId)
where hp.playerId in <player_test>
and hp.tourneysPlayersId IS NULL
and to_char(h.startTime, 'YYYY-MM-DD') <datestest>
group by hp.handId, gameTypeId, hp.position, hp.totalProfit
group by hp.handId, gametypeId, hp.position, hp.totalProfit
) hprof
group by hprof.gtId, PlPosition
) hprof2
@ -3144,7 +3219,7 @@ class Sql:
SELECT UNIX_TIMESTAMP(h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit
FROM HandsPlayers hp
INNER JOIN Hands h on (h.id = hp.handId)
INNER JOIN Gametypes gt on (gt.Id = h.gameTypeId)
INNER JOIN Gametypes gt on (gt.Id = h.gametypeId)
INNER JOIN Sites s on (s.Id = gt.siteId)
INNER JOIN Players p on (p.Id = hp.playerId)
WHERE hp.playerId in <player_test>
@ -3156,7 +3231,7 @@ class Sql:
SELECT EXTRACT(epoch from h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit
FROM HandsPlayers hp
INNER JOIN Hands h on (h.id = hp.handId)
INNER JOIN Gametypes gt on (gt.Id = h.gameTypeId)
INNER JOIN Gametypes gt on (gt.Id = h.gametypeId)
INNER JOIN Sites s on (s.Id = gt.siteId)
INNER JOIN Players p on (p.Id = hp.playerId)
WHERE hp.playerId in <player_test>
@ -3168,7 +3243,7 @@ class Sql:
SELECT STRFTIME('<ampersand_s>', h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit
FROM HandsPlayers hp
INNER JOIN Hands h on (h.id = hp.handId)
INNER JOIN Gametypes gt on (gt.Id = h.gameTypeId)
INNER JOIN Gametypes gt on (gt.Id = h.gametypeId)
INNER JOIN Sites s on (s.Id = gt.siteId)
INNER JOIN Players p on (p.Id = hp.playerId)
WHERE hp.playerId in <player_test>
@ -3968,7 +4043,8 @@ class Sql:
AND playerId=%s
AND activeSeats=%s
AND position=%s
AND tourneyTypeId+0=%s
AND (case when tourneyTypeId is NULL then 1 else
(case when tourneyTypeId+0=%s then 1 else 0 end) end)=1
AND styleKey=%s"""
self.query['get_hero_hudcache_start'] = """select min(hc.styleKey)
@ -3976,6 +4052,96 @@ class Sql:
where hc.playerId in <playerid_list>
and hc.styleKey like 'd%'"""
####################################
# Queries to rebuild/modify sessionscache
####################################
self.query['select_sessionscache'] = """
SELECT sessionStart,
sessionEnd,
ringHDs,
tourHDs,
totalProfit,
bigBets
FROM SessionsCache
WHERE sessionEnd>=%s
AND sessionStart<=%s"""
self.query['select_sessionscache_mid'] = """
SELECT sessionStart,
sessionEnd,
ringHDs,
tourHDs,
totalProfit,
bigBets
FROM SessionsCache
WHERE sessionEnd>=%s
AND sessionStart<=%s"""
self.query['select_sessionscache_start'] = """
SELECT sessionStart,
sessionEnd,
ringHDs,
tourHDs,
totalProfit,
bigBets
FROM SessionsCache
WHERE sessionStart>%s
AND sessionEnd>=%s
AND sessionStart<=%s"""
self.query['update_sessionscache_mid'] = """
UPDATE SessionsCache SET
ringHDs=ringHDs+%s,
tourHDs=tourHDs+%s,
totalProfit=totalProfit+%s,
bigBets=bigBets+%s
WHERE sessionStart<=%s
AND sessionEnd>=%s"""
self.query['update_sessionscache_start'] = """
UPDATE SessionsCache SET
sessionStart=%s,
ringHDs=ringHDs+%s,
tourHDs=tourHDs+%s,
totalProfit=totalProfit+%s,
bigBets=bigBets+%s
WHERE sessionStart>%s
AND sessionEnd>=%s
AND sessionStart<=%s"""
self.query['update_sessionscache_end'] = """
UPDATE SessionsCache SET
sessionEnd=%s,
ringHDs=ringHDs+%s,
tourHDs=tourHDs+%s,
totalProfit=totalProfit+%s,
bigBets=bigBets+%s
WHERE sessionEnd<%s
AND sessionEnd>=%s
AND sessionStart<=%s"""
self.query['insert_sessionscache'] = """
INSERT INTO SessionsCache (
sessionStart,
sessionEnd,
ringHDs,
tourHDs,
totalProfit,
bigBets)
VALUES (%s, %s, %s, %s, %s, %s)"""
self.query['merge_sessionscache'] = """
SELECT min(sessionStart), max(sessionEnd), sum(ringHDs), sum(tourHDs), sum(totalProfit), sum(bigBets)
FROM SessionsCache
WHERE sessionEnd>=%s
AND sessionStart<=%s"""
self.query['delete_sessions'] = """
DELETE FROM SessionsCache
WHERE sessionEnd>=%s
AND sessionStart<=%s"""
if db_server == 'mysql':
self.query['analyze'] = """
analyze table Autorates, GameTypes, Hands, HandsPlayers, HudCache, Players

View File

@ -9,7 +9,9 @@
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
#TODO: gettextify
import L10n
_ = L10n.get_translation()
import sys, random
import pokereval
@ -22,13 +24,56 @@ OFFSUIT = 2
ev = pokereval.PokerEval()
holder = None
class Holder:
class Stove:
def __init__(self):
self.hand = None
self.board = None
self.range = None
self.h_range = None
def set_board_with_list(self, board):
pass
def set_board_string(self, string):
board = Board()
# Board
b = string.strip().split()
if len(b) > 4:
board.b5 = b[4]
if len(b) > 3:
board.b4 = b[3]
if len(b) > 2:
board.b1 = b[0]
board.b2 = b[1]
board.b3 = b[2]
self.board = board
def set_hero_cards_string(self, string):
# Our pocket cards
cc = string.strip().split()
c1 = cc[0]
c2 = cc[1]
pocket_cards = Cards(c1, c2)
self.hand = pocket_cards
def set_villain_range_string(self, string):
# Villain's range
h_range = Range()
hands_in_range = string.strip().split(',')
for h in hands_in_range:
_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))
self.h_range = h_range
class Cards:
@ -104,37 +149,17 @@ class SumEV:
self.n_ties += ev.n_ties
self.n_losses += ev.n_losses
def show(self, hand, range):
def show(self, hand, h_range):
win_pct = 100 * (float(self.n_wins) / float(self.n_hands))
lose_pct = 100 * (float(self.n_losses) / float(self.n_hands))
tie_pct = 100 * (float(self.n_ties) / float(self.n_hands))
print 'Enumerated %d possible plays.' % self.n_hands
print 'Your hand: (%s %s)' % (hand.c1, hand.c2)
print 'Against the range: %s\n' % cards_from_range(range)
print 'Against the range: %s\n' % cards_from_range(h_range)
print ' Win Lose Tie'
print ' %5.2f%% %5.2f%% %5.2f%%' % (win_pct, lose_pct, tie_pct)
def usage(me):
print """Texas Hold'Em odds calculator
Calculates odds against a range of hands.
To use: %s '<board cards>' '<your hand>' '<opponent's range>' [...]
Separate cards with space.
Separate hands in range with commas.
""" % me
def cards_from_range(range):
s = '{'
for h in range:
if h.c1 == '__' and h.c2 == '__':
s += 'random, '
else:
s += '%s%s, ' % (h.c1, h.c2)
s = s.rstrip(', ')
s += '}'
return s
# Expands hand abbreviations such as JJ and AK to full hand ranges.
@ -159,7 +184,7 @@ def expand_hands(abbrev, hand, board):
else:
selection = ANY
range = []
h_range = []
considered = set()
for s1 in SUITS:
c1 = r1 + s1
@ -173,11 +198,8 @@ def expand_hands(abbrev, hand, board):
elif selection == OFFSUIT and s1 == s2:
continue
if c2 not in considered and c2 not in known_cards:
range.append(Cards(c1, c2))
return range
h_range.append(Cards(c1, c2))
return h_range
def parse_args(args, container):
@ -185,42 +207,9 @@ def parse_args(args, container):
if len(args) < 4:
return False
board = Board()
# Board
b = args[1].strip().split()
if len(b) > 4:
board.b5 = b[4]
if len(b) > 3:
board.b4 = b[3]
if len(b) > 2:
board.b1 = b[0]
board.b2 = b[1]
board.b3 = b[2]
# Our pocket cards
cc = args[2].strip().split()
c1 = cc[0]
c2 = cc[1]
pocket_cards = Cards(c1, c2)
# Villain's range
range = Range()
hands_in_range = args[3].strip().split(',')
for h in hands_in_range:
_h = h.strip()
if len(_h) > 3:
cc = _h.split()
r1 = cc[0]
r2 = cc[1]
vp = Cards(r1, r2)
range.add(vp)
else:
range.expand(expand_hands(_h, pocket_cards, board))
holder.hand = pocket_cards
holder.range = range
holder.board = board
container.set_board_string(args[1])
container.set_hero_cards_string(args[2])
container.set_villain_range_string(args[3])
return True
@ -269,11 +258,11 @@ def odds_for_range(holder):
b.append("__")
if monte_carlo:
print 'No board given. Using Monte-Carlo simulation...'
print _('No board given. Using Monte-Carlo simulation...')
iters = random.randint(25000, 125000)
else:
iters = -1
for h in holder.range.get():
for h in holder.h_range.get():
e = odds_for_hand(
[holder.hand.c1, holder.hand.c2],
[h.c1, h.c2],
@ -282,28 +271,35 @@ def odds_for_range(holder):
)
sev.add(e)
sev.show(holder.hand, holder.range.get())
sev.show(holder.hand, holder.h_range.get())
def usage(me):
print """Texas Hold'Em odds calculator
Calculates odds against a range of hands.
To use: %s '<board cards>' '<your hand>' '<opponent's range>' [...]
holder = Holder()
if not parse_args(sys.argv, holder):
Separate cards with space.
Separate hands in range with commas.
""" % me
def cards_from_range(h_range):
s = '{'
for h in h_range:
if h.c1 == '__' and h.c2 == '__':
s += 'random, '
else:
s += '%s%s, ' % (h.c1, h.c2)
s = s.rstrip(', ')
s += '}'
return s
def main(argv=None):
stove = Stove()
if not parse_args(sys.argv, stove):
usage(sys.argv[0])
sys.exit(2)
odds_for_range(holder)
# debugs
#print '%s, %s' % ( holder.hand.c1, holder.hand.c2)
#print '%s %s %s %s %s' % (holder.board.b1, holder.board.b2,
# holder.board.b3, holder.board.b4, holder.board.b5)
#while True:
# try:
# vl = holder.range.get()
# v = vl.pop()
# print '\t%s %s' % (v.c1, v.c2)
# except IndexError:
# break
odds_for_range(stove)
if __name__ == '__main__':
sys.exit(main())

View File

@ -116,6 +116,8 @@ class Table_Window(object):
self.config = config
self.site = site
self.hud = None # fill in later
self.gdkhandle = None
if tournament is not None and table_number is not None:
self.tournament = int(tournament)
self.table = int(table_number)
@ -150,7 +152,7 @@ class Table_Window(object):
# __str__ method for testing
likely_attrs = ("number", "title", "site", "width", "height", "x", "y",
"tournament", "table", "gdkhandle", "window", "parent",
"game", "search_string", "tableno_re")
"key", "hud", "game", "search_string", "tableno_re")
temp = 'TableWindow object\n'
for a in likely_attrs:
if getattr(self, a, 0):
@ -191,7 +193,7 @@ class Table_Window(object):
if mo is not None:
#print "get_table_no: mo=",mo.groups()
return mo.group(1)
return int(mo.group(1))
return False
####################################################################
@ -234,7 +236,9 @@ class Table_Window(object):
return "client_destroyed"
elif self.width != new_geo['width'] or self.height != new_geo['height']: # window resized
self.oldwidth = self.width
self.width = new_geo['width']
self.oldheight = self.height
self.height = new_geo['height']
return "client_resized"
return False # no change
@ -256,7 +260,7 @@ class Table_Window(object):
if result != False and result != self.table:
self.table = result
if hud is not None:
hud.main_window.emit("table_changed", hud)
hud.parent.main_window.emit("table_changed", hud)
return True
def check_bad_words(self, title):

View File

@ -22,24 +22,25 @@ Main program module to test/demo the Tables subclasses.
########################################################################
import L10n
_ = L10n.get_translation()
# Standard Library modules
import sys
import os
# pyGTK modules
import pygtk
import gtk
import gobject
# fpdb/free poker tools modules
import Configuration
import L10n
_ = L10n.get_translation()
# get the correct module for the current os
if os.name == 'posix':
if sys.platform == 'linux2':
import XTables as Tables
elif os.name == 'nt':
elif sys.platform == 'darwin':
import OSXTables as Tables
else: # This is bad--figure out the values for the various windows flavors
import WinTables as Tables
config = Configuration.Config()
@ -60,7 +61,7 @@ if __name__=="__main__":
self.main_window.set_title(_("Fake HUD Main Window"))
self.main_window.move(table.x + dx, table.y + dy)
self.main_window.show_all()
table.topify(self)
table.topify(self.main_window)
# These are the currently defined signals. Do this in the HUD.
self.main_window.connect("client_moved", self.client_moved)
@ -103,9 +104,12 @@ if __name__=="__main__":
table_kwargs = dict(table_name = table_name)
table = Tables.Table(config, "Full Tilt Poker", **table_kwargs)
table.gdkhandle = gtk.gdk.window_foreign_new(table.number)
print table
fake = fake_hud(table)
fake.parent = fake
gobject.timeout_add(1000, table.check_game, fake)
gobject.timeout_add(100, table.check_table, fake)
print "calling main"

View File

@ -28,6 +28,9 @@ import Configuration
import Database
import SQL
import fpdb_import
import Options
import datetime
import pytz
class FpdbError:
@ -59,18 +62,7 @@ class FpdbError:
idx = f.find('regression')
print "(%3d) : %s" %(self.histogram[f], f[idx:])
def compare(leaf, importer, errors, site):
filename = leaf
#print "DEBUG: fileanme: %s" % filename
# Test if this is a hand history file
if filename.endswith('.txt'):
# test if there is a .hp version of the file
importer.addBulkImportImportFileOrDir(filename, site=site)
(stored, dups, partial, errs, ttime) = importer.runImport()
if os.path.isfile(filename + '.hp') and errs < 1:
# Compare them
def compare_handsplayers_file(filename, importer, errors):
hashfilename = filename + '.hp'
in_fh = codecs.open(hashfilename, 'r', 'utf8')
@ -100,8 +92,56 @@ def compare(leaf, importer, errors, site):
errors.error_report(filename, hand, stat, ghash, testhash, p)
except KeyError, e:
errors.error_report(filename, False, "KeyError: '%s'" % stat, False, False, p)
def compare_hands_file(filename, importer, errors):
hashfilename = filename + '.hands'
in_fh = codecs.open(hashfilename, 'r', 'utf8')
whole_file = in_fh.read()
in_fh.close()
testhash = eval(whole_file)
hhc = importer.getCachedHHC()
handlist = hhc.getProcessedHands()
for hand in handlist:
ghash = hand.stats.getHands()
for datum in ghash:
#print "DEBUG: hand: '%s'" % datum
try:
if ghash[datum] == testhash[datum]:
# The stats match - continue
pass
else:
# Stats don't match.
if datum == "gametypeId":
# Not an error. gametypeIds are dependent on the order added to the db.
#print "DEBUG: Skipping mismatched gamtypeId"
pass
else:
errors.error_report(filename, hand, datum, ghash, testhash, None)
except KeyError, e:
errors.error_report(filename, False, "KeyError: '%s'" % stat, False, False, p)
def compare(leaf, importer, errors, site):
filename = leaf
#print "DEBUG: fileanme: %s" % filename
# Test if this is a hand history file
if filename.endswith('.txt'):
# test if there is a .hp version of the file
importer.addBulkImportImportFileOrDir(filename, site=site)
(stored, dups, partial, errs, ttime) = importer.runImport()
if errs > 0:
errors.error_report(filename, False, "Parse", False, False, False)
else:
if os.path.isfile(filename + '.hp'):
compare_handsplayers_file(filename, importer, errors)
if os.path.isfile(filename + '.hands'):
compare_hands_file(filename, importer, errors)
importer.clearFileList()
@ -117,10 +157,28 @@ def walk_testfiles(dir, function, importer, errors, site):
else:
compare(nfile, importer, errors, site)
def usage():
print "USAGE:"
sys.exit(0)
def main(argv=None):
if argv is None:
argv = sys.argv[1:]
(options, argv) = Options.fpdb_options()
test_all_sites = True
if options.usage == True:
usage()
if options.sitename:
options.sitename = Options.site_alias(options.sitename)
if options.sitename == False:
usage()
print "Only regression testing '%s' files" % (options.sitename)
test_all_sites = False
config = Configuration.Config(file = "HUD_config.test.xml")
db = Database.Database(config)
sql = SQL.Sql(db_server = 'sqlite')
@ -159,21 +217,27 @@ def main(argv=None):
]
sites = {
'PokerStars' : True,
'Full Tilt Poker' : True,
'PartyPoker' : True,
'Betfair' : True,
'OnGame' : True,
'Absolute' : True,
'UltimateBet' : True,
'Everleaf' : True,
'Carbon' : True,
'PKR' : False,
'iPoker' : True,
'Win2day' : True,
'Winamax' : True,
'PokerStars' : False,
'Full Tilt Poker' : False,
'PartyPoker' : False,
'Betfair' : False,
'OnGame' : False,
'Absolute' : False,
'UltimateBet' : False,
'Everleaf' : False,
'Carbon' : False,
#'PKR' : False,
'iPoker' : False,
'Win2day' : False,
'Winamax' : False,
}
if test_all_sites == True:
for s in sites:
sites[s] = True
else:
sites[options.sitename] = True
if sites['PokerStars'] == True:
walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars")
walk_testfiles("regression-test-files/tour/Stars/", compare, importer, PokerStarsErrors, "PokerStars")
@ -195,12 +259,13 @@ def main(argv=None):
walk_testfiles("regression-test-files/cash/Everleaf/", compare, importer, EverleafErrors, "Everleaf")
if sites['Carbon'] == True:
walk_testfiles("regression-test-files/cash/Carbon/", compare, importer, CarbonErrors, "Carbon")
if sites['PKR'] == True:
walk_testfiles("regression-test-files/cash/PKR/", compare, importer, PKRErrors, "PKR")
#if sites['PKR'] == True:
# walk_testfiles("regression-test-files/cash/PKR/", compare, importer, PKRErrors, "PKR")
if sites['iPoker'] == True:
walk_testfiles("regression-test-files/cash/iPoker/", compare, importer, iPokerErrors, "iPoker")
if sites['Winamax'] == True:
walk_testfiles("regression-test-files/cash/Winamax/", compare, importer, WinamaxErrors, "Winamax")
walk_testfiles("regression-test-files/tour/Winamax/", compare, importer, WinamaxErrors, "Winamax")
if sites['Win2day'] == True:
walk_testfiles("regression-test-files/cash/Win2day/", compare, importer, Win2dayErrors, "Win2day")

View File

@ -76,6 +76,11 @@ class Table(Table_Window):
self.title = titles[hwnd]
self.hud = None
self.number = hwnd
if self.gdkhandle is not None:
try: # Windows likes this here - Linux doesn't
self.gdkhandle = gtk.gdk.window_foreign_new(self.number)
except AttributeError:
pass
def get_geometry(self):
try:

View File

@ -82,15 +82,26 @@ class Winamax(HandHistoryConverter):
# Winamax Poker - CashGame - HandId: #279823-223-1285031451 - Holdem no limit (0.02€/0.05€) - 2010/09/21 03:10:51 UTC
# Table: 'Charenton-le-Pont' 9-max (real money) Seat #5 is the button
re_HandInfo = re.compile(u"""
\s*Winamax\sPoker\s-\sCashGame\s-\sHandId:\s\#(?P<HID1>\d+)-(?P<HID2>\d+)-(?P<HID3>\d+).*\s
\s*Winamax\sPoker\s-\s
(?P<RING>CashGame)?
(?P<TOUR>Tournament\s
(?P<TOURNAME>.+)?\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+))?
.*)?
\s-\sHandId:\s\#(?P<HID1>\d+)-(?P<HID2>\d+)-(?P<HID3>\d+).*\s
(?P<GAME>Holdem|Omaha)\s
(?P<LIMIT>no\slimit|pot\slimit)\s
\(
(((%(LS)s)?(?P<ANTE>[.0-9]+)(%(LS)s)?)/)?
((%(LS)s)?(?P<SB>[.0-9]+)(%(LS)s)?)/
((%(LS)s)?(?P<BB>[.0-9]+)(%(LS)s)?)
\)\s-\s
(?P<DATETIME>.*)
Table:\s\'(?P<TABLE>[^']+)\'\s(?P<MAXPLAYER>\d+)\-max
Table:\s\'(?P<TABLE>[^(]+)
(.(?P<TOURNO>\d+).\#(?P<TABLENO>\d+))?.*
\'
\s(?P<MAXPLAYER>\d+)\-max
""" % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE)
re_TailSplitHands = re.compile(r'\n\s*\n')
@ -126,8 +137,8 @@ class Winamax(HandHistoryConverter):
self.re_PostSB = re.compile('%(PLYR)s posts small blind (%(CUR)s)?(?P<SB>[\.0-9]+)(%(CUR)s)?' % subst, re.MULTILINE)
self.re_PostBB = re.compile('%(PLYR)s posts big blind (%(CUR)s)?(?P<BB>[\.0-9]+)(%(CUR)s)?' % subst, re.MULTILINE)
self.re_DenySB = re.compile('(?P<PNAME>.*) deny SB' % subst, re.MULTILINE)
self.re_Antes = re.compile(r"^%(PLYR)s: posts the ante (%(CUR)s)?(?P<ANTE>[\.0-9]+)(%(CUR)s)?" % subst, re.MULTILINE)
self.re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for (%(CUR)s)?(?P<BRINGIN>[\.0-9]+(%(CUR)s)?)" % subst, re.MULTILINE)
self.re_Antes = re.compile(r"^%(PLYR)s posts ante (%(CUR)s)?(?P<ANTE>[\.0-9]+)(%(CUR)s)?" % subst, re.MULTILINE)
self.re_BringIn = re.compile(r"^%(PLYR)s brings[- ]in( low|) for (%(CUR)s)?(?P<BRINGIN>[\.0-9]+(%(CUR)s)?)" % subst, re.MULTILINE)
self.re_PostBoth = re.compile('(?P<PNAME>.*): posts small \& big blind \( (%(CUR)s)?(?P<SBBB>[\.0-9]+)(%(CUR)s)?\)' % subst)
self.re_PostDead = re.compile('(?P<PNAME>.*) posts dead blind \((%(CUR)s)?(?P<DEAD>[\.0-9]+)(%(CUR)s)?\)' % subst, re.MULTILINE)
self.re_HeroCards = re.compile('Dealt\sto\s%(PLYR)s\s\[(?P<CARDS>.*)\]' % subst)
@ -144,6 +155,9 @@ class Winamax(HandHistoryConverter):
["ring", "hold", "fl"],
["ring", "hold", "nl"],
["ring", "hold", "pl"],
["tour", "hold", "fl"],
["tour", "hold", "nl"],
["tour", "hold", "pl"],
]
def determineGameType(self, handText):
@ -160,7 +174,11 @@ class Winamax(HandHistoryConverter):
mg = m.groupdict()
if mg.get('TOUR'):
info['type'] = 'tour'
elif mg.get('RING'):
info['type'] = 'ring'
info['currency'] = 'EUR'
if 'LIMIT' in mg:
@ -202,11 +220,62 @@ class Winamax(HandHistoryConverter):
hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S") # also timezone at end, e.g. " ET"
hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, "CET", "UTC")
if key == 'HID1':
hand.handid = "1%.4d%s%s"%(int(info['HID2']),info['HID1'],info['HID3'])
# Need to remove non-alphanumerics for MySQL
hand.handid = "1%.9d%s%s"%(int(info['HID2']),info['HID1'],info['HID3'])
if key == 'TOURNO':
hand.tourNo = info[key]
if key == 'TABLE':
hand.tablename = info[key]
if key == 'BUYIN':
if hand.tourNo!=None:
#print "DEBUG: info['BUYIN']: %s" % info['BUYIN']
#print "DEBUG: info['BIAMT']: %s" % info['BIAMT']
#print "DEBUG: info['BIRAKE']: %s" % info['BIRAKE']
#print "DEBUG: info['BOUNTY']: %s" % info['BOUNTY']
for k in ['BIAMT','BIRAKE']:
if k in info.keys() and info[k]:
info[k] = info[k].replace(',','.')
if info[key] == 'Freeroll':
hand.buyin = 0
hand.fee = 0
hand.buyinCurrency = "FREE"
else:
if info[key].find("$")!=-1:
hand.buyinCurrency="USD"
elif info[key].find(u"")!=-1:
hand.buyinCurrency="EUR"
elif info[key].find("FPP")!=-1:
hand.buyinCurrency="PSFP"
else:
#FIXME: handle other currencies, FPP, play money
raise FpdbParseError(_("failed to detect currency"))
info['BIAMT'] = info['BIAMT'].strip(u'$€FPP')
if hand.buyinCurrency!="PSFP":
if info['BOUNTY'] != None:
# There is a bounty, Which means we need to switch BOUNTY and BIRAKE values
tmp = info['BOUNTY']
info['BOUNTY'] = info['BIRAKE']
info['BIRAKE'] = tmp
info['BOUNTY'] = info['BOUNTY'].strip(u'$€') # Strip here where it isn't 'None'
hand.koBounty = int(100*Decimal(info['BOUNTY']))
hand.isKO = True
else:
hand.isKO = False
info['BIRAKE'] = info['BIRAKE'].strip(u'$€')
hand.buyin = int(100*Decimal(info['BIAMT']))
hand.fee = int(100*Decimal(info['BIRAKE']))
else:
hand.buyin = int(Decimal(info['BIAMT']))
hand.fee = 0
if key == 'LEVEL':
hand.level = info[key]
# TODO: These
hand.buttonpos = 1
hand.maxseats = 10 # Set to None - Hand.py will guessMaxSeats()

View File

@ -44,6 +44,10 @@ class Table(Table_Window):
def find_table_parameters(self):
# This is called by __init__(). Find the poker table window of interest,
# given the self.search_string. Then populate self.number, self.title,
# self.window, and self.parent (if required).
reg = '''
\s+(?P<XID>[\dxabcdef]+) # XID in hex
\s(?P<TITLE>.+): # window title
@ -53,32 +57,47 @@ class Table(Table_Window):
for listing in os.popen('xwininfo -root -tree').readlines():
if re.search(self.search_string, listing, re.I):
mo = re.match(reg, listing, re.VERBOSE)
# mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z0-9\-.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', listing)
title = re.sub('\"', '', mo.groupdict()["TITLE"])
if self.check_bad_words(title): continue
self.number = int( mo.groupdict()["XID"], 0 )
self.title = title
self.hud = None # specified later
break
if self.number is None:
return None
(self.window, self.parent) = self.get_window_from_xid(self.number)
self.window = self.get_window_from_xid(self.number)
self.parent = self.window.query_tree().parent
# def get_window_from_xid(self, id):
# for outside in root.query_tree().children:
# if outside.id == id:
# return (outside, outside.query_tree().parent)
# for inside in outside.query_tree().children:
# if inside.id == id: # GNOME, Xfce
# return (inside, inside.query_tree().parent)
# for wayinside in inside.query_tree().children:
# if wayinside.id == id: # KDE
# parent = wayinside.query_tree().parent
# return (wayinside, parent.query_tree().parent)
# return (None, None)
def get_window_from_xid(self, id):
for outside in root.query_tree().children:
if outside.id == id:
return outside
for inside in outside.query_tree().children:
if inside.id == id:
return inside
return None
for top_level in root.query_tree().children:
if top_level.id == id:
return (top_level, None)
for w in treewalk(top_level):
if w.id == id:
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,
@ -96,7 +115,18 @@ class Table(Table_Window):
except AttributeError:
return None
def topify(self, window):
# The idea here is to call set_transient_for on the HUD window, with the table window
# as the argument. This should keep the HUD window on top of the table window, as if
# the hud window was a dialog belonging to the table.
# This is the gdkhandle for the HUD window
gdkwindow = gtk.gdk.window_foreign_new(window.window.xid)
gdkwindow.set_transient_for(self.gdkhandle)
def treewalk(parent):
for w in parent.query_tree().children:
for ww in treewalk(w):
yield ww
yield w
def topify(self, hud):
hud.main_window.gdkhandle = gtk.gdk.window_foreign_new(hud.main_window.window.xid)
hud.main_window.gdkhandle.set_transient_for(self.gdk_handle)

View File

@ -14,7 +14,6 @@
#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()
@ -76,7 +75,7 @@ try:
pygtk.require('2.0')
import gtk
import pango
except:
except ImportError:
print _("Unable to load PyGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org.")
raw_input(_("Press ENTER to continue."))
exit()
@ -87,18 +86,18 @@ import interlocks
try:
import matplotlib
matplotlib_version = matplotlib.__version__
except:
except ImportError:
matplotlib_version = 'not found'
try:
import numpy
numpy_version = numpy.__version__
except:
except ImportError:
numpy_version = 'not found'
try:
import sqlite3
sqlite3_version = sqlite3.version
sqlite_version = sqlite3.sqlite_version
except:
except ImportError:
sqlite3_version = 'not found'
sqlite_version = 'not found'
@ -116,13 +115,15 @@ import GuiAutoImport
import GuiGraphViewer
import GuiTourneyGraphViewer
import GuiSessionViewer
import GuiReplayer
import GuiStove
import SQL
import Database
import Configuration
import Exceptions
import Stats
VERSION = "0.21-rc1"
VERSION = "0.21-rc1 plus git"
class fpdb:
@ -203,7 +204,7 @@ class fpdb:
gtk.Button.set_relief(button, gtk.RELIEF_NONE)
settings = gtk.Widget.get_settings(button);
(w,h) = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_SMALL_TOOLBAR);
gtk.Widget.set_size_request (button, w + 4, h + 4);
gtk.Widget.set_size_request(button, w + 4, h + 4);
image.show()
iconBox.pack_start(image, True, False, 0)
button.add(iconBox)
@ -778,6 +779,8 @@ class fpdb:
<menuitem action="tourneyviewer"/>
<menuitem action="posnstats"/>
<menuitem action="sessionstats"/>
<menuitem action="replayer"/>
<menuitem action="stove"/>
</menu>
<menu action="database">
<menuitem action="maintaindbs"/>
@ -814,11 +817,13 @@ class fpdb:
('hudConfigurator', None, _('_HUD Configurator'), _('<control>H'), 'HUD Configurator', self.diaHudConfigurator),
('graphs', None, _('_Graphs'), _('<control>G'), 'Graphs', self.tabGraphViewer),
('tourneygraphs', None, _('Tourney Graphs'), None, 'TourneyGraphs', self.tabTourneyGraphViewer),
('stove', None, _('Stove'), None, 'Stove', self.tabStove),
('ringplayerstats', None, _('Ring _Player Stats (tabulated view, not on pgsql)'), _('<control>P'), 'Ring Player Stats (tabulated view, not on pgsql)', self.tab_ring_player_stats),
('tourneyplayerstats', None, _('_Tourney Stats (tabulated view, not on pgsql)'), _('<control>T'), 'Tourney Stats (tabulated view, not on pgsql)', self.tab_tourney_player_stats),
('tourneyviewer', None, _('Tourney _Viewer'), None, 'Tourney Viewer)', self.tab_tourney_viewer_stats),
('posnstats', None, _('P_ositional Stats (tabulated view, not on sqlite)'), _('<control>O'), 'Positional Stats (tabulated view, not on sqlite)', self.tab_positional_stats),
('sessionstats', None, _('Session Stats'), None, 'Session Stats', self.tab_session_stats),
('replayer', None, _('Hand _Replayer'), None, 'Hand Replayer', self.tab_replayer),
('database', None, _('_Database')),
('maintaindbs', None, _('_Maintain Databases'), None, 'Maintain Databases', self.dia_maintain_dbs),
('createtabs', None, _('Create or Recreate _Tables'), None, 'Create or Recreate Tables ', self.dia_recreate_tables),
@ -929,6 +934,7 @@ class fpdb:
response = diaDbVersionWarning.run()
diaDbVersionWarning.destroy()
# TODO: This should probably be setup in GUI Init
if self.status_bar is None:
self.status_bar = gtk.Label("")
self.main_vbox.pack_end(self.status_bar, False, True, 0)
@ -962,8 +968,8 @@ class fpdb:
self.quitting = True
# TODO: check if current settings differ from profile, if so offer to save or abort
if self.db!=None:
if self.db.backend==self.db.MYSQL_INNODB:
if self.db is not None:
if self.db.backend == self.db.MYSQL_INNODB:
try:
import _mysql_exceptions
if self.db is not None and self.db.is_connected():
@ -989,8 +995,11 @@ class fpdb:
"""opens the auto import tab"""
new_aimp_thread = GuiAutoImport.GuiAutoImport(self.settings, self.config, self.sql, self.window)
self.threads.append(new_aimp_thread)
aimp_tab=new_aimp_thread.get_vbox()
aimp_tab = new_aimp_thread.get_vbox()
self.add_and_display_tab(aimp_tab, _("Auto Import"))
if options.autoimport:
new_aimp_thread.startClicked(new_aimp_thread.startButton, "autostart")
options.autoimport = False
def tab_bulk_import(self, widget, data=None):
"""opens a tab for bulk importing"""
@ -1000,7 +1009,7 @@ class fpdb:
self.add_and_display_tab(bulk_tab, _("Bulk Import"))
def tab_tourney_import(self, widget, data=None):
"""opens a tab for bulk importing"""
"""opens a tab for bulk importing tournament summaries"""
new_import_thread = GuiTourneyImport.GuiTourneyImport(self.settings, self.config, self.sql, self.window)
self.threads.append(new_import_thread)
bulk_tab=new_import_thread.get_vbox()
@ -1043,6 +1052,12 @@ class fpdb:
ps_tab=new_ps_thread.get_vbox()
self.add_and_display_tab(ps_tab, _("Session Stats"))
def tab_replayer(self, widget, data=None):
new_ps_thread = GuiReplayer.GuiReplayer(self.config, self.sql, self.window)
self.threads.append(new_ps_thread)
ps_tab=new_ps_thread.get_vbox()
self.add_and_display_tab(ps_tab, _("Hand Replayer"))
def tab_main_help(self, widget, data=None):
"""Displays a tab with the main fpdb help screen"""
mh_tab=gtk.Label(_("""Fpdb needs translators!
@ -1078,18 +1093,37 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
gv_tab = new_gv_thread.get_vbox()
self.add_and_display_tab(gv_tab, _("Tourney Graphs"))
def tabStove(self, widget, data=None):
"""opens a tab for poker stove"""
thread = GuiStove.GuiStove(self.config, self.window)
self.threads.append(thread)
tab = thread.get_vbox()
self.add_and_display_tab(tab, _("Stove"))
def __init__(self):
# no more than 1 process can this lock at a time:
self.lock = interlocks.InterProcessLock(name="fpdb_global_lock")
self.db = None
self.status_bar = None
self.quitting = False
self.visible = False
self.threads = [] # objects used by tabs - no need for threads, gtk handles it
self.closeq = Queue.Queue(20) # used to signal ending of a thread (only logviewer for now)
# create window, move it to specific location on command line
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
if options.xloc is not None or options.yloc is not None:
if options.xloc is None:
options.xloc = 0
if options.yloc is None:
options.yloc = 0
self.window.move(options.xloc,options.yloc)
# connect to required events
self.window.connect("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy)
self.window.set_title("Free Poker DB - v%s" % (VERSION, ))
# set a default x/y size for the window
self.window.set_border_width(1)
defx, defy = 900, 720
sx, sy = gtk.gdk.screen_width(), gtk.gdk.screen_height()
@ -1098,34 +1132,43 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
self.window.set_default_size(defx, defy)
self.window.set_resizable(True)
# main area of window
self.main_vbox = gtk.VBox(False, 1)
self.main_vbox.set_border_width(1)
self.window.add(self.main_vbox)
self.main_vbox.show()
# create our Main Menu Bar
menubar = self.get_menu(self.window)
self.main_vbox.pack_start(menubar, False, True, 0)
menubar.show()
#done menubar
self.threads = [] # objects used by tabs - no need for threads, gtk handles it
self.closeq = Queue.Queue(20) # used to signal ending of a thread (only logviewer for now)
# create a tab bar
self.nb = gtk.Notebook()
self.nb.set_show_tabs(True)
self.nb.show()
self.main_vbox.pack_start(self.nb, True, True, 0)
self.tabs=[] # the event_boxes forming the actual tabs
self.tab_names=[] # names of tabs used since program started, not removed if tab is closed
self.pages=[] # the contents of the page, not removed if tab is closed
self.nb_tab_names=[] # list of tab names currently displayed in notebook
self.tabs = [] # the event_boxes forming the actual tabs
self.tab_names = [] # names of tabs used since program started, not removed if tab is closed
self.pages = [] # the contents of the page, not removed if tab is closed
self.nb_tab_names = [] # list of tab names currently displayed in notebook
# create the first tab
self.tab_main_help(None, None)
# determine window visibility from command line options
if options.minimized:
self.window.iconify()
if options.hidden:
self.window.hide()
if not options.hidden:
self.window.show()
self.visible = True # Flip on
self.load_profile(create_db = True)
# setup error logging
if not options.errorsToConsole:
fileName = os.path.join(self.config.dir_log, 'fpdb-errors.txt')
print (_("\nNote: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in: %s") % self.config.dir_log) \
@ -1133,6 +1176,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
errorFile = open(fileName, 'w', 0)
sys.stderr = errorFile
# set up tray-icon and menu
self.statusIcon = gtk.StatusIcon()
# use getcwd() here instead of sys.path[0] so that py2exe works:
cards = os.path.join(os.getcwd(), '..','gfx','fpdb-cards.png')
@ -1148,13 +1192,10 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
self.statusIcon.set_tooltip("Free Poker Database")
self.statusIcon.connect('activate', self.statusicon_activate)
self.statusMenu = gtk.Menu()
menuItem = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
menuItem.connect('activate', self.dia_about)
self.statusMenu.append(menuItem)
menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT)
menuItem.connect('activate', self.quit)
self.statusMenu.append(menuItem)
# set default menu options
self.addImageToTrayMenu(gtk.STOCK_ABOUT, self.dia_about)
self.addImageToTrayMenu(gtk.STOCK_QUIT, self.quit)
self.statusIcon.connect('popup-menu', self.statusicon_menu, self.statusMenu)
self.statusIcon.set_visible(True)
@ -1162,6 +1203,28 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
self.window.connect('window-state-event', self.window_state_event_cb)
sys.stderr.write(_("fpdb starting ..."))
if options.autoimport:
self.tab_auto_import(None)
def addImageToTrayMenu(self, image, event=None):
menuItem = gtk.ImageMenuItem(image)
if event is not None:
menuItem.connect('activate', event)
self.statusMenu.append(menuItem)
menuItem.show()
return menuItem
def addLabelToTrayMenu(self, label, event=None):
menuItem = gtk.MenuItem(label)
if event is not None:
menuItem.connect('activate', event)
self.statusMenu.append(menuItem)
menuItem.show()
return menuItem
def removeFromTrayMenu(self, menuItem):
menuItem.destroy()
menuItem = None
def __iconify(self):
self.visible = False

12
pyfpdb/fpdb_import.py Executable file → Normal file
View File

@ -83,6 +83,7 @@ class Importer:
self.pos_in_file = {} # dict to remember how far we have read in the file
#Set defaults
self.callHud = self.config.get_import_parameters().get("callFpdbHud")
self.cacheSessions = self.config.get_import_parameters().get("cacheSessions")
# CONFIGURATION OPTIONS
self.settings.setdefault("minPrint", 30)
@ -111,6 +112,9 @@ class Importer:
def setCallHud(self, value):
self.callHud = value
def setCacheSessions(self, value):
self.cacheSessions = value
def setMinPrint(self, value):
self.settings['minPrint'] = int(value)
@ -492,7 +496,15 @@ class Importer:
hand.updateHudCache(self.database)
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
if self.caller:
for hid in to_hud:
try:
print _("fpdb_import: sending hand to hud"), hand.dbid_hands, "pipe =", self.caller.pipe_to_hud

View File

@ -45,7 +45,7 @@ class InterProcessLockBase:
def acquire_impl(self, wait): abstract
def acquire(self, wait=False, retry_time=1, source=None):
def acquire(self, source, wait=False, retry_time=1):
if source == None:
source="Unknown"
if self._has_lock: # make sure 2nd acquire in same process fails

View File

@ -2,7 +2,7 @@ Stage #1300000000: Seven Card Hi/Lo Normal $0.02/$0.04 - 2009-03-18 19:10:00 (E
Seat 1 - PLAYER1 ($0.17 in chips)
Seat 2 - PLAYER2 ($0.36 in chips)
Seat 3 - PLAYER3 ($3.46 in chips)
Seat 5 - PLAYER4 ($1 in chips)
Seat 5 - Hero ($1 in chips)
Seat 6 - PLAYER5 ($1.07 in chips)
Seat 7 - PLAYER6 ($2.31 in chips)
Seat 8 - PLAYER7 ($0.93 in chips)
@ -12,12 +12,12 @@ PLAYER6 - Ante $0.01
PLAYER3 - Ante $0.01
PLAYER7 - Ante $0.01
PLAYER2 - Ante $0.01
PLAYER4 - Ante $0.01
Hero - Ante $0.01
*** 3rd STREET ***
Player1 - Pocket [H H Js]
PLAYER2 - Pocket [H H 7h]
PLAYER3 - Pocket [H H 6s]
PLAYER4 - Pocket [10c 5c 7s]
Hero - Pocket [10c 5c 7s]
PLAYER5 - Pocket [H H Qh]
PLAYER6 - Pocket [H H 9c]
PLAYER7 - Pocket [H H 3s]
@ -25,13 +25,13 @@ PLAYER7 - Bring-In $0.01
Player1 - Calls $0.01
PLAYER2 - Folds
PLAYER3 - Calls $0.01
PLAYER4 - Folds
Hero - Folds
PLAYER5 - Folds
PLAYER6 - Calls $0.01
*** 4TH STREET ***
Player1 - Pocket [H H Js 10d]
PLAYER3 - Pocket [H H 6s Ah]
PLAYER4 - Pocket [10c 5c 7s]
Hero - Pocket [10c 5c 7s]
PLAYER6 - Pocket [H H 9c Ks]
PLAYER7 - Pocket [H H 3s Qc]
PLAYER3 - Checks
@ -41,7 +41,7 @@ Player1 - Checks
*** 5TH STREET ***
Player1 - Pocket [H H Js 10d Kh]
PLAYER3 - Pocket [H H 6s Ah 8c]
PLAYER4 - Pocket [10c 5c 7s]
Hero - Pocket [10c 5c 7s]
PLAYER6 - Pocket [H H 9c Ks 10s]
PLAYER7 - Pocket [H H 3s Qc 6c]
PLAYER3 - Bets $0.04
@ -51,7 +51,7 @@ Player1 - Calls $0.04
*** 6TH STREET ***
Player1 - Pocket [H H Js 10d Kh 2c]
PLAYER3 - Pocket [H H 6s Ah 8c Jc]
PLAYER4 - Pocket [10c 5c 7s]
Hero - Pocket [10c 5c 7s]
PLAYER6 - Pocket [H H 9c Ks 10s 8h]
PLAYER7 - Pocket [H H 3s Qc 6c Qs]
PLAYER7 - Checks
@ -63,7 +63,7 @@ Player1 - Calls $0.04
*** RIVER ***
Player1 - Pocket [H H Js 10d Kh 2c H]
PLAYER3 - Pocket [H H 6s Ah 8c Jc H]
PLAYER4 - Pocket [10c 5c 7s]
Hero - Pocket [10c 5c 7s]
PLAYER6 - Pocket [H H 9c Ks 10s 8h H]
PLAYER7 - Pocket [H H 3s Qc 6c Qs H]
PLAYER7 - Checks
@ -82,7 +82,7 @@ Total Pot($0.43) | Rake ($0.04)
Seat 1: Player1 HI:lost with Two Pair, jacks and twos [Jh 3h Js 10d Kh 2c 2h - B:Js,P:Jh,P:2h,B:2c,B:Kh]
Seat 2: PLAYER2 Folded on the 3rd STREET
Seat 3: PLAYER3 won Total ($0.19) HI:with One pair, aces [3d 5d 6s Ah 8c Jc As - P:As,B:Ah,B:Jc,B:8c,B:6s] LO:($0.19) [B:Ah,P:3d,P:5d,B:6s,B:8c]
Seat 5: PLAYER4 Folded on the 3rd STREET
Seat 5: Hero Folded on the 3rd STREET
Seat 6: PLAYER5 Folded on the 3rd STREET
Seat 7: PLAYER6 won Total ($0.20) HI:($0.20) with Two Pair, kings and tens [Kc 10h 9c Ks 10s 8h 2s - B:Ks,P:Kc,B:10s,P:10h,B:9c]
Seat 8: PLAYER7 HI:lost with One pair, queens [5s 8d 3s Qc 6c Qs 9s - B:Qs,B:Qc,P:9s,P:8d,B:6c]

View File

@ -3,7 +3,7 @@ PL $0.05/$0.10 Omaha - Sunday, October 18, 20:00:00 GMT 2009
Table Death 1 6-max (Real Money)
Seat 2 is the button
Total number of active players : 6
Seat 1: Player6 ( $1 )
Seat 1: Hero ( $1 )
Seat 2: Player3 ( $9.38 )
Seat 3: Player2 ( $2.82 )
Seat 4: Player4 ( $4.13 )
@ -11,18 +11,18 @@ Seat 5: Player5 ( $28.77 )
Seat 6: Player1 ( $6.46 )
Player2 posts small blind [$0.05]
Player4 posts big blind [$0.10]
Player6 posts big blind [$0.10]
Hero posts big blind [$0.10]
** Dealing down cards **
Dealt to Player6 [ 7c, 6c, 5h, Jh ]
Dealt to Hero [ 7c, 6c, 5h, Jh ]
Player5 folds
Player1 calls [$0.10]
Player6 checks
Hero checks
Player3 calls [$0.10]
Player2 raises to [$0.30]
Player4 calls [$0.20]
Player1 calls [$0.20]
Player6 goes all-in
Player6 raises to [$1]
Hero goes all-in
Hero raises to [$1]
Player3 calls [$0.90]
Player2 calls [$0.70]
Player4 calls [$0.70]
@ -43,7 +43,7 @@ Player4 goes all-in
Player4 bets [$3.03]
Player1 calls [$3.03]
** Showdown **
Player6 shows [ 7c, 6c, 5h, Jh ] a straight, Seven to Three
Hero shows [ 7c, 6c, 5h, Jh ] a straight, Seven to Three
Player4 shows [ 7d, 8c, 3d, 6h ] a straight flush, Seven to Three
Player1 shows [ 3h, 4h, Td, 4s ] four of a kind, Fours
** Hand Conclusion **

View File

@ -2,7 +2,7 @@
<game id="15245216-1000" starttime="20081013150000" numholecards="2" gametype="2" realmoney="true" data="20081013|Niagara Falls (15245216)|15245216|15245216-1000|false">
<players dealer="8">
<player seat="3" nickname="Player1" balance="$34.13" dealtin="true" />
<player seat="2" nickname="Player2" balance="$49.25" dealtin="true" />
<player seat="2" nickname="Hero" balance="$49.25" dealtin="true" />
<player seat="1" nickname="Player3" balance="$55.64" dealtin="true" />
<player seat="0" nickname="Player4" balance="$19.72" dealtin="true" />
<player seat="7" nickname="Player5" balance="$25.16" dealtin="true" />

View File

@ -92,7 +92,7 @@
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player2': { 'card1': 13,
u'Hero': { 'card1': 13,
'card2': 46,
'card3': 0,
'card4': 0,

View File

@ -0,0 +1,267 @@
Everleaf Gaming Game #196321235
***** Hand history for game #196321235 *****
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:15
Table Cortland XIV
Seat 6 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 12.40 USD )
Seat 2: EricBlade ( $ 5 USD )
Seat 3: gabitzatoade ( $ 5.45 USD )
Seat 5: N0pr3s3n7 ( $ 10.29 USD )
Seat 6: Coolcatcool ( $ 8.30 USD )
zlodeu123: posts small blind [$ 0.05 USD]
EricBlade: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 9h, Qd ]
gabitzatoade folds
N0pr3s3n7 raises [$ 0.35 USD]
Coolcatcool folds
zlodeu123 folds
EricBlade folds
N0pr3s3n7 does not show cards
N0pr3s3n7 wins $ 0.25 USD from main pot
Everleaf Gaming Game #196321319
***** Hand history for game #196321319 *****
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:38
Table Cortland XIV
Seat 1 is the button
Total number of players: 5
Seat 1: zlodeu123 ( $ 12.35 USD )
Seat 2: EricBlade ( $ 4.90 USD )
Seat 3: gabitzatoade ( $ 5.45 USD )
Seat 5: N0pr3s3n7 ( $ 10.44 USD )
Seat 6: Coolcatcool ( $ 8.30 USD )
EricBlade: posts small blind [$ 0.05 USD]
gabitzatoade: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ Qd, 9d ]
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 folds
EricBlade raises [$ 0.25 USD]
gabitzatoade folds
EricBlade does not show cards
EricBlade wins $ 0.20 USD from main pot
Everleaf Gaming Game #196321394
***** Hand history for game #196321394 *****
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:57
Table Cortland XIV
Seat 2 is the button
Total number of players: 5
Seat 1: zlodeu123 ( $ 12.35 USD )
Seat 2: EricBlade ( $ 5 USD )
Seat 3: gabitzatoade ( $ 5.35 USD )
Seat 4: Miazza ( new player )
Seat 5: N0pr3s3n7 ( $ 10.44 USD )
Seat 6: Coolcatcool ( $ 8.30 USD )
gabitzatoade: posts small blind [$ 0.05 USD]
N0pr3s3n7: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 9c, Ac ]
Coolcatcool folds
zlodeu123 folds
EricBlade raises [$ 0.35 USD]
gabitzatoade calls [$ 0.30 USD]
N0pr3s3n7 folds
** Dealing Flop ** [ 4c, Kh, 6h ]
gabitzatoade checks
EricBlade: bets [$ 0.40 USD]
gabitzatoade calls [$ 0.40 USD]
** Dealing Turn ** [ Qh ]
gabitzatoade checks
Miazza has joined the table
EricBlade checks
** Dealing River ** [ Qd ]
gabitzatoade checks
EricBlade checks
EricBlade shows [ 9c, Ac ] a pair of queens
gabitzatoade shows [ 4s, 4d ] a full house, fours full of queens
gabitzatoade wins $ 1.52 USD from main pot with a full house, fours full of queens [ Qh, Qd, 4s, 4d, 4c ]
Everleaf Gaming Game #196321538
***** Hand history for game #196321538 *****
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:35:34
Table Cortland XIV
Seat 3 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 12.35 USD )
Seat 2: EricBlade ( $ 4.25 USD )
Seat 3: gabitzatoade ( $ 6.12 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.34 USD )
Seat 6: Coolcatcool ( $ 8.30 USD )
N0pr3s3n7: posts small blind [$ 0.05 USD]
Coolcatcool: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ Kc, Jd ]
zlodeu123 raises [$ 0.35 USD]
EricBlade calls [$ 0.35 USD]
gabitzatoade folds
N0pr3s3n7 folds
Coolcatcool folds
** Dealing Flop ** [ 9s, 3c, Jc ]
zlodeu123: bets [$ 0.60 USD]
EricBlade raises [$ 1.80 USD]
zlodeu123 folds
EricBlade does not show cards
EricBlade wins $ 1.95 USD from main pot
Everleaf Gaming Game #196321707
***** Hand history for game #196321707 *****
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:36:15
Table Cortland XIV
Seat 5 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.40 USD )
Seat 2: EricBlade ( $ 5.25 USD )
Seat 3: gabitzatoade ( $ 6.12 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.29 USD )
Seat 6: Coolcatcool ( $ 8.20 USD )
Coolcatcool: posts small blind [$ 0.05 USD]
zlodeu123: posts big blind [$ 0.10 USD]
Miazza sits out
** Dealing down cards **
Dealt to EricBlade [ 6d, 3d ]
EricBlade folds
gabitzatoade calls [$ 0.10 USD]
N0pr3s3n7 raises [$ 0.30 USD]
Coolcatcool folds
zlodeu123 folds
gabitzatoade calls [$ 0.20 USD]
** Dealing Flop ** [ 8d, 4d, Td ]
gabitzatoade checks
N0pr3s3n7: bets [$ 0.50 USD]
gabitzatoade folds
N0pr3s3n7 does not show cards
N0pr3s3n7 wins $ 0.72 USD from main pot
Everleaf Gaming Game #196321850
***** Hand history for game #196321850 *****
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:36:52
Table Cortland XIV
Seat 6 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.30 USD )
Seat 2: EricBlade ( $ 5.25 USD )
Seat 3: gabitzatoade ( $ 5.82 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
Seat 6: Coolcatcool ( $ 8.15 USD )
zlodeu123: posts small blind [$ 0.05 USD]
EricBlade: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ Qh, Qd ]
gabitzatoade folds
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 folds
EricBlade does not show cards
EricBlade wins $ 0.10 USD from main pot
Everleaf Gaming Game #196321947
***** Hand history for game #196321947 *****
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:37:15
Table Cortland XIV
Seat 1 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.30 USD )
Seat 3: gabitzatoade ( $ 5.82 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
Seat 6: Coolcatcool ( $ 8.15 USD )
EricBlade: posts small blind [$ 0.05 USD]
gabitzatoade: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ Ts, Ks ]
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 folds
EricBlade raises [$ 0.25 USD]
gabitzatoade folds
EricBlade does not show cards
EricBlade wins $ 0.20 USD from main pot
Everleaf Gaming Game #196322013
***** Hand history for game #196322013 *****
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:37:32
Table Cortland XIV
Seat 2 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.40 USD )
Seat 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
Seat 6: Coolcatcool ( $ 8.15 USD )
gabitzatoade: posts small blind [$ 0.05 USD]
Miazza: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 2c, 4s ]
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 raises [$ 0.35 USD]
EricBlade folds
gabitzatoade calls [$ 0.30 USD]
Miazza folds
** Dealing Flop ** [ Ad, 6d, 6s ]
gabitzatoade checks
zlodeu123: bets [$ 0.60 USD]
gabitzatoade calls [$ 0.60 USD]
** Dealing Turn ** [ Jc ]
gabitzatoade checks
zlodeu123 checks
** Dealing River ** [ Th ]
gabitzatoade checks
zlodeu123 checks
zlodeu123 shows [ Ah, 8d ] two pairs, aces and sixes
gabitzatoade shows [ Ac, 9c ] two pairs, aces and sixes
gabitzatoade wins $ 0.95 USD from main pot with two pairs, aces and sixes [ Ac, Ad, Jc, 6d, 6s ]
zlodeu123 wins $ 0.95 USD from main pot with two pairs, aces and sixes [ Ah, Ad, Jc, 6d, 6s ]
Everleaf Gaming Game #196322188
***** Hand history for game #196322188 *****
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:38:16
Table Cortland XIV
Seat 3 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.40 USD )
Seat 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.90 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
Seat 6: Coolcatcool ( $ 8.15 USD )
Miazza: posts small blind [$ 0.05 USD]
N0pr3s3n7: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 7d, Kd ]
Coolcatcool folds
zlodeu123 folds
EricBlade raises [$ 0.35 USD]
gabitzatoade folds
Miazza folds
N0pr3s3n7 folds
EricBlade does not show cards
EricBlade wins $ 0.25 USD from main pot

View File

@ -5,19 +5,19 @@ Table Cortland XIV
Seat 6 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 12.40 USD )
Seat 2: EricBlade ( $ 5 USD )
Seat 2: Hero ( $ 5 USD )
Seat 3: gabitzatoade ( $ 5.45 USD )
Seat 5: N0pr3s3n7 ( $ 10.29 USD )
Seat 6: Coolcatcool ( $ 8.30 USD )
zlodeu123: posts small blind [$ 0.05 USD]
EricBlade: posts big blind [$ 0.10 USD]
Hero: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 9h, Qd ]
Dealt to Hero [ 9h, Qd ]
gabitzatoade folds
N0pr3s3n7 raises [$ 0.35 USD]
Coolcatcool folds
zlodeu123 folds
EricBlade folds
Hero folds
N0pr3s3n7 does not show cards
N0pr3s3n7 wins $ 0.25 USD from main pot
@ -30,21 +30,21 @@ Table Cortland XIV
Seat 1 is the button
Total number of players: 5
Seat 1: zlodeu123 ( $ 12.35 USD )
Seat 2: EricBlade ( $ 4.90 USD )
Seat 2: Hero ( $ 4.90 USD )
Seat 3: gabitzatoade ( $ 5.45 USD )
Seat 5: N0pr3s3n7 ( $ 10.44 USD )
Seat 6: Coolcatcool ( $ 8.30 USD )
EricBlade: posts small blind [$ 0.05 USD]
Hero: posts small blind [$ 0.05 USD]
gabitzatoade: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ Qd, 9d ]
Dealt to Hero [ Qd, 9d ]
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 folds
EricBlade raises [$ 0.25 USD]
Hero raises [$ 0.25 USD]
gabitzatoade folds
EricBlade does not show cards
EricBlade wins $ 0.20 USD from main pot
Hero does not show cards
Hero wins $ 0.20 USD from main pot
@ -55,7 +55,7 @@ Table Cortland XIV
Seat 2 is the button
Total number of players: 5
Seat 1: zlodeu123 ( $ 12.35 USD )
Seat 2: EricBlade ( $ 5 USD )
Seat 2: Hero ( $ 5 USD )
Seat 3: gabitzatoade ( $ 5.35 USD )
Seat 4: Miazza ( new player )
Seat 5: N0pr3s3n7 ( $ 10.44 USD )
@ -63,24 +63,24 @@ Seat 6: Coolcatcool ( $ 8.30 USD )
gabitzatoade: posts small blind [$ 0.05 USD]
N0pr3s3n7: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 9c, Ac ]
Dealt to Hero [ 9c, Ac ]
Coolcatcool folds
zlodeu123 folds
EricBlade raises [$ 0.35 USD]
Hero raises [$ 0.35 USD]
gabitzatoade calls [$ 0.30 USD]
N0pr3s3n7 folds
** Dealing Flop ** [ 4c, Kh, 6h ]
gabitzatoade checks
EricBlade: bets [$ 0.40 USD]
Hero: bets [$ 0.40 USD]
gabitzatoade calls [$ 0.40 USD]
** Dealing Turn ** [ Qh ]
gabitzatoade checks
Miazza has joined the table
EricBlade checks
Hero checks
** Dealing River ** [ Qd ]
gabitzatoade checks
EricBlade checks
EricBlade shows [ 9c, Ac ] a pair of queens
Hero checks
Hero shows [ 9c, Ac ] a pair of queens
gabitzatoade shows [ 4s, 4d ] a full house, fours full of queens
gabitzatoade wins $ 1.52 USD from main pot with a full house, fours full of queens [ Qh, Qd, 4s, 4d, 4c ]
@ -93,7 +93,7 @@ Table Cortland XIV
Seat 3 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 12.35 USD )
Seat 2: EricBlade ( $ 4.25 USD )
Seat 2: Hero ( $ 4.25 USD )
Seat 3: gabitzatoade ( $ 6.12 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.34 USD )
@ -101,18 +101,18 @@ Seat 6: Coolcatcool ( $ 8.30 USD )
N0pr3s3n7: posts small blind [$ 0.05 USD]
Coolcatcool: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ Kc, Jd ]
Dealt to Hero [ Kc, Jd ]
zlodeu123 raises [$ 0.35 USD]
EricBlade calls [$ 0.35 USD]
Hero calls [$ 0.35 USD]
gabitzatoade folds
N0pr3s3n7 folds
Coolcatcool folds
** Dealing Flop ** [ 9s, 3c, Jc ]
zlodeu123: bets [$ 0.60 USD]
EricBlade raises [$ 1.80 USD]
Hero raises [$ 1.80 USD]
zlodeu123 folds
EricBlade does not show cards
EricBlade wins $ 1.95 USD from main pot
Hero does not show cards
Hero wins $ 1.95 USD from main pot
@ -123,7 +123,7 @@ Table Cortland XIV
Seat 5 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.40 USD )
Seat 2: EricBlade ( $ 5.25 USD )
Seat 2: Hero ( $ 5.25 USD )
Seat 3: gabitzatoade ( $ 6.12 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.29 USD )
@ -132,8 +132,8 @@ Coolcatcool: posts small blind [$ 0.05 USD]
zlodeu123: posts big blind [$ 0.10 USD]
Miazza sits out
** Dealing down cards **
Dealt to EricBlade [ 6d, 3d ]
EricBlade folds
Dealt to Hero [ 6d, 3d ]
Hero folds
gabitzatoade calls [$ 0.10 USD]
N0pr3s3n7 raises [$ 0.30 USD]
Coolcatcool folds
@ -155,21 +155,21 @@ Table Cortland XIV
Seat 6 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.30 USD )
Seat 2: EricBlade ( $ 5.25 USD )
Seat 2: Hero ( $ 5.25 USD )
Seat 3: gabitzatoade ( $ 5.82 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
Seat 6: Coolcatcool ( $ 8.15 USD )
zlodeu123: posts small blind [$ 0.05 USD]
EricBlade: posts big blind [$ 0.10 USD]
Hero: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ Qh, Qd ]
Dealt to Hero [ Qh, Qd ]
gabitzatoade folds
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 folds
EricBlade does not show cards
EricBlade wins $ 0.10 USD from main pot
Hero does not show cards
Hero wins $ 0.10 USD from main pot
@ -180,22 +180,22 @@ Table Cortland XIV
Seat 1 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.30 USD )
Seat 2: Hero ( $ 5.30 USD )
Seat 3: gabitzatoade ( $ 5.82 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
Seat 6: Coolcatcool ( $ 8.15 USD )
EricBlade: posts small blind [$ 0.05 USD]
Hero: posts small blind [$ 0.05 USD]
gabitzatoade: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ Ts, Ks ]
Dealt to Hero [ Ts, Ks ]
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 folds
EricBlade raises [$ 0.25 USD]
Hero raises [$ 0.25 USD]
gabitzatoade folds
EricBlade does not show cards
EricBlade wins $ 0.20 USD from main pot
Hero does not show cards
Hero wins $ 0.20 USD from main pot
@ -206,7 +206,7 @@ Table Cortland XIV
Seat 2 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.40 USD )
Seat 2: Hero ( $ 5.40 USD )
Seat 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
@ -214,11 +214,11 @@ Seat 6: Coolcatcool ( $ 8.15 USD )
gabitzatoade: posts small blind [$ 0.05 USD]
Miazza: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 2c, 4s ]
Dealt to Hero [ 2c, 4s ]
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 raises [$ 0.35 USD]
EricBlade folds
Hero folds
gabitzatoade calls [$ 0.30 USD]
Miazza folds
** Dealing Flop ** [ Ad, 6d, 6s ]
@ -245,7 +245,7 @@ Table Cortland XIV
Seat 3 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.40 USD )
Seat 2: Hero ( $ 5.40 USD )
Seat 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.90 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
@ -253,15 +253,15 @@ Seat 6: Coolcatcool ( $ 8.15 USD )
Miazza: posts small blind [$ 0.05 USD]
N0pr3s3n7: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 7d, Kd ]
Dealt to Hero [ 7d, Kd ]
Coolcatcool folds
zlodeu123 folds
EricBlade raises [$ 0.35 USD]
Hero raises [$ 0.35 USD]
gabitzatoade folds
Miazza folds
N0pr3s3n7 folds
EricBlade does not show cards
EricBlade wins $ 0.25 USD from main pot
Hero does not show cards
Hero wins $ 0.25 USD from main pot
@ -272,7 +272,7 @@ Table Cortland XIV
Seat 4 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.55 USD )
Seat 2: Hero ( $ 5.55 USD )
Seat 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.85 USD )
Seat 5: N0pr3s3n7 ( $ 10.61 USD )
@ -280,9 +280,9 @@ Seat 6: Coolcatcool ( $ 8.15 USD )
N0pr3s3n7: posts small blind [$ 0.05 USD]
Coolcatcool: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 6d, Kc ]
Dealt to Hero [ 6d, Kc ]
zlodeu123 folds
EricBlade folds
Hero folds
gabitzatoade folds
Miazza raises [$ 0.35 USD]
N0pr3s3n7 folds
@ -300,7 +300,7 @@ Table Cortland XIV
Seat 5 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.55 USD )
Seat 2: Hero ( $ 5.55 USD )
Seat 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.50 USD )
Seat 5: N0pr3s3n7 ( $ 10.56 USD )
@ -308,8 +308,8 @@ Seat 6: Coolcatcool ( $ 8.55 USD )
Coolcatcool: posts small blind [$ 0.05 USD]
zlodeu123: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 3h, 9s ]
EricBlade folds
Dealt to Hero [ 3h, 9s ]
Hero folds
gabitzatoade folds
Miazza folds
N0pr3s3n7 folds
@ -326,22 +326,22 @@ Table Cortland XIV
Seat 6 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.30 USD )
Seat 2: EricBlade ( $ 5.55 USD )
Seat 2: Hero ( $ 5.55 USD )
Seat 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.50 USD )
Seat 5: N0pr3s3n7 ( $ 10.56 USD )
Seat 6: Coolcatcool ( $ 8.50 USD )
zlodeu123: posts small blind [$ 0.05 USD]
EricBlade: posts big blind [$ 0.10 USD]
Hero: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ Kd, 4h ]
Dealt to Hero [ Kd, 4h ]
gabitzatoade folds
Miazza folds
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 folds
EricBlade does not show cards
EricBlade wins $ 0.10 USD from main pot
Hero does not show cards
Hero wins $ 0.10 USD from main pot
@ -352,25 +352,25 @@ Table Cortland XIV
Seat 1 is the button
Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.60 USD )
Seat 2: Hero ( $ 5.60 USD )
Seat 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.50 USD )
Seat 5: N0pr3s3n7 ( $ 10.56 USD )
Seat 6: Coolcatcool ( $ 8.50 USD )
EricBlade: posts small blind [$ 0.05 USD]
Hero: posts small blind [$ 0.05 USD]
gabitzatoade: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ 9h, Th ]
Dealt to Hero [ 9h, Th ]
Miazza folds
N0pr3s3n7 folds
Coolcatcool folds
zlodeu123 folds
EricBlade raises [$ 0.25 USD]
Hero raises [$ 0.25 USD]
gabitzatoade calls [$ 0.20 USD]
** Dealing Flop ** [ 3d, 5d, 6c ]
EricBlade checks
Hero checks
gabitzatoade: bets [$ 0.40 USD]
EricBlade folds
Hero folds
gabitzatoade does not show cards
gabitzatoade wins $ 0.57 USD from main pot
@ -383,7 +383,7 @@ Table Cortland XIV
Seat 2 is the button
Total number of players: 5
Seat 1: zlodeu123 ( $ 11.25 USD )
Seat 2: EricBlade ( $ 5.30 USD )
Seat 2: Hero ( $ 5.30 USD )
Seat 3: gabitzatoade ( $ 5.99 USD )
Seat 4: Miazza ( $ 4.50 USD )
Seat 5: N0pr3s3n7 ( $ 10.56 USD )
@ -391,10 +391,10 @@ Seat 6: SAVCOMP ( new player )
gabitzatoade: posts small blind [$ 0.05 USD]
Miazza: posts big blind [$ 0.10 USD]
** Dealing down cards **
Dealt to EricBlade [ As, 4d ]
Dealt to Hero [ As, 4d ]
N0pr3s3n7 folds
zlodeu123 raises [$ 0.35 USD]
EricBlade folds
Hero folds
gabitzatoade calls [$ 0.30 USD]
SAVCOMP has joined the table
Miazza folds

View File

@ -4,15 +4,15 @@ Seat 2: stark00 ($4.41)
Seat 3: T0r3x ($12.97)
Seat 4: yrthligar ($15)
Seat 5: MANUTD ($8.56)
Seat 6: gimick ($2)
Seat 6: Hero ($2)
Seat 7: vision ($2.97)
Seat 8: shleekom ($2)
Seat 9: proud2Bwhack ($8.77)
MANUTD posts the small blind of $0.02
gimick posts the big blind of $0.05
Hero posts the big blind of $0.05
The button is in seat #4
*** HOLE CARDS ***
Dealt to gimick [Qs 4d]
Dealt to Hero [Qs 4d]
vision folds
shleekom folds
proud2Bwhack folds
@ -23,9 +23,9 @@ yrthligar has 8 seconds left to act
yrthligar has timed out
yrthligar folds
MANUTD folds
Uncalled bet of $0.03 returned to gimick
gimick mucks
gimick wins the pot ($0.04)
Uncalled bet of $0.03 returned to Hero
Hero mucks
Hero wins the pot ($0.04)
*** SUMMARY ***
Total pot $0.04 | Rake $0
Seat 1: ronaldd1969 didn't bet (folded)
@ -33,7 +33,7 @@ Seat 2: stark00 didn't bet (folded)
Seat 3: T0r3x didn't bet (folded)
Seat 4: yrthligar (button) didn't bet (folded)
Seat 5: MANUTD (small blind) folded before the Flop
Seat 6: gimick (big blind) collected ($0.04), mucked
Seat 6: Hero (big blind) collected ($0.04), mucked
Seat 7: vision didn't bet (folded)
Seat 8: shleekom didn't bet (folded)
Seat 9: proud2Bwhack didn't bet (folded)

View File

@ -1,5 +1,5 @@
Full Tilt Poker Game #22821112219: Table Venice (6 max) - $0.01/$0.02 - No Limit Hold'em - 15:42:59 ET - 2010/08/04
Seat 1: gimick ($0.70)
Seat 1: Hero ($0.70)
Seat 2: player2 ($0.70)
Seat 3: player1 ($0.98)
Seat 4: player3 ($5.14)
@ -7,24 +7,24 @@ Seat 5: player4 ($2)
Seat 6: player5 ($0.80)
player1 posts the small blind of $0.01
player3 posts the big blind of $0.02
gimick posts $0.02
Hero posts $0.02
5 seconds left to act
player5 posts $0.02
The button is in seat #2
*** HOLE CARDS ***
Dealt to gimick [Qd Jc]
Dealt to Hero [Qd Jc]
player4 folds
player5 checks
gimick checks
Hero checks
player1 calls $0.01
player3 checks
*** FLOP *** [3d As 2h]
player1 checks
player3 checks
player5 bets $0.02
gimick folds
Hero folds
player1 folds
gimick is sitting out
Hero is sitting out
player3 calls $0.02
*** TURN *** [3d As 2h] [4h]
player3 checks
@ -41,7 +41,7 @@ player5 wins the pot ($0.15)
*** SUMMARY ***
Total pot $0.16 | Rake $0.01
Board: [3d As 2h 4h 7c]
Seat 1: gimick folded on the Flop
Seat 1: Hero folded on the Flop
Seat 2: player2 (button) is sitting out
Seat 3: player1 (small blind) folded on the Flop
Seat 4: player3 (big blind) folded on the River

View File

@ -0,0 +1,32 @@
{ 'boardcard1': 0,
'boardcard2': 0,
'boardcard3': 0,
'boardcard4': 0,
'boardcard5': 0,
'gametypeId': 7,
'importTime': None,
'maxSeats': 6,
'playersAtShowdown': 1,
'playersAtStreet-1': 6,
'playersAtStreet0': 1,
'playersAtStreet1': 1,
'playersAtStreet2': 1,
'playersAtStreet3': 1,
'playersAtStreet4': 0,
'playersVpi': 1,
'seats': 6,
'showdownPot': 0,
'siteHandNo': u'20000000801',
'startTime': datetime.datetime(2010, 8, 13, 19, 59, 2, tzinfo=pytz.utc),
'street0Raises': 1,
'street1Pot': 0,
'street1Raises': 0,
'street2Pot': 0,
'street2Raises': 0,
'street3Pot': 0,
'street3Raises': 0,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Douai\u2013Lens',
'texture': None,
'tourneyId': None}

View File

@ -374,7 +374,7 @@
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player5': { 'card1': 1,
u'Hero': { 'card1': 1,
'card2': 34,
'card3': 0,
'card4': 0,

View File

@ -4,15 +4,15 @@ Seat 2: stark00 ($4.41)
Seat 3: T0r3x ($12.97)
Seat 4: yrthligar ($15)
Seat 5: MANUTD ($8.56)
Seat 6: gimick ($2)
Seat 6: Hero ($2)
Seat 7: vision ($2.97)
Seat 8: shleekom ($2)
Seat 9: proud2Bwhack ($8.77)
MANUTD posts the small blind of $0.02
gimick posts the big blind of $0.05
Hero posts the big blind of $0.05
The button is in seat #4
*** HOLE CARDS ***
Dealt to gimick [Qs 4d]
Dealt to Hero [Qs 4d]
vision folds
shleekom folds
proud2Bwhack folds
@ -23,9 +23,9 @@ yrthligar has 8 seconds left to act
yrthligar has timed out
yrthligar folds
MANUTD folds
Uncalled bet of $0.03 returned to gimick
gimick mucks
gimick wins the pot ($0.04)
Uncalled bet of $0.03 returned to Hero
Hero mucks
Hero wins the pot ($0.04)
*** SUMMARY ***
Total pot $0.04 | Rake $0
Seat 1: ronaldd1969 didn't bet (folded)
@ -33,7 +33,7 @@ Seat 2: stark00 didn't bet (folded)
Seat 3: T0r3x didn't bet (folded)
Seat 4: yrthligar (button) didn't bet (folded)
Seat 5: MANUTD (small blind) folded before the Flop
Seat 6: gimick (big blind) collected ($0.04), mucked
Seat 6: Hero (big blind) collected ($0.04), mucked
Seat 7: vision didn't bet (folded)
Seat 8: shleekom didn't bet (folded)
Seat 9: proud2Bwhack didn't bet (folded)

View File

@ -0,0 +1,32 @@
{ 'boardcard1': 0,
'boardcard2': 0,
'boardcard3': 0,
'boardcard4': 0,
'boardcard5': 0,
'gametypeId': 6,
'importTime': None,
'maxSeats': 9,
'playersAtShowdown': 0,
'playersAtStreet-1': 8,
'playersAtStreet0': 0,
'playersAtStreet1': 0,
'playersAtStreet2': 0,
'playersAtStreet3': 0,
'playersAtStreet4': 0,
'playersVpi': 0,
'seats': 9,
'showdownPot': 0,
'siteHandNo': u'22488827305',
'startTime': datetime.datetime(2010, 7, 21, 19, 13, tzinfo=pytz.utc),
'street0Raises': 0,
'street1Pot': 0,
'street1Raises': 0,
'street2Pot': 0,
'street2Raises': 0,
'street3Pot': 0,
'street3Raises': 0,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Flash',
'texture': None,
'tourneyId': None}

View File

@ -186,7 +186,7 @@
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'gimick': { 'card1': 50,
u'Hero': { 'card1': 50,
'card2': 16,
'card3': 0,
'card4': 0,

View File

@ -0,0 +1,32 @@
{ 'boardcard1': 37,
'boardcard2': 20,
'boardcard3': 8,
'boardcard4': 51,
'boardcard5': 5,
'gametypeId': 8,
'importTime': None,
'maxSeats': 6,
'playersAtShowdown': 2,
'playersAtStreet-1': 6,
'playersAtStreet0': 4,
'playersAtStreet1': 3,
'playersAtStreet2': 3,
'playersAtStreet3': 2,
'playersAtStreet4': 0,
'playersVpi': 3,
'seats': 6,
'showdownPot': 0,
'siteHandNo': u'18932478237',
'startTime': datetime.datetime(2010, 3, 3, 16, 37, 56, tzinfo=pytz.utc),
'street0Raises': 0,
'street1Pot': 20,
'street1Raises': 1,
'street2Pot': 50,
'street2Raises': 1,
'street3Pot': 100,
'street3Raises': 1,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Gaines',
'texture': None,
'tourneyId': None}

View File

@ -280,7 +280,7 @@
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Sorrowful': { 'card1': 15,
u'Hero': { 'card1': 15,
'card2': 10,
'card3': 42,
'card4': 25,

View File

@ -3,12 +3,12 @@ Seat 1: bllodshot ($31), is sitting out
Seat 2: kwuiyhw ($62.50)
Seat 3: chasrigg ($297.50)
Seat 4: goulartarm ($94.50)
Seat 5: ExecDec ($265.50)
Seat 5: Hero ($265.50)
Seat 6: arjun1111 ($41.50)
Seat 7: thebear666 ($101)
Seat 8: FILL A RACK ($128.50)
chasrigg antes $0.50
ExecDec antes $0.50
Hero antes $0.50
kwuiyhw antes $0.50
arjun1111 antes $0.50
FILL A RACK antes $0.50
@ -18,7 +18,7 @@ goulartarm antes $0.50
Dealt to kwuiyhw [9c]
Dealt to chasrigg [Jh]
Dealt to goulartarm [Qs]
Dealt to ExecDec [5s 2h] [Th]
Dealt to Hero [5s 2h] [Th]
Dealt to arjun1111 [As]
Dealt to thebear666 [7s]
Dealt to FILL A RACK [Ad]
@ -31,7 +31,7 @@ chasrigg has 15 seconds left to act
shasatipu adds $316
chasrigg folds
goulartarm folds
ExecDec folds
Hero folds
arjun1111 completes it to $3
thebear666 calls $2
*** 4TH STREET ***
@ -48,7 +48,7 @@ Seat 1: bllodshot is sitting out
Seat 2: kwuiyhw folded on 3rd St.
Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm folded on 3rd St.
Seat 5: ExecDec folded on 3rd St.
Seat 5: Hero folded on 3rd St.
Seat 6: arjun1111 collected ($9.50), mucked
Seat 7: thebear666 folded on 4th St.
Seat 8: FILL A RACK folded on 3rd St.

View File

@ -1,4 +1,4 @@
{ u'ExecDec': { 'card1': 43,
{ u'Hero': { 'card1': 43,
'card2': 1,
'card3': 9,
'card4': 0,

View File

@ -3,13 +3,13 @@ Seat 1: bllodshot ($52.50)
Seat 2: kwuiyhw ($48.50)
Seat 3: chasrigg ($284)
Seat 4: goulartarm ($80)
Seat 5: ExecDec ($223.50)
Seat 5: Hero ($223.50)
Seat 7: thebear666 ($87.50)
Seat 8: FILL A RACK ($138)
kwuiyhw antes $0.50
chasrigg antes $0.50
bllodshot antes $0.50
ExecDec antes $0.50
Hero antes $0.50
FILL A RACK antes $0.50
thebear666 antes $0.50
goulartarm antes $0.50
@ -18,12 +18,12 @@ Dealt to bllodshot [9c]
Dealt to kwuiyhw [Kc]
Dealt to chasrigg [2s]
Dealt to goulartarm [2c]
Dealt to ExecDec [5h 3c] [Td]
Dealt to Hero [5h 3c] [Td]
Dealt to thebear666 [3h]
Dealt to FILL A RACK [6c]
goulartarm is low with [2c]
goulartarm brings in for $1
ExecDec folds
Hero folds
thebear666 folds
FILL A RACK folds
bllodshot folds
@ -39,7 +39,7 @@ Seat 1: bllodshot folded on 3rd St.
Seat 2: kwuiyhw collected ($5.50), mucked
Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm folded on 3rd St.
Seat 5: ExecDec folded on 3rd St.
Seat 5: Hero folded on 3rd St.
Seat 7: thebear666 folded on 3rd St.
Seat 8: FILL A RACK folded on 3rd St.

View File

@ -3,12 +3,12 @@ Seat 1: bllodshot ($31), is sitting out
Seat 2: kwuiyhw ($67)
Seat 3: chasrigg ($294.50)
Seat 4: goulartarm ($92.50)
Seat 5: ExecDec ($306)
Seat 5: Hero ($306)
Seat 6: arjun1111 ($37)
Seat 7: thebear666 ($84.50)
Seat 8: shasatipu ($293.50)
chasrigg antes $0.50
ExecDec antes $0.50
Hero antes $0.50
kwuiyhw antes $0.50
thebear666 antes $0.50
arjun1111 antes $0.50
@ -18,7 +18,7 @@ goulartarm antes $0.50
Dealt to kwuiyhw [Th]
Dealt to chasrigg [8h]
Dealt to goulartarm [5c]
Dealt to ExecDec [Td Jd] [As]
Dealt to Hero [Td Jd] [As]
Dealt to arjun1111 [8c]
Dealt to thebear666 [Kc]
Dealt to shasatipu [3c]
@ -28,51 +28,51 @@ kwuiyhw folds
chasrigg folds
kwuiyhw is sitting out
goulartarm folds
ExecDec completes it to $3
Hero completes it to $3
arjun1111 calls $3
thebear666 raises to $6
shasatipu has 15 seconds left to act
shasatipu calls $5
ExecDec calls $3
Hero calls $3
arjun1111 calls $3
*** 4TH STREET ***
Dealt to ExecDec [Td Jd As] [Jc]
Dealt to Hero [Td Jd As] [Jc]
Dealt to arjun1111 [8c] [3h]
Dealt to thebear666 [Kc] [2h]
Dealt to shasatipu [3c] [2d]
ExecDec checks
Hero checks
arjun1111 checks
thebear666 has 15 seconds left to act
thebear666 bets $3
shasatipu folds
ExecDec raises to $6
Hero raises to $6
arjun1111 folds
thebear666 calls $3
*** 5TH STREET ***
Dealt to ExecDec [Td Jd As Jc] [Js]
Dealt to Hero [Td Jd As Jc] [Js]
Dealt to thebear666 [Kc 2h] [3s]
ExecDec bets $6
Hero bets $6
thebear666 calls $6
*** 6TH STREET ***
Dealt to ExecDec [Td Jd As Jc Js] [7h]
Dealt to Hero [Td Jd As Jc Js] [7h]
Dealt to thebear666 [Kc 2h 3s] [4d]
ExecDec bets $6
Hero bets $6
thebear666 calls $6
*** 7TH STREET ***
Dealt to ExecDec [Td Jd As Jc Js 7h] [2s]
ExecDec bets $6
Dealt to Hero [Td Jd As Jc Js 7h] [2s]
Hero bets $6
thebear666 calls $6
*** SHOW DOWN ***
ExecDec shows [Jd Td As Jc Js 7h 2s] three of a kind, Jacks
Hero shows [Jd Td As Jc Js 7h 2s] three of a kind, Jacks
thebear666 mucks
ExecDec wins the pot ($72.50) with three of a kind, Jacks
Hero wins the pot ($72.50) with three of a kind, Jacks
*** SUMMARY ***
Total pot $75.50 | Rake $3
Seat 1: bllodshot is sitting out
Seat 2: kwuiyhw folded on 3rd St.
Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm folded on 3rd St.
Seat 5: ExecDec showed [Jd Td As Jc Js 7h 2s] and won ($72.50) with three of a kind, Jacks
Seat 5: Hero showed [Jd Td As Jc Js 7h 2s] and won ($72.50) with three of a kind, Jacks
Seat 6: arjun1111 folded on 4th St.
Seat 7: thebear666 mucked [Kd 7c Kc 2h 3s 4d 5h] - a pair of Kings
Seat 8: shasatipu folded on 4th St.

View File

@ -3,13 +3,13 @@ Seat 1: bllodshot ($38)
Seat 2: kwuiyhw ($64.50)
Seat 3: chasrigg ($298.50)
Seat 4: goulartarm ($98.50)
Seat 5: ExecDec ($266.50)
Seat 5: Hero ($266.50)
Seat 6: arjun1111 ($42.50)
Seat 7: thebear666 ($84)
Seat 8: FILL A RACK ($129.50)
thebear666 antes $0.50
kwuiyhw antes $0.50
ExecDec antes $0.50
Hero antes $0.50
chasrigg antes $0.50
arjun1111 antes $0.50
bllodshot antes $0.50
@ -20,7 +20,7 @@ Dealt to bllodshot [8h]
Dealt to kwuiyhw [4c]
Dealt to chasrigg [7c]
Dealt to goulartarm [6d]
Dealt to ExecDec [3d 4s] [4d]
Dealt to Hero [3d 4s] [4d]
Dealt to arjun1111 [8s]
Dealt to thebear666 [Ac]
Dealt to FILL A RACK [Jh]
@ -28,8 +28,8 @@ kwuiyhw is low with [4c]
kwuiyhw brings in for $1
chasrigg folds
goulartarm folds
ExecDec has 15 seconds left to act
ExecDec folds
Hero has 15 seconds left to act
Hero folds
arjun1111 folds
thebear666 completes it to $3
FILL A RACK folds
@ -55,7 +55,7 @@ Seat 1: bllodshot folded on 5th St.
Seat 2: kwuiyhw folded on 3rd St.
Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm folded on 3rd St.
Seat 5: ExecDec folded on 3rd St.
Seat 5: Hero folded on 3rd St.
Seat 6: arjun1111 folded on 3rd St.
Seat 7: thebear666 collected ($17), mucked
Seat 8: FILL A RACK folded on 3rd St.

View File

@ -3,11 +3,11 @@ Seat 1: bllodshot ($34)
Seat 2: kwuiyhw ($78.50)
Seat 3: chasrigg ($299.50)
Seat 4: goulartarm ($100.50)
Seat 5: ExecDec ($249.50)
Seat 5: Hero ($249.50)
Seat 6: arjun1111 ($43.50)
Seat 7: thebear666 ($86)
Seat 8: FILL A RACK ($131.50)
ExecDec antes $0.50
Hero antes $0.50
chasrigg antes $0.50
arjun1111 antes $0.50
bllodshot antes $0.50
@ -20,13 +20,13 @@ Dealt to bllodshot [Qc]
Dealt to kwuiyhw [5d]
Dealt to chasrigg [9h]
Dealt to goulartarm [3s]
Dealt to ExecDec [4s Jc] [Th]
Dealt to Hero [4s Jc] [Th]
Dealt to arjun1111 [Qd]
Dealt to thebear666 [8c]
Dealt to FILL A RACK [5h]
goulartarm is low with [3s]
goulartarm brings in for $1
ExecDec folds
Hero folds
arjun1111 folds
thebear666 folds
FILL A RACK folds
@ -43,7 +43,7 @@ Seat 1: bllodshot collected ($6), mucked
Seat 2: kwuiyhw folded on 3rd St.
Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm folded on 3rd St.
Seat 5: ExecDec folded on 3rd St.
Seat 5: Hero folded on 3rd St.
Seat 6: arjun1111 folded on 3rd St.
Seat 7: thebear666 folded on 3rd St.
Seat 8: FILL A RACK folded on 3rd St.

View File

@ -1,28 +1,28 @@
Full Tilt Poker Game #11111111813: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:14:27 ET - 2010/06/10
Seat 1: Player4 ($7.40)
Seat 2: Player13 ($77.20)
Seat 3: Player1 ($111.80)
Seat 2: Hero3 ($77.20)
Seat 3: Hero ($111.80)
Seat 5: Player5 ($118.70)
Seat 7: Player6 ($36.30)
Player1 antes $0.40
Hero antes $0.40
Player4 antes $0.40
Player13 antes $0.40
Hero3 antes $0.40
Player5 antes $0.40
Player6 antes $0.40
*** 3RD STREET ***
Dealt to Player4 [9c]
Dealt to Player13 [8s]
Dealt to Player1 [Ac 9h] [3s]
Dealt to Hero3 [8s]
Dealt to Hero [Ac 9h] [3s]
Dealt to Player5 [3c]
Dealt to Player6 [Qs]
Player5 is low with [3c]
Player5 brings in for $0.50
Player6 folds
Player4 completes it to $2
Player14 sits down
Player13 folds
Player1 folds
Player14 adds $152
Hero4 sits down
Hero3 folds
Hero folds
Hero4 adds $152
Player5 calls $1.50
*** 4TH STREET ***
Dealt to Player4 [9c] [9d]
@ -35,8 +35,8 @@ Player4 wins the pot ($6)
*** SUMMARY ***
Total pot $6 | Rake $0
Seat 1: Player4 collected ($6), mucked
Seat 2: Player13 folded on 3rd St.
Seat 3: Player1 folded on 3rd St.
Seat 2: Hero3 folded on 3rd St.
Seat 3: Hero folded on 3rd St.
Seat 5: Player5 folded on 4th St.
Seat 7: Player6 folded on 3rd St.
@ -44,562 +44,562 @@ Seat 7: Player6 folded on 3rd St.
Full Tilt Poker Game #11111111538: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:15:56 ET - 2010/06/10
Seat 1: Player4 ($12.60)
Seat 2: Player13 ($89.90)
Seat 3: Player1 ($110.60)
Seat 2: Hero3 ($89.90)
Seat 3: Hero ($110.60)
Seat 5: Player5 ($115.50)
Seat 6: Player14 ($138.70)
Seat 6: Hero4 ($138.70)
Seat 7: Player6 ($35.10)
Player1 antes $0.40
Hero antes $0.40
Player4 antes $0.40
Player13 antes $0.40
Hero3 antes $0.40
Player5 antes $0.40
Player14 antes $0.40
Hero4 antes $0.40
Player6 antes $0.40
*** 3RD STREET ***
Dealt to Player4 [Qc]
Dealt to Player13 [5s]
Dealt to Player1 [6c 5d] [3d]
Dealt to Hero3 [5s]
Dealt to Hero [6c 5d] [3d]
Dealt to Player5 [9d]
Dealt to Player14 [8h]
Dealt to Hero4 [8h]
Dealt to Player6 [Ts]
Player1 is low with [3d]
Player1 brings in for $0.50
Hero is low with [3d]
Hero brings in for $0.50
Player5 folds
Player14 folds
Hero4 folds
Player6 completes it to $2
Player4 folds
Player13 folds
Player1 calls $1.50
Hero3 folds
Hero calls $1.50
*** 4TH STREET ***
Dealt to Player1 [6c 5d 3d] [7c]
Dealt to Hero [6c 5d 3d] [7c]
Dealt to Player6 [Ts] [6d]
Player6 bets $2
Player1 calls $2
Hero calls $2
*** 5TH STREET ***
Dealt to Player1 [6c 5d 3d 7c] [Qd]
Dealt to Hero [6c 5d 3d 7c] [Qd]
Dealt to Player6 [Ts 6d] [9s]
Player1 checks
Hero checks
Player6 bets $4
Player1 folds
Hero folds
Uncalled bet of $4 returned to Player6
Player6 mucks
Player6 wins the pot ($10.40)
*** SUMMARY ***
Total pot $10.40 | Rake $0
Seat 1: Player4 folded on 3rd St.
Seat 2: Player13 folded on 3rd St.
Seat 3: Player1 folded on 5th St.
Seat 2: Hero3 folded on 3rd St.
Seat 3: Hero folded on 5th St.
Seat 5: Player5 folded on 3rd St.
Seat 6: Player14 folded on 3rd St.
Seat 6: Hero4 folded on 3rd St.
Seat 7: Player6 collected ($10.40), mucked
Full Tilt Poker Game #11111111649: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:17:24 ET - 2010/06/10
Seat 1: Player4 ($16.30)
Seat 2: Player13 ($88.70)
Seat 3: Player1 ($107.30)
Seat 2: Hero3 ($88.70)
Seat 3: Hero ($107.30)
Seat 5: Player5 ($114.30)
Seat 6: Player14 ($135.50)
Seat 6: Hero4 ($135.50)
Seat 7: Player6 ($40.30)
Player1 antes $0.40
Hero antes $0.40
Player4 antes $0.40
Player13 antes $0.40
Hero3 antes $0.40
Player5 antes $0.40
Player14 antes $0.40
Hero4 antes $0.40
Player6 antes $0.40
*** 3RD STREET ***
Dealt to Player4 [9s]
Dealt to Player13 [9h]
Dealt to Player1 [8h Kd] [6s]
Dealt to Hero3 [9h]
Dealt to Hero [8h Kd] [6s]
Dealt to Player5 [4c]
Dealt to Player14 [8d]
Dealt to Hero4 [8d]
Dealt to Player6 [6c]
Player5 is low with [4c]
Player10 sits down
Player10 adds $40
Hero0 sits down
Hero0 adds $40
Player5 brings in for $0.50
Player14 folds
Hero4 folds
Player6 folds
Player4 folds
Player13 completes it to $2
Player1 folds
Hero3 completes it to $2
Hero folds
Player5 folds
Uncalled bet of $1.50 returned to Player13
Player13 mucks
Player13 wins the pot ($3.40)
Uncalled bet of $1.50 returned to Hero3
Hero3 mucks
Hero3 wins the pot ($3.40)
*** SUMMARY ***
Total pot $3.40 | Rake $0
Seat 1: Player4 folded on 3rd St.
Seat 2: Player13 collected ($3.40), mucked
Seat 3: Player1 folded on 3rd St.
Seat 2: Hero3 collected ($3.40), mucked
Seat 3: Hero folded on 3rd St.
Seat 5: Player5 folded on 3rd St.
Seat 6: Player14 folded on 3rd St.
Seat 6: Hero4 folded on 3rd St.
Seat 7: Player6 folded on 3rd St.
Full Tilt Poker Game #11111112277: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:17:41 ET - 2010/06/10
Seat 1: Player4 ($15.90)
Seat 2: Player13 ($91.20)
Seat 3: Player1 ($106.90)
Seat 2: Hero3 ($91.20)
Seat 3: Hero ($106.90)
Seat 5: Player5 ($113.40)
Seat 6: Player14 ($135.10)
Seat 6: Hero4 ($135.10)
Seat 7: Player6 ($39.90)
Seat 8: Player10 ($40)
Player1 antes $0.40
Seat 8: Hero0 ($40)
Hero antes $0.40
Player4 antes $0.40
Player13 antes $0.40
Hero3 antes $0.40
Player5 antes $0.40
Player14 antes $0.40
Hero4 antes $0.40
Player6 antes $0.40
Player10 antes $0.40
Hero0 antes $0.40
*** 3RD STREET ***
Dealt to Player4 [Qs]
Dealt to Player13 [8s]
Dealt to Player1 [3h 9c] [Ah]
Dealt to Hero3 [8s]
Dealt to Hero [3h 9c] [Ah]
Dealt to Player5 [Qc]
Dealt to Player14 [Kc]
Dealt to Hero4 [Kc]
Dealt to Player6 [Jh]
Dealt to Player10 [6d]
Player10 is low with [6d]
Player10 brings in for $0.50
Dealt to Hero0 [6d]
Hero0 is low with [6d]
Hero0 brings in for $0.50
Player4 folds
Player13 folds
Player1 folds
Hero3 folds
Hero folds
Player5 completes it to $2
Player14 raises to $4
Hero4 raises to $4
Player6 folds
Player10 calls $3.50
Hero0 calls $3.50
Player5 calls $2
*** 4TH STREET ***
Dealt to Player5 [Qc] [3c]
Dealt to Player14 [Kc] [Kh]
Dealt to Player10 [6d] [Td]
Player14 has 15 seconds left to act
Player14 bets $4
Player10 folds
Dealt to Hero4 [Kc] [Kh]
Dealt to Hero0 [6d] [Td]
Hero4 has 15 seconds left to act
Hero4 bets $4
Hero0 folds
Player5 folds
Uncalled bet of $4 returned to Player14
Player14 mucks
Player14 wins the pot ($14.80)
Uncalled bet of $4 returned to Hero4
Hero4 mucks
Hero4 wins the pot ($14.80)
*** SUMMARY ***
Total pot $14.80 | Rake $0
Seat 1: Player4 folded on 3rd St.
Seat 2: Player13 folded on 3rd St.
Seat 3: Player1 folded on 3rd St.
Seat 2: Hero3 folded on 3rd St.
Seat 3: Hero folded on 3rd St.
Seat 5: Player5 folded on 4th St.
Seat 6: Player14 collected ($14.80), mucked
Seat 6: Hero4 collected ($14.80), mucked
Seat 7: Player6 folded on 3rd St.
Seat 8: Player10 folded on 4th St.
Seat 8: Hero0 folded on 4th St.
Full Tilt Poker Game #11111110428: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:18:23 ET - 2010/06/10
Seat 1: Player4 ($15.50)
Seat 2: Player13 ($90.80)
Seat 3: Player1 ($106.50)
Seat 2: Hero3 ($90.80)
Seat 3: Hero ($106.50)
Seat 5: Player5 ($109)
Seat 6: Player14 ($145.50)
Seat 6: Hero4 ($145.50)
Seat 7: Player6 ($39.50)
Seat 8: Player10 ($35.60)
Player10 antes $0.40
Player13 antes $0.40
Player1 antes $0.40
Seat 8: Hero0 ($35.60)
Hero0 antes $0.40
Hero3 antes $0.40
Hero antes $0.40
Player4 antes $0.40
Player5 antes $0.40
Player14 antes $0.40
Hero4 antes $0.40
Player6 antes $0.40
*** 3RD STREET ***
Dealt to Player4 [Th]
Dealt to Player13 [Kc]
Dealt to Player1 [Kh 9c] [5h]
Dealt to Hero3 [Kc]
Dealt to Hero [Kh 9c] [5h]
Dealt to Player5 [6h]
Dealt to Player14 [Js]
Dealt to Hero4 [Js]
Dealt to Player6 [Ac]
Dealt to Player10 [Ah]
Player1 is low with [5h]
Player1 brings in for $0.50
Dealt to Hero0 [Ah]
Hero is low with [5h]
Hero brings in for $0.50
Player5 folds
Player14 folds
Hero4 folds
Player6 folds
Player10 completes it to $2
Hero0 completes it to $2
Player4 calls $2
Player13 folds
Player1 folds
Hero3 folds
Hero folds
*** 4TH STREET ***
Dealt to Player4 [Th] [4h]
Dealt to Player10 [Ah] [3c]
Player10 bets $2
Dealt to Hero0 [Ah] [3c]
Hero0 bets $2
Player4 calls $2
*** 5TH STREET ***
Dealt to Player4 [Th 4h] [9h]
Dealt to Player10 [Ah 3c] [8h]
Player10 has 15 seconds left to act
Player10 bets $4
Dealt to Hero0 [Ah 3c] [8h]
Hero0 has 15 seconds left to act
Hero0 bets $4
Player4 raises to $8
Player10 folds
Hero0 folds
Uncalled bet of $4 returned to Player4
Player4 mucks
Player4 wins the pot ($19.30)
*** SUMMARY ***
Total pot $19.30 | Rake $0
Seat 1: Player4 collected ($19.30), mucked
Seat 2: Player13 folded on 3rd St.
Seat 3: Player1 folded on 3rd St.
Seat 2: Hero3 folded on 3rd St.
Seat 3: Hero folded on 3rd St.
Seat 5: Player5 folded on 3rd St.
Seat 6: Player14 folded on 3rd St.
Seat 6: Hero4 folded on 3rd St.
Seat 7: Player6 folded on 3rd St.
Seat 8: Player10 folded on 5th St.
Seat 8: Hero0 folded on 5th St.
Full Tilt Poker Game #11111112961: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:19:27 ET - 2010/06/10
Seat 1: Player4 ($26)
Seat 2: Player13 ($90)
Seat 3: Player1 ($105.20)
Seat 2: Hero3 ($90)
Seat 3: Hero ($105.20)
Seat 5: Player5 ($108.20)
Seat 6: Player14 ($144.70)
Seat 6: Hero4 ($144.70)
Seat 7: Player6 ($41.50)
Seat 8: Player10 ($26.80)
Seat 8: Hero0 ($26.80)
Player4 antes $0.40
Player13 antes $0.40
Player1 antes $0.40
Hero3 antes $0.40
Hero antes $0.40
Player5 antes $0.40
Player10 antes $0.40
Player14 antes $0.40
Hero0 antes $0.40
Hero4 antes $0.40
Player6 antes $0.40
*** 3RD STREET ***
Dealt to Player4 [9d]
Dealt to Player13 [Qs]
Dealt to Player1 [9h 9s] [5c]
Dealt to Hero3 [Qs]
Dealt to Hero [9h 9s] [5c]
Dealt to Player5 [Th]
Dealt to Player14 [6c]
Dealt to Hero4 [6c]
Dealt to Player6 [2d]
Dealt to Player10 [Qh]
Dealt to Hero0 [Qh]
Player6 is low with [2d]
Player6 brings in for $0.50
Player10 folds
Hero0 folds
Player4 folds
Player13 folds
Player1 completes it to $2
Hero3 folds
Hero completes it to $2
Player5 folds
Player14 folds
Hero4 folds
Player6 calls $1.50
*** 4TH STREET ***
Dealt to Player1 [9h 9s 5c] [3s]
Dealt to Hero [9h 9s 5c] [3s]
Dealt to Player6 [2d] [Ah]
Player6 checks
Player1 bets $2
Hero bets $2
Player6 calls $2
*** 5TH STREET ***
Dealt to Player1 [9h 9s 5c 3s] [Kh]
Dealt to Hero [9h 9s 5c 3s] [Kh]
Dealt to Player6 [2d Ah] [Kc]
Player6 checks
Player1 bets $4
Hero bets $4
Player6 raises to $8
Player1 calls $4
Hero calls $4
*** 6TH STREET ***
Dealt to Player1 [9h 9s 5c 3s Kh] [5d]
Dealt to Hero [9h 9s 5c 3s Kh] [5d]
Dealt to Player6 [2d Ah Kc] [4d]
Player1 bets $4
Hero bets $4
Player6 calls $4
*** 7TH STREET ***
Dealt to Player1 [9h 9s 5c 3s Kh 5d] [8s]
Player1 bets $4
Dealt to Hero [9h 9s 5c 3s Kh 5d] [8s]
Hero bets $4
Player6 calls $4
*** SHOW DOWN ***
Player1 shows [9s 9h 5c 3s Kh 5d 8s] two pair, Nines and Fives
Hero shows [9s 9h 5c 3s Kh 5d 8s] two pair, Nines and Fives
Player6 shows [Ad Kd 2d Ah Kc 4d 8h] two pair, Aces and Kings
Player6 wins the pot ($40.80) with two pair, Aces and Kings
*** SUMMARY ***
Total pot $42.80 | Rake $2
Seat 1: Player4 folded on 3rd St.
Seat 2: Player13 folded on 3rd St.
Seat 3: Player1 showed [9s 9h 5c 3s Kh 5d 8s] and lost with two pair, Nines and Fives
Seat 2: Hero3 folded on 3rd St.
Seat 3: Hero showed [9s 9h 5c 3s Kh 5d 8s] and lost with two pair, Nines and Fives
Seat 5: Player5 folded on 3rd St.
Seat 6: Player14 folded on 3rd St.
Seat 6: Hero4 folded on 3rd St.
Seat 7: Player6 showed [Ad Kd 2d Ah Kc 4d 8h] and won ($40.80) with two pair, Aces and Kings
Seat 8: Player10 folded on 3rd St.
Seat 8: Hero0 folded on 3rd St.
Full Tilt Poker Game #11111110018: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:26:21 ET - 2010/06/10
Seat 1: Player12 ($66.10)
Seat 2: Player13 ($85.50)
Seat 3: Player1 ($81.10)
Seat 4: Player11 ($283.75)
Seat 1: Hero2 ($66.10)
Seat 2: Hero3 ($85.50)
Seat 3: Hero ($81.10)
Seat 4: Hero1 ($283.75)
Seat 5: Player5 ($109.40)
Seat 6: Player14 ($140.20)
Seat 6: Hero4 ($140.20)
Seat 7: Player6 ($59.80)
Seat 8: Player10 ($62.10)
Player10 antes $0.40
Player13 antes $0.40
Player1 antes $0.40
Seat 8: Hero0 ($62.10)
Hero0 antes $0.40
Hero3 antes $0.40
Hero antes $0.40
Player5 antes $0.40
Player14 antes $0.40
Player12 antes $0.40
Player11 antes $0.40
Hero4 antes $0.40
Hero2 antes $0.40
Hero1 antes $0.40
Player6 antes $0.40
*** 3RD STREET ***
Dealt to Player12 [Qh]
Dealt to Player13 [Kd]
Dealt to Player1 [2d Kc] [5h]
Dealt to Player11 [9d]
Dealt to Hero2 [Qh]
Dealt to Hero3 [Kd]
Dealt to Hero [2d Kc] [5h]
Dealt to Hero1 [9d]
Dealt to Player5 [6d]
Dealt to Player14 [Ad]
Dealt to Hero4 [Ad]
Dealt to Player6 [6h]
Dealt to Player10 [7h]
Player1 is low with [5h]
Player1 brings in for $0.50
Player11 folds
Dealt to Hero0 [7h]
Hero is low with [5h]
Hero brings in for $0.50
Hero1 folds
Player5 folds
Player14 folds
Hero4 folds
Player6 folds
Player10 folds
Player12 folds
Player13 completes it to $2
Player1 folds
Uncalled bet of $1.50 returned to Player13
Player13 mucks
Player13 wins the pot ($4.20)
Hero0 folds
Hero2 folds
Hero3 completes it to $2
Hero folds
Uncalled bet of $1.50 returned to Hero3
Hero3 mucks
Hero3 wins the pot ($4.20)
*** SUMMARY ***
Total pot $4.20 | Rake $0
Seat 1: Player12 folded on 3rd St.
Seat 2: Player13 collected ($4.20), mucked
Seat 3: Player1 folded on 3rd St.
Seat 4: Player11 folded on 3rd St.
Seat 1: Hero2 folded on 3rd St.
Seat 2: Hero3 collected ($4.20), mucked
Seat 3: Hero folded on 3rd St.
Seat 4: Hero1 folded on 3rd St.
Seat 5: Player5 folded on 3rd St.
Seat 6: Player14 folded on 3rd St.
Seat 6: Hero4 folded on 3rd St.
Seat 7: Player6 folded on 3rd St.
Seat 8: Player10 folded on 3rd St.
Seat 8: Hero0 folded on 3rd St.
Full Tilt Poker Game #11111111146: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:26:47 ET - 2010/06/10
Seat 1: Player12 ($65.70)
Seat 2: Player13 ($88.80)
Seat 3: Player1 ($80.20)
Seat 4: Player11 ($283.35)
Seat 1: Hero2 ($65.70)
Seat 2: Hero3 ($88.80)
Seat 3: Hero ($80.20)
Seat 4: Hero1 ($283.35)
Seat 5: Player5 ($109)
Seat 6: Player14 ($139.80)
Seat 6: Hero4 ($139.80)
Seat 7: Player6 ($59.40)
Seat 8: Player10 ($61.70)
Player10 antes $0.40
Player1 antes $0.40
Player13 antes $0.40
Seat 8: Hero0 ($61.70)
Hero0 antes $0.40
Hero antes $0.40
Hero3 antes $0.40
Player5 antes $0.40
Player11 antes $0.40
Player12 antes $0.40
Player14 antes $0.40
Hero1 antes $0.40
Hero2 antes $0.40
Hero4 antes $0.40
Player6 antes $0.40
*** 3RD STREET ***
Dealt to Player12 [Qd]
Dealt to Player13 [5c]
Dealt to Player1 [4d 3s] [9s]
Dealt to Player11 [Ks]
Dealt to Hero2 [Qd]
Dealt to Hero3 [5c]
Dealt to Hero [4d 3s] [9s]
Dealt to Hero1 [Ks]
Dealt to Player5 [2c]
Dealt to Player14 [3d]
Dealt to Hero4 [3d]
Dealt to Player6 [2h]
Dealt to Player10 [2d]
Dealt to Hero0 [2d]
Player5 is low with [2c]
Player5 brings in for $0.50
Player14 folds
Hero4 folds
Player6 folds
Player10 folds
Player12 folds
Player13 folds
Player1 folds
Player11 completes it to $2
Hero0 folds
Hero2 folds
Hero3 folds
Hero folds
Hero1 completes it to $2
Player5 calls $1.50
*** 4TH STREET ***
Dealt to Player11 [Ks] [Ah]
Dealt to Hero1 [Ks] [Ah]
Dealt to Player5 [2c] [5s]
Player11 bets $2
Hero1 bets $2
Player5 folds
Uncalled bet of $2 returned to Player11
Player11 mucks
Player11 wins the pot ($7.20)
Uncalled bet of $2 returned to Hero1
Hero1 mucks
Hero1 wins the pot ($7.20)
*** SUMMARY ***
Total pot $7.20 | Rake $0
Seat 1: Player12 folded on 3rd St.
Seat 2: Player13 folded on 3rd St.
Seat 3: Player1 folded on 3rd St.
Seat 4: Player11 collected ($7.20), mucked
Seat 1: Hero2 folded on 3rd St.
Seat 2: Hero3 folded on 3rd St.
Seat 3: Hero folded on 3rd St.
Seat 4: Hero1 collected ($7.20), mucked
Seat 5: Player5 folded on 4th St.
Seat 6: Player14 folded on 3rd St.
Seat 6: Hero4 folded on 3rd St.
Seat 7: Player6 folded on 3rd St.
Seat 8: Player10 folded on 3rd St.
Seat 8: Hero0 folded on 3rd St.
Full Tilt Poker Game #11111111633: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:37:55 ET - 2010/06/10
Seat 1: Player12 ($72)
Seat 1: Hero2 ($72)
Seat 2: Player9 ($40), is sitting out
Seat 3: Player1 ($89.20)
Seat 3: Hero ($89.20)
Seat 4: Player2 ($96.10)
Seat 5: Player5 ($105.50), is sitting out
Seat 6: Player14 ($131.70)
Seat 6: Hero4 ($131.70)
Seat 7: Player6 ($54.70)
Seat 8: Player10 ($96.40)
Player10 antes $0.40
Player1 antes $0.40
Player12 antes $0.40
Player14 antes $0.40
Seat 8: Hero0 ($96.40)
Hero0 antes $0.40
Hero antes $0.40
Hero2 antes $0.40
Hero4 antes $0.40
Player6 antes $0.40
5 seconds left to act
Player2 is sitting out
*** 3RD STREET ***
Dealt to Player12 [5c]
Dealt to Player1 [Td 9d] [Kc]
Dealt to Player14 [5h]
Dealt to Hero2 [5c]
Dealt to Hero [Td 9d] [Kc]
Dealt to Hero4 [5h]
Dealt to Player6 [4s]
Dealt to Player10 [7s]
Dealt to Hero0 [7s]
Player6 is low with [4s]
Player2 stands up
Player6 brings in for $0.50
Player10 folds
Player12 folds
Player1 completes it to $2
Player14 calls $2
Hero0 folds
Hero2 folds
Hero completes it to $2
Hero4 calls $2
Player6 folds
*** 4TH STREET ***
Dealt to Player1 [Td 9d Kc] [9s]
Dealt to Player14 [5h] [9h]
Player1 bets $2
Player14 raises to $4
Player1 calls $2
Dealt to Hero [Td 9d Kc] [9s]
Dealt to Hero4 [5h] [9h]
Hero bets $2
Hero4 raises to $4
Hero calls $2
*** 5TH STREET ***
Dealt to Player1 [Td 9d Kc 9s] [Tc]
Dealt to Player14 [5h 9h] [3d]
Player1 checks
Player14 checks
Dealt to Hero [Td 9d Kc 9s] [Tc]
Dealt to Hero4 [5h 9h] [3d]
Hero checks
Hero4 checks
*** 6TH STREET ***
Dealt to Player1 [Td 9d Kc 9s Tc] [9c]
Dealt to Player14 [5h 9h 3d] [Th]
Player1 bets $4
Player14 calls $4
Dealt to Hero [Td 9d Kc 9s Tc] [9c]
Dealt to Hero4 [5h 9h 3d] [Th]
Hero bets $4
Hero4 calls $4
*** 7TH STREET ***
Dealt to Player1 [Td 9d Kc 9s Tc 9c] [7h]
Player1 bets $4
Player14 calls $4
Dealt to Hero [Td 9d Kc 9s Tc 9c] [7h]
Hero bets $4
Hero4 calls $4
*** SHOW DOWN ***
Player1 shows [Td 9d Kc 9s Tc 9c 7h] a full house, Nines full of Tens
Player14 mucks
Player1 wins the pot ($29.50) with a full house, Nines full of Tens
Hero shows [Td 9d Kc 9s Tc 9c 7h] a full house, Nines full of Tens
Hero4 mucks
Hero wins the pot ($29.50) with a full house, Nines full of Tens
*** SUMMARY ***
Total pot $30.50 | Rake $1
Seat 1: Player12 folded on 3rd St.
Seat 1: Hero2 folded on 3rd St.
Seat 2: Player9 is sitting out
Seat 3: Player1 showed [Td 9d Kc 9s Tc 9c 7h] and won ($29.50) with a full house, Nines full of Tens
Seat 3: Hero showed [Td 9d Kc 9s Tc 9c 7h] and won ($29.50) with a full house, Nines full of Tens
Seat 4: Player2 is sitting out
Seat 5: Player5 is sitting out
Seat 6: Player14 mucked [8h 6h 5h 9h 3d Th 3h] - a flush, Ten high
Seat 6: Hero4 mucked [8h 6h 5h 9h 3d Th 3h] - a flush, Ten high
Seat 7: Player6 folded on 3rd St.
Seat 8: Player10 folded on 3rd St.
Seat 8: Hero0 folded on 3rd St.
Full Tilt Poker Game #11111113928: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:39:41 ET - 2010/06/10
Seat 1: Player12 ($68.70)
Seat 1: Hero2 ($68.70)
Seat 2: Player9 ($40), is sitting out
Seat 3: Player1 ($103.90)
Seat 6: Player14 ($116.40)
Seat 3: Hero ($103.90)
Seat 6: Hero4 ($116.40)
Seat 7: Player6 ($58.40)
Seat 8: Player10 ($95.60)
Player10 antes $0.40
Player1 antes $0.40
Seat 8: Hero0 ($95.60)
Hero0 antes $0.40
Hero antes $0.40
Player6 antes $0.40
Player3 sits down
Player14 antes $0.40
Player12 antes $0.40
Hero4 antes $0.40
Hero2 antes $0.40
*** 3RD STREET ***
Dealt to Player12 [9c]
Dealt to Player1 [Ts 4h] [9h]
Dealt to Player14 [7c]
Dealt to Hero2 [9c]
Dealt to Hero [Ts 4h] [9h]
Dealt to Hero4 [7c]
Dealt to Player6 [7s]
Dealt to Player10 [2h]
Player10 is low with [2h]
Dealt to Hero0 [2h]
Hero0 is low with [2h]
Player3 adds $40
Player10 brings in for $0.50
Player12 folds
Player1 completes it to $2
Player14 folds
Hero0 brings in for $0.50
Hero2 folds
Hero completes it to $2
Hero4 folds
Player6 folds
Player10 folds
Uncalled bet of $1.50 returned to Player1
Player1 mucks
Player1 wins the pot ($3)
Hero0 folds
Uncalled bet of $1.50 returned to Hero
Hero mucks
Hero wins the pot ($3)
*** SUMMARY ***
Total pot $3 | Rake $0
Seat 1: Player12 folded on 3rd St.
Seat 1: Hero2 folded on 3rd St.
Seat 2: Player9 is sitting out
Seat 3: Player1 collected ($3), mucked
Seat 6: Player14 folded on 3rd St.
Seat 3: Hero collected ($3), mucked
Seat 6: Hero4 folded on 3rd St.
Seat 7: Player6 folded on 3rd St.
Seat 8: Player10 folded on 3rd St.
Seat 8: Hero0 folded on 3rd St.
Full Tilt Poker Game #11111111062: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:51:45 ET - 2010/06/10
Seat 1: Player12 ($83.40)
Seat 1: Hero2 ($83.40)
Seat 2: Player9 ($24.35)
Seat 3: Player1 ($147.90)
Seat 3: Hero ($147.90)
Seat 4: Player3 ($74.10)
Seat 5: Player8 ($63.10)
Seat 6: Player14 ($103)
Seat 6: Hero4 ($103)
Seat 7: Player6 ($63.20)
Seat 8: Player7 ($48.40)
Player7 antes $0.40
Player1 antes $0.40
Hero antes $0.40
Player8 antes $0.40
Player3 antes $0.40
Player9 antes $0.40
Player12 antes $0.40
Player14 antes $0.40
Hero2 antes $0.40
Hero4 antes $0.40
Player6 antes $0.40
*** 3RD STREET ***
Dealt to Player12 [As]
Dealt to Hero2 [As]
Dealt to Player9 [7s]
Dealt to Player1 [7h 6s] [8d]
Dealt to Hero [7h 6s] [8d]
Dealt to Player3 [2d]
Dealt to Player8 [3c]
Dealt to Player14 [7c]
Dealt to Hero4 [7c]
Dealt to Player6 [8h]
Dealt to Player7 [Qs]
Player3 is low with [2d]
Player3 brings in for $0.50
Player8 folds
Player14 folds
Hero4 folds
Player6 folds
Player7 folds
Player12 completes it to $2
Hero2 completes it to $2
Player9 folds
Player1 calls $2
Hero calls $2
Player3 calls $1.50
*** 4TH STREET ***
Dealt to Player12 [As] [5d]
Dealt to Player1 [7h 6s 8d] [Qc]
Dealt to Hero2 [As] [5d]
Dealt to Hero [7h 6s 8d] [Qc]
Dealt to Player3 [2d] [3h]
Player12 bets $2
Player1 folds
Hero2 bets $2
Hero folds
Player3 calls $2
*** 5TH STREET ***
Dealt to Player12 [As 5d] [4c]
Dealt to Hero2 [As 5d] [4c]
Dealt to Player3 [2d 3h] [5s]
Player12 bets $4
Hero2 bets $4
Player3 folds
Uncalled bet of $4 returned to Player12
Player12 mucks
Player12 wins the pot ($13.20)
Uncalled bet of $4 returned to Hero2
Hero2 mucks
Hero2 wins the pot ($13.20)
*** SUMMARY ***
Total pot $13.20 | Rake $0
Seat 1: Player12 collected ($13.20), mucked
Seat 1: Hero2 collected ($13.20), mucked
Seat 2: Player9 folded on 3rd St.
Seat 3: Player1 folded on 4th St.
Seat 3: Hero folded on 4th St.
Seat 4: Player3 folded on 5th St.
Seat 5: Player8 folded on 3rd St.
Seat 6: Player14 folded on 3rd St.
Seat 6: Hero4 folded on 3rd St.
Seat 7: Player6 folded on 3rd St.
Seat 8: Player7 folded on 3rd St.
@ -607,7 +607,7 @@ Seat 8: Player7 folded on 3rd St.
Full Tilt Poker Game #11111115744: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 14:02:17 ET - 2010/06/10
Seat 2: Player0 ($60)
Seat 3: Player1 ($129.30)
Seat 3: Hero ($129.30)
Seat 4: Player3 ($125.75)
Seat 5: Player8 ($40.10)
Seat 7: Player6 ($72)
@ -615,24 +615,24 @@ Seat 8: Player7 ($32.20)
Player0 antes $0.40
Player8 antes $0.40
Player7 antes $0.40
Player1 antes $0.40
Hero antes $0.40
Player3 antes $0.40
Player6 antes $0.40
*** 3RD STREET ***
Dealt to Player0 [Th]
Dealt to Player1 [9s Qc] [7d]
Dealt to Hero [9s Qc] [7d]
Dealt to Player3 [Qh]
Dealt to Player8 [Kd]
Dealt to Player6 [Jd]
Dealt to Player7 [Jh]
Player1 is low with [7d]
Player1 brings in for $0.50
Hero is low with [7d]
Hero brings in for $0.50
Player3 folds
Player8 folds
Player6 folds
Player7 completes it to $2
Player0 calls $2
Player1 folds
Hero folds
*** 4TH STREET ***
Dealt to Player0 [Th] [As]
Dealt to Player7 [Jh] [8c]
@ -654,7 +654,7 @@ Player0 wins the pot ($10.90)
*** SUMMARY ***
Total pot $10.90 | Rake $0
Seat 2: Player0 collected ($10.90), mucked
Seat 3: Player1 folded on 3rd St.
Seat 3: Hero folded on 3rd St.
Seat 4: Player3 folded on 3rd St.
Seat 5: Player8 folded on 3rd St.
Seat 7: Player6 folded on 3rd St.

View File

@ -0,0 +1,32 @@
{ 'boardcard1': 0,
'boardcard2': 0,
'boardcard3': 0,
'boardcard4': 0,
'boardcard5': 0,
'gametypeId': 5,
'importTime': None,
'maxSeats': 8,
'playersAtShowdown': 1,
'playersAtStreet-1': 7,
'playersAtStreet0': 3,
'playersAtStreet1': 3,
'playersAtStreet2': 2,
'playersAtStreet3': 1,
'playersAtStreet4': 1,
'playersVpi': 3,
'seats': 7,
'showdownPot': 0,
'siteHandNo': u'26190453000',
'startTime': datetime.datetime(2010, 12, 7, 9, 10, 10, tzinfo=pytz.utc),
'street0Raises': 0,
'street1Pot': 0,
'street1Raises': 1,
'street2Pot': 0,
'street2Raises': 1,
'street3Pot': 0,
'street3Raises': 1,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Mart',
'texture': None,
'tourneyId': None}

View File

@ -0,0 +1,658 @@
{ u'Hero': { 'card1': 18,
'card2': 25,
'card3': 42,
'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': 1,
'sitout': False,
'startCards': 700,
'startCash': 450,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player2': { 'card1': 0,
'card2': 0,
'card3': 40,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 2,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 2,
'sitout': False,
'startCards': -12,
'startCash': 563,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player3': { 'card1': 0,
'card2': 0,
'card3': 4,
'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': 3,
'sitout': False,
'startCards': -9,
'startCash': 760,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player4': { 'card1': 0,
'card2': 0,
'card3': 32,
'card4': 33,
'card5': 16,
'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': 0,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 4,
'sitout': False,
'startCards': -7,
'startCash': 211,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 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': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -22,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player5': { 'card1': 0,
'card2': 0,
'card3': 51,
'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': 5,
'sitout': False,
'startCards': -1,
'startCash': 818,
'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': -5,
'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': 5,
'card4': 8,
'card5': 30,
'card6': 14,
'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': 5,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 7,
'sitout': False,
'startCards': -8,
'startCash': 260,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 2,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 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': 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': -42,
'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': 45,
'card4': 26,
'card5': 7,
'card6': 28,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 4,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 5,
'sawShowdown': False,
'seatNo': 8,
'sitout': False,
'startCards': -7,
'startCash': 175,
'street0Aggr': True,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': True,
'street1Bets': 1,
'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,
'totalProfit': 70,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 112,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.0,
'wonWhenSeenStreet4': 0.0}}

View File

@ -0,0 +1,32 @@
{ 'boardcard1': 0,
'boardcard2': 0,
'boardcard3': 0,
'boardcard4': 0,
'boardcard5': 0,
'gametypeId': 1,
'importTime': None,
'maxSeats': 8,
'playersAtShowdown': 1,
'playersAtStreet-1': 7,
'playersAtStreet0': 3,
'playersAtStreet1': 2,
'playersAtStreet2': 1,
'playersAtStreet3': 1,
'playersAtStreet4': 1,
'playersVpi': 2,
'seats': 8,
'showdownPot': 0,
'siteHandNo': u'26190500040',
'startTime': datetime.datetime(2010, 12, 7, 9, 19, tzinfo=pytz.utc),
'street0Raises': 0,
'street1Pot': 0,
'street1Raises': 1,
'street2Pot': 0,
'street2Raises': 1,
'street3Pot': 0,
'street3Raises': 0,
'street4Pot': 0,
'street4Raises': 0,
'tableName': u'Mart',
'texture': None,
'tourneyId': None}

View File

@ -0,0 +1,752 @@
{ u'Hero': { 'card1': 36,
'card2': 14,
'card3': 44,
'card4': 8,
'card5': 34,
'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': False,
'otherRaisedStreet2': True,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 5,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 1,
'sitout': False,
'startCards': 395,
'startCash': 574,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': 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': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -15,
'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': 23,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 4,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 2,
'sitout': False,
'startCards': -3,
'startCash': 650,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player3': { 'card1': 0,
'card2': 0,
'card3': 26,
'card4': 10,
'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': 3,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 3,
'sitout': False,
'startCards': -13,
'startCash': 690,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': 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': -5,
'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': 41,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 2,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 4,
'sitout': False,
'startCards': -11,
'startCash': 168,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player5': { 'card1': 0,
'card2': 0,
'card3': 6,
'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': 5,
'sitout': False,
'startCards': -7,
'startCash': 802,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player6': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 2,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 6,
'sitout': False,
'startCards': 0,
'startCash': 54,
'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'Player7': { 'card1': 0,
'card2': 0,
'card3': 52,
'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': 7,
'sitout': False,
'startCards': -13,
'startCash': 281,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player8': { 'card1': 0,
'card2': 0,
'card3': 37,
'card4': 46,
'card5': 18,
'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': 2,
'sawShowdown': False,
'seatNo': 8,
'sitout': False,
'startCards': -2,
'startCash': 187,
'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': 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': 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': 26,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 41,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}}

View File

@ -1,79 +1,79 @@
***** History for hand R5-81962116-232 *****
Start hand: Mon Sep 13 00:21:02 GMT+0100 2010
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 3
Players in round: 4
Seat 8: DamonV2 ($0.07)
Seat 10: tchazx ($1)
Seat 10: Hero ($1)
Seat 1: x Diabolo666 ($11.23)
Seat 3: velabianca ($0.51)
DamonV2 posts small blind ($0.02)
tchazx posts big blind ($0.05)
Hero posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [Tc, 9h, 7c, Ah, Jh]
Dealing to Hero: [Tc, 9h, 7c, Ah, Jh]
x Diabolo666 raises $0.10 to $0.10
velabianca folds
DamonV2 folds
tchazx calls $0.05
Hero calls $0.05
---
tchazx changed 2 cards
New hand for tchazx: [8h, 9h, 6s, Ah, Jh]
Hero changed 2 cards
New hand for Hero: [8h, 9h, 6s, Ah, Jh]
x Diabolo666 changed 3 cards
tchazx checks
Hero checks
x Diabolo666 checks
---
Summary:
Main pot: $0.22 won by x Diabolo666 ($0.21)
Rake taken: $0.01
Seat 8: DamonV2 ($0.05), net: -$0.02
Seat 10: tchazx ($0.90), net: -$0.10, [8h, 9h, 6s, Ah, Jh] (HIGH_CARD ACE)
Seat 10: Hero ($0.90), net: -$0.10, [8h, 9h, 6s, Ah, Jh] (HIGH_CARD ACE)
Seat 1: x Diabolo666 ($11.34), net: +$0.11, [2c, Ac, Td, As, Qc] (PAIR ACE)
Seat 3: velabianca ($0.51)
***** End of hand R5-81962116-232 *****
***** History for hand R5-81962116-233 *****
Start hand: Mon Sep 13 00:21:42 GMT+0100 2010
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 8
Players in round: 5
Seat 10: tchazx ($0.90)
Seat 10: Hero ($0.90)
Seat 1: x Diabolo666 ($11.34)
Seat 3: velabianca ($0.51)
Seat 4: grommek ($9.40)
Seat 8: DamonV2 ($0.05)
tchazx posts small blind ($0.02)
Hero posts small blind ($0.02)
x Diabolo666 posts big blind ($0.05)
grommek posts big blind ($0.05)
grommek posts dead blind ($0.02)
---
Dealing pocket cards
Dealing to tchazx: [Jd, 5s, 8h, 4h, 7d]
Dealing to Hero: [Jd, 5s, 8h, 4h, 7d]
velabianca calls $0.05
grommek checks
DamonV2 calls $0.05 [all in]
tchazx calls $0.03
Hero calls $0.03
x Diabolo666 checks
---
tchazx changed 1 cards
New hand for tchazx: [Ah, 5s, 8h, 4h, 7d]
Hero changed 1 cards
New hand for Hero: [Ah, 5s, 8h, 4h, 7d]
x Diabolo666 changed 4 cards
velabianca changed 2 cards
grommek changed 3 cards
DamonV2 changed 2 cards
tchazx checks
Hero checks
x Diabolo666 checks
velabianca bets $0.10
grommek folds
tchazx folds
Hero folds
x Diabolo666 folds
---
---
Summary:
Main pot: $0.27 won by velabianca ($0.26)
Rake taken: $0.01
Seat 10: tchazx ($0.85), net: -$0.05
Seat 10: Hero ($0.85), net: -$0.05
Seat 1: x Diabolo666 ($11.29), net: -$0.05
Seat 3: velabianca ($0.72), net: +$0.21, [As, 9s, 6s, 6c, 9h] (TWO_PAIR NINE, SIX)
Seat 4: grommek ($9.33), net: -$0.07
@ -82,20 +82,20 @@ Seat 8: DamonV2 ($0), net: -$0.05, [Jh, 2c, Kh, Td, 6h] (HIGH_CARD KING)
***** History for hand R5-81962116-234 *****
Start hand: Mon Sep 13 00:22:36 GMT+0100 2010
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 10
Players in round: 4
Seat 1: x Diabolo666 ($11.29)
Seat 3: velabianca ($0.72)
Seat 4: grommek ($9.33)
Seat 10: tchazx ($0.85)
Seat 10: Hero ($0.85)
x Diabolo666 posts small blind ($0.02)
velabianca posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [Kh, 9d, As, 4s, 7c]
Dealing to Hero: [Kh, 9d, As, 4s, 7c]
grommek calls $0.05
tchazx folds
Hero folds
x Diabolo666 folds
velabianca checks
velabianca changed 3 cards
@ -110,37 +110,37 @@ Rake taken: $0
Seat 1: x Diabolo666 ($11.27), net: -$0.02
Seat 3: velabianca ($0.67), net: -$0.05
Seat 4: grommek ($9.40), net: +$0.07
Seat 10: tchazx ($0.85)
Seat 10: Hero ($0.85)
***** End of hand R5-81962116-234 *****
***** History for hand R5-81962116-235 *****
Start hand: Mon Sep 13 00:23:04 GMT+0100 2010
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 1
Players in round: 4
Seat 3: velabianca ($0.67)
Seat 4: grommek ($9.40)
Seat 10: tchazx ($0.85)
Seat 10: Hero ($0.85)
Seat 1: x Diabolo666 ($11.27)
velabianca posts small blind ($0.02)
grommek posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [8d, Td, 2s, 3d, Qd]
tchazx calls $0.05
Dealing to Hero: [8d, Td, 2s, 3d, Qd]
Hero calls $0.05
x Diabolo666 raises $0.10 to $0.10
velabianca calls $0.08
grommek calls $0.05
tchazx calls $0.05
Hero calls $0.05
---
velabianca changed 2 cards
grommek changed 2 cards
tchazx changed 1 cards
New hand for tchazx: [8d, Td, 8h, 3d, Qd]
Hero changed 1 cards
New hand for Hero: [8d, Td, 8h, 3d, Qd]
x Diabolo666 changed 3 cards
velabianca checks
grommek checks
tchazx checks
Hero checks
x Diabolo666 checks
---
Summary:
@ -148,6 +148,6 @@ Main pot: $0.40 won by velabianca ($0.38)
Rake taken: $0.02
Seat 3: velabianca ($0.95), net: +$0.28
Seat 4: grommek ($9.30), net: -$0.10
Seat 10: tchazx ($0.75), net: -$0.10
Seat 10: Hero ($0.75), net: -$0.10
Seat 1: x Diabolo666 ($11.17), net: -$0.10, [6d, Qc, 4c, Th, Qs] (PAIR QUEEN)
***** End of hand R5-81962116-235 *****

View File

@ -1,39 +1,39 @@
***** History for hand R5-75443872-61 *****
Start hand: Wed Aug 18 19:32:32 GMT+0100 2010
Table: someplace [75443872] (LIMIT TEXAS_HOLDEM 0.50/1, Real money)
User: player3
User: Hero
Button: seat 5
Players in round: 5
Seat 7: player4 (34.70)
Seat 9: player5 (1.05)
Seat 1: player3 (23.90)
Seat 1: Hero (23.90)
Seat 3: player2 (33.95)
Seat 5: player1 (14.20)
player4 posts small blind (0.25)
player5 posts big blind (0.50)
---
Dealing pocket cards
Dealing to player3: [Kd, Ks]
player3 raises 1 to 1
Dealing to Hero: [Kd, Ks]
Hero raises 1 to 1
player2 folds
player1 calls 1
player4 folds
player5 raises 0.55 to 1.05 [all in]
player3 calls 0.05
Hero calls 0.05
player1 calls 0.05
--- Dealing flop [2d, Ad, Th]
player3 bets 0.50
Hero bets 0.50
player1 folds
--- Dealing flop [2d, Ad, Th]
--- Dealing turn [8s]
--- Dealing river [7d]
---
Summary:
Main pot: 3.40 won by player3 (3.25)
Main pot: 3.40 won by Hero (3.25)
Rake taken: $0.15
Seat 7: player4 (34.45), net: -0.25
Seat 9: player5 (0), net: -1.05, [Qd, Qh] (PAIR QUEEN)
Seat 1: player3 (26.10), net: +2.20, [Kd, Ks] (PAIR KING)
Seat 1: Hero (26.10), net: +2.20, [Kd, Ks] (PAIR KING)
Seat 3: player2 (33.95)
Seat 5: player1 (13.15), net: -1.05
***** End of hand R5-75443872-61 *****

View File

@ -186,7 +186,7 @@
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'player3': { 'card1': 25,
u'Hero': { 'card1': 25,
'card2': 51,
'card3': 0,
'card4': 0,

View File

@ -1,66 +1,66 @@
***** History for hand R5-81867677-656 *****
Start hand: Mon Sep 13 00:26:26 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 8
Players in round: 3
Seat 3: nickgerm ($3.74)
Seat 4: tchazx ($5)
Seat 4: Hero ($5)
Seat 8: XYXY26XYXY ($1.79)
nickgerm posts small blind ($0.02)
tchazx posts big blind ($0.05)
Hero posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [Ks, 4s, 6s, Th]
Dealing to Hero: [Ks, 4s, 6s, Th]
XYXY26XYXY calls $0.05
nickgerm calls $0.03
tchazx checks
Hero checks
--- Dealing flop [5h, 7d, 2s]
nickgerm checks
tchazx checks
Hero checks
XYXY26XYXY checks
--- Dealing turn [Qs]
nickgerm checks
tchazx checks
Hero checks
XYXY26XYXY checks
--- Dealing river [4d]
nickgerm bets $0.10
tchazx folds
Hero folds
XYXY26XYXY folds
---
Summary:
Main pot: $0.15 won by nickgerm ($0.15)
Rake taken: $0
Seat 3: nickgerm ($3.84), net: +$0.10
Seat 4: tchazx ($4.95), net: -$0.05
Seat 4: Hero ($4.95), net: -$0.05
Seat 8: XYXY26XYXY ($1.74), net: -$0.05
***** End of hand R5-81867677-656 *****
***** History for hand R5-81867677-657 *****
Start hand: Mon Sep 13 00:27:13 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 3
Players in round: 3
Seat 4: tchazx ($4.95)
Seat 4: Hero ($4.95)
Seat 8: XYXY26XYXY ($1.74)
Seat 3: nickgerm ($3.84)
tchazx posts small blind ($0.02)
Hero posts small blind ($0.02)
XYXY26XYXY posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [Jd, Td, 8h, Tc]
Dealing to Hero: [Jd, Td, 8h, Tc]
nickgerm calls $0.05
tchazx calls $0.03
Hero calls $0.03
XYXY26XYXY checks
--- Dealing flop [4h, 7c, 2c]
tchazx checks
Hero checks
XYXY26XYXY checks
nickgerm checks
--- Dealing turn [Kc]
tchazx checks
Hero checks
XYXY26XYXY checks
nickgerm bets $0.10
tchazx folds
Hero folds
XYXY26XYXY calls $0.10
--- Dealing river [3d]
XYXY26XYXY checks
@ -70,30 +70,30 @@ XYXY26XYXY calls $0.10
Summary:
Main pot: $0.55 won by nickgerm ($0.27), XYXY26XYXY ($0.26)
Rake taken: $0.02
Seat 4: tchazx ($4.90), net: -$0.05
Seat 4: Hero ($4.90), net: -$0.05
Seat 8: XYXY26XYXY ($1.75), net: +$0.01, [7h, Qs, 9c, Kd] (TWO_PAIR KING, SEVEN)
Seat 3: nickgerm ($3.86), net: +$0.02, [7d, 6s, Ks, Jc] (TWO_PAIR KING, SEVEN)
***** End of hand R5-81867677-657 *****
***** History for hand R5-81867677-658 *****
Start hand: Mon Sep 13 00:28:06 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 4
Players in round: 5
Seat 8: XYXY26XYXY ($1.75)
Seat 10: Mandala14 ($3)
Seat 1: ANOKATO ($2.33)
Seat 3: nickgerm ($3.86)
Seat 4: tchazx ($4.90)
Seat 4: Hero ($4.90)
XYXY26XYXY posts small blind ($0.02)
Mandala14 posts big blind ($0.05)
ANOKATO posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [Ad, Js, Jc, 9h]
Dealing to Hero: [Ad, Js, Jc, 9h]
ANOKATO checks
nickgerm raises $0.10 to $0.10
tchazx calls $0.10
Hero calls $0.10
XYXY26XYXY calls $0.08
Mandala14 calls $0.05
ANOKATO calls $0.05
@ -102,24 +102,24 @@ XYXY26XYXY checks
Mandala14 checks
ANOKATO bets $0.05
nickgerm raises $0.10 to $0.10
tchazx calls $0.10
Hero calls $0.10
XYXY26XYXY folds
Mandala14 calls $0.10
ANOKATO raises $0.10 to $0.15
nickgerm calls $0.05
tchazx calls $0.05
Hero calls $0.05
Mandala14 calls $0.05
--- Dealing turn [Kh]
Mandala14 checks
ANOKATO bets $0.10
nickgerm calls $0.10
tchazx calls $0.10
Hero calls $0.10
Mandala14 calls $0.10
--- Dealing river [Ks]
Mandala14 bets $0.10
ANOKATO calls $0.10
nickgerm folds
tchazx calls $0.10
Hero calls $0.10
---
Summary:
Main pot: $1.80 won by Mandala14 ($1.71)
@ -128,26 +128,26 @@ Seat 8: XYXY26XYXY ($1.65), net: -$0.10
Seat 10: Mandala14 ($4.26), net: +$1.26, [As, Ah, 5s, Qs] (TWO_PAIR ACE, KING)
Seat 1: ANOKATO ($1.88), net: -$0.45
Seat 3: nickgerm ($3.51), net: -$0.35
Seat 4: tchazx ($4.45), net: -$0.45
Seat 4: Hero ($4.45), net: -$0.45
***** End of hand R5-81867677-658 *****
***** History for hand R5-81867677-659 *****
Start hand: Mon Sep 13 00:29:21 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 8
Players in round: 5
Seat 10: Mandala14 ($4.26)
Seat 1: ANOKATO ($1.88)
Seat 3: nickgerm ($3.51)
Seat 4: tchazx ($4.45)
Seat 4: Hero ($4.45)
Seat 8: XYXY26XYXY ($1.65)
Mandala14 posts small blind ($0.02)
ANOKATO posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [5h, Tc, 9c, 3h]
Dealing to Hero: [5h, Tc, 9c, 3h]
nickgerm raises $0.10 to $0.10
tchazx calls $0.10
Hero calls $0.10
XYXY26XYXY calls $0.10
Mandala14 calls $0.08
ANOKATO calls $0.05
@ -155,7 +155,7 @@ ANOKATO calls $0.05
Mandala14 checks
ANOKATO checks
nickgerm bets $0.05
tchazx calls $0.05
Hero calls $0.05
XYXY26XYXY calls $0.05
Mandala14 calls $0.05
ANOKATO calls $0.05
@ -163,7 +163,7 @@ ANOKATO calls $0.05
Mandala14 checks
ANOKATO bets $0.10
nickgerm raises $0.20 to $0.20
tchazx folds
Hero folds
XYXY26XYXY calls $0.20
Mandala14 calls $0.20
ANOKATO raises $0.20 to $0.30
@ -183,51 +183,51 @@ Rake taken: $0.09
Seat 10: Mandala14 ($3.81), net: -$0.45
Seat 1: ANOKATO ($3.29), net: +$1.41
Seat 3: nickgerm ($3.06), net: -$0.45
Seat 4: tchazx ($4.30), net: -$0.15
Seat 4: Hero ($4.30), net: -$0.15
Seat 8: XYXY26XYXY ($1.20), net: -$0.45
***** End of hand R5-81867677-659 *****
***** History for hand R5-81867677-660 *****
Start hand: Mon Sep 13 00:30:43 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 10
Players in round: 5
Seat 1: ANOKATO ($3.29)
Seat 3: nickgerm ($3.06)
Seat 4: tchazx ($4.30)
Seat 4: Hero ($4.30)
Seat 8: XYXY26XYXY ($1.20)
Seat 10: Mandala14 ($3.81)
ANOKATO posts small blind ($0.02)
nickgerm posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [Qh, 4d, Ts, 9d]
tchazx calls $0.05
Dealing to Hero: [Qh, 4d, Ts, 9d]
Hero calls $0.05
XYXY26XYXY calls $0.05
Mandala14 calls $0.05
ANOKATO calls $0.03
nickgerm raises $0.05 to $0.10
tchazx calls $0.05
Hero calls $0.05
XYXY26XYXY calls $0.05
Mandala14 calls $0.05
ANOKATO calls $0.05
--- Dealing flop [6d, 3c, Qc]
ANOKATO checks
nickgerm bets $0.05
tchazx calls $0.05
Hero calls $0.05
XYXY26XYXY calls $0.05
Mandala14 calls $0.05
ANOKATO calls $0.05
--- Dealing turn [7h]
ANOKATO checks
nickgerm checks
tchazx checks
Hero checks
XYXY26XYXY checks
Mandala14 checks
--- Dealing river [Jh]
ANOKATO bets $0.10
nickgerm folds
tchazx calls $0.10
Hero calls $0.10
XYXY26XYXY folds
Mandala14 folds
---
@ -236,34 +236,34 @@ Main pot: $0.95 won by ANOKATO ($0.91)
Rake taken: $0.04
Seat 1: ANOKATO ($3.95), net: +$0.66, [7c, Qd, Ks, 5d] (TWO_PAIR QUEEN, SEVEN)
Seat 3: nickgerm ($2.91), net: -$0.15
Seat 4: tchazx ($4.05), net: -$0.25
Seat 4: Hero ($4.05), net: -$0.25
Seat 8: XYXY26XYXY ($1.05), net: -$0.15
Seat 10: Mandala14 ($3.66), net: -$0.15
***** End of hand R5-81867677-660 *****
***** History for hand R5-81867677-661 *****
Start hand: Mon Sep 13 00:31:54 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 1
Players in round: 5
Seat 3: nickgerm ($2.91)
Seat 4: tchazx ($4.05)
Seat 4: Hero ($4.05)
Seat 8: XYXY26XYXY ($1.05)
Seat 10: Mandala14 ($3.66)
Seat 1: ANOKATO ($3.95)
nickgerm posts small blind ($0.02)
tchazx posts big blind ($0.05)
Hero posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [5d, 9h, 6h, 4h]
Dealing to Hero: [5d, 9h, 6h, 4h]
XYXY26XYXY calls $0.05
Mandala14 calls $0.05
ANOKATO calls $0.05
nickgerm calls $0.03
tchazx checks
Hero checks
--- Dealing flop [2d, 4d, Jh]
nickgerm bets $0.05
tchazx folds
Hero folds
XYXY26XYXY calls $0.05
Mandala14 folds
ANOKATO calls $0.05
@ -285,7 +285,7 @@ Summary:
Main pot: $1.70 won by nickgerm ($1.62)
Rake taken: $0.08
Seat 3: nickgerm ($3.93), net: +$1.02, [9c, 4s, Jd, 6c] (FULL_HOUSE JACK, FOUR)
Seat 4: tchazx ($4), net: -$0.05
Seat 4: Hero ($4), net: -$0.05
Seat 8: XYXY26XYXY ($0.65), net: -$0.40
Seat 10: Mandala14 ($3.61), net: -$0.05
Seat 1: ANOKATO ($3.35), net: -$0.60
@ -293,23 +293,23 @@ Seat 1: ANOKATO ($3.35), net: -$0.60
***** History for hand R5-81867677-662 *****
Start hand: Mon Sep 13 00:33:20 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 3
Players in round: 5
Seat 4: tchazx ($4)
Seat 4: Hero ($4)
Seat 8: XYXY26XYXY ($0.65)
Seat 10: Mandala14 ($3.61)
Seat 1: ANOKATO ($3.35)
Seat 3: nickgerm ($3.93)
tchazx posts small blind ($0.02)
Hero posts small blind ($0.02)
XYXY26XYXY posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [5s, 6c, Kc, 3s]
Dealing to Hero: [5s, 6c, Kc, 3s]
Mandala14 calls $0.05
ANOKATO calls $0.05
nickgerm raises $0.10 to $0.10
tchazx folds
Hero folds
XYXY26XYXY calls $0.05
Mandala14 calls $0.05
ANOKATO calls $0.05
@ -335,7 +335,7 @@ nickgerm checks
Summary:
Main pot: $1.07 won by ANOKATO ($1.02)
Rake taken: $0.05
Seat 4: tchazx ($3.98), net: -$0.02
Seat 4: Hero ($3.98), net: -$0.02
Seat 8: XYXY26XYXY ($0.50), net: -$0.15
Seat 10: Mandala14 ($3.51), net: -$0.10
Seat 1: ANOKATO ($3.97), net: +$0.62, [Js, 5c, 9c, 2h] (THREE_OF_A_KIND TWO)
@ -344,22 +344,22 @@ Seat 3: nickgerm ($3.53), net: -$0.40
***** History for hand R5-81867677-663 *****
Start hand: Mon Sep 13 00:34:34 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 4
Players in round: 5
Seat 8: XYXY26XYXY ($0.50)
Seat 10: Mandala14 ($3.51)
Seat 1: ANOKATO ($3.97)
Seat 3: nickgerm ($3.53)
Seat 4: tchazx ($3.98)
Seat 4: Hero ($3.98)
XYXY26XYXY posts small blind ($0.02)
Mandala14 posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [Ac, 9h, 6h, Jc]
Dealing to Hero: [Ac, 9h, 6h, Jc]
ANOKATO calls $0.05
nickgerm calls $0.05
tchazx calls $0.05
Hero calls $0.05
XYXY26XYXY calls $0.03
Mandala14 checks
--- Dealing flop [7s, 4c, 8s]
@ -367,7 +367,7 @@ XYXY26XYXY checks
Mandala14 checks
ANOKATO bets $0.05
nickgerm calls $0.05
tchazx calls $0.05
Hero calls $0.05
XYXY26XYXY calls $0.05
Mandala14 calls $0.05
--- Dealing turn [2d]
@ -375,7 +375,7 @@ XYXY26XYXY checks
Mandala14 checks
ANOKATO bets $0.10
nickgerm raises $0.20 to $0.20
tchazx calls $0.20
Hero calls $0.20
XYXY26XYXY calls $0.20
Mandala14 calls $0.20
ANOKATO calls $0.10
@ -384,7 +384,7 @@ XYXY26XYXY bets $0.10
Mandala14 folds
ANOKATO calls $0.10
nickgerm raises $0.20 to $0.20
tchazx folds
Hero folds
XYXY26XYXY calls $0.10 [all in]
ANOKATO folds
---
@ -395,26 +395,26 @@ Seat 8: XYXY26XYXY ($1.90), net: +$1.40, [8d, 5c, 4d, 3c] (FULL_HOUSE FOUR, EIGH
Seat 10: Mandala14 ($3.21), net: -$0.30
Seat 1: ANOKATO ($3.57), net: -$0.40
Seat 3: nickgerm ($3.03), net: -$0.50, [6s, Th, 3d, 5d] (STRAIGHT EIGHT)
Seat 4: tchazx ($3.68), net: -$0.30
Seat 4: Hero ($3.68), net: -$0.30
***** End of hand R5-81867677-663 *****
***** History for hand R5-81867677-664 *****
Start hand: Mon Sep 13 00:36:21 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 8
Players in round: 5
Seat 10: Mandala14 ($3.21)
Seat 1: ANOKATO ($3.57)
Seat 3: nickgerm ($3.03)
Seat 4: tchazx ($3.68)
Seat 4: Hero ($3.68)
Seat 8: XYXY26XYXY ($1.90)
Mandala14 posts small blind ($0.02)
ANOKATO posts big blind ($0.05)
---
Dealing pocket cards
Dealing to tchazx: [7d, Kh, 4s, Jh]
Dealing to Hero: [7d, Kh, 4s, Jh]
nickgerm calls $0.05
tchazx calls $0.05
Hero calls $0.05
XYXY26XYXY folds
Mandala14 calls $0.03
ANOKATO checks
@ -422,23 +422,23 @@ ANOKATO checks
Mandala14 checks
ANOKATO folds
nickgerm bets $0.05
tchazx calls $0.05
Hero calls $0.05
Mandala14 calls $0.05
--- Dealing turn [8c]
Mandala14 checks
nickgerm checks
tchazx checks
Hero checks
--- Dealing river [3d]
Mandala14 checks
nickgerm checks
tchazx checks
Hero checks
---
Summary:
Main pot: $0.35 won by tchazx ($0.34)
Main pot: $0.35 won by Hero ($0.34)
Rake taken: $0.01
Seat 10: Mandala14 ($3.11), net: -$0.10, [7h, 4d, Qh, 6d] (PAIR FOUR)
Seat 1: ANOKATO ($3.52), net: -$0.05
Seat 3: nickgerm ($2.93), net: -$0.10, [7s, Qd, 6s, Ah] (PAIR ACE)
Seat 4: tchazx ($3.92), net: +$0.24, [7d, Kh, 4s, Jh] (TWO_PAIR JACK, FOUR)
Seat 4: Hero ($3.92), net: +$0.24, [7d, Kh, 4s, Jh] (TWO_PAIR JACK, FOUR)
Seat 8: XYXY26XYXY ($1.90)
***** End of hand R5-81867677-664 *****

View File

@ -1,21 +1,21 @@
***** History for hand R5-70000684-006 *****
Start hand: Wed Aug 11 03:21:00 GMT+0100 2010
Table: Kassel [73910684] (NO_LIMIT TEXAS_HOLDEM 0.05/0.10, Real money)
User: Player3
User: Hero
Button: seat 8
Players in round: 5
Seat 9: Player1 (4.35)
Seat 3: Player0 (10.90)
Seat 5: Player2 (12.88)
Seat 6: Player3 (14.18)
Seat 6: Hero (14.18)
Seat 8: Player4 (9)
Player1 posts small blind (0.05)
Player0 posts big blind (0.10)
---
Dealing pocket cards
Dealing to Player3: [6s, 7h]
Dealing to Hero: [6s, 7h]
Player2 folds
Player3 folds
Hero folds
Player4 raises 0.30 to 0.30
Player1 calls 0.25
Player0 folds
@ -35,7 +35,7 @@ Rake taken: $0.04
Seat 9: Player1 (4.81), net: +0.46
Seat 3: Player0 (10.80), net: -0.10
Seat 5: Player2 (12.88)
Seat 6: Player3 (14.18)
Seat 6: Hero (14.18)
Seat 8: Player4 (8.60), net: -0.40
***** End of hand R5-73910684-276 *****

View File

@ -1,27 +1,27 @@
***** History for hand R5-79836934-72 *****
Start hand: Sat Sep 4 05:34:19 GMT+0100 2010
Table: Bnei Brak [79836934] (NO_LIMIT TEXAS_HOLDEM $0.05/$0.10, Real money)
User: tchazx
User: Hero
Button: seat 10
Players in round: 2
Seat 1: feradf ($6.86)
Seat 10: tchazx ($15.44)
tchazx posts big blind ($0.10)
tchazx posts dead blind ($0.05)
Seat 10: Hero ($15.44)
Hero posts big blind ($0.10)
Hero posts dead blind ($0.05)
feradf posts big blind ($0.10)
---
Dealing pocket cards
Dealing to tchazx: [Qh, 4h]
tchazx raises $0.20 to $0.30
Dealing to Hero: [Qh, 4h]
Hero raises $0.20 to $0.30
feradf calls $0.20
--- Dealing flop [6c, Qs, 7h]
feradf checks
tchazx bets $0.45
Hero bets $0.45
feradf folds
---
Summary:
Main pot: $0.65 won by tchazx ($0.62)
Main pot: $0.65 won by Hero ($0.62)
Rake taken: $0.03
Seat 1: feradf ($6.56), net: -$0.30
Seat 10: tchazx ($15.71), net: +$0.27
Seat 10: Hero ($15.71), net: +$0.27
***** End of hand R5-79836934-72 *****

View File

@ -1,10 +1,10 @@
***** History for hand R5-82086688-607 *****
Start hand: Mon Sep 13 22:31:30 GMT+0100 2010
Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
User: tchazx
User: Hero
Players in round: 5
Seat 1: the bAAr ($6.53)
Seat 2: tchazx ($2)
Seat 2: Hero ($2)
Seat 6: kueto ($6.30)
Seat 8: E6y Ko3y ($2.70)
Seat 10: telozver123 ($6.49)
@ -12,11 +12,11 @@ the bAAr posts ante $0.02
kueto posts ante $0.02
E6y Ko3y posts ante $0.02
telozver123 posts ante $0.02
tchazx posts ante $0.02
Hero posts ante $0.02
---
Dealing pocket cards
Dealing to the bAAr: [-, -, Kh]
Dealing to tchazx: [Jh, 9d, Ac]
Dealing to Hero: [Jh, 9d, Ac]
Dealing to kueto: [-, -, 4h]
Dealing to E6y Ko3y: [-, -, Ad]
Dealing to telozver123: [-, -, 6h]
@ -24,54 +24,54 @@ kueto small bring in $0.05
E6y Ko3y calls $0.05
telozver123 calls $0.05
the bAAr calls $0.05
tchazx calls $0.05
Hero calls $0.05
---
Dealing 4th street
Dealing to the bAAr: [3h]
Dealing to tchazx: [7h]
Dealing to Hero: [7h]
Dealing to kueto: [3d]
Dealing to E6y Ko3y: [Qs]
Dealing to telozver123: [Ts]
E6y Ko3y bets $0.10
telozver123 calls $0.10
the bAAr calls $0.10
tchazx calls $0.10
Hero calls $0.10
kueto folds
---
Dealing 5th street
Dealing to the bAAr: [9s]
Dealing to tchazx: [Js]
Dealing to Hero: [Js]
Dealing to E6y Ko3y: [6c]
Dealing to telozver123: [Kd]
E6y Ko3y checks
telozver123 checks
the bAAr bets $0.20
tchazx calls $0.20
Hero calls $0.20
E6y Ko3y calls $0.20
telozver123 folds
---
Dealing 6th street
Dealing to the bAAr: [8s]
Dealing to tchazx: [5c]
Dealing to Hero: [5c]
Dealing to E6y Ko3y: [5d]
E6y Ko3y checks
the bAAr bets $0.20
tchazx calls $0.20
Hero calls $0.20
E6y Ko3y calls $0.20
---
Dealing river
Dealing to tchazx: [9h]
Dealing to Hero: [9h]
E6y Ko3y checks
the bAAr checks
tchazx bets $0.20
Hero bets $0.20
E6y Ko3y folds
the bAAr calls $0.20
---
Summary:
Main pot: $2.35 won by tchazx ($2.24)
Main pot: $2.35 won by Hero ($2.24)
Rake taken: $0.11
Seat 1: the bAAr ($5.76), net: -$0.77
Seat 2: tchazx ($3.47), net: +$1.47, [Jh, 9d, Ac, 7h, Js, 5c, 9h] (TWO_PAIR JACK, NINE)
Seat 2: Hero ($3.47), net: +$1.47, [Jh, 9d, Ac, 7h, Js, 5c, 9h] (TWO_PAIR JACK, NINE)
Seat 6: kueto ($6.23), net: -$0.07
Seat 8: E6y Ko3y ($2.13), net: -$0.57
Seat 10: telozver123 ($6.32), net: -$0.17
@ -79,61 +79,61 @@ Seat 10: telozver123 ($6.32), net: -$0.17
***** History for hand R5-82086688-608 *****
Start hand: Mon Sep 13 22:32:47 GMT+0100 2010
Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
User: tchazx
User: Hero
Players in round: 5
Seat 1: the bAAr ($5.76)
Seat 2: tchazx ($3.47)
Seat 2: Hero ($3.47)
Seat 6: kueto ($6.23)
Seat 8: E6y Ko3y ($2.13)
Seat 10: telozver123 ($6.32)
the bAAr posts ante $0.02
tchazx posts ante $0.02
Hero posts ante $0.02
kueto posts ante $0.02
E6y Ko3y posts ante $0.02
telozver123 posts ante $0.02
---
Dealing pocket cards
Dealing to the bAAr: [-, -, 4s]
Dealing to tchazx: [8h, Ks, Qd]
Dealing to Hero: [8h, Ks, Qd]
Dealing to kueto: [-, -, 5h]
Dealing to E6y Ko3y: [-, -, 2h]
Dealing to telozver123: [-, -, 3c]
E6y Ko3y small bring in $0.05
telozver123 folds
the bAAr calls $0.05
tchazx calls $0.05
Hero calls $0.05
kueto folds
---
Dealing 4th street
Dealing to the bAAr: [Ad]
Dealing to tchazx: [8d]
Dealing to Hero: [8d]
Dealing to E6y Ko3y: [Qh]
the bAAr bets $0.10
tchazx calls $0.10
Hero calls $0.10
E6y Ko3y folds
---
Dealing 5th street
Dealing to the bAAr: [4c]
Dealing to tchazx: [Ah]
Dealing to Hero: [Ah]
the bAAr bets $0.20
tchazx calls $0.20
Hero calls $0.20
---
Dealing 6th street
Dealing to the bAAr: [3d]
Dealing to tchazx: [Jh]
Dealing to Hero: [Jh]
the bAAr checks
tchazx checks
Hero checks
---
Dealing river
Dealing to tchazx: [Kh]
Dealing to Hero: [Kh]
the bAAr bets $0.20
tchazx calls $0.20
Hero calls $0.20
---
Summary:
Main pot: $1.25 won by tchazx ($1.19)
Main pot: $1.25 won by Hero ($1.19)
Rake taken: $0.06
Seat 1: the bAAr ($5.19), net: -$0.57, [6s, 9s, 4s, Ad, 4c, 3d, 3h] (TWO_PAIR FOUR, THREE)
Seat 2: tchazx ($4.09), net: +$0.62, [8h, Ks, Qd, 8d, Ah, Jh, Kh] (TWO_PAIR KING, EIGHT)
Seat 2: Hero ($4.09), net: +$0.62, [8h, Ks, Qd, 8d, Ah, Jh, Kh] (TWO_PAIR KING, EIGHT)
Seat 6: kueto ($6.21), net: -$0.02
Seat 8: E6y Ko3y ($2.06), net: -$0.07
Seat 10: telozver123 ($6.30), net: -$0.02
@ -141,60 +141,60 @@ Seat 10: telozver123 ($6.30), net: -$0.02
***** History for hand R5-82086688-609 *****
Start hand: Mon Sep 13 22:33:42 GMT+0100 2010
Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
User: tchazx
User: Hero
Players in round: 5
Seat 1: the bAAr ($5.19)
Seat 2: tchazx ($4.09)
Seat 2: Hero ($4.09)
Seat 6: kueto ($6.21)
Seat 8: E6y Ko3y ($2.06)
Seat 10: telozver123 ($6.30)
the bAAr posts ante $0.02
tchazx posts ante $0.02
Hero posts ante $0.02
kueto posts ante $0.02
E6y Ko3y posts ante $0.02
telozver123 posts ante $0.02
---
Dealing pocket cards
Dealing to the bAAr: [-, -, 5c]
Dealing to tchazx: [Ad, As, Kh]
Dealing to Hero: [Ad, As, Kh]
Dealing to kueto: [-, -, Qs]
Dealing to E6y Ko3y: [-, -, 8s]
Dealing to telozver123: [-, -, Tc]
the bAAr small bring in $0.05
tchazx bets $0.10
Hero bets $0.10
kueto calls $0.10
E6y Ko3y folds
telozver123 folds
the bAAr folds
---
Dealing 4th street
Dealing to tchazx: [Ks]
Dealing to Hero: [Ks]
Dealing to kueto: [Qd]
tchazx bets $0.10
Hero bets $0.10
kueto calls $0.10
---
Dealing 5th street
Dealing to tchazx: [8c]
Dealing to Hero: [8c]
Dealing to kueto: [7s]
tchazx bets $0.20
Hero bets $0.20
kueto calls $0.20
---
Dealing 6th street
Dealing to tchazx: [7d]
Dealing to Hero: [7d]
Dealing to kueto: [5s]
tchazx bets $0.20
Hero bets $0.20
kueto calls $0.20
---
Dealing river
Dealing to tchazx: [7h]
tchazx bets $0.20
Dealing to Hero: [7h]
Hero bets $0.20
kueto calls $0.20
---
Summary:
Main pot: $1.75 won by kueto ($1.67)
Rake taken: $0.08
Seat 1: the bAAr ($5.12), net: -$0.07
Seat 2: tchazx ($3.27), net: -$0.82, [Ad, As, Kh, Ks, 8c, 7d, 7h] (TWO_PAIR ACE, KING)
Seat 2: Hero ($3.27), net: -$0.82, [Ad, As, Kh, Ks, 8c, 7d, 7h] (TWO_PAIR ACE, KING)
Seat 6: kueto ($7.06), net: +$0.85, [Qc, 6c, Qs, Qd, 7s, 5s, 3c] (THREE_OF_A_KIND QUEEN)
Seat 8: E6y Ko3y ($2.04), net: -$0.02
Seat 10: telozver123 ($6.28), net: -$0.02
@ -202,68 +202,68 @@ Seat 10: telozver123 ($6.28), net: -$0.02
***** History for hand R5-82086688-610 *****
Start hand: Mon Sep 13 22:34:25 GMT+0100 2010
Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
User: tchazx
User: Hero
Players in round: 5
Seat 1: the bAAr ($5.12)
Seat 2: tchazx ($3.27)
Seat 2: Hero ($3.27)
Seat 6: kueto ($7.06)
Seat 8: E6y Ko3y ($2.04)
Seat 10: telozver123 ($6.28)
the bAAr posts ante $0.02
tchazx posts ante $0.02
Hero posts ante $0.02
kueto posts ante $0.02
E6y Ko3y posts ante $0.02
telozver123 posts ante $0.02
---
Dealing pocket cards
Dealing to the bAAr: [-, -, Ts]
Dealing to tchazx: [9s, 6s, 7s]
Dealing to Hero: [9s, 6s, 7s]
Dealing to kueto: [-, -, Qs]
Dealing to E6y Ko3y: [-, -, 3s]
Dealing to telozver123: [-, -, 9d]
E6y Ko3y small bring in $0.05
telozver123 folds
the bAAr calls $0.05
tchazx calls $0.05
Hero calls $0.05
kueto calls $0.05
---
Dealing 4th street
Dealing to the bAAr: [Qd]
Dealing to tchazx: [Ah]
Dealing to Hero: [Ah]
Dealing to kueto: [7h]
Dealing to E6y Ko3y: [Th]
tchazx checks
Hero checks
kueto checks
E6y Ko3y checks
the bAAr bets $0.10
tchazx calls $0.10
Hero calls $0.10
kueto folds
E6y Ko3y folds
---
Dealing 5th street
Dealing to the bAAr: [Jh]
Dealing to tchazx: [5c]
tchazx checks
Dealing to Hero: [5c]
Hero checks
the bAAr bets $0.20
tchazx calls $0.20
Hero calls $0.20
---
Dealing 6th street
Dealing to the bAAr: [7d]
Dealing to tchazx: [7c]
tchazx checks
Dealing to Hero: [7c]
Hero checks
the bAAr bets $0.20
tchazx calls $0.20
Hero calls $0.20
---
Dealing river
Dealing to tchazx: [5h]
tchazx checks
Dealing to Hero: [5h]
Hero checks
the bAAr checks
---
Summary:
Main pot: $1.30 won by the bAAr ($1.24)
Rake taken: $0.06
Seat 1: the bAAr ($5.79), net: +$0.67, [Tc, 9h, Ts, Qd, Jh, 7d, 9c] (TWO_PAIR TEN, NINE)
Seat 2: tchazx ($2.70), net: -$0.57, [9s, 6s, 7s, Ah, 5c, 7c, 5h] (TWO_PAIR SEVEN, FIVE)
Seat 2: Hero ($2.70), net: -$0.57, [9s, 6s, 7s, Ah, 5c, 7c, 5h] (TWO_PAIR SEVEN, FIVE)
Seat 6: kueto ($6.99), net: -$0.07
Seat 8: E6y Ko3y ($1.97), net: -$0.07
Seat 10: telozver123 ($6.26), net: -$0.02

View File

@ -1,9 +1,9 @@
***** History for hand R5-78227816-62 *****
Start hand: Sat Aug 28 20:33:38 GMT+0300 2010
Table: Taegu [78227816] (LIMIT SEVEN_CARD_STUD_HI_LO $0.25/$0.50, ante: $0.05, Real money)
User: XMAN1
User: Hero
Players in round: 8
Seat 1: XMAN1 ($25)
Seat 1: Hero ($25)
Seat 3: boneos56 ($27.78)
Seat 5: grumset2007 ($3.48)
Seat 6: mylonas77 ($40.73)
@ -18,10 +18,10 @@ Lee Clayton posts ante $0.05
guggi_cool posts ante $0.05
HangEv posts ante $0.05
mylonas77 posts ante $0.05
XMAN1 posts ante $0.05
Hero posts ante $0.05
---
Dealing pocket cards
Dealing to XMAN1: [8d, 8s, 4d]
Dealing to Hero: [8d, 8s, 4d]
Dealing to boneos56: [-, -, Kd]
Dealing to grumset2007: [-, -, Ks]
Dealing to mylonas77: [-, -, 5c]
@ -29,7 +29,7 @@ Dealing to YMAN1: [-, -, As]
Dealing to Lee Clayton: [-, -, Js]
Dealing to guggi_cool: [-, -, 9s]
Dealing to HangEv: [-, -, 6s]
XMAN1 small bring in $0.12
Hero small bring in $0.12
boneos56 folds
grumset2007 folds
mylonas77 calls $0.12
@ -39,33 +39,33 @@ guggi_cool folds
HangEv folds
---
Dealing 4th street
Dealing to XMAN1: [3h]
Dealing to Hero: [3h]
Dealing to mylonas77: [2h]
mylonas77 bets $0.25
XMAN1 calls $0.25
Hero calls $0.25
---
Dealing 5th street
Dealing to XMAN1: [8c]
Dealing to Hero: [8c]
Dealing to mylonas77: [Kh]
mylonas77 bets $0.50
XMAN1 raises $1 to $1.37
Hero raises $1 to $1.37
mylonas77 calls $0.50
---
Dealing 6th street
Dealing to XMAN1: [4c]
Dealing to Hero: [4c]
Dealing to mylonas77: [Qh]
XMAN1 bets $0.50
Hero bets $0.50
mylonas77 calls $0.50
---
Dealing river
Dealing to XMAN1: [5h]
XMAN1 bets $0.50
Dealing to Hero: [5h]
Hero bets $0.50
mylonas77 calls $0.50
---
Summary:
Main pot: $5.14 won by XMAN1 ($4.89)
Main pot: $5.14 won by Hero ($4.89)
Rake taken: $0.25
Seat 1: XMAN1 ($27.47), net: +$2.47, [8d, 8s, 4d, 3h, 8c, 4c, 5h] (FULL_HOUSE EIGHT, FOUR)
Seat 1: Hero ($27.47), net: +$2.47, [8d, 8s, 4d, 3h, 8c, 4c, 5h] (FULL_HOUSE EIGHT, FOUR)
Seat 3: boneos56 ($27.73), net: -$0.05
Seat 5: grumset2007 ($3.43), net: -$0.05
Seat 6: mylonas77 ($38.31), net: -$2.42

View File

@ -13,17 +13,17 @@ Seat 2: Player2 - $5.28
Seat 3: Player3 - $1.80
Seat 4: allout96 - $3.99
Seat 5: Player4 - $1.47
Seat 6: Player5 - $4
Seat 6: Hero - $4
Moving Button to seat 1
Player2 posts small blind ($0.02)
Player3 posts big blind ($0.04)
Player5 posts $0.04
Hero posts $0.04
Shuffling Deck
Dealing Cards
Dealing [Ad 8h] to Player5
Dealing [Ad 8h] to Hero
allout96 folds
Player4 calls $0.04
Player5 checks
Hero checks
Player1 folds
Player2 calls $0.04
Player3 checks
@ -31,7 +31,7 @@ Dealing Flop [9s Ac 5s]
Player2 bets $0.08
Player3 calls $0.08
Player4 calls $0.08
Player5 raises to $0.16
Hero raises to $0.16
Player2 calls $0.16
Player3 calls $0.16
Player4 calls $0.16
@ -39,11 +39,11 @@ Dealing Turn [4s]
Player2 checks
Player3 bets $0.04
Player4 calls $0.04
Player5 raises to $0.72
Hero raises to $0.72
Player2 folds
Player3 raises to $1.40
Player4 calls $1.27 (all-in)
Player5 folds
Hero folds
Returning $0.13 to Player3 uncalled
Player3 shows [2h 3d]
Player4 shows [4d 9c]
@ -56,6 +56,6 @@ Seat 2: Player2 - $5.08
Seat 3: Player3 - $3.99
Seat 4: allout96 - $3.99
Seat 5: Player4 - $0
Seat 6: Player5 - $3.08
Seat 6: Hero - $3.08
End Of Hand #746382682

View File

@ -374,7 +374,7 @@
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'Player5': { 'card1': 26,
u'Hero': { 'card1': 26,
'card2': 7,
'card3': 0,
'card4': 0,

View File

@ -0,0 +1,32 @@
Game #9864152000 starts.
#Game No : 9864152000
***** Hand History for Game 9864152000 *****
€10 EUR NL Texas Hold'em - Sunday, November 21, 19:00:00 CET 2010
Table Table 183347 (Real Money)
Seat 1 is the button
Total number of players : 5/6
Seat 3: Hero ( €10 EUR )
Seat 6: Player6 ( €16.49 EUR )
Seat 4: Player4 ( €10.73 EUR )
Seat 1: Player1 ( €8.56 EUR )
Seat 2: Player2 ( €4.90 EUR )
Player2 posts small blind [€0.05 EUR].
Hero posts big blind [€0.10 EUR].
** Dealing down cards **
Dealt to Hero [ Ah Kc ]
Player4 calls [€0.10 EUR]
Player6 calls [€0.10 EUR]
Player1 calls [€0.10 EUR]
Player2 calls [€0.05 EUR]
Hero raises [€0.56 EUR]
Player4 folds
Player6 folds
Player1 folds
Player2 calls [€0.56 EUR]
** Dealing Flop ** [ 5s, 9d, Ad ]
Player2 checks
Hero bets [€1.52 EUR]
Player2 folds
Hero does not show cards.
Hero wins €3.04 EUR

View File

@ -1,3 +1,6 @@
Game #9423586142 starts.
#Game No : 9423586142
***** Hand History For Game 9423586142 *****
0.01/0.02 Texas Hold'em Game Table (NL) - Mon Jul 12 13:38:32 EDT 2010
Table 20BB Min Speed #1775757 (Real Money) -- Seat 1 is the button
@ -6,7 +9,7 @@ Seat 1: Player1 ($0.95)
Seat 2: Player2 ($0.57)
Seat 3: Player3 ($0.86)
Seat 4: Player4 ($1.71)
Seat 5: Player5 ($1.76)
Seat 5: Hero ($1.76)
Seat 6: Player6 ($0.44)
Seat 7: Player7 ($0.76)
Seat 8: Player8 ($0.68)
@ -14,8 +17,8 @@ Seat 9: Player9 ($0.38)
Player2 posts small blind (0.01)
Player3 posts big blind (0.02)
** Dealing down cards **
Dealt to Player5 [ Tc, 9d ]
Player5 folds
Dealt to Hero [ Tc, 9d ]
Hero folds
Player6 calls (0.02)
Player8 folds
Player9 folds
@ -34,7 +37,7 @@ Player1 balance $0.95, didn't bet (folded)
Player2 balance $0.55, lost $0.02 (folded)
Player3 balance $0.96, bet $0.21, collected $0.31, net +$0.1
Player4 balance $1.71, sits out
Player5 balance $1.76, didn't bet (folded)
Hero balance $1.76, didn't bet (folded)
Player6 balance $0.36, lost $0.08 (folded)
Player7 balance $0.76, sits out
Player8 balance $0.68, didn't bet (folded)

View File

@ -6,28 +6,28 @@ $0.80 USD NL Texas Hold'em - Saturday, July 31, 13:52:16 EDT 2010
Table 20BB Min Speed #1770998 (Real Money)
Seat 1 is the button
Total number of players : 4/9
Seat 3: Player1 ( $1.64 USD )
Seat 3: Hero ( $1.64 USD )
Seat 5: Player2 ( $0.01 USD )
Seat 9: Player3 ( $1.02 USD )
Seat 1: Player4 ( $1.20 USD )
Player1 posts small blind [$0.01 USD].
Hero posts small blind [$0.01 USD].
Player2 posts big blind [$0.01 USD].
** Dealing down cards **
Dealt to Player1 [ 8h Kc ]
Dealt to Hero [ 8h Kc ]
Player3 folds
Player4 calls [$0.02 USD]
Player1 calls [$0.01 USD]
Hero calls [$0.01 USD]
** Dealing Flop ** [ Td, 7c, 9h ]
Player1 checks
Hero checks
Player4 checks
** Dealing Turn ** [ 3h ]
Player1 checks
Hero checks
Player4 checks
** Dealing River ** [ Jc ]
Player1 bets [$0.04 USD]
Hero bets [$0.04 USD]
Player4 folds
Player1 shows [ 8h, Kc ]a straight, Seven to Jack.
Hero shows [ 8h, Kc ]a straight, Seven to Jack.
Player2 doesn't show [ Ts, Jd ]two pairs, Jacks and Tens.
Player1 wins $0.06 USD from the side pot 1 with a straight, Seven to Jack.
Player1 wins $0.03 USD from the main pot with a straight, Seven to Jack.
Hero wins $0.06 USD from the side pot 1 with a straight, Seven to Jack.
Hero wins $0.03 USD from the main pot with a straight, Seven to Jack.
Player2 has left the table.

View File

@ -186,7 +186,7 @@
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'heulot': { 'card1': 49,
u'Hero': { 'card1': 49,
'card2': 9,
'card3': 0,
'card4': 0,

View File

@ -8,7 +8,7 @@ Seat 3 is the button
Total number of players : 9/9
Seat 9: Player1 ( $1.60 USD )
Seat 4: Player2 ( $1.98 USD )
Seat 7: Player3 ( $2.90 USD )
Seat 7: Hero ( $2.90 USD )
Seat 3: Player4 ( $1.97 USD )
Seat 8: Player5 ( $2.43 USD )
Seat 6: Player6 ( $2 USD )
@ -20,9 +20,9 @@ Player2 posts small blind [$0.01 USD].
Player7 posts big blind [$0.02 USD].
Player8 posts big blind [$0.02 USD].
** Dealing down cards **
Dealt to Player3 [ 7c 6c ]
Dealt to Hero [ 7c 6c ]
Player6 calls [$0.02 USD]
Player3 calls [$0.02 USD]
Hero calls [$0.02 USD]
Player5 calls [$0.02 USD]
Player1 folds
Player9 folds
@ -34,12 +34,12 @@ Player7 checks
Player2 checks
Player7 bets [$0.09 USD]
Player6 folds
Player3 calls [$0.09 USD]
Hero calls [$0.09 USD]
Player5 folds
Player8 folds
Player2 folds
** Dealing Turn ** [ Kd ]
Player7 bets [$0.21 USD]
Player3 folds
Hero folds
Player7 does not show cards.
Player7 wins $0.50 USD

View File

@ -8,13 +8,13 @@ Seat 2 is the button
Total number of players : 5/6
Seat 5: Player1 ( $1.60 USD )
Seat 1: Player2 ( $2.45 USD )
Seat 4: Player3 ( $2.18 USD )
Seat 4: Hero ( $2.18 USD )
Seat 2: Player4 ( $2.80 USD )
Seat 3: Player5 ( $0.01 USD )
Player5 posts small blind [$0.01 USD].
Player3 posts big blind [$0.04 USD].
Hero posts big blind [$0.04 USD].
** Dealing down cards **
Dealt to Player3 [ 6s 2c ]
Dealt to Hero [ 6s 2c ]
Player1 folds
Player2 folds
Player4 folds
@ -22,7 +22,7 @@ Player4 folds
** Dealing Turn ** [ Js ]
** Dealing River ** [ Kc ]
Player5 shows [ 5h, 5s ]a pair of Fives.
Player3 shows [ 6s, 2c ]high card Ace.
Player3 wins $0.03 USD from the side pot 1 with high card, Ace.
Hero shows [ 6s, 2c ]high card Ace.
Hero wins $0.03 USD from the side pot 1 with high card, Ace.
Player5 wins $0.02 USD from the main pot with a pair of Fives.
Player5 has left the table.

View File

@ -6,7 +6,7 @@ $4 USD NL Texas Hold'em - Wednesday, August 11, 23:21:44 CEST 2010
Table Table 178011 (Real Money)
Seat 4 is the button
Total number of players : 6/9
Seat 6: Player1 ( $4 USD )
Seat 6: Hero ( $4 USD )
Seat 7: Player2 ( $2.92 USD )
Seat 5: Player3 ( $0.74 USD )
Seat 3: Player4 ( $4 USD )
@ -14,25 +14,25 @@ Seat 4: Player5 ( $2.97 USD )
Seat 8: Player6 ( $2 USD )
Player3 posts small blind [$0.02 USD].
Player7 has joined the table.
Player1 posts big blind [$0.04 USD].
Hero posts big blind [$0.04 USD].
Player2 posts big blind [$0.04 USD].
Player7 posts big blind [$0.04 USD].
** Dealing down cards **
Dealt to Player1 [ Ad 4c ]
Dealt to Hero [ Ad 4c ]
Player8 has joined the table.
Player2 checks
Player9 has joined the table.
Player7 checks
Player5 folds
Player3 calls [$0.02 USD]
Player1 checks
Hero checks
** Dealing Flop ** [ 4h, Tc, 3s ]
Player3 checks
Player1 checks
Hero checks
Player2 checks
Player7 bets [$0.12 USD]
Player3 folds
Player1 folds
Hero folds
Player2 folds
Player7 does not show cards.
Player7 wins $0.28 USD

View File

@ -6,7 +6,7 @@ $0.50/$1 USD 7 Card Stud Hi-Lo - Monday, August 30, 20:20:17 EEST 2010
Table Table 136403 (Real Money)
Seat 0 is the button
Total number of players : 7/8
Seat 3: XMAN1 ( $24.95 USD )
Seat 3: Hero ( $24.95 USD )
Seat 5: ISqzUSqueal ( $31.02 USD )
Seat 7: PPPPPositive ( $4.20 USD )
Seat 8: Unladylike ( $19 USD )
@ -15,20 +15,20 @@ Seat 2: strandalleen ( $17.55 USD )
Seat 1: tubby09 ( $24.20 USD )
tubby09 posts ante [$0.05 USD]
strandalleen posts ante [$0.05 USD]
XMAN1 posts ante [$0.05 USD]
Hero posts ante [$0.05 USD]
ISqzUSqueal posts ante [$0.05 USD]
YMAN1 posts ante [$0.05 USD]
PPPPPositive posts ante [$0.05 USD]
Unladylike posts ante [$0.05 USD]
** Dealing **
Dealt to XMAN1 [ Td 5s 3c ]
Dealt to Hero [ Td 5s 3c ]
YMAN1 opens
YMAN1 bring-ins [$0.25 USD]
PPPPPositive completes [$0.50 USD]
Unladylike folds
tubby09 folds
strandalleen calls [$0.50 USD]
XMAN1 folds
Hero folds
ISqzUSqueal folds
YMAN1 calls [$0.25 USD]
** Dealing Fourth street **

View File

@ -1,21 +1,21 @@
PokerStars Game #35839001292: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:12:58 ET
Table 'Theodora VI' 6-max Seat #5 is the button
Seat 1: s0rrow ($4 in chips)
Seat 1: Hero ($4 in chips)
Seat 2: rumble1111 ($4.58 in chips)
Seat 3: Eisenherz73 ($7.54 in chips)
Seat 4: cypis28 ($1.40 in chips)
Seat 5: bakter9 ($0.78 in chips)
Seat 6: TheLabman ($6.31 in chips)
TheLabman: posts small blind $0.05
s0rrow: posts big blind $0.10
Hero: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [8s Ts 8h 2s 3s]
Dealt to Hero [8s Ts 8h 2s 3s]
rumble1111: calls $0.10
Eisenherz73: folds
cypis28: raises $0.10 to $0.20
bakter9: raises $0.10 to $0.30
TheLabman: folds
s0rrow: folds
Hero: folds
rumble1111: calls $0.20
cypis28: raises $0.10 to $0.40
Betting is capped
@ -45,7 +45,7 @@ bakter9: shows [7s 5s 8d 4h 3c] (Lo: 8,7,5,4,3)
bakter9 collected $2.01 from pot
*** SUMMARY ***
Total pot $2.11 | Rake $0.10
Seat 1: s0rrow (big blind) folded before the Draw
Seat 1: Hero (big blind) folded before the Draw
Seat 2: rumble1111 folded after the 1st Draw
Seat 3: Eisenherz73 folded before the Draw (didn't bet)
Seat 4: cypis28 showed [7c 6d 9c 4s 2c] and lost with Lo: 9,7,6,4,2
@ -56,49 +56,49 @@ Seat 6: TheLabman (small blind) folded before the Draw
PokerStars Game #35839050562: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:14:02 ET
Table 'Theodora VI' 6-max Seat #6 is the button
Seat 1: s0rrow ($3.90 in chips)
Seat 1: Hero ($3.90 in chips)
Seat 2: rumble1111 ($4.18 in chips)
Seat 3: Eisenherz73 ($7.54 in chips)
Seat 4: cypis28 ($0.62 in chips)
Seat 5: bakter9 ($2.01 in chips)
Seat 6: TheLabman ($6.26 in chips)
s0rrow: posts small blind $0.05
Hero: posts small blind $0.05
rumble1111: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [Kh Th 3d Tc 7c]
Dealt to Hero [Kh Th 3d Tc 7c]
Eisenherz73: folds
cypis28: folds
bakter9: calls $0.10
TheLabman: folds
s0rrow: calls $0.05
Hero: calls $0.05
rumble1111: checks
*** FIRST DRAW ***
s0rrow: discards 2 cards [Kh Th]
Dealt to s0rrow [3d Tc 7c] [5c Qs]
Hero: discards 2 cards [Kh Th]
Dealt to Hero [3d Tc 7c] [5c Qs]
rumble1111: discards 2 cards
bakter9: discards 2 cards
s0rrow: checks
Hero: checks
rumble1111: bets $0.10
bakter9: folds
s0rrow: calls $0.10
Hero: calls $0.10
*** SECOND DRAW ***
s0rrow: discards 2 cards [Qs Tc]
Dealt to s0rrow [3d 7c 5c] [4c 2s]
Hero: discards 2 cards [Qs Tc]
Dealt to Hero [3d 7c 5c] [4c 2s]
rumble1111: stands pat
s0rrow: bets $0.20
Hero: bets $0.20
rumble1111: calls $0.20
*** THIRD DRAW ***
s0rrow: stands pat on [3d 7c 5c 4c 2s]
Hero: stands pat on [3d 7c 5c 4c 2s]
rumble1111: discards 1 card
s0rrow: bets $0.20
Hero: bets $0.20
rumble1111: calls $0.20
*** SHOW DOWN ***
s0rrow: shows [5c 4c 3d 2s 7c] (Lo: 7,5,4,3,2)
Hero: shows [5c 4c 3d 2s 7c] (Lo: 7,5,4,3,2)
rumble1111: mucks hand
s0rrow collected $1.24 from pot
Hero collected $1.24 from pot
*** SUMMARY ***
Total pot $1.30 | Rake $0.06
Seat 1: s0rrow (small blind) showed [5c 4c 3d 2s 7c] and won ($1.24) with Lo: 7,5,4,3,2
Seat 1: Hero (small blind) showed [5c 4c 3d 2s 7c] and won ($1.24) with Lo: 7,5,4,3,2
Seat 2: rumble1111 (big blind) mucked [8s 7d 3c 6d 2h]
Seat 3: Eisenherz73 folded before the Draw (didn't bet)
Seat 4: cypis28 folded before the Draw (didn't bet)
@ -109,7 +109,7 @@ Seat 6: TheLabman (button) folded before the Draw (didn't bet)
PokerStars Game #35839109592: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:15:18 ET
Table 'Theodora VI' 6-max Seat #1 is the button
Seat 1: s0rrow ($4.54 in chips)
Seat 1: Hero ($4.54 in chips)
Seat 2: rumble1111 ($3.58 in chips)
Seat 3: Eisenherz73 ($7.54 in chips)
Seat 4: cypis28 ($0.62 in chips)
@ -118,18 +118,18 @@ Seat 6: TheLabman ($6.26 in chips)
rumble1111: posts small blind $0.05
Eisenherz73: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [Tc 9s Qc 8h 3d]
Dealt to Hero [Tc 9s Qc 8h 3d]
cypis28: folds
bakter9: folds
TheLabman: folds
s0rrow: folds
Hero: folds
rumble1111: folds
Uncalled bet ($0.05) returned to Eisenherz73
Eisenherz73 collected $0.10 from pot
Eisenherz73: doesn't show hand
*** SUMMARY ***
Total pot $0.10 | Rake $0
Seat 1: s0rrow (button) folded before the Draw (didn't bet)
Seat 1: Hero (button) folded before the Draw (didn't bet)
Seat 2: rumble1111 (small blind) folded before the Draw
Seat 3: Eisenherz73 (big blind) collected ($0.10)
Seat 4: cypis28 folded before the Draw (didn't bet)
@ -140,7 +140,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet)
PokerStars Game #35839118248: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:15:29 ET
Table 'Theodora VI' 6-max Seat #2 is the button
Seat 1: s0rrow ($4.54 in chips)
Seat 1: Hero ($4.54 in chips)
Seat 2: rumble1111 ($3.53 in chips)
Seat 3: Eisenherz73 ($7.59 in chips)
Seat 4: cypis28 ($0.62 in chips)
@ -149,10 +149,10 @@ Seat 6: TheLabman ($6.26 in chips)
Eisenherz73: posts small blind $0.05
cypis28: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [Js 3d Qc 9s 5h]
Dealt to Hero [Js 3d Qc 9s 5h]
bakter9: raises $0.10 to $0.20
TheLabman: folds
s0rrow: folds
Hero: folds
rumble1111: folds
Eisenherz73: folds
cypis28: raises $0.10 to $0.30
@ -178,7 +178,7 @@ bakter9: shows [4d 7c 2c 5s 6d] (Lo: 7,6,5,4,2)
bakter9 collected $1.23 from pot
*** SUMMARY ***
Total pot $1.29 | Rake $0.06
Seat 1: s0rrow folded before the Draw (didn't bet)
Seat 1: Hero folded before the Draw (didn't bet)
Seat 2: rumble1111 (button) folded before the Draw (didn't bet)
Seat 3: Eisenherz73 (small blind) folded before the Draw
Seat 4: cypis28 (big blind) showed [7h 3s 2h 8h 6h] and lost with Lo: 8,7,6,3,2
@ -189,7 +189,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet)
PokerStars Game #35839149377: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:16:10 ET
Table 'Theodora VI' 6-max Seat #3 is the button
Seat 1: s0rrow ($4.54 in chips)
Seat 1: Hero ($4.54 in chips)
Seat 2: rumble1111 ($3.53 in chips)
Seat 3: Eisenherz73 ($7.54 in chips)
Seat 5: bakter9 ($2.52 in chips)
@ -197,9 +197,9 @@ Seat 6: TheLabman ($6.26 in chips)
bakter9: posts small blind $0.05
TheLabman: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [2c 3c Ts Jc Kc]
Dealt to Hero [2c 3c Ts Jc Kc]
cypis28 leaves the table
s0rrow: folds
Hero: folds
rumble1111: folds
Eisenherz73: folds
bakter9: calls $0.05
@ -226,7 +226,7 @@ TheLabman: shows [3h 6d 7h 5h 8d] (Lo: 8,7,6,5,3)
TheLabman collected $0.58 from pot
*** SUMMARY ***
Total pot $0.60 | Rake $0.02
Seat 1: s0rrow folded before the Draw (didn't bet)
Seat 1: Hero folded before the Draw (didn't bet)
Seat 2: rumble1111 folded before the Draw (didn't bet)
Seat 3: Eisenherz73 (button) folded before the Draw (didn't bet)
Seat 5: bakter9 (small blind) showed [5d 4h 8h 7d 6h] and lost with Lo: a straight, Four to Eight
@ -236,67 +236,67 @@ Seat 6: TheLabman (big blind) showed [3h 6d 7h 5h 8d] and won ($0.58) with Lo: 8
PokerStars Game #35839176665: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:16:46 ET
Table 'Theodora VI' 6-max Seat #5 is the button
Seat 1: s0rrow ($4.54 in chips)
Seat 1: Hero ($4.54 in chips)
Seat 2: rumble1111 ($3.53 in chips)
Seat 3: Eisenherz73 ($7.54 in chips)
Seat 4: tom1206 ($4 in chips)
Seat 5: bakter9 ($2.22 in chips)
Seat 6: TheLabman ($6.54 in chips)
TheLabman: posts small blind $0.05
s0rrow: posts big blind $0.10
Hero: posts big blind $0.10
tom1206: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [5d Js 7d Jd 4d]
Dealt to Hero [5d Js 7d Jd 4d]
rumble1111: calls $0.10
Eisenherz73: calls $0.10
tom1206: checks
bakter9: folds
TheLabman: calls $0.05
s0rrow: checks
Hero: checks
*** FIRST DRAW ***
TheLabman: discards 3 cards
s0rrow: discards 2 cards [Js Jd]
Dealt to s0rrow [5d 7d 4d] [6d 2s]
Hero: discards 2 cards [Js Jd]
Dealt to Hero [5d 7d 4d] [6d 2s]
rumble1111: discards 2 cards
Eisenherz73: discards 2 cards
tom1206: discards 2 cards
TheLabman: checks
s0rrow: checks
Hero: checks
rumble1111: checks
Eisenherz73: checks
tom1206: checks
*** SECOND DRAW ***
TheLabman: discards 3 cards
s0rrow: stands pat on [5d 7d 4d 6d 2s]
Hero: stands pat on [5d 7d 4d 6d 2s]
rumble1111: discards 2 cards
Eisenherz73: discards 1 card
tom1206: discards 2 cards
TheLabman: checks
s0rrow: checks
Hero: checks
rumble1111: checks
Eisenherz73: checks
tom1206: checks
*** THIRD DRAW ***
TheLabman: discards 2 cards
s0rrow: stands pat on [5d 7d 4d 6d 2s]
Hero: stands pat on [5d 7d 4d 6d 2s]
rumble1111: discards 1 card
The deck is reshuffled
Eisenherz73: discards 1 card
tom1206: discards 2 cards
TheLabman: checks
s0rrow: bets $0.20
Hero: bets $0.20
rumble1111: folds
Eisenherz73: folds
Eisenherz73 is sitting out
Eisenherz73 leaves the table
tom1206: folds
TheLabman: folds
Uncalled bet ($0.20) returned to s0rrow
Uncalled bet ($0.20) returned to Hero
X USN-USMC joins the table at seat #3
s0rrow collected $0.48 from pot
Hero collected $0.48 from pot
*** SUMMARY ***
Total pot $0.50 | Rake $0.02
Seat 1: s0rrow (big blind) collected ($0.48)
Seat 1: Hero (big blind) collected ($0.48)
Seat 2: rumble1111 folded after the 3rd Draw
Seat 3: Eisenherz73 folded after the 3rd Draw
Seat 4: tom1206 folded after the 3rd Draw
@ -307,24 +307,24 @@ Seat 6: TheLabman (small blind) folded after the 3rd Draw
PokerStars Game #35839272371: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:18:50 ET
Table 'Theodora VI' 6-max Seat #6 is the button
Seat 1: s0rrow ($4.92 in chips)
Seat 1: Hero ($4.92 in chips)
Seat 2: rumble1111 ($3.43 in chips)
Seat 3: X USN-USMC ($4 in chips)
Seat 4: tom1206 ($3.90 in chips)
Seat 5: bakter9 ($2.22 in chips)
Seat 6: TheLabman ($6.44 in chips)
s0rrow: posts small blind $0.05
Hero: posts small blind $0.05
rumble1111: posts big blind $0.10
X USN-USMC: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [Th Js Kd 2h Qc]
Dealt to Hero [Th Js Kd 2h Qc]
X USN-USMC: checks
tom1206 has timed out
tom1206: folds
tom1206 is sitting out
bakter9: folds
TheLabman: calls $0.10
s0rrow: folds
Hero: folds
tom1206 has returned
rumble1111: checks
*** FIRST DRAW ***
@ -357,7 +357,7 @@ X USN-USMC collected $1.19 from pot
X USN-USMC: doesn't show hand
*** SUMMARY ***
Total pot $1.25 | Rake $0.06
Seat 1: s0rrow (small blind) folded before the Draw
Seat 1: Hero (small blind) folded before the Draw
Seat 2: rumble1111 (big blind) folded after the 3rd Draw
Seat 3: X USN-USMC collected ($1.19)
Seat 4: tom1206 folded before the Draw (didn't bet)
@ -368,7 +368,7 @@ Seat 6: TheLabman (button) folded after the 3rd Draw
PokerStars Game #35839360555: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:20:53 ET
Table 'Theodora VI' 6-max Seat #1 is the button
Seat 1: s0rrow ($4.87 in chips)
Seat 1: Hero ($4.87 in chips)
Seat 2: rumble1111 ($3.03 in chips)
Seat 3: X USN-USMC ($4.79 in chips)
Seat 4: tom1206 ($3.90 in chips)
@ -377,11 +377,11 @@ Seat 6: TheLabman ($6.04 in chips)
rumble1111: posts small blind $0.05
X USN-USMC: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [9s Kh 2d Ks 4c]
Dealt to Hero [9s Kh 2d Ks 4c]
tom1206: raises $0.10 to $0.20
bakter9: folds
TheLabman: folds
s0rrow: folds
Hero: folds
rumble1111: calls $0.15
X USN-USMC: calls $0.10
*** FIRST DRAW ***
@ -414,7 +414,7 @@ tom1206: mucks hand
rumble1111 collected $2.38 from pot
*** SUMMARY ***
Total pot $2.50 | Rake $0.12
Seat 1: s0rrow (button) folded before the Draw (didn't bet)
Seat 1: Hero (button) folded before the Draw (didn't bet)
Seat 2: rumble1111 (small blind) showed [7d 4s 2s 3s 6c] and won ($2.38) with Lo: 7,6,4,3,2
Seat 3: X USN-USMC (big blind) folded after the 3rd Draw
Seat 4: tom1206 mucked [4h 6d 8d 5c 3d]
@ -425,7 +425,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet)
PokerStars Game #35839412131: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:21:58 ET
Table 'Theodora VI' 6-max Seat #2 is the button
Seat 1: s0rrow ($4.87 in chips)
Seat 1: Hero ($4.87 in chips)
Seat 2: rumble1111 ($4.51 in chips)
Seat 3: X USN-USMC ($4.09 in chips)
Seat 4: tom1206 ($3 in chips)
@ -434,10 +434,10 @@ Seat 6: TheLabman ($6.04 in chips)
X USN-USMC: posts small blind $0.05
tom1206: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [8c 3s Tc Ac Qd]
Dealt to Hero [8c 3s Tc Ac Qd]
bakter9: calls $0.10
TheLabman: calls $0.10
s0rrow: folds
Hero: folds
rumble1111: calls $0.10
X USN-USMC: calls $0.05
tom1206: checks
@ -480,7 +480,7 @@ bakter9: shows [8d 5c 7c 2d 6h] (Lo: 8,7,6,5,2)
tom1206 collected $1.62 from pot
*** SUMMARY ***
Total pot $1.70 | Rake $0.08
Seat 1: s0rrow folded before the Draw (didn't bet)
Seat 1: Hero folded before the Draw (didn't bet)
Seat 2: rumble1111 (button) folded after the 3rd Draw
Seat 3: X USN-USMC (small blind) folded after the 3rd Draw
Seat 4: tom1206 (big blind) showed [4s 3h 7d 8s 2c] and won ($1.62) with Lo: 8,7,4,3,2
@ -491,7 +491,7 @@ Seat 6: TheLabman folded after the 2nd Draw
PokerStars Game #35839484932: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:23:30 ET
Table 'Theodora VI' 6-max Seat #3 is the button
Seat 1: s0rrow ($4.87 in chips)
Seat 1: Hero ($4.87 in chips)
Seat 2: rumble1111 ($4.21 in chips)
Seat 3: X USN-USMC ($3.79 in chips)
Seat 4: tom1206 ($4.12 in chips)
@ -500,53 +500,53 @@ Seat 6: TheLabman ($5.94 in chips)
tom1206: posts small blind $0.05
bakter9: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [3d 7h 7c Jh 5s]
Dealt to Hero [3d 7h 7c Jh 5s]
TheLabman: folds
s0rrow: calls $0.10
Hero: calls $0.10
rumble1111: folds
rumble1111 leaves the table
X USN-USMC: folds
tom1206: calls $0.05
bakter9: raises $0.10 to $0.20
s0rrow: calls $0.10
Hero: calls $0.10
tom1206: calls $0.10
*** FIRST DRAW ***
tom1206: discards 3 cards
bakter9: discards 2 cards
s0rrow: discards 2 cards [7c Jh]
Dealt to s0rrow [3d 7h 5s] [9h Ad]
Hero: discards 2 cards [7c Jh]
Dealt to Hero [3d 7h 5s] [9h Ad]
tom1206: checks
bakter9: bets $0.10
s0rrow: calls $0.10
Hero: calls $0.10
tom1206: calls $0.10
*** SECOND DRAW ***
tom1206: discards 2 cards
bakter9: discards 1 card
s0rrow: discards 1 card [9h]
Dealt to s0rrow [3d 7h 5s Ad] [4c]
Hero: discards 1 card [9h]
Dealt to Hero [3d 7h 5s Ad] [4c]
tom1206: bets $0.20
bakter9: raises $0.20 to $0.40
bakter9 said, "zzzzzzzzzzzzzzzzzzz"
s0rrow: calls $0.40
Hero: calls $0.40
tom1206: calls $0.20
*** THIRD DRAW ***
tom1206: discards 1 card
bakter9: stands pat
s0rrow: stands pat on [3d 7h 5s Ad 4c]
Hero: stands pat on [3d 7h 5s Ad 4c]
tom1206: checks
bakter9: bets $0.20
s0rrow: calls $0.20
Hero: calls $0.20
tom1206: raises $0.20 to $0.40
bakter9: calls $0.20
s0rrow: calls $0.20
Hero: calls $0.20
*** SHOW DOWN ***
tom1206: shows [4h 3c Qc 2c 6c] (Lo: Q,6,4,3,2)
bakter9: shows [3h 5d 2s 8c 6s] (Lo: 8,6,5,3,2)
s0rrow: mucks hand
Hero: mucks hand
bakter9 collected $3.14 from pot
*** SUMMARY ***
Total pot $3.30 | Rake $0.16
Seat 1: s0rrow mucked [3d 7h 4c Ad 5s]
Seat 1: Hero mucked [3d 7h 4c Ad 5s]
Seat 2: rumble1111 folded before the Draw (didn't bet)
Seat 3: X USN-USMC (button) folded before the Draw (didn't bet)
Seat 4: tom1206 (small blind) showed [4h 3c Qc 2c 6c] and lost with Lo: Q,6,4,3,2
@ -557,7 +557,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet)
PokerStars Game #35839619404: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:26:21 ET
Table 'Theodora VI' 6-max Seat #4 is the button
Seat 1: s0rrow ($3.77 in chips)
Seat 1: Hero ($3.77 in chips)
Seat 3: X USN-USMC ($3.79 in chips)
Seat 4: tom1206 ($3.02 in chips)
Seat 5: bakter9 ($3.76 in chips)
@ -565,38 +565,38 @@ Seat 6: TheLabman ($5.94 in chips)
bakter9: posts small blind $0.05
TheLabman: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [Ah 7s Ad 5d As]
Dealt to Hero [Ah 7s Ad 5d As]
bakter9 said, "ty"
s0rrow: raises $0.10 to $0.20
Hero: raises $0.10 to $0.20
X USN-USMC: folds
tom1206: folds
bakter9: folds
TheLabman: calls $0.10
*** FIRST DRAW ***
TheLabman: discards 2 cards
s0rrow: discards 2 cards [7s Ad]
Dealt to s0rrow [Ah 5d As] [5h 8s]
Hero: discards 2 cards [7s Ad]
Dealt to Hero [Ah 5d As] [5h 8s]
TheLabman: checks
Mamega joins the table at seat #2
s0rrow: bets $0.10
Hero: bets $0.10
TheLabman: calls $0.10
*** SECOND DRAW ***
TheLabman: discards 1 card
s0rrow: stands pat on [Ah 5d As 5h 8s]
Hero: stands pat on [Ah 5d As 5h 8s]
TheLabman: checks
s0rrow: bets $0.20
Hero: bets $0.20
TheLabman: calls $0.20
*** THIRD DRAW ***
TheLabman: discards 1 card
s0rrow: stands pat on [Ah 5d As 5h 8s]
Hero: stands pat on [Ah 5d As 5h 8s]
TheLabman: checks
s0rrow: bets $0.20
Hero: bets $0.20
TheLabman: folds
Uncalled bet ($0.20) returned to s0rrow
s0rrow collected $1 from pot
Uncalled bet ($0.20) returned to Hero
Hero collected $1 from pot
*** SUMMARY ***
Total pot $1.05 | Rake $0.05
Seat 1: s0rrow collected ($1)
Seat 1: Hero collected ($1)
Seat 3: X USN-USMC folded before the Draw (didn't bet)
Seat 4: tom1206 (button) folded before the Draw (didn't bet)
Seat 5: bakter9 (small blind) folded before the Draw
@ -606,33 +606,33 @@ Seat 6: TheLabman (big blind) folded after the 3rd Draw
PokerStars Game #35839669792: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:27:24 ET
Table 'Theodora VI' 6-max Seat #5 is the button
Seat 1: s0rrow ($4.27 in chips)
Seat 1: Hero ($4.27 in chips)
Seat 3: X USN-USMC ($3.79 in chips)
Seat 4: tom1206 ($3.02 in chips)
Seat 5: bakter9 ($3.71 in chips)
Seat 6: TheLabman ($5.44 in chips)
TheLabman: posts small blind $0.05
s0rrow: posts big blind $0.10
Hero: posts big blind $0.10
Mamega: sits out
*** DEALING HANDS ***
Dealt to s0rrow [3h 6d 9s 5s Kc]
Dealt to Hero [3h 6d 9s 5s Kc]
X USN-USMC: calls $0.10
tom1206: calls $0.10
bakter9: folds
TheLabman: calls $0.05
s0rrow: checks
Hero: checks
*** FIRST DRAW ***
TheLabman: discards 1 card
s0rrow: discards 1 card [Kc]
Dealt to s0rrow [3h 6d 9s 5s] [Jh]
Hero: discards 1 card [Kc]
Dealt to Hero [3h 6d 9s 5s] [Jh]
X USN-USMC: discards 2 cards
tom1206: discards 2 cards
TheLabman: checks
s0rrow: checks
Hero: checks
X USN-USMC: bets $0.10
tom1206: raises $0.10 to $0.20
TheLabman: calls $0.20
s0rrow: folds
Hero: folds
X USN-USMC: calls $0.10
*** SECOND DRAW ***
TheLabman: discards 1 card
@ -662,7 +662,7 @@ X USN-USMC collected $3.24 from pot
LumBita joins the table at seat #5
*** SUMMARY ***
Total pot $3.40 | Rake $0.16
Seat 1: s0rrow (big blind) folded after the 1st Draw
Seat 1: Hero (big blind) folded after the 1st Draw
Seat 3: X USN-USMC showed [3s 4s 7s 2d 6c] and won ($3.24) with Lo: 7,6,4,3,2
Seat 4: tom1206 mucked [8d 7c 4h 5h 3d]
Seat 5: bakter9 (button) folded before the Draw (didn't bet)
@ -672,22 +672,22 @@ Seat 6: TheLabman (small blind) mucked [4d 6h 7h 2s 5c]
PokerStars Game #35839735773: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:28:48 ET
Table 'Theodora VI' 6-max Seat #6 is the button
Seat 1: s0rrow ($4.17 in chips)
Seat 1: Hero ($4.17 in chips)
Seat 2: Mamega ($4 in chips)
Seat 3: X USN-USMC ($5.93 in chips)
Seat 4: tom1206 ($1.92 in chips)
Seat 5: LumBita ($1 in chips)
Seat 6: TheLabman ($4.34 in chips)
s0rrow: posts small blind $0.05
Hero: posts small blind $0.05
Mamega: posts big blind $0.10
LumBita: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [5c Kc Js Ts Jc]
Dealt to Hero [5c Kc Js Ts Jc]
X USN-USMC: calls $0.10
tom1206: calls $0.10
LumBita: checks
TheLabman: folds
s0rrow: folds
Hero: folds
Mamega: checks
*** FIRST DRAW ***
Mamega: stands pat
@ -722,7 +722,7 @@ LumBita: mucks hand
X USN-USMC collected $1.29 from pot
*** SUMMARY ***
Total pot $1.35 | Rake $0.06
Seat 1: s0rrow (small blind) folded before the Draw
Seat 1: Hero (small blind) folded before the Draw
Seat 2: Mamega (big blind) folded after the 1st Draw
Seat 3: X USN-USMC showed [2h 4h 7d 5s 6c] and won ($1.29) with Lo: 7,6,5,4,2
Seat 4: tom1206 mucked [7h 8c 3s 4d 5h]
@ -733,7 +733,7 @@ Seat 6: TheLabman (button) folded before the Draw (didn't bet)
PokerStars Game #35839797257: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:30:09 ET
Table 'Theodora VI' 6-max Seat #1 is the button
Seat 1: s0rrow ($4.12 in chips)
Seat 1: Hero ($4.12 in chips)
Seat 2: Mamega ($3.90 in chips)
Seat 3: X USN-USMC ($6.82 in chips)
Seat 4: tom1206 ($1.52 in chips)
@ -742,11 +742,11 @@ Seat 6: TheLabman ($4.34 in chips)
Mamega: posts small blind $0.05
X USN-USMC: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [2c Ah 3h 8h 5s]
Dealt to Hero [2c Ah 3h 8h 5s]
tom1206: calls $0.10
LumBita: calls $0.10
TheLabman: folds
s0rrow: raises $0.10 to $0.20
Hero: raises $0.10 to $0.20
Mamega: folds
X USN-USMC: folds
tom1206: calls $0.10
@ -754,37 +754,37 @@ LumBita: calls $0.10
*** FIRST DRAW ***
tom1206: discards 2 cards
LumBita: discards 2 cards
s0rrow: discards 1 card [8h]
Dealt to s0rrow [2c Ah 3h 5s] [8d]
Hero: discards 1 card [8h]
Dealt to Hero [2c Ah 3h 5s] [8d]
tom1206: checks
LumBita: checks
s0rrow: bets $0.10
Hero: bets $0.10
tom1206: calls $0.10
LumBita: calls $0.10
*** SECOND DRAW ***
tom1206: discards 2 cards
LumBita: stands pat
s0rrow: discards 1 card [8d]
Dealt to s0rrow [2c Ah 3h 5s] [2s]
Hero: discards 1 card [8d]
Dealt to Hero [2c Ah 3h 5s] [2s]
tom1206: checks
LumBita: bets $0.20
s0rrow: calls $0.20
Hero: calls $0.20
tom1206: calls $0.20
*** THIRD DRAW ***
tom1206: discards 1 card
LumBita: stands pat
s0rrow: discards 1 card [2s]
Dealt to s0rrow [2c Ah 3h 5s] [Qd]
Hero: discards 1 card [2s]
Dealt to Hero [2c Ah 3h 5s] [Qd]
tom1206: checks
LumBita: bets $0.10 and is all-in
s0rrow: folds
Hero: folds
tom1206: folds
Uncalled bet ($0.10) returned to LumBita
LumBita collected $1.57 from pot
LumBita: doesn't show hand
*** SUMMARY ***
Total pot $1.65 | Rake $0.08
Seat 1: s0rrow (button) folded after the 3rd Draw
Seat 1: Hero (button) folded after the 3rd Draw
Seat 2: Mamega (small blind) folded before the Draw
Seat 3: X USN-USMC (big blind) folded before the Draw
Seat 4: tom1206 folded after the 3rd Draw
@ -795,7 +795,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet)
PokerStars Game #35839866916: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:31:36 ET
Table 'Theodora VI' 6-max Seat #2 is the button
Seat 1: s0rrow ($3.62 in chips)
Seat 1: Hero ($3.62 in chips)
Seat 2: Mamega ($3.85 in chips)
Seat 3: X USN-USMC ($6.72 in chips)
Seat 4: tom1206 ($1.02 in chips)
@ -804,10 +804,10 @@ Seat 6: TheLabman ($4.34 in chips)
X USN-USMC: posts small blind $0.05
tom1206: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [Jd 5c 2s 5h Qs]
Dealt to Hero [Jd 5c 2s 5h Qs]
LumBita: calls $0.10
TheLabman: folds
s0rrow: folds
Hero: folds
Mamega: folds
X USN-USMC: calls $0.05
tom1206: checks
@ -838,7 +838,7 @@ tom1206: mucks hand
X USN-USMC collected $0.67 from pot
*** SUMMARY ***
Total pot $0.70 | Rake $0.03
Seat 1: s0rrow folded before the Draw (didn't bet)
Seat 1: Hero folded before the Draw (didn't bet)
Seat 2: Mamega (button) folded before the Draw (didn't bet)
Seat 3: X USN-USMC (small blind) showed [4h 3h 2d 7h 6d] and won ($0.67) with Lo: 7,6,4,3,2
Seat 4: tom1206 (big blind) mucked [7c 5d 9s Th 8d]
@ -849,7 +849,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet)
PokerStars Game #35839926911: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:32:52 ET
Table 'Theodora VI' 6-max Seat #3 is the button
Seat 1: s0rrow ($3.62 in chips)
Seat 1: Hero ($3.62 in chips)
Seat 2: Mamega ($3.85 in chips)
Seat 3: X USN-USMC ($7.09 in chips)
Seat 4: tom1206 ($0.72 in chips)
@ -858,37 +858,37 @@ Seat 6: TheLabman ($4.34 in chips)
tom1206: posts small blind $0.05
LumBita: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [Qd 2d 5s Ah 8d]
Dealt to Hero [Qd 2d 5s Ah 8d]
TheLabman: folds
s0rrow: calls $0.10
Hero: calls $0.10
Mamega: folds
X USN-USMC: folds
tom1206: folds
LumBita: checks
*** FIRST DRAW ***
LumBita: discards 3 cards
s0rrow: discards 2 cards [Qd 8d]
Dealt to s0rrow [2d 5s Ah] [Jc 8h]
Hero: discards 2 cards [Qd 8d]
Dealt to Hero [2d 5s Ah] [Jc 8h]
LumBita: checks
s0rrow: checks
Hero: checks
*** SECOND DRAW ***
LumBita: discards 2 cards
s0rrow: discards 1 card [Jc]
Dealt to s0rrow [2d 5s Ah 8h] [9s]
Hero: discards 1 card [Jc]
Dealt to Hero [2d 5s Ah 8h] [9s]
LumBita: bets $0.20
s0rrow: calls $0.20
Hero: calls $0.20
*** THIRD DRAW ***
LumBita: stands pat
s0rrow: stands pat on [2d 5s Ah 8h 9s]
Hero: stands pat on [2d 5s Ah 8h 9s]
LumBita: checks
s0rrow: checks
Hero: checks
*** SHOW DOWN ***
LumBita: shows [7h 2s 5c 8c 6c] (Lo: 8,7,6,5,2)
s0rrow: mucks hand
Hero: mucks hand
LumBita collected $0.62 from pot
*** SUMMARY ***
Total pot $0.65 | Rake $0.03
Seat 1: s0rrow mucked [9s 2d 5s Ah 8h]
Seat 1: Hero mucked [9s 2d 5s Ah 8h]
Seat 2: Mamega folded before the Draw (didn't bet)
Seat 3: X USN-USMC (button) folded before the Draw (didn't bet)
Seat 4: tom1206 (small blind) folded before the Draw
@ -899,7 +899,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet)
PokerStars Game #35839959625: Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:33:33 ET
Table 'Theodora VI' 6-max Seat #4 is the button
Seat 1: s0rrow ($3.32 in chips)
Seat 1: Hero ($3.32 in chips)
Seat 2: Mamega ($3.85 in chips)
Seat 3: X USN-USMC ($7.09 in chips)
Seat 4: tom1206 ($0.67 in chips)
@ -908,8 +908,8 @@ Seat 6: TheLabman ($4.34 in chips)
LumBita: posts small blind $0.05
TheLabman: posts big blind $0.10
*** DEALING HANDS ***
Dealt to s0rrow [Jd As 8h 3s 7c]
s0rrow: calls $0.10
Dealt to Hero [Jd As 8h 3s 7c]
Hero: calls $0.10
Mamega: folds
X USN-USMC: folds
tom1206: calls $0.10
@ -918,49 +918,49 @@ TheLabman: checks
*** FIRST DRAW ***
LumBita: discards 2 cards
TheLabman: discards 1 card
s0rrow: discards 1 card [Jd]
Dealt to s0rrow [As 8h 3s 7c] [4h]
Hero: discards 1 card [Jd]
Dealt to Hero [As 8h 3s 7c] [4h]
tom1206: discards 2 cards
LumBita: checks
TheLabman: bets $0.10
s0rrow: calls $0.10
Hero: calls $0.10
tom1206: raises $0.10 to $0.20
LumBita: calls $0.20
TheLabman: calls $0.10
s0rrow: calls $0.10
Hero: calls $0.10
*** SECOND DRAW ***
LumBita: discards 1 card
TheLabman: discards 1 card
s0rrow: discards 1 card [8h]
Dealt to s0rrow [As 3s 7c 4h] [8d]
Hero: discards 1 card [8h]
Dealt to Hero [As 3s 7c 4h] [8d]
tom1206: stands pat
LumBita: checks
TheLabman: checks
s0rrow: checks
Hero: checks
tom1206: bets $0.20
LumBita: calls $0.20
TheLabman: calls $0.20
s0rrow: calls $0.20
Hero: calls $0.20
*** THIRD DRAW ***
LumBita: discards 1 card
TheLabman: discards 1 card
s0rrow: stands pat on [As 3s 7c 4h 8d]
Hero: stands pat on [As 3s 7c 4h 8d]
tom1206: stands pat
LumBita: checks
TheLabman: checks
s0rrow: checks
Hero: checks
tom1206: bets $0.17 and is all-in
LumBita: calls $0.17
TheLabman: folds
s0rrow: calls $0.17
Hero: calls $0.17
*** SHOW DOWN ***
tom1206: shows [5c 6c 4d 2h 8c] (Lo: 8,6,5,4,2)
LumBita: mucks hand
s0rrow: mucks hand
Hero: mucks hand
tom1206 collected $2.39 from pot
*** SUMMARY ***
Total pot $2.51 | Rake $0.12
Seat 1: s0rrow mucked [4h As 8d 3s 7c]
Seat 1: Hero mucked [4h As 8d 3s 7c]
Seat 2: Mamega folded before the Draw (didn't bet)
Seat 3: X USN-USMC folded before the Draw (didn't bet)
Seat 4: tom1206 (button) showed [5c 6c 4d 2h 8c] and won ($2.39) with Lo: 8,6,5,4,2

View File

@ -4,25 +4,25 @@ Seat 1: Player1 ($27.95 in chips)
Seat 2: Player2 ($7.50 in chips)
Seat 3: Player3 ($12.15 in chips)
Seat 4: Player4 ($9.25 in chips)
Seat 5: Player5 ($20 in chips)
Seat 5: Hero ($20 in chips)
Player4: posts small blind $0.25
Player5: posts big blind $0.50
Hero: posts big blind $0.50
vega104: sits out
*** DEALING HANDS ***
Dealt to Player5 [4d 7d 4c 5c Tc]
Dealt to Hero [4d 7d 4c 5c Tc]
Player1: folds
Player2: folds
Player3: folds
Player4: calls $0.25
Player5: checks
Hero: checks
Player4: discards 1 card
Player5: discards 1 card [4c]
Dealt to Player5 [4d 7d 5c Tc] [Ad]
Hero: discards 1 card [4c]
Dealt to Hero [4d 7d 5c Tc] [Ad]
Player4: checks
Player5: checks
Hero: checks
*** SHOW DOWN ***
Player4: shows [6d Js As Jd 6c] (two pair, Jacks and Sixes)
Player5: mucks hand
Hero: mucks hand
Player4 collected $0.95 from pot
*** SUMMARY ***
Total pot $1 | Rake $0.05
@ -30,7 +30,7 @@ Seat 1: Player1 folded before the Draw (didn't bet)
Seat 2: Player2 folded before the Draw (didn't bet)
Seat 3: Player3 (button) folded before the Draw (didn't bet)
Seat 4: Player4 (small blind) showed [6d Js As Jd 6c] and won ($0.95) with two pair, Jacks and Sixes
Seat 5: Player5 (big blind) mucked [4d 7d Ad 5c Tc]
Seat 5: Hero (big blind) mucked [4d 7d Ad 5c Tc]

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