Merge branch 'master' of git://git.assembla.com/fpdb-gimick
This commit is contained in:
commit
e34092b175
|
@ -1,75 +0,0 @@
|
||||||
This is partially outdated
|
|
||||||
|
|
||||||
File list
|
|
||||||
=========
|
|
||||||
.:
|
|
||||||
docs/ Documentation files
|
|
||||||
pyfpdb/ The main program (in python)
|
|
||||||
setup/ Directory with files for setting up this program
|
|
||||||
regression-test/ Directory with test data, query scripts (in python) and the regression test script (in bash)
|
|
||||||
utils/ A couple of things that will migrate to the main prog soon
|
|
||||||
viewer/ Directory with the GUI (in Java)
|
|
||||||
|
|
||||||
./docs:
|
|
||||||
abbreviations.txt A list of abbreviations used and their meaning
|
|
||||||
agpl-3.0.txt License of the program (everything under /code)
|
|
||||||
benchmarks.txt Some benchmark results
|
|
||||||
codingstyle.txt Some notes on formatting. Feel free to ignore.
|
|
||||||
fdl-1.2.txt License of the documentation (the files in /)
|
|
||||||
filelist.txt This file
|
|
||||||
howto-import.txt Instructions on how to run the importer
|
|
||||||
install-in-gentoo.txt Installation instructions for Gentoo GNU/Linux
|
|
||||||
install-in-windows.txt Installation instructions for Windows
|
|
||||||
readme-dev.txt Some notes, pointers and such for developers or anyone else interested in changing fpdb
|
|
||||||
readme-overview.txt Some general info about this program - read that first
|
|
||||||
readme-user.txt Instructions on how to use fpdb
|
|
||||||
status.txt Details of support for poker types and sites
|
|
||||||
tabledesign.html Table design with comments
|
|
||||||
|
|
||||||
./pyfpdb:
|
|
||||||
fpdb.py The main GUI. This is what the user will start and use to access the other things.
|
|
||||||
fpdb_import.py Main import program. Calls methods in the other files.
|
|
||||||
Takes one hand history file as input. This is the file
|
|
||||||
you execute, do not run the other ones individually.
|
|
||||||
Except import_gui.py of course.
|
|
||||||
fpdb_parse_logic.py Parses a holdem/omaha/razz/stud hand.
|
|
||||||
fpdb_save_to_db.py Just methods to store the parsed data into SQL.
|
|
||||||
Seperate file because these calls are very unwieldy.
|
|
||||||
fpdb_simple.py Simple methods called by the other files. Most work is
|
|
||||||
actually done in this file to make the other ones look
|
|
||||||
much easier than they are.
|
|
||||||
import_gui.py GUI interface to the importer (obselete)
|
|
||||||
|
|
||||||
./setup:
|
|
||||||
insert-basedata.sql Fills sites and gametypes tables. Run this once after running the above.
|
|
||||||
recreate-tables.sql File for mysql to recreate the tables. THIS WILL DELETE EXISTING TABLES!!!
|
|
||||||
|
|
||||||
./testdata:
|
|
||||||
should be self explanatory
|
|
||||||
|
|
||||||
./utils:
|
|
||||||
dump_db_basedata.py Prints the contents of the tables sites and gametypes
|
|
||||||
fpdb_util_lib.py Helper methods for the utilities.
|
|
||||||
get_DB_stats.py Prints some counts (like no. of players in the DB)
|
|
||||||
get_player_stats.py Prints certain stats about players with CLI-passed constraints
|
|
||||||
mysql-reset-tables.sh Reset tables for MySQL. THIS WILL DELETE EXISTING TABLES!!!
|
|
||||||
print_hand.py Prints a hand in legible format.
|
|
||||||
psql-interactive.sh *nix script to connect to a PostgreSQL database in
|
|
||||||
interactive mode (note that we're currently only supporting MySQL)
|
|
||||||
regression-test.sh Resets tables and checks manually verified hands for errors
|
|
||||||
|
|
||||||
./viewer:
|
|
||||||
todo
|
|
||||||
|
|
||||||
License
|
|
||||||
=======
|
|
||||||
Trademarks of third parties have been used under Fair Use or similar laws.
|
|
||||||
|
|
||||||
Copyright 2008 Steffen Jobbagy-Felso
|
|
||||||
Permission is granted to copy, distribute and/or modify this
|
|
||||||
document under the terms of the GNU Free Documentation License,
|
|
||||||
Version 1.2 as published by the Free Software Foundation; with
|
|
||||||
no Invariant Sections, no Front-Cover Texts, and with no Back-Cover
|
|
||||||
Texts. A copy of the license can be found in fdl-1.2.txt
|
|
||||||
|
|
||||||
The program itself is licensed under AGPLv3, see agpl-3.0.txt
|
|
|
@ -1,79 +0,0 @@
|
||||||
README.txt
|
|
||||||
updated 22 February 2010, REB
|
|
||||||
|
|
||||||
fpdb - Free Poker Database
|
|
||||||
|
|
||||||
The most accurate and up-to-date information on fpdb will be found in the wiki:
|
|
||||||
http://fpdb.wiki.sourceforge.net/
|
|
||||||
|
|
||||||
Other resources are:
|
|
||||||
Mailing list: http://sourceforge.net/mailarchive/forum.php?forum_name=fpdb-main
|
|
||||||
Chat room(irc): #fpdb on freenode.net
|
|
||||||
|
|
||||||
fpdb is a free program for use with on line poker. It provides:
|
|
||||||
Tracking of your results and statistics.
|
|
||||||
Tracking of opponents' results statistics.
|
|
||||||
Win/loss graphing
|
|
||||||
Heads Up Display (HUD) with a variety of statistics
|
|
||||||
Display of mucked cards in the HUD
|
|
||||||
|
|
||||||
fpdb supports:
|
|
||||||
Sites:
|
|
||||||
PokerStars
|
|
||||||
Full Tilt Poker
|
|
||||||
Everleaf Network
|
|
||||||
Other sites are under development and are easily added
|
|
||||||
|
|
||||||
Games:
|
|
||||||
Holdem
|
|
||||||
Omaha (incl Hi/low)
|
|
||||||
7 Card Stud (incl Hi/low)
|
|
||||||
Razz
|
|
||||||
Triple Draw and Badugi
|
|
||||||
Mixed Games -- HUD under development
|
|
||||||
|
|
||||||
Operating Systems:
|
|
||||||
Linux and other Unix-like, using X
|
|
||||||
Windows
|
|
||||||
Mac OS/X -- no support for HUD
|
|
||||||
|
|
||||||
Databases:
|
|
||||||
SQLite configured by default
|
|
||||||
MySQL
|
|
||||||
PostgreSQL
|
|
||||||
|
|
||||||
Downloads:
|
|
||||||
Releases: http://sourceforge.net/project/showfiles.php?group_id=226872
|
|
||||||
Development code via git: http://www.assembla.com/spaces/free_poker_tools/trac_git_tool
|
|
||||||
|
|
||||||
Developers:
|
|
||||||
At least 10 people have contributed code or patches. Others are welcome.
|
|
||||||
|
|
||||||
Source Code:
|
|
||||||
If you received fpdb as the Windows compressed exe, then you did not
|
|
||||||
receive souce code for fpdb or the included libraries. If you wish, you can
|
|
||||||
obtain the source code here:
|
|
||||||
|
|
||||||
fpdb: see Downloads, above.
|
|
||||||
python: http://python.org/
|
|
||||||
gtk: http://www.gtk.org/download.html
|
|
||||||
pygtk: http://www.pygtk.org/downloads.html
|
|
||||||
psycopg2: http://initd.org/pub/software/psycopg/
|
|
||||||
mysqldb: http://sourceforge.net/projects/mysql-python/files/
|
|
||||||
sqlalchemy: http://www.sqlalchemy.org/download.html
|
|
||||||
numpy: http://www.scipy.org/Download
|
|
||||||
matplotlib: http://sourceforge.net/projects/matplotlib/files/
|
|
||||||
|
|
||||||
License
|
|
||||||
=======
|
|
||||||
Trademarks of third parties have been used under Fair Use or similar laws.
|
|
||||||
|
|
||||||
Copyright 2008 Steffen Jobbagy-Felso
|
|
||||||
Copyright 2009,2010 Ray E. Barker
|
|
||||||
Permission is granted to copy, distribute and/or modify this
|
|
||||||
document under the terms of the GNU Free Documentation License,
|
|
||||||
Version 1.2 as published by the Free Software Foundation; with
|
|
||||||
no Invariant Sections, no Front-Cover Texts, and with no Back-Cover
|
|
||||||
Texts. A copy of the license can be found in fdl-1.2.txt
|
|
||||||
|
|
||||||
fpdb itself is licensed under AGPLv3, see agpl-3.0.txt.
|
|
|
@ -1,93 +0,0 @@
|
||||||
alpha2
|
|
||||||
======
|
|
||||||
Hi everyone,
|
|
||||||
we are proud to announce the second alpha release of fpdb, the free/libre open source poker tracker. The biggest highlight is the HUD for Linux made by Ray (and perhaps Mac, not sure). But for everyone fpdb now also supports PS tournaments (SnG and MTT) and FTP ring games. There is also a new auto-importer though it currently only runs on one file per instance (but you can open multiple instances of fpdb).
|
|
||||||
Fpdb also parses alot of new situations into the cache table for the HUD, most of which are already available through the Linux HUD. There have also been a large number of bugfixes for all kinds of things. For full details of the changes see the git commit comments.
|
|
||||||
|
|
||||||
You can download fpdb at https://sourceforge.net/project/showfiles.php?group_id=226872
|
|
||||||
|
|
||||||
Our website at http://fpdb.sourceforge.net/ will be updated shortly but in the meantime please note that the configuration file now resides in ~/.fpdb/default.conf on Linux/Mac and in C:\Documents and Settings\Application Data\fpdb\default.conf on Windows (on non-English Windows you have to translate the Documents and Settings, but not the Application data bit). Apart from that just follow the instructions on the site. I will be updating/improving the fpdb ebuild for Gentoo next week, please send me a PM or email if you would like a package for another Linux/BSD.
|
|
||||||
|
|
||||||
To use the HUD in Linux simply run the auto importer whilst having the table open. You will also have to rename HUD_config.xml.example to HUD_config.xml and edit the database parameters in there in addition to what is written in the install guide.
|
|
||||||
|
|
||||||
If you've been using fpdb alpha1 just delete the fpdb folder, follow the installation guide except for installing the dependencies, then run fpdb and run recreate tables. Note that you will have to reimport ALL your history files.
|
|
||||||
|
|
||||||
For external devs (in particular Youre Toast): The table design has gone through some changes, though most of it was just renaming to make a consistent naming scheme and to make it more flexible towards stud/razz type games. I do not expect to having to make any future changes to the existing fields but I cannot yet guarantee that. There will be some additional fields in particular in the HudCache table. Please let me know if you need any further fields. I realise my naming breaks the "database designer's convention" but for this project I feel ignoring this convention for the benefit of consistent naming between Python and SQL is ok.
|
|
||||||
|
|
||||||
|
|
||||||
Any questions and comments please post here, send me a PM or email, post a feature request or bug report on sourceforge or use any of the other means of contact listed on our webpage.
|
|
||||||
|
|
||||||
Enjoy,
|
|
||||||
The fpdb team
|
|
||||||
|
|
||||||
PS: I personally will be away Sun-Tue so I probably won't be responding to anything but feel free to message me anyways, but if you post here or at SF someone else might be able to help.
|
|
||||||
|
|
||||||
PPS: If you wanna know EXACTLY how this project is moving along follow the git tree over at [url]http://www.assembla.com/spaces/fpdb/trac_git_tool[/url]
|
|
||||||
|
|
||||||
|
|
||||||
alpha1
|
|
||||||
======
|
|
||||||
Hi everyone,
|
|
||||||
I am proud to announce the first release of my new poker tracking software fpdb (freepokerdb, very imaginative I know ;) ). You may wonder why I bothered when now with HM and PT3 there are at least two excellent packages to choose from.
|
|
||||||
|
|
||||||
Four main reasons:
|
|
||||||
1. Fpdb is free/libre open source software. In short, this means you don't depend on me if sth. is wrong or you want something more in this program as you can freely change it yourself. You also don't have to pay anything for it. If you like it and think I deserve to be paid just drop me a mail ;)
|
|
||||||
2. HM and PT3 only support holdem. Fpdb initially supports Holdem and Omaha, with Stud and Razz mostly implemented and coming soon.
|
|
||||||
3. HM and PT3 run on Windows only, and for me at least did not work in wine even after installing Mono. Fpdb runs on any plattform that has the required software, which will cover roundabout 99.9% of PCs. Currently tested plattforms are Windows XP-x86 and Gentoo GNU/Linux-amd64 as well as -x86.
|
|
||||||
You still need to run Windows or wine to run the actual poker client though.
|
|
||||||
4. Fpdb won't irritate you with copy prevention measures.
|
|
||||||
|
|
||||||
To install it go to https://sourceforge.net/project/showfiles.php?group_id=226872 and download the zip or tar.bz2, unpack it, and follow the instructions in docs/install-in-* for your operating system (e.g. docs\install-in-windows.txt). Sourceforge lists the release files as source files, not as binary executables - this is correct, python will automagically compile as and when required.
|
|
||||||
|
|
||||||
This is alpha1, as the name indicates it is still at a very early stage. The importer and database are nearing completion but the GUI in particular is not very functional yet and the HUD is missing alltogether.
|
|
||||||
|
|
||||||
If anyone wishes to help with development that would be very very welcome and I've put a few notes in docs/readme-dev.txt in the download for what you could do. Or just start coding and send me the patches :)
|
|
||||||
If you're not a programmer and you're not interested in learning it you can still help simply by trying it out and sending bug reports and feature requests. To avoid unrealistic expectations I'd like to state that it'll be a long time until fpdb reaches feature parity to established paid-for closed source software.
|
|
||||||
|
|
||||||
Feature List (short now, growing fast ;) ):
|
|
||||||
|
|
||||||
You can edit/add whatever you like, it's all python and SQL. The code should be fairly straightforward I think and I put some notes into readme-dev.txt but feel free to ask.
|
|
||||||
|
|
||||||
Backend, Distribution
|
|
||||||
=====================
|
|
||||||
- Choice of MySQL/InnoDB or PostgreSQL. (not tested on PostgreSQL)
|
|
||||||
- It is possible to run the database on one PC, the importer on another, and then access the database with the table viewer or HUD from a third PC. (note: do NOT do this unencrypted over an untrusted network like your employer's LAN or the Internet!)
|
|
||||||
|
|
||||||
Site/Game Support
|
|
||||||
=================
|
|
||||||
- Initially only full support for PS, FTP coming soon
|
|
||||||
- Supports Holdem, Omaha Hi and Omaha Hi/Lo. Stud and Razz coming soon.
|
|
||||||
- Supports No Limit, Pot Limit, Fixed Limit NL, Cap NL and Cap PL
|
|
||||||
Note that currently it does not display extra stats for NL/PL so usefulness is limited for these limit types. Suggestions welcome, I don't play these.
|
|
||||||
- Supports ring/cash games, SnG/MTT coming soon
|
|
||||||
|
|
||||||
Tableviewer (tv)
|
|
||||||
===========
|
|
||||||
Tv takes a history filename and loads the appropriate players' stats and displays them in a tabular format. These stats currently are:
|
|
||||||
- VPIP, PFR and Preflop 3B/4B (3B/4B is not quite correct I think)
|
|
||||||
- Raise and Fold % on flop, turn and river. Fold only counts hands when someone raised. This can be displayed per street or as one combined value each for aggression and folding.
|
|
||||||
- Number of hands this is based on.
|
|
||||||
- SD/F (aka WtSD, proportion of hands where player went to showdown after seeing flop)
|
|
||||||
- W$wSF (Won $ when seen Flop)
|
|
||||||
- W$@SD (Won $ at showdown)
|
|
||||||
For all stats it also displays how many hands this particular is based on
|
|
||||||
|
|
||||||
|
|
||||||
IMPORTANT: The database format WILL undergo more changes and at this point I am not planning to write a converter so please keep your history files so you can re-import when necessary. Independent of this you should always keep the original raw files in a safe place with any tracking software. Should you however end up loosing your files somehow let me know and I'll try to help.
|
|
||||||
|
|
||||||
Please send any feedback, feature requests/suggestions, bug reports and animal names to steffen@sycamoretest.info, pick one of the contact methods listed in readme-overview.txt, send me a PM here or reply to this post.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
License
|
|
||||||
=======
|
|
||||||
Trademarks of third parties have been used under Fair Use or similar laws.
|
|
||||||
|
|
||||||
Copyright 2008 Steffen Jobbagy-Felso
|
|
||||||
Permission is granted to copy, distribute and/or modify this
|
|
||||||
document under the terms of the GNU Free Documentation License,
|
|
||||||
Version 1.2 as published by the Free Software Foundation; with
|
|
||||||
no Invariant Sections, no Front-Cover Texts, and with no Back-Cover
|
|
||||||
Texts. A copy of the license can be found in fdl-1.2.txt
|
|
||||||
|
|
||||||
The program itself is licensed under AGPLv3, see agpl-3.0.txt
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,62 +0,0 @@
|
||||||
# Copyright 1999-2008 Gentoo Foundation
|
|
||||||
# Gentoo had nothing to do with the production of this ebuild, but I'm pre-emptively transferring all copyrights (as far as legally possible under my local jurisdiction) to them.
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
# $Header: /var/cvsroot/gentoo-x86/games-util/fpdb/fpdb-0.10.ebuild,v 1.0 2009/1/30 steffen@sycamoretest.info Exp $
|
|
||||||
|
|
||||||
NEED_PYTHON=2.3
|
|
||||||
|
|
||||||
#inherit distutils
|
|
||||||
|
|
||||||
MY_P="fpdb-${PV}"
|
|
||||||
DESCRIPTION="A database program to track your online poker games"
|
|
||||||
HOMEPAGE="https://sourceforge.net/projects/fpdb/"
|
|
||||||
SRC_URI="mirror://sourceforge/fpdb/${MY_P}.tar.bz2"
|
|
||||||
|
|
||||||
LICENSE="AGPL-3"
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="~amd64 ~x86"
|
|
||||||
#note: this should work on other architectures too, please send me your experiences
|
|
||||||
IUSE=""
|
|
||||||
|
|
||||||
RDEPEND="virtual/mysql
|
|
||||||
dev-python/mysql-python
|
|
||||||
>=x11-libs/gtk+-2.10
|
|
||||||
dev-python/pygtk
|
|
||||||
dev-python/numpy
|
|
||||||
dev-python/matplotlib"
|
|
||||||
|
|
||||||
DEPEND="${RDEPEND}"
|
|
||||||
|
|
||||||
src_install() {
|
|
||||||
DIRINST="${D}usr/share/games/fpdb/"
|
|
||||||
mkdir -p "${DIRINST}"
|
|
||||||
cp -R * "${DIRINST}" || die
|
|
||||||
|
|
||||||
DIRBIN="${D}usr/games/bin/"
|
|
||||||
mkdir -p "${DIRBIN}"
|
|
||||||
#echo "pathes"
|
|
||||||
#echo "${DIRINST}pyfpdb/fpdb.py"
|
|
||||||
#echo "${DIRBIN}fpdb.py"
|
|
||||||
#echo
|
|
||||||
echo "cd /usr/share/games/fpdb/pyfpdb/ && python fpdb.py" > "${DIRBIN}fpdb" || die
|
|
||||||
chmod 755 "${DIRBIN}fpdb" || die
|
|
||||||
}
|
|
||||||
|
|
||||||
#src_test() {
|
|
||||||
#}
|
|
||||||
|
|
||||||
pkg_postinst() {
|
|
||||||
elog "Fpdb has been installed and can be called by executing /usr/games/bin/fpdb"
|
|
||||||
elog "You need to perform a couple more steps manually."
|
|
||||||
elog "Please also make sure you followed instructions from previous emerges, in particular make sure you configured mysql and set a root pw for it"
|
|
||||||
elog "Now run this command to connect to MySQL: mysql --user=root --password=yourPassword"
|
|
||||||
elog "In the mysql command line interface you need to type these two lines (make sure you get the ; at the end)"
|
|
||||||
elog "In the second line replace \"newPassword\" with a password of your choice"
|
|
||||||
elog "CREATE DATABASE fpdb;"
|
|
||||||
elog "GRANT ALL PRIVILEGES ON fpdb.* TO 'fpdb'@'localhost' IDENTIFIED BY 'newPassword' WITH GRANT OPTION;"
|
|
||||||
elog "Finally copy the default config file from ${DIRINST}docs/default.conf to ~/.fpdb/ for every user that is to use fpdb."
|
|
||||||
elog "You will need to edit the default.conf, in particular you need to replace the password with what you entered in the \"GRANT ALL...\""
|
|
||||||
elog "Finally run the GUI and click the menu database -> recreate tables"
|
|
||||||
elog "That's it! See our webpage at http://fpdb.sourceforge.net for more documentation"
|
|
||||||
elog " "
|
|
||||||
}
|
|
53
packaging/gentoo/fpdb-0.20_rc1.ebuild
Normal file
53
packaging/gentoo/fpdb-0.20_rc1.ebuild
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
# Copyright 1999-2010 Gentoo Foundation
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
# created by Steffen Schaumburg, steffen@schaumburger.info
|
||||||
|
|
||||||
|
EAPI="2"
|
||||||
|
NEED_PYTHON=2.5
|
||||||
|
|
||||||
|
#inherit distutils
|
||||||
|
|
||||||
|
DESCRIPTION="A database program to track your online poker games"
|
||||||
|
HOMEPAGE="http://fpdb.sourceforge.net/"
|
||||||
|
#SRC_URI="mirror://sourceforge/fpdb/${MY_P}.tar.bz2"
|
||||||
|
|
||||||
|
LICENSE="AGPL-3"
|
||||||
|
SLOT="0"
|
||||||
|
KEYWORDS="~amd64 ~x86"
|
||||||
|
#note: this should work on other architectures too, please send me your experiences
|
||||||
|
|
||||||
|
IUSE="mysql postgres graphing"
|
||||||
|
RDEPEND="
|
||||||
|
mysql? ( virtual/mysql
|
||||||
|
dev-python/mysql-python )
|
||||||
|
postgres? ( dev-db/postgresql-server
|
||||||
|
dev-python/psycopg )
|
||||||
|
>=x11-libs/gtk+-2.10
|
||||||
|
dev-python/pygtk
|
||||||
|
graphing? ( dev-python/numpy
|
||||||
|
dev-python/matplotlib[gtk] )
|
||||||
|
dev-python/python-xlib"
|
||||||
|
DEPEND="${RDEPEND}"
|
||||||
|
|
||||||
|
#src_install() {
|
||||||
|
# DIRINST="${D}usr/share/games/fpdb/"
|
||||||
|
# mkdir -p "${DIRINST}"
|
||||||
|
# cp -R * "${DIRINST}" || die
|
||||||
|
#
|
||||||
|
# DIRBIN="${D}usr/games/bin/"
|
||||||
|
# mkdir -p "${DIRBIN}"
|
||||||
|
# #echo "pathes"
|
||||||
|
# #echo "${DIRINST}pyfpdb/fpdb.py"
|
||||||
|
# #echo "${DIRBIN}fpdb.py"
|
||||||
|
# #echo
|
||||||
|
# echo "cd /usr/share/games/fpdb/pyfpdb/ && python fpdb.py" > "${DIRBIN}fpdb" || die
|
||||||
|
# chmod 755 "${DIRBIN}fpdb" || die
|
||||||
|
#}
|
||||||
|
|
||||||
|
#src_test() {
|
||||||
|
#}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
elog "Fpdb's dependencies have been installed. Please visit fpdb.sourceforge.net and download and unpack the archive."
|
||||||
|
elog "You can then start fpdb by running run_fpdb.py. Good luck!"
|
||||||
|
}
|
169
packaging/windows/py2exeWalkthroughPython26.txt
Normal file
169
packaging/windows/py2exeWalkthroughPython26.txt
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
PY2EXE walkthrough for Python 2.6 & FPDB 0.20
|
||||||
|
created by Gimick on 22nd June 2010
|
||||||
|
|
||||||
|
|
||||||
|
Step 0 Get a fresh XP installation
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
0.1/ Using XPhome 32bit
|
||||||
|
|
||||||
|
Step 1, Python install
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
1.1/ install the following in sequence (accept all default options) there should be no errors !
|
||||||
|
|
||||||
|
Python 2.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi
|
||||||
|
pywin 214 ... http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/pywin32-214.win32-py2.6.exe/download
|
||||||
|
numpy 1.4.1 ... http://sourceforge.net/projects/numpy/files/NumPy/1.4.1/numpy-1.4.1-win32-superpack-python2.6.exe/download
|
||||||
|
matplotlib 0.99.3 ... http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99.3/matplotlib-0.99.3.win32-py2.6.exe/download
|
||||||
|
pygtk 2.16.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe
|
||||||
|
pycairo 1.8.6 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/pycairo-1.8.6.win32-py2.6.exe
|
||||||
|
pyGobject 2.20.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe
|
||||||
|
py2exe 0.6.9 ... http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.6.exe/download
|
||||||
|
psycopg2 ... http://www.stickpeople.com/projects/python/win-psycopg/psycopg2-2.2.1.win32-py2.6-pg8.4.3-release.exe
|
||||||
|
|
||||||
|
1.2/ MySQL
|
||||||
|
|
||||||
|
mysql-python is needed
|
||||||
|
The sourceforge page is http://sourceforge.net/projects/mysql-python/files/
|
||||||
|
Unfortunately there is no py2.6 build for windows yet.
|
||||||
|
Instructions to build the installer package can be found here
|
||||||
|
http://www.bcspcsonline.com/wiki/index.php?title=MySQL-5.1.34_Python-2.6_Module_Build_Instructions
|
||||||
|
A pre-built intaller is available here
|
||||||
|
MySQL-python 1.2.3c1 ... http://www.codegood.com/download/4/ (MySQL-python-1.2.3c1.win32-py2.6.exe)
|
||||||
|
|
||||||
|
|
||||||
|
Step 2 Setup GTK
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
There are quite a few GTK packages needed, and rather than install them individually, I used the official AllinOne from the GTK project.
|
||||||
|
|
||||||
|
2,1/ Create a new folder c:\GTK
|
||||||
|
|
||||||
|
2.2/ Extract the following zip file into c:\GTK
|
||||||
|
|
||||||
|
GTK+ all in one 2.20.0 ... http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.20/gtk+-bundle_2.20.0-20100406_win32.zip
|
||||||
|
|
||||||
|
2.3/ If everything has worked, you should have c:\GTK\bin \etc \lib \src and so on created.
|
||||||
|
|
||||||
|
|
||||||
|
Step 3 Set GTK into the PATH variable
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
The path for GTK isn't set by default, so need to let the o/s know where the GTK stuff is.
|
||||||
|
|
||||||
|
3.1/ Rightclick on mycomputer to show system properties
|
||||||
|
3.2/ select advanced/environment Variables
|
||||||
|
3.3/ in "system variables" NOT "user variables" do the following
|
||||||
|
3.3.1/ create a new item as name: GTK_BASEPATH value: c:\GTK
|
||||||
|
3.3.2/ edit the item "path", press home to get to the first character and insert the following text, (no quotes, including semicolon) %GTK_BASEPATH%\bin;
|
||||||
|
|
||||||
|
3.4/ to check, open command prompt and do:
|
||||||
|
|
||||||
|
dos>path ... system should respond with ... PATH=c:\GTK\bin;C:\WIN........
|
||||||
|
|
||||||
|
3.5/ Give it a spin to test (hopefully an application will start, if not, something has gone wrong)
|
||||||
|
|
||||||
|
dos> gtk-demo
|
||||||
|
|
||||||
|
Step 4 Get the fpdb GIT tree
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
4.1/ Best to take a copy to work with; following steps will assume that the fpdb folder is on the Desktop
|
||||||
|
|
||||||
|
|
||||||
|
#Step 5 Put MSVCP90.dll temporarily into the fpdb folder
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
###### Step 5 no longer required as py2exe is instructed not to include the visualc/c++ dll's
|
||||||
|
#
|
||||||
|
#py2exe will check for MSVCP90.dll. The version installed by python2.6.5runtime is not in the path, so we will put it in place #TEMPORARILY. This will/must be removed manually once the exe has been created, as we do not have a licence to redistribute.
|
||||||
|
#
|
||||||
|
#Search for MSVCP90.dll (should be found in C:\WINDOWS\WinSxS\...
|
||||||
|
#copy this file TEMPORARILY to the Desktop\fpdb\pyfpdb folder
|
||||||
|
|
||||||
|
Step 6 Run py2exe to generate fpdb.exe
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
6.1/ Run the script to create the fpdb.exe bundle
|
||||||
|
|
||||||
|
dos> cd Desktop\fpdb\pyfpdb
|
||||||
|
dos> c:\python26\python.exe py2exe_setup.py py2exe
|
||||||
|
|
||||||
|
wait a while, watch lots of copying and whatever.
|
||||||
|
|
||||||
|
6.2/ You should next get prompted for the GTK folder.
|
||||||
|
c:\GTK
|
||||||
|
|
||||||
|
6.3/ If there are no errors reported, it has probably worked, we will test soon.
|
||||||
|
|
||||||
|
Build notes:
|
||||||
|
|
||||||
|
There is a warning "c:\Python26\lib\site-packages\py2exe\build_exe.py:16: DeprecationWarning: the sets module is deprecated import sets". This is probably coming from mysql-python see here https://bugs.launchpad.net/python-mysqldb/+bug/338387
|
||||||
|
|
||||||
|
There is a warning about dll's not included "umath.pyd - c:\Python26\lib\site-packages\numpy\core\umath.pyd" - reason for this is not understood at present. (Umath is apparently included in the built package).
|
||||||
|
|
||||||
|
|
||||||
|
#Step 7 Delete C++runtime
|
||||||
|
#------------------------
|
||||||
|
#
|
||||||
|
###### Step 7 is no longer required (see step 5 for reason)
|
||||||
|
#
|
||||||
|
#This is really really important, this file must NOT be distributed, so get rid of it now to avoid issues.
|
||||||
|
#
|
||||||
|
#7.1/ in Desktop\fpdb\pyfpdb\ remove the file msvcp90.dll
|
||||||
|
#
|
||||||
|
|
||||||
|
Step 8 Drag out the completed bundle
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
py2exe creates a new folder for the created software bundle, drag this out to the desktop for ease of working.
|
||||||
|
As far as I know you cannot rerun the build if the fpdb-yyyymmdd-exe exists in the tree, so dragging this out
|
||||||
|
also allows the build to re-run at step 6.
|
||||||
|
|
||||||
|
8.1/ Drag Desktop\fpdb\pyfpdb\fpdb-yyyymmdd-exe to Desktop\
|
||||||
|
|
||||||
|
|
||||||
|
Step 9 Initial run
|
||||||
|
------------------
|
||||||
|
|
||||||
|
9.1/ Open the Desktop\fpdb-yyyymmdd-exe folder
|
||||||
|
9.2/ In explorer...tools...folder options...View uncheck "Hide extensions for known file types"
|
||||||
|
9.3/ Double click run_fpdb.bat
|
||||||
|
9.4/ check the contents of pyfpdb\fpdb.exe.log, deal with any errors thrown
|
||||||
|
|
||||||
|
9.5/ hopefully, fpdb will run
|
||||||
|
9.6/ Try out a few options, deal with any errors reported
|
||||||
|
|
||||||
|
Observe that the msvcp90.dll was provided by the python runtime package, so we don't have to install the separate package from Microsoft. End-users will, however need the dependency.
|
||||||
|
|
||||||
|
Step 11 pruning
|
||||||
|
---------------
|
||||||
|
|
||||||
|
11.1/ The generated folder is 100+MB and can be pruned by removing the following directories:
|
||||||
|
|
||||||
|
pyfpdb/lib/glib-2.0
|
||||||
|
pyfpdb/lib/gtk-2.0/include
|
||||||
|
pyfpdb/lib/pkgconfig
|
||||||
|
pyfpdb/share/aclocal
|
||||||
|
pyfpdb/share/doc
|
||||||
|
pyfpdb/share/glib-2.0
|
||||||
|
pyfpdb/share/gtk-2.0
|
||||||
|
pyfpdb/share/gtk-doc
|
||||||
|
pyfpdb/share/locale
|
||||||
|
pyfpdb/share/man
|
||||||
|
|
||||||
|
Step 12 rename folder
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
12/ Rename the folder to something meaningful to the community
|
||||||
|
|
||||||
|
Step 13 Compress to executable archive
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
13.1/ Download and install 7zip 914 ... http://sourceforge.net/projects/sevenzip/files/7-Zip/9.14/7z914.exe/download
|
||||||
|
13.2/ Rightclick on fpdb executable folder, select 7zip Add to archive... select SFX archive option switch
|
||||||
|
13.3/ Test the created exe file
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import codecs
|
||||||
import Options
|
import Options
|
||||||
import HandHistoryConverter
|
import HandHistoryConverter
|
||||||
import Configuration
|
import Configuration
|
||||||
|
import sys
|
||||||
|
|
||||||
(options, argv) = Options.fpdb_options()
|
(options, argv) = Options.fpdb_options()
|
||||||
config = Configuration.Config()
|
config = Configuration.Config()
|
||||||
|
@ -27,6 +28,13 @@ else:
|
||||||
|
|
||||||
m = hhc.re_PlayerInfo.finditer(filecontents)
|
m = hhc.re_PlayerInfo.finditer(filecontents)
|
||||||
|
|
||||||
|
outfile = options.infile+".anon"
|
||||||
|
print "Output being written to", outfile
|
||||||
|
|
||||||
|
savestdout = sys.stdout
|
||||||
|
fsock = open(outfile,"w")
|
||||||
|
sys.stdout = fsock
|
||||||
|
|
||||||
players = []
|
players = []
|
||||||
for a in m:
|
for a in m:
|
||||||
players = players + [a.group('PNAME')]
|
players = players + [a.group('PNAME')]
|
||||||
|
@ -37,3 +45,7 @@ for i, name in enumerate(uniq):
|
||||||
filecontents = filecontents.replace(name, 'Player%d' %i)
|
filecontents = filecontents.replace(name, 'Player%d' %i)
|
||||||
|
|
||||||
print filecontents
|
print filecontents
|
||||||
|
|
||||||
|
sys.stdout = savestdout
|
||||||
|
fsock.close()
|
||||||
|
|
||||||
|
|
|
@ -1633,7 +1633,12 @@ class Database:
|
||||||
pdata[p]['street3CheckCallRaiseChance'],
|
pdata[p]['street3CheckCallRaiseChance'],
|
||||||
pdata[p]['street3CheckCallRaiseDone'],
|
pdata[p]['street3CheckCallRaiseDone'],
|
||||||
pdata[p]['street4CheckCallRaiseChance'],
|
pdata[p]['street4CheckCallRaiseChance'],
|
||||||
pdata[p]['street4CheckCallRaiseDone']
|
pdata[p]['street4CheckCallRaiseDone'],
|
||||||
|
pdata[p]['street0Raises'],
|
||||||
|
pdata[p]['street1Raises'],
|
||||||
|
pdata[p]['street2Raises'],
|
||||||
|
pdata[p]['street3Raises'],
|
||||||
|
pdata[p]['street4Raises']
|
||||||
) )
|
) )
|
||||||
|
|
||||||
q = self.sql.query['store_hands_players']
|
q = self.sql.query['store_hands_players']
|
||||||
|
@ -1662,7 +1667,7 @@ class Database:
|
||||||
#print "DEBUG: %s %s %s" %(hid, pids, pdata)
|
#print "DEBUG: %s %s %s" %(hid, pids, pdata)
|
||||||
inserts = []
|
inserts = []
|
||||||
for p in pdata:
|
for p in pdata:
|
||||||
line = [0]*61
|
line = [0]*76
|
||||||
|
|
||||||
line[0] = 1 # HDs
|
line[0] = 1 # HDs
|
||||||
if pdata[p]['street0VPI']: line[1] = 1
|
if pdata[p]['street0VPI']: line[1] = 1
|
||||||
|
@ -1719,13 +1724,29 @@ class Database:
|
||||||
if pdata[p]['street3CheckCallRaiseDone']: line[52] = 1
|
if pdata[p]['street3CheckCallRaiseDone']: line[52] = 1
|
||||||
if pdata[p]['street4CheckCallRaiseChance']: line[53] = 1
|
if pdata[p]['street4CheckCallRaiseChance']: line[53] = 1
|
||||||
if pdata[p]['street4CheckCallRaiseDone']: line[54] = 1
|
if pdata[p]['street4CheckCallRaiseDone']: line[54] = 1
|
||||||
line[55] = gid # gametypeId
|
if pdata[p]['street0Calls']: line[55] = 1
|
||||||
line[56] = pids[p] # playerId
|
if pdata[p]['street1Calls']: line[56] = 1
|
||||||
line[57] = len(pids) # activeSeats
|
if pdata[p]['street2Calls']: line[57] = 1
|
||||||
|
if pdata[p]['street3Calls']: line[58] = 1
|
||||||
|
if pdata[p]['street4Calls']: line[59] = 1
|
||||||
|
if pdata[p]['street0Bets']: line[60] = 1
|
||||||
|
if pdata[p]['street1Bets']: line[61] = 1
|
||||||
|
if pdata[p]['street2Bets']: line[62] = 1
|
||||||
|
if pdata[p]['street3Bets']: line[63] = 1
|
||||||
|
if pdata[p]['street4Bets']: line[64] = 1
|
||||||
|
if pdata[p]['street0Raises']: line[65] = 1
|
||||||
|
if pdata[p]['street1Raises']: line[66] = 1
|
||||||
|
if pdata[p]['street2Raises']: line[67] = 1
|
||||||
|
if pdata[p]['street3Raises']: line[68] = 1
|
||||||
|
if pdata[p]['street4Raises']: line[69] = 1
|
||||||
|
|
||||||
|
line[70] = gid # gametypeId
|
||||||
|
line[71] = pids[p] # playerId
|
||||||
|
line[72] = len(pids) # activeSeats
|
||||||
pos = {'B':'B', 'S':'S', 0:'D', 1:'C', 2:'M', 3:'M', 4:'M', 5:'E', 6:'E', 7:'E', 8:'E', 9:'E' }
|
pos = {'B':'B', 'S':'S', 0:'D', 1:'C', 2:'M', 3:'M', 4:'M', 5:'E', 6:'E', 7:'E', 8:'E', 9:'E' }
|
||||||
line[58] = pos[pdata[p]['position']]
|
line[73] = pos[pdata[p]['position']]
|
||||||
line[59] = pdata[p]['tourneyTypeId']
|
line[74] = pdata[p]['tourneyTypeId']
|
||||||
line[60] = styleKey # styleKey
|
line[75] = styleKey # styleKey
|
||||||
inserts.append(line)
|
inserts.append(line)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,7 @@ class DerivedStats():
|
||||||
for i in range(5):
|
for i in range(5):
|
||||||
self.handsplayers[player[1]]['street%dCalls' % i] = 0
|
self.handsplayers[player[1]]['street%dCalls' % i] = 0
|
||||||
self.handsplayers[player[1]]['street%dBets' % i] = 0
|
self.handsplayers[player[1]]['street%dBets' % i] = 0
|
||||||
|
self.handsplayers[player[1]]['street%dRaises' % i] = 0
|
||||||
for i in range(1,5):
|
for i in range(1,5):
|
||||||
self.handsplayers[player[1]]['street%dCBChance' %i] = False
|
self.handsplayers[player[1]]['street%dCBChance' %i] = False
|
||||||
self.handsplayers[player[1]]['street%dCBDone' %i] = False
|
self.handsplayers[player[1]]['street%dCBDone' %i] = False
|
||||||
|
|
|
@ -97,6 +97,9 @@ class GuiPlayerStats (threading.Thread):
|
||||||
, ["vpip", True, "VPIP", 1.0, "%3.1f", "str"]
|
, ["vpip", True, "VPIP", 1.0, "%3.1f", "str"]
|
||||||
, ["pfr", True, "PFR", 1.0, "%3.1f", "str"]
|
, ["pfr", True, "PFR", 1.0, "%3.1f", "str"]
|
||||||
, ["pf3", True, "PF3", 1.0, "%3.1f", "str"]
|
, ["pf3", True, "PF3", 1.0, "%3.1f", "str"]
|
||||||
|
, ["aggfac", True, "AggFac", 1.0, "%2.2f", "str"]
|
||||||
|
, ["aggfrq", True, "AggFreq", 1.0, "%3.1f", "str"]
|
||||||
|
, ["conbet", True, "ContBet", 1.0, "%3.1f", "str"]
|
||||||
, ["steals", True, "Steals", 1.0, "%3.1f", "str"]
|
, ["steals", True, "Steals", 1.0, "%3.1f", "str"]
|
||||||
, ["saw_f", True, "Saw_F", 1.0, "%3.1f", "str"]
|
, ["saw_f", True, "Saw_F", 1.0, "%3.1f", "str"]
|
||||||
, ["sawsd", True, "SawSD", 1.0, "%3.1f", "str"]
|
, ["sawsd", True, "SawSD", 1.0, "%3.1f", "str"]
|
||||||
|
|
|
@ -30,10 +30,11 @@ import Configuration
|
||||||
|
|
||||||
class GuiPrefs:
|
class GuiPrefs:
|
||||||
|
|
||||||
def __init__(self, config, mainwin, dia):
|
def __init__(self, config, mainwin, dia, parentwin):
|
||||||
self.config = config
|
self.config = config
|
||||||
self.main_window = mainwin
|
self.main_window = mainwin
|
||||||
self.dialog = dia
|
self.dialog = dia
|
||||||
|
self.parent_window = parentwin #need to pass reference of parent, to set transient
|
||||||
|
|
||||||
self.tree_box = gtk.ScrolledWindow()
|
self.tree_box = gtk.ScrolledWindow()
|
||||||
self.tree_box.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
self.tree_box.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
||||||
|
@ -120,7 +121,7 @@ class GuiPrefs:
|
||||||
name = tmodel.get_value( iter, 1 )
|
name = tmodel.get_value( iter, 1 )
|
||||||
val = tmodel.get_value( iter, 2 )
|
val = tmodel.get_value( iter, 2 )
|
||||||
dia_edit = gtk.Dialog(name,
|
dia_edit = gtk.Dialog(name,
|
||||||
self.main_window,
|
self.parent_window,
|
||||||
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
|
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
|
||||||
(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
|
(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
|
||||||
gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
|
gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
|
||||||
|
@ -162,7 +163,8 @@ if __name__=="__main__":
|
||||||
(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
|
(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
|
||||||
gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT))
|
gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT))
|
||||||
dia.set_default_size(700, 500)
|
dia.set_default_size(700, 500)
|
||||||
prefs = GuiPrefs(config, win, dia.vbox)
|
pw=dia #pass parent window
|
||||||
|
prefs = GuiPrefs(config, win, dia.vbox,pw)
|
||||||
response = dia.run()
|
response = dia.run()
|
||||||
if response == gtk.RESPONSE_ACCEPT:
|
if response == gtk.RESPONSE_ACCEPT:
|
||||||
# save updated config
|
# save updated config
|
||||||
|
|
|
@ -508,6 +508,9 @@ Left-Drag to Move"
|
||||||
<pu_stat pu_stat_name="a_freq2"> </pu_stat>
|
<pu_stat pu_stat_name="a_freq2"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="a_freq3"> </pu_stat>
|
<pu_stat pu_stat_name="a_freq3"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="a_freq4"> </pu_stat>
|
<pu_stat pu_stat_name="a_freq4"> </pu_stat>
|
||||||
|
<pu_stat pu_stat_name="agg_freq"> </pu_stat>
|
||||||
|
<pu_stat pu_stat_name="agg_fact"> </pu_stat>
|
||||||
|
<pu_stat pu_stat_name="cbet"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="cb1"> </pu_stat>
|
<pu_stat pu_stat_name="cb1"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="cb2"> </pu_stat>
|
<pu_stat pu_stat_name="cb2"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="cb3"> </pu_stat>
|
<pu_stat pu_stat_name="cb3"> </pu_stat>
|
||||||
|
|
|
@ -570,6 +570,9 @@ Left-Drag to Move"
|
||||||
<pu_stat pu_stat_name="a_freq2"> </pu_stat>
|
<pu_stat pu_stat_name="a_freq2"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="a_freq3"> </pu_stat>
|
<pu_stat pu_stat_name="a_freq3"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="a_freq4"> </pu_stat>
|
<pu_stat pu_stat_name="a_freq4"> </pu_stat>
|
||||||
|
<pu_stat pu_stat_name="agg_freq"> </pu_stat>
|
||||||
|
<pu_stat pu_stat_name="agg_fact"> </pu_stat>
|
||||||
|
<pu_stat pu_stat_name="cbet"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="cb1"> </pu_stat>
|
<pu_stat pu_stat_name="cb1"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="cb2"> </pu_stat>
|
<pu_stat pu_stat_name="cb2"> </pu_stat>
|
||||||
<pu_stat pu_stat_name="cb3"> </pu_stat>
|
<pu_stat pu_stat_name="cb3"> </pu_stat>
|
||||||
|
|
|
@ -345,7 +345,7 @@ For sites (currently only Carbon Poker) which record "all in" as a special actio
|
||||||
self.actions['BLINDSANTES'].append(act)
|
self.actions['BLINDSANTES'].append(act)
|
||||||
|
|
||||||
if blindtype == 'both':
|
if blindtype == 'both':
|
||||||
# work with the real ammount. limit games are listed as $1, $2, where
|
# work with the real amount. limit games are listed as $1, $2, where
|
||||||
# the SB 0.50 and the BB is $1, after the turn the minimum bet amount is $2....
|
# the SB 0.50 and the BB is $1, after the turn the minimum bet amount is $2....
|
||||||
amount = self.bb
|
amount = self.bb
|
||||||
self.bets['BLINDSANTES'][player].append(Decimal(self.sb))
|
self.bets['BLINDSANTES'][player].append(Decimal(self.sb))
|
||||||
|
|
|
@ -145,13 +145,12 @@ class PokerStars(HandHistoryConverter):
|
||||||
mg = m.groupdict()
|
mg = m.groupdict()
|
||||||
# translations from captured groups to fpdb info strings
|
# translations from captured groups to fpdb info strings
|
||||||
Lim_Blinds = { '0.04': ('0.01', '0.02'), '0.10': ('0.02', '0.05'), '0.20': ('0.05', '0.10'),
|
Lim_Blinds = { '0.04': ('0.01', '0.02'), '0.10': ('0.02', '0.05'), '0.20': ('0.05', '0.10'),
|
||||||
'0.50': ('0.10', '0.25'), '1.00': ('0.25', '0.50'), '2.00': ('0.50', '1.00'),
|
'0.40': ('0.10', '0.20'), '0.50': ('0.10', '0.25'), '1.00': ('0.25', '0.50'),
|
||||||
'2': ('0.50', '1.00'), '4': ('1.00', '2.00'), '6': ('1.00', '3.00'),
|
'2.00': ('0.50', '1.00'), '2': ('0.50', '1.00'), '4' : ('1.00', '2.00'),
|
||||||
'4.00': ('1.00', '2.00'), '6.00': ('1.00', '3.00'), '10.00': ('2.00', '5.00'),
|
'4.00': ('1.00', '2.00'), '6': ('1.00', '3.00'), '6.00': ('1.00', '3.00'),
|
||||||
'20.00': ('5.00', '10.00'), '30.00': ('10.00', '15.00'), '60.00': ('15.00', '30.00'),
|
'10.00': ('2.00', '5.00'), '20.00': ('5.00', '10.00'), '30.00': ('10.00', '15.00'),
|
||||||
'100.00': ('25.00', '50.00'),'200.00': ('50.00', '100.00'),'400.00': ('100.00', '200.00'),
|
'60.00': ('15.00', '30.00'), '100.00': ('25.00', '50.00'), '200.00': ('50.00', '100.00'),
|
||||||
'1000.00': ('250.00', '500.00')}
|
'400.00': ('100.00', '200.00'), '1000.00': ('250.00', '500.00')}
|
||||||
|
|
||||||
|
|
||||||
limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Limit':'fl', 'LIMIT':'fl' }
|
limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Limit':'fl', 'LIMIT':'fl' }
|
||||||
games = { # base, category
|
games = { # base, category
|
||||||
|
@ -196,7 +195,6 @@ class PokerStars(HandHistoryConverter):
|
||||||
log.error("determineGameType: Raising FpdbParseError")
|
log.error("determineGameType: Raising FpdbParseError")
|
||||||
raise FpdbParseError("Lim_Blinds has no lookup for '%s'" % mg['BB'])
|
raise FpdbParseError("Lim_Blinds has no lookup for '%s'" % mg['BB'])
|
||||||
|
|
||||||
# NB: SB, BB must be interpreted as blinds or bets depending on limit type.
|
|
||||||
return info
|
return info
|
||||||
|
|
||||||
def readHandInfo(self, hand):
|
def readHandInfo(self, hand):
|
||||||
|
|
276
pyfpdb/SQL.py
276
pyfpdb/SQL.py
|
@ -819,7 +819,6 @@ class Sql:
|
||||||
street2Raises INT,
|
street2Raises INT,
|
||||||
street3Raises INT,
|
street3Raises INT,
|
||||||
street4Raises INT,
|
street4Raises INT,
|
||||||
|
|
||||||
actionString REAL)
|
actionString REAL)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -1337,6 +1336,21 @@ class Sql:
|
||||||
sum(hc.street3CheckCallRaiseDone) AS ccr_3,
|
sum(hc.street3CheckCallRaiseDone) AS ccr_3,
|
||||||
sum(hc.street4CheckCallRaiseChance) AS ccr_opp_4,
|
sum(hc.street4CheckCallRaiseChance) AS ccr_opp_4,
|
||||||
sum(hc.street4CheckCallRaiseDone) AS ccr_4
|
sum(hc.street4CheckCallRaiseDone) AS ccr_4
|
||||||
|
sum(hc.street0Calls) AS call_0,
|
||||||
|
sum(hc.street1Calls) AS call_1,
|
||||||
|
sum(hc.street2Calls) AS call_2,
|
||||||
|
sum(hc.street3Calls) AS call_3,
|
||||||
|
sum(hc.street4Calls) AS call_4,
|
||||||
|
sum(hc.street0Bets) AS bet_0,
|
||||||
|
sum(hc.street1Bets) AS bet_1,
|
||||||
|
sum(hc.street2Bets) AS bet_2,
|
||||||
|
sum(hc.street3Bets) AS bet_3,
|
||||||
|
sum(hc.street4Bets) AS bet_4,
|
||||||
|
sum(hc.street0Raises) AS raise_0,
|
||||||
|
sum(hc.street1Raises) AS raise_1,
|
||||||
|
sum(hc.street2Raises) AS raise_2,
|
||||||
|
sum(hc.street3Raises) AS raise_3,
|
||||||
|
sum(hc.street4Raises) AS raise_4
|
||||||
FROM Hands h
|
FROM Hands h
|
||||||
INNER JOIN HandsPlayers hp ON (hp.handId = h.id)
|
INNER JOIN HandsPlayers hp ON (hp.handId = h.id)
|
||||||
INNER JOIN HudCache hc ON ( hc.PlayerId = hp.PlayerId+0
|
INNER JOIN HudCache hc ON ( hc.PlayerId = hp.PlayerId+0
|
||||||
|
@ -1420,7 +1434,22 @@ class Sql:
|
||||||
sum(hc.street3CheckCallRaiseChance) AS ccr_opp_3,
|
sum(hc.street3CheckCallRaiseChance) AS ccr_opp_3,
|
||||||
sum(hc.street3CheckCallRaiseDone) AS ccr_3,
|
sum(hc.street3CheckCallRaiseDone) AS ccr_3,
|
||||||
sum(hc.street4CheckCallRaiseChance) AS ccr_opp_4,
|
sum(hc.street4CheckCallRaiseChance) AS ccr_opp_4,
|
||||||
sum(hc.street4CheckCallRaiseDone) AS ccr_4
|
sum(hc.street4CheckCallRaiseDone) AS ccr_4,
|
||||||
|
sum(hc.street0Calls) AS call_0,
|
||||||
|
sum(hc.street1Calls) AS call_1,
|
||||||
|
sum(hc.street2Calls) AS call_2,
|
||||||
|
sum(hc.street3Calls) AS call_3,
|
||||||
|
sum(hc.street4Calls) AS call_4,
|
||||||
|
sum(hc.street0Bets) AS bet_0,
|
||||||
|
sum(hc.street1Bets) AS bet_1,
|
||||||
|
sum(hc.street2Bets) AS bet_2,
|
||||||
|
sum(hc.street3Bets) AS bet_3,
|
||||||
|
sum(hc.street4Bets) AS bet_4,
|
||||||
|
sum(hc.street0Raises) AS raise_0,
|
||||||
|
sum(hc.street1Raises) AS raise_1,
|
||||||
|
sum(hc.street2Raises) AS raise_2,
|
||||||
|
sum(hc.street3Raises) AS raise_3,
|
||||||
|
sum(hc.street4Raises) AS raise_4
|
||||||
FROM Hands h
|
FROM Hands h
|
||||||
INNER JOIN HandsPlayers hp ON (hp.handId = h.id)
|
INNER JOIN HandsPlayers hp ON (hp.handId = h.id)
|
||||||
INNER JOIN HudCache hc ON (hc.playerId = hp.playerId)
|
INNER JOIN HudCache hc ON (hc.playerId = hp.playerId)
|
||||||
|
@ -1531,7 +1560,22 @@ class Sql:
|
||||||
cast(hp2.street3CheckCallRaiseChance as <signed>integer) AS ccr_opp_3,
|
cast(hp2.street3CheckCallRaiseChance as <signed>integer) AS ccr_opp_3,
|
||||||
cast(hp2.street3CheckCallRaiseDone as <signed>integer) AS ccr_3,
|
cast(hp2.street3CheckCallRaiseDone as <signed>integer) AS ccr_3,
|
||||||
cast(hp2.street4CheckCallRaiseChance as <signed>integer) AS ccr_opp_4,
|
cast(hp2.street4CheckCallRaiseChance as <signed>integer) AS ccr_opp_4,
|
||||||
cast(hp2.street4CheckCallRaiseDone as <signed>integer) AS ccr_4
|
cast(hp2.street4CheckCallRaiseDone as <signed>integer) AS ccr_4,
|
||||||
|
cast(hp2.street0Calls as <signed>integer) AS call_0,
|
||||||
|
cast(hp2.street1Calls as <signed>integer) AS call_1,
|
||||||
|
cast(hp2.street2Calls as <signed>integer) AS call_2,
|
||||||
|
cast(hp2.street3Calls as <signed>integer) AS call_3,
|
||||||
|
cast(hp2.street4Calls as <signed>integer) AS call_4,
|
||||||
|
cast(hp2.street0Bets as <signed>integer) AS bet_0,
|
||||||
|
cast(hp2.street1Bets as <signed>integer) AS bet_1,
|
||||||
|
cast(hp2.street2Bets as <signed>integer) AS bet_2,
|
||||||
|
cast(hp2.street3Bets as <signed>integer) AS bet_3,
|
||||||
|
cast(hp2.street4Bets as <signed>integer) AS bet_4,
|
||||||
|
cast(hp2.street0Raises as <signed>integer) AS raise_0,
|
||||||
|
cast(hp2.street1Raises as <signed>integer) AS raise_1,
|
||||||
|
cast(hp2.street2Raises as <signed>integer) AS raise_2,
|
||||||
|
cast(hp2.street3Raises as <signed>integer) AS raise_3,
|
||||||
|
cast(hp2.street4Raises as <signed>integer) AS raise_4
|
||||||
FROM
|
FROM
|
||||||
Hands h
|
Hands h
|
||||||
INNER JOIN Hands h2 ON (h2.id > %s AND h2.tableName = h.tableName)
|
INNER JOIN Hands h2 ON (h2.id > %s AND h2.tableName = h.tableName)
|
||||||
|
@ -1618,7 +1662,22 @@ class Sql:
|
||||||
cast(hp2.street3CheckCallRaiseChance as <signed>integer) AS ccr_opp_3,
|
cast(hp2.street3CheckCallRaiseChance as <signed>integer) AS ccr_opp_3,
|
||||||
cast(hp2.street3CheckCallRaiseDone as <signed>integer) AS ccr_3,
|
cast(hp2.street3CheckCallRaiseDone as <signed>integer) AS ccr_3,
|
||||||
cast(hp2.street4CheckCallRaiseChance as <signed>integer) AS ccr_opp_4,
|
cast(hp2.street4CheckCallRaiseChance as <signed>integer) AS ccr_opp_4,
|
||||||
cast(hp2.street4CheckCallRaiseDone as <signed>integer) AS ccr_4
|
cast(hp2.street4CheckCallRaiseDone as <signed>integer) AS ccr_4,
|
||||||
|
cast(hp2.street0Calls as <signed>integer) AS call_0,
|
||||||
|
cast(hp2.street1Calls as <signed>integer) AS call_1,
|
||||||
|
cast(hp2.street2Calls as <signed>integer) AS call_2,
|
||||||
|
cast(hp2.street3Calls as <signed>integer) AS call_3,
|
||||||
|
cast(hp2.street4Calls as <signed>integer) AS call_4,
|
||||||
|
cast(hp2.street0Bets as <signed>integer) AS bet_0,
|
||||||
|
cast(hp2.street1Bets as <signed>integer) AS bet_1,
|
||||||
|
cast(hp2.street2Bets as <signed>integer) AS bet_2,
|
||||||
|
cast(hp2.street3Bets as <signed>integer) AS bet_3,
|
||||||
|
cast(hp2.street4Bets as <signed>integer) AS bet_4,
|
||||||
|
cast(hp2.street0Raises as <signed>integer) AS raise_0,
|
||||||
|
cast(hp2.street1Raises as <signed>integer) AS raise_1,
|
||||||
|
cast(hp2.street2Raises as <signed>integer) AS raise_2,
|
||||||
|
cast(hp2.street3Raises as <signed>integer) AS raise_3,
|
||||||
|
cast(hp2.street4Raises as <signed>integer) AS raise_4
|
||||||
FROM Hands h /* this hand */
|
FROM Hands h /* this hand */
|
||||||
INNER JOIN Hands h2 ON ( h2.id > %s /* other hands */
|
INNER JOIN Hands h2 ON ( h2.id > %s /* other hands */
|
||||||
AND h2.tableName = h.tableName)
|
AND h2.tableName = h.tableName)
|
||||||
|
@ -1706,7 +1765,22 @@ class Sql:
|
||||||
cast(hp2.street3CheckCallRaiseChance as <signed>integer) AS ccr_opp_3,
|
cast(hp2.street3CheckCallRaiseChance as <signed>integer) AS ccr_opp_3,
|
||||||
cast(hp2.street3CheckCallRaiseDone as <signed>integer) AS ccr_3,
|
cast(hp2.street3CheckCallRaiseDone as <signed>integer) AS ccr_3,
|
||||||
cast(hp2.street4CheckCallRaiseChance as <signed>integer) AS ccr_opp_4,
|
cast(hp2.street4CheckCallRaiseChance as <signed>integer) AS ccr_opp_4,
|
||||||
cast(hp2.street4CheckCallRaiseDone as <signed>integer) AS ccr_4
|
cast(hp2.street4CheckCallRaiseDone as <signed>integer) AS ccr_4,
|
||||||
|
cast(hp2.street0Calls as <signed>integer) AS call_0,
|
||||||
|
cast(hp2.street1Calls as <signed>integer) AS call_1,
|
||||||
|
cast(hp2.street2Calls as <signed>integer) AS call_2,
|
||||||
|
cast(hp2.street3Calls as <signed>integer) AS call_3,
|
||||||
|
cast(hp2.street4Calls as <signed>integer) AS call_4,
|
||||||
|
cast(hp2.street0Bets as <signed>integer) AS bet_0,
|
||||||
|
cast(hp2.street1Bets as <signed>integer) AS bet_1,
|
||||||
|
cast(hp2.street2Bets as <signed>integer) AS bet_2,
|
||||||
|
cast(hp2.street3Bets as <signed>integer) AS bet_3,
|
||||||
|
cast(hp2.street4Bets as <signed>integer) AS bet_4,
|
||||||
|
cast(hp2.street0Raises as <signed>integer) AS raise_0,
|
||||||
|
cast(hp2.street1Raises as <signed>integer) AS raise_1,
|
||||||
|
cast(hp2.street2Raises as <signed>integer) AS raise_2,
|
||||||
|
cast(hp2.street3Raises as <signed>integer) AS raise_3,
|
||||||
|
cast(hp2.street4Raises as <signed>integer) AS raise_4
|
||||||
FROM Hands h /* this hand */
|
FROM Hands h /* this hand */
|
||||||
INNER JOIN Hands h2 ON ( h2.id > %s /* other hands */
|
INNER JOIN Hands h2 ON ( h2.id > %s /* other hands */
|
||||||
AND h2.tableName = h.tableName)
|
AND h2.tableName = h.tableName)
|
||||||
|
@ -1913,6 +1987,18 @@ class Sql:
|
||||||
else 100.0*(sum(cast(hp.street1Aggr as <signed>integer))+sum(cast(hp.street2Aggr as <signed>integer))+sum(cast(hp.street3Aggr as <signed>integer)))
|
else 100.0*(sum(cast(hp.street1Aggr as <signed>integer))+sum(cast(hp.street2Aggr as <signed>integer))+sum(cast(hp.street3Aggr as <signed>integer)))
|
||||||
/(sum(cast(hp.street1Seen as <signed>integer))+sum(cast(hp.street2Seen as <signed>integer))+sum(cast(hp.street3Seen as <signed>integer)))
|
/(sum(cast(hp.street1Seen as <signed>integer))+sum(cast(hp.street2Seen as <signed>integer))+sum(cast(hp.street3Seen as <signed>integer)))
|
||||||
end AS pofafq
|
end AS pofafq
|
||||||
|
,case when sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)) = 0 then -999
|
||||||
|
else (sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
|
||||||
|
/(sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)))
|
||||||
|
end AS aggfac
|
||||||
|
,100.0*(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
|
||||||
|
/ ((sum(cast(hp.foldToOtherRaisedStreet1 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet2 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet3 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet4 as <signed>integer))) +
|
||||||
|
(sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer))) +
|
||||||
|
(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer))) )
|
||||||
|
AS aggfrq
|
||||||
|
,100.0*(sum(cast(hp.street1CBDone as <signed>integer)) + sum(cast(hp.street2CBDone as <signed>integer)) + sum(cast(hp.street2CBDone as <signed>integer)) + sum(cast(hp.street4CBDone as <signed>integer)))
|
||||||
|
/ (sum(cast(hp.street1CBChance as <signed>integer))+ sum(cast(hp.street2CBChance as <signed>integer))+ sum(cast(hp.street3CBChance as <signed>integer))+ sum(cast(hp.street4CBChance as <signed>integer)))
|
||||||
|
AS conbet
|
||||||
,sum(hp.totalProfit)/100.0 AS net
|
,sum(hp.totalProfit)/100.0 AS net
|
||||||
,sum(hp.rake)/100.0 AS rake
|
,sum(hp.rake)/100.0 AS rake
|
||||||
,100.0*avg(hp.totalProfit/(gt.bigBlind+0.0)) AS bbper100
|
,100.0*avg(hp.totalProfit/(gt.bigBlind+0.0)) AS bbper100
|
||||||
|
@ -1998,6 +2084,18 @@ class Sql:
|
||||||
else 100.0*(sum(cast(hp.street1Aggr as <signed>integer))+sum(cast(hp.street2Aggr as <signed>integer))+sum(cast(hp.street3Aggr as <signed>integer)))
|
else 100.0*(sum(cast(hp.street1Aggr as <signed>integer))+sum(cast(hp.street2Aggr as <signed>integer))+sum(cast(hp.street3Aggr as <signed>integer)))
|
||||||
/(sum(cast(hp.street1Seen as <signed>integer))+sum(cast(hp.street2Seen as <signed>integer))+sum(cast(hp.street3Seen as <signed>integer)))
|
/(sum(cast(hp.street1Seen as <signed>integer))+sum(cast(hp.street2Seen as <signed>integer))+sum(cast(hp.street3Seen as <signed>integer)))
|
||||||
end AS pofafq
|
end AS pofafq
|
||||||
|
,case when sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)) = 0 then -999
|
||||||
|
else (sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
|
||||||
|
/(sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)))
|
||||||
|
end AS aggfac
|
||||||
|
,100.0*(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
|
||||||
|
/ ((sum(cast(hp.foldToOtherRaisedStreet1 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet2 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet3 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet4 as <signed>integer))) +
|
||||||
|
(sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer))) +
|
||||||
|
(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer))) )
|
||||||
|
AS aggfrq
|
||||||
|
,100.0*(sum(cast(hp.street1CBDone as <signed>integer)) + sum(cast(hp.street2CBDone as <signed>integer)) + sum(cast(hp.street2CBDone as <signed>integer)) + sum(cast(hp.street4CBDone as <signed>integer)))
|
||||||
|
/ (sum(cast(hp.street1CBChance as <signed>integer))+ sum(cast(hp.street2CBChance as <signed>integer))+ sum(cast(hp.street3CBChance as <signed>integer))+ sum(cast(hp.street4CBChance as <signed>integer)))
|
||||||
|
AS conbet
|
||||||
,sum(hp.totalProfit)/100.0 AS net
|
,sum(hp.totalProfit)/100.0 AS net
|
||||||
,sum(hp.rake)/100.0 AS rake
|
,sum(hp.rake)/100.0 AS rake
|
||||||
,100.0*avg(hp.totalProfit/(gt.bigBlind+0.0)) AS bbper100
|
,100.0*avg(hp.totalProfit/(gt.bigBlind+0.0)) AS bbper100
|
||||||
|
@ -2084,6 +2182,18 @@ class Sql:
|
||||||
else 100.0*(sum(cast(hp.street1Aggr as <signed>integer))+sum(cast(hp.street2Aggr as <signed>integer))+sum(cast(hp.street3Aggr as <signed>integer)))
|
else 100.0*(sum(cast(hp.street1Aggr as <signed>integer))+sum(cast(hp.street2Aggr as <signed>integer))+sum(cast(hp.street3Aggr as <signed>integer)))
|
||||||
/(sum(cast(hp.street1Seen as <signed>integer))+sum(cast(hp.street2Seen as <signed>integer))+sum(cast(hp.street3Seen as <signed>integer)))
|
/(sum(cast(hp.street1Seen as <signed>integer))+sum(cast(hp.street2Seen as <signed>integer))+sum(cast(hp.street3Seen as <signed>integer)))
|
||||||
end AS pofafq
|
end AS pofafq
|
||||||
|
,case when sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)) = 0 then -999
|
||||||
|
else (sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
|
||||||
|
/(sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer)))
|
||||||
|
end AS aggfac
|
||||||
|
,100.0*(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer)))
|
||||||
|
/ ((sum(cast(hp.foldToOtherRaisedStreet1 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet2 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet3 as <signed>integer))+ sum(cast(hp.foldToOtherRaisedStreet4 as <signed>integer))) +
|
||||||
|
(sum(cast(hp.street1Calls as <signed>integer))+ sum(cast(hp.street2Calls as <signed>integer))+ sum(cast(hp.street3Calls as <signed>integer))+ sum(cast(hp.street4Calls as <signed>integer))) +
|
||||||
|
(sum(cast(hp.street1Aggr as <signed>integer)) + sum(cast(hp.street2Aggr as <signed>integer)) + sum(cast(hp.street3Aggr as <signed>integer)) + sum(cast(hp.street4Aggr as <signed>integer))) )
|
||||||
|
AS aggfrq
|
||||||
|
,100.0*(sum(cast(hp.street1CBDone as <signed>integer)) + sum(cast(hp.street2CBDone as <signed>integer)) + sum(cast(hp.street2CBDone as <signed>integer)) + sum(cast(hp.street4CBDone as <signed>integer)))
|
||||||
|
/ (sum(cast(hp.street1CBChance as <signed>integer))+ sum(cast(hp.street2CBChance as <signed>integer))+ sum(cast(hp.street3CBChance as <signed>integer))+ sum(cast(hp.street4CBChance as <signed>integer)))
|
||||||
|
AS conbet
|
||||||
,sum(hp.totalProfit)/100.0 AS net
|
,sum(hp.totalProfit)/100.0 AS net
|
||||||
,sum(hp.rake)/100.0 AS rake
|
,sum(hp.rake)/100.0 AS rake
|
||||||
,100.0*avg(hp.totalProfit/(gt.bigBlind+0.0)) AS bbper100
|
,100.0*avg(hp.totalProfit/(gt.bigBlind+0.0)) AS bbper100
|
||||||
|
@ -2632,24 +2742,6 @@ class Sql:
|
||||||
GROUP BY h.handStart, hp.handId, hp.sawShowdown, hp.totalProfit
|
GROUP BY h.handStart, hp.handId, hp.sawShowdown, hp.totalProfit
|
||||||
ORDER BY h.handStart"""
|
ORDER BY h.handStart"""
|
||||||
|
|
||||||
####################################
|
|
||||||
# Session stats query
|
|
||||||
####################################
|
|
||||||
if db_server == 'mysql':
|
|
||||||
self.query['sessionStats'] = """
|
|
||||||
SELECT UNIX_TIMESTAMP(h.handStart) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit
|
|
||||||
FROM HandsPlayers hp
|
|
||||||
INNER JOIN Players pl ON (pl.id = hp.playerId)
|
|
||||||
INNER JOIN Hands h ON (h.id = hp.handId)
|
|
||||||
INNER JOIN Gametypes gt ON (gt.id = h.gametypeId)
|
|
||||||
WHERE pl.id in <player_test>
|
|
||||||
AND pl.siteId in <site_test>
|
|
||||||
AND h.handStart > '<startdate_test>'
|
|
||||||
AND h.handStart < '<enddate_test>'
|
|
||||||
<limit_test>
|
|
||||||
AND hp.tourneysPlayersId IS NULL
|
|
||||||
GROUP BY h.handStart, hp.handId, hp.totalProfit
|
|
||||||
ORDER BY h.handStart"""
|
|
||||||
|
|
||||||
####################################
|
####################################
|
||||||
# Session stats query
|
# Session stats query
|
||||||
|
@ -2664,6 +2756,7 @@ class Sql:
|
||||||
INNER JOIN Players p on (p.Id = hp.playerId)
|
INNER JOIN Players p on (p.Id = hp.playerId)
|
||||||
WHERE hp.playerId in <player_test>
|
WHERE hp.playerId in <player_test>
|
||||||
AND date_format(h.handStart, '%Y-%m-%d') <datestest>
|
AND date_format(h.handStart, '%Y-%m-%d') <datestest>
|
||||||
|
AND hp.tourneysPlayersId IS NULL
|
||||||
ORDER by time"""
|
ORDER by time"""
|
||||||
elif db_server == 'postgresql':
|
elif db_server == 'postgresql':
|
||||||
self.query['sessionStats'] = """
|
self.query['sessionStats'] = """
|
||||||
|
@ -2675,6 +2768,7 @@ class Sql:
|
||||||
INNER JOIN Players p on (p.Id = hp.playerId)
|
INNER JOIN Players p on (p.Id = hp.playerId)
|
||||||
WHERE hp.playerId in <player_test>
|
WHERE hp.playerId in <player_test>
|
||||||
AND h.handStart <datestest>
|
AND h.handStart <datestest>
|
||||||
|
AND hp.tourneysPlayersId IS NULL
|
||||||
ORDER by time"""
|
ORDER by time"""
|
||||||
elif db_server == 'sqlite':
|
elif db_server == 'sqlite':
|
||||||
self.query['sessionStats'] = """
|
self.query['sessionStats'] = """
|
||||||
|
@ -2686,6 +2780,7 @@ class Sql:
|
||||||
INNER JOIN Players p on (p.Id = hp.playerId)
|
INNER JOIN Players p on (p.Id = hp.playerId)
|
||||||
WHERE hp.playerId in <player_test>
|
WHERE hp.playerId in <player_test>
|
||||||
AND h.handStart <datestest>
|
AND h.handStart <datestest>
|
||||||
|
AND hp.tourneysPlayersId IS NULL
|
||||||
ORDER by time"""
|
ORDER by time"""
|
||||||
|
|
||||||
|
|
||||||
|
@ -2759,6 +2854,21 @@ class Sql:
|
||||||
,street3CheckCallRaiseDone
|
,street3CheckCallRaiseDone
|
||||||
,street4CheckCallRaiseChance
|
,street4CheckCallRaiseChance
|
||||||
,street4CheckCallRaiseDone
|
,street4CheckCallRaiseDone
|
||||||
|
,street0Calls
|
||||||
|
,street1Calls
|
||||||
|
,street2Calls
|
||||||
|
,street3Calls
|
||||||
|
,street4Calls
|
||||||
|
,street0Bets
|
||||||
|
,street1Bets
|
||||||
|
,street2Bets
|
||||||
|
,street3Bets
|
||||||
|
,street4Bets
|
||||||
|
,street0Raises
|
||||||
|
,street1Raises
|
||||||
|
,street2Raises
|
||||||
|
,street3Raises
|
||||||
|
,street4Raises
|
||||||
)
|
)
|
||||||
SELECT h.gametypeId
|
SELECT h.gametypeId
|
||||||
,hp.playerId
|
,hp.playerId
|
||||||
|
@ -2834,6 +2944,21 @@ class Sql:
|
||||||
,sum(street3CheckCallRaiseDone)
|
,sum(street3CheckCallRaiseDone)
|
||||||
,sum(street4CheckCallRaiseChance)
|
,sum(street4CheckCallRaiseChance)
|
||||||
,sum(street4CheckCallRaiseDone)
|
,sum(street4CheckCallRaiseDone)
|
||||||
|
,sum(street0Calls)
|
||||||
|
,sum(street1Calls)
|
||||||
|
,sum(street2Calls)
|
||||||
|
,sum(street3Calls)
|
||||||
|
,sum(street4Calls)
|
||||||
|
,sum(street0Bets)
|
||||||
|
,sum(street1Bets)
|
||||||
|
,sum(street2Bets)
|
||||||
|
,sum(street3Bets)
|
||||||
|
,sum(street4Bets)
|
||||||
|
,sum(hp.street0Raises)
|
||||||
|
,sum(hp.street1Raises)
|
||||||
|
,sum(hp.street2Raises)
|
||||||
|
,sum(hp.street3Raises)
|
||||||
|
,sum(hp.street4Raises)
|
||||||
FROM HandsPlayers hp
|
FROM HandsPlayers hp
|
||||||
INNER JOIN Hands h ON (h.id = hp.handId)
|
INNER JOIN Hands h ON (h.id = hp.handId)
|
||||||
<where_clause>
|
<where_clause>
|
||||||
|
@ -2908,6 +3033,21 @@ class Sql:
|
||||||
,street3CheckCallRaiseDone
|
,street3CheckCallRaiseDone
|
||||||
,street4CheckCallRaiseChance
|
,street4CheckCallRaiseChance
|
||||||
,street4CheckCallRaiseDone
|
,street4CheckCallRaiseDone
|
||||||
|
,street0Calls
|
||||||
|
,street1Calls
|
||||||
|
,street2Calls
|
||||||
|
,street3Calls
|
||||||
|
,street4Calls
|
||||||
|
,street0Bets
|
||||||
|
,street1Bets
|
||||||
|
,street2Bets
|
||||||
|
,street3Bets
|
||||||
|
,street4Bets
|
||||||
|
,street0Raises
|
||||||
|
,street1Raises
|
||||||
|
,street2Raises
|
||||||
|
,street3Raises
|
||||||
|
,street4Raises
|
||||||
)
|
)
|
||||||
SELECT h.gametypeId
|
SELECT h.gametypeId
|
||||||
,hp.playerId
|
,hp.playerId
|
||||||
|
@ -2983,6 +3123,21 @@ class Sql:
|
||||||
,sum(CAST(street3CheckCallRaiseDone as integer))
|
,sum(CAST(street3CheckCallRaiseDone as integer))
|
||||||
,sum(CAST(street4CheckCallRaiseChance as integer))
|
,sum(CAST(street4CheckCallRaiseChance as integer))
|
||||||
,sum(CAST(street4CheckCallRaiseDone as integer))
|
,sum(CAST(street4CheckCallRaiseDone as integer))
|
||||||
|
,sum(CAST(street0Calls as integer))
|
||||||
|
,sum(CAST(street1Calls as integer))
|
||||||
|
,sum(CAST(street2Calls as integer))
|
||||||
|
,sum(CAST(street3Calls as integer))
|
||||||
|
,sum(CAST(street4Calls as integer))
|
||||||
|
,sum(CAST(street0Bets as integer))
|
||||||
|
,sum(CAST(street1Bets as integer))
|
||||||
|
,sum(CAST(street2Bets as integer))
|
||||||
|
,sum(CAST(street3Bets as integer))
|
||||||
|
,sum(CAST(street4Bets as integer))
|
||||||
|
,sum(CAST(hp.street0Raises as integer))
|
||||||
|
,sum(CAST(hp.street1Raises as integer))
|
||||||
|
,sum(CAST(hp.street2Raises as integer))
|
||||||
|
,sum(CAST(hp.street3Raises as integer))
|
||||||
|
,sum(CAST(hp.street4Raises as integer))
|
||||||
FROM HandsPlayers hp
|
FROM HandsPlayers hp
|
||||||
INNER JOIN Hands h ON (h.id = hp.handId)
|
INNER JOIN Hands h ON (h.id = hp.handId)
|
||||||
<where_clause>
|
<where_clause>
|
||||||
|
@ -3057,6 +3212,21 @@ class Sql:
|
||||||
,street3CheckCallRaiseDone
|
,street3CheckCallRaiseDone
|
||||||
,street4CheckCallRaiseChance
|
,street4CheckCallRaiseChance
|
||||||
,street4CheckCallRaiseDone
|
,street4CheckCallRaiseDone
|
||||||
|
,street0Calls
|
||||||
|
,street1Calls
|
||||||
|
,street2Calls
|
||||||
|
,street3Calls
|
||||||
|
,street4Calls
|
||||||
|
,street0Bets
|
||||||
|
,street1Bets
|
||||||
|
,street2Bets
|
||||||
|
,street3Bets
|
||||||
|
,street4Bets
|
||||||
|
,street0Raises
|
||||||
|
,street1Raises
|
||||||
|
,street2Raises
|
||||||
|
,street3Raises
|
||||||
|
,street4Raises
|
||||||
)
|
)
|
||||||
SELECT h.gametypeId
|
SELECT h.gametypeId
|
||||||
,hp.playerId
|
,hp.playerId
|
||||||
|
@ -3132,6 +3302,21 @@ class Sql:
|
||||||
,sum(CAST(street3CheckCallRaiseDone as integer))
|
,sum(CAST(street3CheckCallRaiseDone as integer))
|
||||||
,sum(CAST(street4CheckCallRaiseChance as integer))
|
,sum(CAST(street4CheckCallRaiseChance as integer))
|
||||||
,sum(CAST(street4CheckCallRaiseDone as integer))
|
,sum(CAST(street4CheckCallRaiseDone as integer))
|
||||||
|
,sum(CAST(street0Calls as integer))
|
||||||
|
,sum(CAST(street1Calls as integer))
|
||||||
|
,sum(CAST(street2Calls as integer))
|
||||||
|
,sum(CAST(street3Calls as integer))
|
||||||
|
,sum(CAST(street4Calls as integer))
|
||||||
|
,sum(CAST(street0Bets as integer))
|
||||||
|
,sum(CAST(street1Bets as integer))
|
||||||
|
,sum(CAST(street2Bets as integer))
|
||||||
|
,sum(CAST(street3Bets as integer))
|
||||||
|
,sum(CAST(street4Bets as integer))
|
||||||
|
,sum(CAST(hp.street0Raises as integer))
|
||||||
|
,sum(CAST(hp.street1Raises as integer))
|
||||||
|
,sum(CAST(hp.street2Raises as integer))
|
||||||
|
,sum(CAST(hp.street3Raises as integer))
|
||||||
|
,sum(CAST(hp.street4Raises as integer))
|
||||||
FROM HandsPlayers hp
|
FROM HandsPlayers hp
|
||||||
INNER JOIN Hands h ON (h.id = hp.handId)
|
INNER JOIN Hands h ON (h.id = hp.handId)
|
||||||
<where_clause>
|
<where_clause>
|
||||||
|
@ -3205,7 +3390,22 @@ class Sql:
|
||||||
street3CheckCallRaiseChance,
|
street3CheckCallRaiseChance,
|
||||||
street3CheckCallRaiseDone,
|
street3CheckCallRaiseDone,
|
||||||
street4CheckCallRaiseChance,
|
street4CheckCallRaiseChance,
|
||||||
street4CheckCallRaiseDone)
|
street4CheckCallRaiseDone,
|
||||||
|
street0Calls,
|
||||||
|
street1Calls,
|
||||||
|
street2Calls,
|
||||||
|
street3Calls,
|
||||||
|
street4Calls,
|
||||||
|
street0Bets,
|
||||||
|
street1Bets,
|
||||||
|
street2Bets,
|
||||||
|
street3Bets,
|
||||||
|
street4Bets,
|
||||||
|
street0Raises,
|
||||||
|
street1Raises,
|
||||||
|
street2Raises,
|
||||||
|
street3Raises,
|
||||||
|
street4Raises)
|
||||||
VALUES (%s, %s, %s, %s, %s,
|
VALUES (%s, %s, %s, %s, %s,
|
||||||
%s, %s, %s, %s, %s,
|
%s, %s, %s, %s, %s,
|
||||||
%s, %s, %s, %s, %s,
|
%s, %s, %s, %s, %s,
|
||||||
|
@ -3218,6 +3418,9 @@ class Sql:
|
||||||
%s, %s, %s, %s, %s,
|
%s, %s, %s, %s, %s,
|
||||||
%s, %s, %s, %s, %s,
|
%s, %s, %s, %s, %s,
|
||||||
%s, %s, %s, %s, %s,
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
%s)"""
|
%s)"""
|
||||||
|
|
||||||
self.query['update_hudcache'] = """
|
self.query['update_hudcache'] = """
|
||||||
|
@ -3276,7 +3479,22 @@ class Sql:
|
||||||
street3CheckCallRaiseChance=street3CheckCallRaiseChance+%s,
|
street3CheckCallRaiseChance=street3CheckCallRaiseChance+%s,
|
||||||
street3CheckCallRaiseDone=street3CheckCallRaiseDone+%s,
|
street3CheckCallRaiseDone=street3CheckCallRaiseDone+%s,
|
||||||
street4CheckCallRaiseChance=street4CheckCallRaiseChance+%s,
|
street4CheckCallRaiseChance=street4CheckCallRaiseChance+%s,
|
||||||
street4CheckCallRaiseDone=street4CheckCallRaiseDone+%s
|
street4CheckCallRaiseDone=street4CheckCallRaiseDone+%s,
|
||||||
|
street0Calls=street0Calls+%s,
|
||||||
|
street1Calls=street1Calls+%s,
|
||||||
|
street2Calls=street2Calls+%s,
|
||||||
|
street3Calls=street3Calls+%s,
|
||||||
|
street4Calls=street4Calls+%s,
|
||||||
|
street0Bets=street0Bets+%s,
|
||||||
|
street1Bets=street1Bets+%s,
|
||||||
|
street2Bets=street2Bets+%s,
|
||||||
|
street3Bets=street3Bets+%s,
|
||||||
|
street4Bets=street4Bets+%s,
|
||||||
|
street0Raises=street0Raises+%s,
|
||||||
|
street1Raises=street1Raises+%s,
|
||||||
|
street2Raises=street2Raises+%s,
|
||||||
|
street3Raises=street3Raises+%s,
|
||||||
|
street4Raises=street4Raises+%s
|
||||||
WHERE gametypeId+0=%s
|
WHERE gametypeId+0=%s
|
||||||
AND playerId=%s
|
AND playerId=%s
|
||||||
AND activeSeats=%s
|
AND activeSeats=%s
|
||||||
|
@ -3602,7 +3820,12 @@ class Sql:
|
||||||
street3CheckCallRaiseChance,
|
street3CheckCallRaiseChance,
|
||||||
street3CheckCallRaiseDone,
|
street3CheckCallRaiseDone,
|
||||||
street4CheckCallRaiseChance,
|
street4CheckCallRaiseChance,
|
||||||
street4CheckCallRaiseDone
|
street4CheckCallRaiseDone,
|
||||||
|
street0Raises,
|
||||||
|
street1Raises,
|
||||||
|
street2Raises,
|
||||||
|
street3Raises,
|
||||||
|
street4Raises
|
||||||
)
|
)
|
||||||
VALUES (
|
VALUES (
|
||||||
%s, %s, %s, %s, %s,
|
%s, %s, %s, %s, %s,
|
||||||
|
@ -3620,6 +3843,7 @@ class Sql:
|
||||||
%s, %s, %s, %s, %s,
|
%s, %s, %s, %s, %s,
|
||||||
%s, %s, %s, %s, %s,
|
%s, %s, %s, %s, %s,
|
||||||
%s, %s, %s, %s, %s,
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
%s, %s, %s, %s, %s
|
%s, %s, %s, %s, %s
|
||||||
)"""
|
)"""
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""Manage collecting and formatting of stats and tooltips.
|
"""Manage collecting and formatting of stats and tooltips.
|
||||||
"""
|
"""
|
||||||
|
@ -114,7 +115,7 @@ def playername(stat_dict, player):
|
||||||
stat_dict[player]['screen_name'])
|
stat_dict[player]['screen_name'])
|
||||||
|
|
||||||
def vpip(stat_dict, player):
|
def vpip(stat_dict, player):
|
||||||
""" Voluntarily put $ in the pot."""
|
""" Voluntarily put $ in the pot pre-flop."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
stat = float(stat_dict[player]['vpip'])/float(stat_dict[player]['n'])
|
stat = float(stat_dict[player]['vpip'])/float(stat_dict[player]['n'])
|
||||||
|
@ -123,14 +124,14 @@ def vpip(stat_dict, player):
|
||||||
'v=%3.1f' % (100*stat) + '%',
|
'v=%3.1f' % (100*stat) + '%',
|
||||||
'vpip=%3.1f' % (100*stat) + '%',
|
'vpip=%3.1f' % (100*stat) + '%',
|
||||||
'(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']),
|
'(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']),
|
||||||
'Voluntarily Put In Pot %'
|
'Voluntarily Put In Pot Pre-Flop%'
|
||||||
)
|
)
|
||||||
except: return (stat,
|
except: return (stat,
|
||||||
'%3.1f' % (0) + '%',
|
'%3.1f' % (0) + '%',
|
||||||
'v=%3.1f' % (0) + '%',
|
'v=%3.1f' % (0) + '%',
|
||||||
'vpip=%3.1f' % (0) + '%',
|
'vpip=%3.1f' % (0) + '%',
|
||||||
'(%d/%d)' % (0, 0),
|
'(%d/%d)' % (0, 0),
|
||||||
'Voluntarily Put In Pot %'
|
'Voluntarily Put In Pot Pre-Flop%'
|
||||||
)
|
)
|
||||||
|
|
||||||
def pfr(stat_dict, player):
|
def pfr(stat_dict, player):
|
||||||
|
@ -504,6 +505,91 @@ def a_freq_123(stat_dict, player):
|
||||||
'Post-Flop Aggression Freq'
|
'Post-Flop Aggression Freq'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def agg_freq(stat_dict, player):
|
||||||
|
""" Post-Flop aggression frequency."""
|
||||||
|
""" Aggression frequency % = (times bet or raised post-flop) * 100 / (times bet, raised, called, or folded post-flop) """
|
||||||
|
stat = 0.0
|
||||||
|
try:
|
||||||
|
""" Agression on the flop and all streets """
|
||||||
|
bet_raise = stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3'] + stat_dict[player]['aggr_4']
|
||||||
|
""" number post flop streets seen, this must be number of post-flop calls !! """
|
||||||
|
post_call = stat_dict[player]['call_1'] + stat_dict[player]['call_2'] + stat_dict[player]['call_3'] + stat_dict[player]['call_4']
|
||||||
|
""" Number of post flop folds this info is not yet in the database """
|
||||||
|
post_fold = stat_dict[player]['f_freq_1'] + stat_dict[player]['f_freq_2'] + stat_dict[player]['f_freq_3'] + stat_dict[player]['f_freq_4']
|
||||||
|
|
||||||
|
stat = float (bet_raise) / float(post_call + post_fold + bet_raise)
|
||||||
|
|
||||||
|
return (stat,
|
||||||
|
'%3.1f' % (100*stat) + '%',
|
||||||
|
'afr=%3.1f' % (100*stat) + '%',
|
||||||
|
'agg_fr=%3.1f' % (100*stat) + '%',
|
||||||
|
'(%d/%d)' % (bet_raise, (post_call + post_fold + bet_raise)),
|
||||||
|
'Aggression Freq'
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
return (stat,
|
||||||
|
'%2.1f' % (0) + '%',
|
||||||
|
'af=%3.1f' % (0) + '%',
|
||||||
|
'agg_f=%3.1f' % (0) + '%',
|
||||||
|
'(%d/%d)' % (0, 0),
|
||||||
|
'Aggression Freq'
|
||||||
|
)
|
||||||
|
|
||||||
|
def agg_fact(stat_dict, player):
|
||||||
|
""" Post-Flop aggression frequency."""
|
||||||
|
""" Aggression factor = (times bet or raised post-flop) / (times called post-flop) """
|
||||||
|
stat = 0.0
|
||||||
|
try:
|
||||||
|
bet_raise = stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3'] + stat_dict[player]['aggr_4']
|
||||||
|
post_call = stat_dict[player]['call_1'] + stat_dict[player]['call_2'] + stat_dict[player]['call_3'] + stat_dict[player]['call_4']
|
||||||
|
|
||||||
|
if post_call > 0:
|
||||||
|
stat = float (bet_raise) / float(post_call)
|
||||||
|
else:
|
||||||
|
stat = float (bet_raise)
|
||||||
|
return (stat,
|
||||||
|
'%2.2f' % (stat) ,
|
||||||
|
'afa=%2.2f' % (stat) ,
|
||||||
|
'agg_fa=%2.2f' % (stat) ,
|
||||||
|
'(%d/%d)' % (bet_raise, post_call),
|
||||||
|
'Aggression Factor'
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
return (stat,
|
||||||
|
'%2.2f' % (0) ,
|
||||||
|
'afa=%2.2f' % (0) ,
|
||||||
|
'agg_fa=%2.2f' % (0),
|
||||||
|
'(%d/%d)' % (0, 0),
|
||||||
|
'Aggression Factor'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def cbet(stat_dict, player):
|
||||||
|
|
||||||
|
""" Flop continuation bet."""
|
||||||
|
""" Continuation bet % = (times made a continuation bet on the flop) * 100 / (number of opportunities to make a continuation bet on the flop) """
|
||||||
|
|
||||||
|
stat = 0.0
|
||||||
|
try:
|
||||||
|
cbets = stat_dict[player]['cb_1']+stat_dict[player]['cb_2']+stat_dict[player]['cb_3']+stat_dict[player]['cb_4']
|
||||||
|
oppt = stat_dict[player]['cb_opp_1']+stat_dict[player]['cb_opp_2']+stat_dict[player]['cb_opp_3']+stat_dict[player]['cb_opp_4']
|
||||||
|
stat = float(cbets)/float(oppt)
|
||||||
|
return (stat,
|
||||||
|
'%3.1f' % (100*stat) + '%',
|
||||||
|
'cbet=%3.1f' % (100*stat) + '%',
|
||||||
|
'cbet=%3.1f' % (100*stat) + '%',
|
||||||
|
'(%d/%d)' % (cbets, oppt),
|
||||||
|
'% continuation bet '
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
return (stat,
|
||||||
|
'%3.1f' % (0) + '%',
|
||||||
|
'cbet=%3.1f' % (0) + '%',
|
||||||
|
'cbet=%3.1f' % (0) + '%',
|
||||||
|
'(%d/%d)' % (0, 0),
|
||||||
|
'% continuation bet '
|
||||||
|
)
|
||||||
|
|
||||||
def cb1(stat_dict, player):
|
def cb1(stat_dict, player):
|
||||||
""" Flop continuation bet."""
|
""" Flop continuation bet."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
#Copyright 2008 Steffen Jobbagy-Felso
|
|
||||||
#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 in the docs folder of the package.
|
|
||||||
|
|
||||||
|
|
||||||
# Users should run fpdb.pyw now, this is included in case they still try to run fpdb.py
|
|
||||||
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
#print "fpdb.py has now been renamed to fpdb.pyw - calling fpdb.pyw ...\n"
|
|
||||||
sys.stdout.write('fpdb.py has been renamed to fpdb.pyw - now calling fpdb.pyw ...\n\n')
|
|
||||||
sys.stdout.flush()
|
|
||||||
|
|
||||||
os.execvpe('pythonw.exe', ('pythonw.exe', 'fpdb.pyw', '-r'), os.environ)
|
|
||||||
# first arg is ignored (name of program being run)
|
|
|
@ -1,4 +1,5 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
#Copyright 2008 Steffen Jobbagy-Felso
|
#Copyright 2008 Steffen Jobbagy-Felso
|
||||||
#This program is free software: you can redistribute it and/or modify
|
#This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -110,7 +111,7 @@ import Database
|
||||||
import Configuration
|
import Configuration
|
||||||
import Exceptions
|
import Exceptions
|
||||||
|
|
||||||
VERSION = "0.20"
|
VERSION = "0.20-pre3"
|
||||||
|
|
||||||
|
|
||||||
class fpdb:
|
class fpdb:
|
||||||
|
@ -226,11 +227,11 @@ class fpdb:
|
||||||
dia = gtk.AboutDialog()
|
dia = gtk.AboutDialog()
|
||||||
dia.set_name("Free Poker Database (FPDB)")
|
dia.set_name("Free Poker Database (FPDB)")
|
||||||
dia.set_version(VERSION)
|
dia.set_version(VERSION)
|
||||||
dia.set_copyright("2008-2010, Steffen, Eratosthenes, s0rrow, EricBlade, _mt, sqlcoder, Bostik, and others")
|
dia.set_copyright("2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, sqlcoder, Bostik, and others")
|
||||||
dia.set_comments("GTK AboutDialog comments here")
|
dia.set_comments("GTK AboutDialog comments here")
|
||||||
dia.set_license("GPL v3")
|
dia.set_license("GPL v3")
|
||||||
dia.set_website("http://fpdb.sourceforge.net/")
|
dia.set_website("http://fpdb.sourceforge.net/")
|
||||||
dia.set_authors(['Steffen', 'Eratosthenes', 's0rrow',
|
dia.set_authors(['Steffen', 'Eratosthenes', 'Carl Gherardi',
|
||||||
'Eric Blade', '_mt', 'sqlcoder', 'Bostik', 'and others'])
|
'Eric Blade', '_mt', 'sqlcoder', 'Bostik', 'and others'])
|
||||||
dia.set_program_name("Free Poker Database (FPDB)")
|
dia.set_program_name("Free Poker Database (FPDB)")
|
||||||
|
|
||||||
|
@ -275,7 +276,7 @@ class fpdb:
|
||||||
gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT))
|
gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT))
|
||||||
dia.set_default_size(700, 500)
|
dia.set_default_size(700, 500)
|
||||||
|
|
||||||
prefs = GuiPrefs.GuiPrefs(self.config, self.window, dia.vbox)
|
prefs = GuiPrefs.GuiPrefs(self.config, self.window, dia.vbox, dia)
|
||||||
response = dia.run()
|
response = dia.run()
|
||||||
if response == gtk.RESPONSE_ACCEPT:
|
if response == gtk.RESPONSE_ACCEPT:
|
||||||
# save updated config
|
# save updated config
|
||||||
|
@ -283,10 +284,12 @@ class fpdb:
|
||||||
if len(self.nb_tab_names) == 1:
|
if len(self.nb_tab_names) == 1:
|
||||||
# only main tab open, reload profile
|
# only main tab open, reload profile
|
||||||
self.load_profile()
|
self.load_profile()
|
||||||
|
dia.destroy()
|
||||||
else:
|
else:
|
||||||
|
dia.destroy() # destroy prefs before raising warning, otherwise parent is dia rather than self.window
|
||||||
self.warning_box("Updated preferences have not been loaded because "
|
self.warning_box("Updated preferences have not been loaded because "
|
||||||
+ "windows are open. Re-start fpdb to load them.")
|
+ "windows are open. Re-start fpdb to load them.")
|
||||||
|
else:
|
||||||
dia.destroy()
|
dia.destroy()
|
||||||
|
|
||||||
def dia_maintain_dbs(self, widget, data=None):
|
def dia_maintain_dbs(self, widget, data=None):
|
||||||
|
@ -393,11 +396,13 @@ class fpdb:
|
||||||
if self.obtain_global_lock(): # returns true if successful
|
if self.obtain_global_lock(): # returns true if successful
|
||||||
|
|
||||||
#lock_released = False
|
#lock_released = False
|
||||||
dia_confirm = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING,
|
dia_confirm = gtk.MessageDialog(parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_WARNING,
|
||||||
buttons=(gtk.BUTTONS_YES_NO), message_format="Confirm deleting and recreating tables")
|
buttons=(gtk.BUTTONS_YES_NO), message_format="Confirm deleting and recreating tables")
|
||||||
diastring = "Please confirm that you want to (re-)create the tables. If there already are tables in the database " \
|
diastring = "Please confirm that you want to (re-)create the tables. If there already are tables in the database " \
|
||||||
+self.db.database+" on "+self.db.host+" they will be deleted."
|
+self.db.database+" on "+self.db.host+" they will be deleted."
|
||||||
dia_confirm.format_secondary_text(diastring)#todo: make above string with bold for db, host and deleted
|
dia_confirm.format_secondary_text(diastring)#todo: make above string with bold for db, host and deleted
|
||||||
|
# disable windowclose, do not want the the underlying processing interrupted mid-process
|
||||||
|
dia_confirm.set_deletable(False)
|
||||||
|
|
||||||
response = dia_confirm.run()
|
response = dia_confirm.run()
|
||||||
dia_confirm.destroy()
|
dia_confirm.destroy()
|
||||||
|
@ -412,6 +417,14 @@ class fpdb:
|
||||||
#else:
|
#else:
|
||||||
# for other dbs use same connection as holds global lock
|
# for other dbs use same connection as holds global lock
|
||||||
# self.fdb_lock.fdb.recreate_tables()
|
# self.fdb_lock.fdb.recreate_tables()
|
||||||
|
# TODO: figure out why this seems to be necessary
|
||||||
|
dia_restart = gtk.MessageDialog(parent=self.window, flags=0, type=gtk.MESSAGE_WARNING,
|
||||||
|
buttons=(gtk.BUTTONS_OK), message_format="Restart fpdb")
|
||||||
|
diastring = "You should now restart fpdb."
|
||||||
|
dia_restart.format_secondary_text(diastring)
|
||||||
|
|
||||||
|
dia_restart.run()
|
||||||
|
dia_restart.destroy()
|
||||||
elif response == gtk.RESPONSE_NO:
|
elif response == gtk.RESPONSE_NO:
|
||||||
print 'User cancelled recreating tables'
|
print 'User cancelled recreating tables'
|
||||||
#if not lock_released:
|
#if not lock_released:
|
||||||
|
@ -419,9 +432,11 @@ class fpdb:
|
||||||
|
|
||||||
def dia_recreate_hudcache(self, widget, data=None):
|
def dia_recreate_hudcache(self, widget, data=None):
|
||||||
if self.obtain_global_lock():
|
if self.obtain_global_lock():
|
||||||
self.dia_confirm = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING, buttons=(gtk.BUTTONS_YES_NO), message_format="Confirm recreating HUD cache")
|
self.dia_confirm = gtk.MessageDialog(parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_WARNING, buttons=(gtk.BUTTONS_YES_NO), message_format="Confirm recreating HUD cache")
|
||||||
diastring = "Please confirm that you want to re-create the HUD cache."
|
diastring = "Please confirm that you want to re-create the HUD cache."
|
||||||
self.dia_confirm.format_secondary_text(diastring)
|
self.dia_confirm.format_secondary_text(diastring)
|
||||||
|
# disable windowclose, do not want the the underlying processing interrupted mid-process
|
||||||
|
self.dia_confirm.set_deletable(False)
|
||||||
|
|
||||||
hb1 = gtk.HBox(True, 1)
|
hb1 = gtk.HBox(True, 1)
|
||||||
self.h_start_date = gtk.Entry(max=12)
|
self.h_start_date = gtk.Entry(max=12)
|
||||||
|
@ -469,16 +484,19 @@ class fpdb:
|
||||||
|
|
||||||
def dia_rebuild_indexes(self, widget, data=None):
|
def dia_rebuild_indexes(self, widget, data=None):
|
||||||
if self.obtain_global_lock():
|
if self.obtain_global_lock():
|
||||||
self.dia_confirm = gtk.MessageDialog(parent=None
|
self.dia_confirm = gtk.MessageDialog(parent=self.window
|
||||||
,flags=0
|
,flags=gtk.DIALOG_DESTROY_WITH_PARENT
|
||||||
,type=gtk.MESSAGE_WARNING
|
,type=gtk.MESSAGE_WARNING
|
||||||
,buttons=(gtk.BUTTONS_YES_NO)
|
,buttons=(gtk.BUTTONS_YES_NO)
|
||||||
,message_format="Confirm rebuilding database indexes")
|
,message_format="Confirm rebuilding database indexes")
|
||||||
diastring = "Please confirm that you want to rebuild the database indexes."
|
diastring = "Please confirm that you want to rebuild the database indexes."
|
||||||
self.dia_confirm.format_secondary_text(diastring)
|
self.dia_confirm.format_secondary_text(diastring)
|
||||||
|
# disable windowclose, do not want the the underlying processing interrupted mid-process
|
||||||
|
self.dia_confirm.set_deletable(False)
|
||||||
|
|
||||||
response = self.dia_confirm.run()
|
response = self.dia_confirm.run()
|
||||||
if response == gtk.RESPONSE_YES:
|
if response == gtk.RESPONSE_YES:
|
||||||
|
#FIXME these progress messages do not seem to work in *nix
|
||||||
lbl = gtk.Label(" Rebuilding Indexes ... ")
|
lbl = gtk.Label(" Rebuilding Indexes ... ")
|
||||||
self.dia_confirm.vbox.add(lbl)
|
self.dia_confirm.vbox.add(lbl)
|
||||||
lbl.show()
|
lbl.show()
|
||||||
|
@ -550,8 +568,13 @@ class fpdb:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def __calendar_dialog(self, widget, entry):
|
def __calendar_dialog(self, widget, entry):
|
||||||
self.dia_confirm.set_modal(False)
|
# do not alter the modality of the parent
|
||||||
|
# self.dia_confirm.set_modal(False)
|
||||||
d = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
d = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||||
|
d.set_transient_for(self.dia_confirm)
|
||||||
|
d.set_destroy_with_parent(True)
|
||||||
|
d.set_modal(True)
|
||||||
|
|
||||||
d.set_title('Pick a date')
|
d.set_title('Pick a date')
|
||||||
|
|
||||||
vb = gtk.VBox()
|
vb = gtk.VBox()
|
||||||
|
@ -822,6 +845,7 @@ class fpdb:
|
||||||
|
|
||||||
def quit(self, widget, data=None):
|
def quit(self, widget, data=None):
|
||||||
# TODO: can we get some / all of the stuff done in this function to execute on any kind of abort?
|
# TODO: can we get some / all of the stuff done in this function to execute on any kind of abort?
|
||||||
|
#FIXME get two "quitting normally" messages, following the addition of the self.window.destroy() call
|
||||||
print "Quitting normally"
|
print "Quitting normally"
|
||||||
# TODO: check if current settings differ from profile, if so offer to save or abort
|
# TODO: check if current settings differ from profile, if so offer to save or abort
|
||||||
try:
|
try:
|
||||||
|
@ -830,6 +854,8 @@ class fpdb:
|
||||||
except _mysql_exceptions.OperationalError: # oh, damn, we're already disconnected
|
except _mysql_exceptions.OperationalError: # oh, damn, we're already disconnected
|
||||||
pass
|
pass
|
||||||
self.statusIcon.set_visible(False)
|
self.statusIcon.set_visible(False)
|
||||||
|
|
||||||
|
self.window.destroy() # explicitly destroy to allow child windows to close cleanly
|
||||||
gtk.main_quit()
|
gtk.main_quit()
|
||||||
|
|
||||||
def release_global_lock(self):
|
def release_global_lock(self):
|
||||||
|
@ -875,9 +901,12 @@ class fpdb:
|
||||||
def tab_main_help(self, widget, data=None):
|
def tab_main_help(self, widget, data=None):
|
||||||
"""Displays a tab with the main fpdb help screen"""
|
"""Displays a tab with the main fpdb help screen"""
|
||||||
mh_tab=gtk.Label("""Welcome to Fpdb!
|
mh_tab=gtk.Label("""Welcome to Fpdb!
|
||||||
For documentation please visit our website at http://fpdb.sourceforge.net/ or check the docs directory in the fpdb folder.
|
This program is currently in an alpha-state, so our database format is still sometimes changed.
|
||||||
Please note that default.conf is no longer needed nor used, all configuration now happens in HUD_config.xml
|
You should therefore always keep your hand history files so that you can re-import after an update, if necessary.
|
||||||
This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt")
|
For documentation please visit our website at http://fpdb.sourceforge.net/.
|
||||||
|
If you need help click on Contact - Get Help on our website.
|
||||||
|
Please note that default.conf is no longer needed nor used, all configuration now happens in HUD_config.xml.
|
||||||
|
This program is licensed under the AGPL3, see agpl-3.0.txt in the fpdb installation directory.""")
|
||||||
self.add_and_display_tab(mh_tab, "Help")
|
self.add_and_display_tab(mh_tab, "Help")
|
||||||
|
|
||||||
def tab_table_viewer(self, widget, data=None):
|
def tab_table_viewer(self, widget, data=None):
|
||||||
|
@ -961,9 +990,11 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt")
|
||||||
menuItem = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
|
menuItem = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
|
||||||
menuItem.connect('activate', self.dia_about)
|
menuItem.connect('activate', self.dia_about)
|
||||||
self.statusMenu.append(menuItem)
|
self.statusMenu.append(menuItem)
|
||||||
|
|
||||||
menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT)
|
menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT)
|
||||||
menuItem.connect('activate', self.quit)
|
menuItem.connect('activate', self.quit)
|
||||||
self.statusMenu.append(menuItem)
|
self.statusMenu.append(menuItem)
|
||||||
|
|
||||||
self.statusIcon.connect('popup-menu', self.statusicon_menu, self.statusMenu)
|
self.statusIcon.connect('popup-menu', self.statusicon_menu, self.statusMenu)
|
||||||
self.statusIcon.set_visible(True)
|
self.statusIcon.set_visible(True)
|
||||||
|
|
||||||
|
@ -1010,7 +1041,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt")
|
||||||
self.window.present()
|
self.window.present()
|
||||||
|
|
||||||
def info_box(self, str1, str2):
|
def info_box(self, str1, str2):
|
||||||
diapath = gtk.MessageDialog( parent=None, flags=0, type=gtk.MESSAGE_INFO
|
diapath = gtk.MessageDialog( parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_INFO
|
||||||
, buttons=(gtk.BUTTONS_OK), message_format=str1 )
|
, buttons=(gtk.BUTTONS_OK), message_format=str1 )
|
||||||
diapath.format_secondary_text(str2)
|
diapath.format_secondary_text(str2)
|
||||||
response = diapath.run()
|
response = diapath.run()
|
||||||
|
@ -1018,7 +1049,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt")
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def warning_box(self, str, diatitle="FPDB WARNING"):
|
def warning_box(self, str, diatitle="FPDB WARNING"):
|
||||||
diaWarning = gtk.Dialog(title=diatitle, parent=None, flags=0, buttons=(gtk.STOCK_OK,gtk.RESPONSE_OK))
|
diaWarning = gtk.Dialog(title=diatitle, parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, buttons=(gtk.STOCK_OK,gtk.RESPONSE_OK))
|
||||||
|
|
||||||
label = gtk.Label(str)
|
label = gtk.Label(str)
|
||||||
diaWarning.vbox.add(label)
|
diaWarning.vbox.add(label)
|
||||||
|
|
|
@ -63,6 +63,10 @@ Py2exe script for fpdb.
|
||||||
#
|
#
|
||||||
# libgobject-2.0-0.dll
|
# libgobject-2.0-0.dll
|
||||||
# libgdk-win32-2.0-0.dll
|
# libgdk-win32-2.0-0.dll
|
||||||
|
#
|
||||||
|
# Now updated to work with python 2.6 + related dependencies
|
||||||
|
# See walkthrough in packaging directory for versions used
|
||||||
|
# Updates to this script have broken python 2.5 compatibility (gio module, msvcr71 references now msvcp90)
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
@ -77,7 +81,9 @@ from datetime import date
|
||||||
|
|
||||||
origIsSystemDLL = py2exe.build_exe.isSystemDLL
|
origIsSystemDLL = py2exe.build_exe.isSystemDLL
|
||||||
def isSystemDLL(pathname):
|
def isSystemDLL(pathname):
|
||||||
if os.path.basename(pathname).lower() in ("msvcp71.dll", "dwmapi.dll"):
|
#VisC++ runtime msvcp71.dll removed; py2.6 needs msvcp90.dll which will not be distributed.
|
||||||
|
#dwmapi appears to be vista-specific file, not XP
|
||||||
|
if os.path.basename(pathname).lower() in ("dwmapi.dll"):
|
||||||
return 0
|
return 0
|
||||||
return origIsSystemDLL(pathname)
|
return origIsSystemDLL(pathname)
|
||||||
py2exe.build_exe.isSystemDLL = isSystemDLL
|
py2exe.build_exe.isSystemDLL = isSystemDLL
|
||||||
|
@ -135,7 +141,7 @@ setup(
|
||||||
|
|
||||||
options = {'py2exe': {
|
options = {'py2exe': {
|
||||||
'packages' : ['encodings', 'matplotlib'],
|
'packages' : ['encodings', 'matplotlib'],
|
||||||
'includes' : ['cairo', 'pango', 'pangocairo', 'atk', 'gobject'
|
'includes' : ['gio', 'cairo', 'pango', 'pangocairo', 'atk', 'gobject'
|
||||||
,'matplotlib.numerix.random_array'
|
,'matplotlib.numerix.random_array'
|
||||||
,'AbsoluteToFpdb', 'BetfairToFpdb'
|
,'AbsoluteToFpdb', 'BetfairToFpdb'
|
||||||
,'CarbonToFpdb', 'EverleafToFpdb'
|
,'CarbonToFpdb', 'EverleafToFpdb'
|
||||||
|
@ -145,12 +151,13 @@ setup(
|
||||||
],
|
],
|
||||||
'excludes' : ['_tkagg', '_agg2', 'cocoaagg', 'fltkagg'], # surely we need this? '_gtkagg'
|
'excludes' : ['_tkagg', '_agg2', 'cocoaagg', 'fltkagg'], # surely we need this? '_gtkagg'
|
||||||
'dll_excludes': ['libglade-2.0-0.dll', 'libgdk-win32-2.0-0.dll'
|
'dll_excludes': ['libglade-2.0-0.dll', 'libgdk-win32-2.0-0.dll'
|
||||||
,'libgobject-2.0-0.dll'],
|
,'libgobject-2.0-0.dll', 'msvcr90.dll', 'MSVCP90.dll', 'MSVCR90.dll','msvcr90.dll'],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
# files in 2nd value in tuple are moved to dir named in 1st value
|
# files in 2nd value in tuple are moved to dir named in 1st value
|
||||||
data_files = [('', ['HUD_config.xml.example', 'Cards01.png', 'logging.conf', '../docs/readme.txt'])
|
#data_files updated for new locations of licences + readme nolonger exists
|
||||||
|
data_files = [('', ['HUD_config.xml.example', 'Cards01.png', 'logging.conf', '../agpl-3.0.txt', '../fdl-1.2.txt', '../THANKS.txt'])
|
||||||
,(dist_dir, [r'..\run_fpdb.bat'])
|
,(dist_dir, [r'..\run_fpdb.bat'])
|
||||||
,( dist_dir + r'\gfx', glob.glob(r'..\gfx\*.*') )
|
,( dist_dir + r'\gfx', glob.glob(r'..\gfx\*.*') )
|
||||||
# line below has problem with fonts subdir ('not a regular file')
|
# line below has problem with fonts subdir ('not a regular file')
|
||||||
|
@ -174,7 +181,7 @@ dest = dest.replace('\\', '\\\\')
|
||||||
os.rename( 'pyfpdb', dest )
|
os.rename( 'pyfpdb', dest )
|
||||||
|
|
||||||
|
|
||||||
print "Enter directory name for GTK 2.14 (e.g. c:\code\gtk_2.14.7-20090119)\n: ", # the comma means no newline
|
print "Enter directory name for GTK (e.g. c:\code\gtk_2.14.7-20090119)\n: ", # the comma means no newline
|
||||||
gtk_dir = sys.stdin.readline().rstrip()
|
gtk_dir = sys.stdin.readline().rstrip()
|
||||||
|
|
||||||
|
|
||||||
|
@ -223,6 +230,8 @@ pyfpdb/share/locale
|
||||||
pyfpdb/share/man
|
pyfpdb/share/man
|
||||||
pyfpdb/share/themes/Default
|
pyfpdb/share/themes/Default
|
||||||
|
|
||||||
|
Please double-check that msvcr90.dll is NOT in the distribution tree
|
||||||
|
|
||||||
Use 7-zip to zip up the distribution and create a self extracting archive and that's it!
|
Use 7-zip to zip up the distribution and create a self extracting archive and that's it!
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,665 @@
|
||||||
|
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 5: Player5 ($118.70)
|
||||||
|
Seat 7: Player6 ($36.30)
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player4 antes $0.40
|
||||||
|
Player13 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 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
|
||||||
|
Player5 calls $1.50
|
||||||
|
*** 4TH STREET ***
|
||||||
|
Dealt to Player4 [9c] [9d]
|
||||||
|
Dealt to Player5 [3c] [8d]
|
||||||
|
Player4 bets $4
|
||||||
|
Player5 folds
|
||||||
|
Uncalled bet of $4 returned to Player4
|
||||||
|
Player4 mucks
|
||||||
|
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 5: Player5 folded on 4th St.
|
||||||
|
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 5: Player5 ($115.50)
|
||||||
|
Seat 6: Player14 ($138.70)
|
||||||
|
Seat 7: Player6 ($35.10)
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player4 antes $0.40
|
||||||
|
Player13 antes $0.40
|
||||||
|
Player5 antes $0.40
|
||||||
|
Player14 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 Player5 [9d]
|
||||||
|
Dealt to Player14 [8h]
|
||||||
|
Dealt to Player6 [Ts]
|
||||||
|
Player1 is low with [3d]
|
||||||
|
Player1 brings in for $0.50
|
||||||
|
Player5 folds
|
||||||
|
Player14 folds
|
||||||
|
Player6 completes it to $2
|
||||||
|
Player4 folds
|
||||||
|
Player13 folds
|
||||||
|
Player1 calls $1.50
|
||||||
|
*** 4TH STREET ***
|
||||||
|
Dealt to Player1 [6c 5d 3d] [7c]
|
||||||
|
Dealt to Player6 [Ts] [6d]
|
||||||
|
Player6 bets $2
|
||||||
|
Player1 calls $2
|
||||||
|
*** 5TH STREET ***
|
||||||
|
Dealt to Player1 [6c 5d 3d 7c] [Qd]
|
||||||
|
Dealt to Player6 [Ts 6d] [9s]
|
||||||
|
Player1 checks
|
||||||
|
Player6 bets $4
|
||||||
|
Player1 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 5: Player5 folded on 3rd St.
|
||||||
|
Seat 6: Player14 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 5: Player5 ($114.30)
|
||||||
|
Seat 6: Player14 ($135.50)
|
||||||
|
Seat 7: Player6 ($40.30)
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player4 antes $0.40
|
||||||
|
Player13 antes $0.40
|
||||||
|
Player5 antes $0.40
|
||||||
|
Player14 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 Player5 [4c]
|
||||||
|
Dealt to Player14 [8d]
|
||||||
|
Dealt to Player6 [6c]
|
||||||
|
Player5 is low with [4c]
|
||||||
|
Player10 sits down
|
||||||
|
Player10 adds $40
|
||||||
|
Player5 brings in for $0.50
|
||||||
|
Player14 folds
|
||||||
|
Player6 folds
|
||||||
|
Player4 folds
|
||||||
|
Player13 completes it to $2
|
||||||
|
Player1 folds
|
||||||
|
Player5 folds
|
||||||
|
Uncalled bet of $1.50 returned to Player13
|
||||||
|
Player13 mucks
|
||||||
|
Player13 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 5: Player5 folded on 3rd St.
|
||||||
|
Seat 6: Player14 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 5: Player5 ($113.40)
|
||||||
|
Seat 6: Player14 ($135.10)
|
||||||
|
Seat 7: Player6 ($39.90)
|
||||||
|
Seat 8: Player10 ($40)
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player4 antes $0.40
|
||||||
|
Player13 antes $0.40
|
||||||
|
Player5 antes $0.40
|
||||||
|
Player14 antes $0.40
|
||||||
|
Player6 antes $0.40
|
||||||
|
Player10 antes $0.40
|
||||||
|
*** 3RD STREET ***
|
||||||
|
Dealt to Player4 [Qs]
|
||||||
|
Dealt to Player13 [8s]
|
||||||
|
Dealt to Player1 [3h 9c] [Ah]
|
||||||
|
Dealt to Player5 [Qc]
|
||||||
|
Dealt to Player14 [Kc]
|
||||||
|
Dealt to Player6 [Jh]
|
||||||
|
Dealt to Player10 [6d]
|
||||||
|
Player10 is low with [6d]
|
||||||
|
Player10 brings in for $0.50
|
||||||
|
Player4 folds
|
||||||
|
Player13 folds
|
||||||
|
Player1 folds
|
||||||
|
Player5 completes it to $2
|
||||||
|
Player14 raises to $4
|
||||||
|
Player6 folds
|
||||||
|
Player10 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
|
||||||
|
Player5 folds
|
||||||
|
Uncalled bet of $4 returned to Player14
|
||||||
|
Player14 mucks
|
||||||
|
Player14 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 5: Player5 folded on 4th St.
|
||||||
|
Seat 6: Player14 collected ($14.80), mucked
|
||||||
|
Seat 7: Player6 folded on 3rd St.
|
||||||
|
Seat 8: Player10 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 5: Player5 ($109)
|
||||||
|
Seat 6: Player14 ($145.50)
|
||||||
|
Seat 7: Player6 ($39.50)
|
||||||
|
Seat 8: Player10 ($35.60)
|
||||||
|
Player10 antes $0.40
|
||||||
|
Player13 antes $0.40
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player4 antes $0.40
|
||||||
|
Player5 antes $0.40
|
||||||
|
Player14 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 Player5 [6h]
|
||||||
|
Dealt to Player14 [Js]
|
||||||
|
Dealt to Player6 [Ac]
|
||||||
|
Dealt to Player10 [Ah]
|
||||||
|
Player1 is low with [5h]
|
||||||
|
Player1 brings in for $0.50
|
||||||
|
Player5 folds
|
||||||
|
Player14 folds
|
||||||
|
Player6 folds
|
||||||
|
Player10 completes it to $2
|
||||||
|
Player4 calls $2
|
||||||
|
Player13 folds
|
||||||
|
Player1 folds
|
||||||
|
*** 4TH STREET ***
|
||||||
|
Dealt to Player4 [Th] [4h]
|
||||||
|
Dealt to Player10 [Ah] [3c]
|
||||||
|
Player10 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
|
||||||
|
Player4 raises to $8
|
||||||
|
Player10 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 5: Player5 folded on 3rd St.
|
||||||
|
Seat 6: Player14 folded on 3rd St.
|
||||||
|
Seat 7: Player6 folded on 3rd St.
|
||||||
|
Seat 8: Player10 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 5: Player5 ($108.20)
|
||||||
|
Seat 6: Player14 ($144.70)
|
||||||
|
Seat 7: Player6 ($41.50)
|
||||||
|
Seat 8: Player10 ($26.80)
|
||||||
|
Player4 antes $0.40
|
||||||
|
Player13 antes $0.40
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player5 antes $0.40
|
||||||
|
Player10 antes $0.40
|
||||||
|
Player14 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 Player5 [Th]
|
||||||
|
Dealt to Player14 [6c]
|
||||||
|
Dealt to Player6 [2d]
|
||||||
|
Dealt to Player10 [Qh]
|
||||||
|
Player6 is low with [2d]
|
||||||
|
Player6 brings in for $0.50
|
||||||
|
Player10 folds
|
||||||
|
Player4 folds
|
||||||
|
Player13 folds
|
||||||
|
Player1 completes it to $2
|
||||||
|
Player5 folds
|
||||||
|
Player14 folds
|
||||||
|
Player6 calls $1.50
|
||||||
|
*** 4TH STREET ***
|
||||||
|
Dealt to Player1 [9h 9s 5c] [3s]
|
||||||
|
Dealt to Player6 [2d] [Ah]
|
||||||
|
Player6 checks
|
||||||
|
Player1 bets $2
|
||||||
|
Player6 calls $2
|
||||||
|
*** 5TH STREET ***
|
||||||
|
Dealt to Player1 [9h 9s 5c 3s] [Kh]
|
||||||
|
Dealt to Player6 [2d Ah] [Kc]
|
||||||
|
Player6 checks
|
||||||
|
Player1 bets $4
|
||||||
|
Player6 raises to $8
|
||||||
|
Player1 calls $4
|
||||||
|
*** 6TH STREET ***
|
||||||
|
Dealt to Player1 [9h 9s 5c 3s Kh] [5d]
|
||||||
|
Dealt to Player6 [2d Ah Kc] [4d]
|
||||||
|
Player1 bets $4
|
||||||
|
Player6 calls $4
|
||||||
|
*** 7TH STREET ***
|
||||||
|
Dealt to Player1 [9h 9s 5c 3s Kh 5d] [8s]
|
||||||
|
Player1 bets $4
|
||||||
|
Player6 calls $4
|
||||||
|
*** SHOW DOWN ***
|
||||||
|
Player1 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 5: Player5 folded on 3rd St.
|
||||||
|
Seat 6: Player14 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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 5: Player5 ($109.40)
|
||||||
|
Seat 6: Player14 ($140.20)
|
||||||
|
Seat 7: Player6 ($59.80)
|
||||||
|
Seat 8: Player10 ($62.10)
|
||||||
|
Player10 antes $0.40
|
||||||
|
Player13 antes $0.40
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player5 antes $0.40
|
||||||
|
Player14 antes $0.40
|
||||||
|
Player12 antes $0.40
|
||||||
|
Player11 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 Player5 [6d]
|
||||||
|
Dealt to Player14 [Ad]
|
||||||
|
Dealt to Player6 [6h]
|
||||||
|
Dealt to Player10 [7h]
|
||||||
|
Player1 is low with [5h]
|
||||||
|
Player1 brings in for $0.50
|
||||||
|
Player11 folds
|
||||||
|
Player5 folds
|
||||||
|
Player14 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)
|
||||||
|
*** 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 5: Player5 folded on 3rd St.
|
||||||
|
Seat 6: Player14 folded on 3rd St.
|
||||||
|
Seat 7: Player6 folded on 3rd St.
|
||||||
|
Seat 8: Player10 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 5: Player5 ($109)
|
||||||
|
Seat 6: Player14 ($139.80)
|
||||||
|
Seat 7: Player6 ($59.40)
|
||||||
|
Seat 8: Player10 ($61.70)
|
||||||
|
Player10 antes $0.40
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player13 antes $0.40
|
||||||
|
Player5 antes $0.40
|
||||||
|
Player11 antes $0.40
|
||||||
|
Player12 antes $0.40
|
||||||
|
Player14 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 Player5 [2c]
|
||||||
|
Dealt to Player14 [3d]
|
||||||
|
Dealt to Player6 [2h]
|
||||||
|
Dealt to Player10 [2d]
|
||||||
|
Player5 is low with [2c]
|
||||||
|
Player5 brings in for $0.50
|
||||||
|
Player14 folds
|
||||||
|
Player6 folds
|
||||||
|
Player10 folds
|
||||||
|
Player12 folds
|
||||||
|
Player13 folds
|
||||||
|
Player1 folds
|
||||||
|
Player11 completes it to $2
|
||||||
|
Player5 calls $1.50
|
||||||
|
*** 4TH STREET ***
|
||||||
|
Dealt to Player11 [Ks] [Ah]
|
||||||
|
Dealt to Player5 [2c] [5s]
|
||||||
|
Player11 bets $2
|
||||||
|
Player5 folds
|
||||||
|
Uncalled bet of $2 returned to Player11
|
||||||
|
Player11 mucks
|
||||||
|
Player11 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 5: Player5 folded on 4th St.
|
||||||
|
Seat 6: Player14 folded on 3rd St.
|
||||||
|
Seat 7: Player6 folded on 3rd St.
|
||||||
|
Seat 8: Player10 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 2: Player9 ($40), is sitting out
|
||||||
|
Seat 3: Player1 ($89.20)
|
||||||
|
Seat 4: Player2 ($96.10)
|
||||||
|
Seat 5: Player5 ($105.50), is sitting out
|
||||||
|
Seat 6: Player14 ($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
|
||||||
|
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 Player6 [4s]
|
||||||
|
Dealt to Player10 [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
|
||||||
|
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
|
||||||
|
*** 5TH STREET ***
|
||||||
|
Dealt to Player1 [Td 9d Kc 9s] [Tc]
|
||||||
|
Dealt to Player14 [5h 9h] [3d]
|
||||||
|
Player1 checks
|
||||||
|
Player14 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
|
||||||
|
*** 7TH STREET ***
|
||||||
|
Dealt to Player1 [Td 9d Kc 9s Tc 9c] [7h]
|
||||||
|
Player1 bets $4
|
||||||
|
Player14 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
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $30.50 | Rake $1
|
||||||
|
Seat 1: Player12 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 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 7: Player6 folded on 3rd St.
|
||||||
|
Seat 8: Player10 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 2: Player9 ($40), is sitting out
|
||||||
|
Seat 3: Player1 ($103.90)
|
||||||
|
Seat 6: Player14 ($116.40)
|
||||||
|
Seat 7: Player6 ($58.40)
|
||||||
|
Seat 8: Player10 ($95.60)
|
||||||
|
Player10 antes $0.40
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player6 antes $0.40
|
||||||
|
Player3 sits down
|
||||||
|
Player14 antes $0.40
|
||||||
|
Player12 antes $0.40
|
||||||
|
*** 3RD STREET ***
|
||||||
|
Dealt to Player12 [9c]
|
||||||
|
Dealt to Player1 [Ts 4h] [9h]
|
||||||
|
Dealt to Player14 [7c]
|
||||||
|
Dealt to Player6 [7s]
|
||||||
|
Dealt to Player10 [2h]
|
||||||
|
Player10 is low with [2h]
|
||||||
|
Player3 adds $40
|
||||||
|
Player10 brings in for $0.50
|
||||||
|
Player12 folds
|
||||||
|
Player1 completes it to $2
|
||||||
|
Player14 folds
|
||||||
|
Player6 folds
|
||||||
|
Player10 folds
|
||||||
|
Uncalled bet of $1.50 returned to Player1
|
||||||
|
Player1 mucks
|
||||||
|
Player1 wins the pot ($3)
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $3 | Rake $0
|
||||||
|
Seat 1: Player12 folded on 3rd St.
|
||||||
|
Seat 2: Player9 is sitting out
|
||||||
|
Seat 3: Player1 collected ($3), mucked
|
||||||
|
Seat 6: Player14 folded on 3rd St.
|
||||||
|
Seat 7: Player6 folded on 3rd St.
|
||||||
|
Seat 8: Player10 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 2: Player9 ($24.35)
|
||||||
|
Seat 3: Player1 ($147.90)
|
||||||
|
Seat 4: Player3 ($74.10)
|
||||||
|
Seat 5: Player8 ($63.10)
|
||||||
|
Seat 6: Player14 ($103)
|
||||||
|
Seat 7: Player6 ($63.20)
|
||||||
|
Seat 8: Player7 ($48.40)
|
||||||
|
Player7 antes $0.40
|
||||||
|
Player1 antes $0.40
|
||||||
|
Player8 antes $0.40
|
||||||
|
Player3 antes $0.40
|
||||||
|
Player9 antes $0.40
|
||||||
|
Player12 antes $0.40
|
||||||
|
Player14 antes $0.40
|
||||||
|
Player6 antes $0.40
|
||||||
|
*** 3RD STREET ***
|
||||||
|
Dealt to Player12 [As]
|
||||||
|
Dealt to Player9 [7s]
|
||||||
|
Dealt to Player1 [7h 6s] [8d]
|
||||||
|
Dealt to Player3 [2d]
|
||||||
|
Dealt to Player8 [3c]
|
||||||
|
Dealt to Player14 [7c]
|
||||||
|
Dealt to Player6 [8h]
|
||||||
|
Dealt to Player7 [Qs]
|
||||||
|
Player3 is low with [2d]
|
||||||
|
Player3 brings in for $0.50
|
||||||
|
Player8 folds
|
||||||
|
Player14 folds
|
||||||
|
Player6 folds
|
||||||
|
Player7 folds
|
||||||
|
Player12 completes it to $2
|
||||||
|
Player9 folds
|
||||||
|
Player1 calls $2
|
||||||
|
Player3 calls $1.50
|
||||||
|
*** 4TH STREET ***
|
||||||
|
Dealt to Player12 [As] [5d]
|
||||||
|
Dealt to Player1 [7h 6s 8d] [Qc]
|
||||||
|
Dealt to Player3 [2d] [3h]
|
||||||
|
Player12 bets $2
|
||||||
|
Player1 folds
|
||||||
|
Player3 calls $2
|
||||||
|
*** 5TH STREET ***
|
||||||
|
Dealt to Player12 [As 5d] [4c]
|
||||||
|
Dealt to Player3 [2d 3h] [5s]
|
||||||
|
Player12 bets $4
|
||||||
|
Player3 folds
|
||||||
|
Uncalled bet of $4 returned to Player12
|
||||||
|
Player12 mucks
|
||||||
|
Player12 wins the pot ($13.20)
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $13.20 | Rake $0
|
||||||
|
Seat 1: Player12 collected ($13.20), mucked
|
||||||
|
Seat 2: Player9 folded on 3rd St.
|
||||||
|
Seat 3: Player1 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 7: Player6 folded on 3rd St.
|
||||||
|
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 4: Player3 ($125.75)
|
||||||
|
Seat 5: Player8 ($40.10)
|
||||||
|
Seat 7: Player6 ($72)
|
||||||
|
Seat 8: Player7 ($32.20)
|
||||||
|
Player0 antes $0.40
|
||||||
|
Player8 antes $0.40
|
||||||
|
Player7 antes $0.40
|
||||||
|
Player1 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 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
|
||||||
|
Player3 folds
|
||||||
|
Player8 folds
|
||||||
|
Player6 folds
|
||||||
|
Player7 completes it to $2
|
||||||
|
Player0 calls $2
|
||||||
|
Player1 folds
|
||||||
|
*** 4TH STREET ***
|
||||||
|
Dealt to Player0 [Th] [As]
|
||||||
|
Dealt to Player7 [Jh] [8c]
|
||||||
|
Player0 bets $2
|
||||||
|
Player7 calls $2
|
||||||
|
*** 5TH STREET ***
|
||||||
|
Dealt to Player0 [Th As] [Kh]
|
||||||
|
Dealt to Player7 [Jh 8c] [2s]
|
||||||
|
Player0 checks
|
||||||
|
Player7 checks
|
||||||
|
*** 6TH STREET ***
|
||||||
|
Dealt to Player0 [Th As Kh] [7h]
|
||||||
|
Dealt to Player7 [Jh 8c 2s] [9h]
|
||||||
|
Player0 bets $4
|
||||||
|
Player7 folds
|
||||||
|
Uncalled bet of $4 returned to Player0
|
||||||
|
Player0 mucks
|
||||||
|
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 4: Player3 folded on 3rd St.
|
||||||
|
Seat 5: Player8 folded on 3rd St.
|
||||||
|
Seat 7: Player6 folded on 3rd St.
|
||||||
|
Seat 8: Player7 folded on 6th St.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,137 @@
|
||||||
|
PokerStars Game #14732633821: Hold'em No Limit ($0.25/$0.50 USD) - 2010/05/23 22:39:16 WET [2010/05/23 17:39:16 ET]
|
||||||
|
Table '99999999 II' 2-max Seat #1 is the button
|
||||||
|
Seat 1: Player0 ($20 in chips)
|
||||||
|
Seat 2: Player1 ($50.50 in chips)
|
||||||
|
Player0: posts small blind $0.25
|
||||||
|
Player1: posts big blind $0.50
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player0 [2h Th]
|
||||||
|
Player0: calls $0.25
|
||||||
|
Player1: checks
|
||||||
|
*** FLOP *** [4c 8c Ac]
|
||||||
|
Player1: checks
|
||||||
|
Player0: checks
|
||||||
|
*** TURN *** [4c 8c Ac] [7s]
|
||||||
|
Player1: checks
|
||||||
|
Player0: bets $1
|
||||||
|
Player1: folds
|
||||||
|
Uncalled bet ($1) returned to Player0
|
||||||
|
Player0 collected $0.95 from pot
|
||||||
|
Player0: doesn't show hand
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $1 | Rake $0.05
|
||||||
|
Board [4c 8c Ac 7s]
|
||||||
|
Seat 1: Player0 (button) (small blind) collected ($0.95)
|
||||||
|
Seat 2: Player1 (big blind) folded on the Turn
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PokerStars Game #28140199921: Hold'em No Limit ($0.25/$0.50 USD) - 2010/05/23 22:39:59 WET [2010/05/23 17:39:59 ET]
|
||||||
|
Table '99999999 II' 2-max Seat #2 is the button
|
||||||
|
Seat 1: Player0 ($20.45 in chips)
|
||||||
|
Seat 2: Player1 ($50 in chips)
|
||||||
|
Player1: posts small blind $0.25
|
||||||
|
Player0: posts big blind $0.50
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player0 [7h Kh]
|
||||||
|
Player1: raises $1 to $1.50
|
||||||
|
Player0: folds
|
||||||
|
Uncalled bet ($1) returned to Player1
|
||||||
|
Player1 collected $1 from pot
|
||||||
|
Player1: doesn't show hand
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $1 | Rake $0
|
||||||
|
Seat 1: Player0 (big blind) folded before Flop
|
||||||
|
Seat 2: Player1 (button) (small blind) collected ($1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PokerStars Game #29402240709: Hold'em No Limit ($0.25/$0.50 USD) - 2010/05/23 22:40:22 WET [2010/05/23 17:40:22 ET]
|
||||||
|
Table '99999999 II' 2-max Seat #1 is the button
|
||||||
|
Seat 1: Player0 ($19.95 in chips)
|
||||||
|
Seat 2: Player1 ($50.50 in chips)
|
||||||
|
Player0: posts small blind $0.25
|
||||||
|
Player1: posts big blind $0.50
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player0 [5c 8c]
|
||||||
|
Player0: folds
|
||||||
|
Uncalled bet ($0.25) returned to Player1
|
||||||
|
Player1 collected $0.50 from pot
|
||||||
|
Player1: doesn't show hand
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $0.50 | Rake $0
|
||||||
|
Seat 1: Player0 (button) (small blind) folded before Flop
|
||||||
|
Seat 2: Player1 (big blind) collected ($0.50)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PokerStars Game #31842149327: Hold'em No Limit ($0.25/$0.50 USD) - 2010/05/23 22:40:29 WET [2010/05/23 17:40:29 ET]
|
||||||
|
Table '99999999 II' 2-max Seat #2 is the button
|
||||||
|
Seat 1: Player0 ($19.70 in chips)
|
||||||
|
Seat 2: Player1 ($50.75 in chips)
|
||||||
|
Player1: posts small blind $0.25
|
||||||
|
Player0: posts big blind $0.50
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player0 [Ks 9c]
|
||||||
|
Player1: raises $1 to $1.50
|
||||||
|
Player0: calls $1
|
||||||
|
*** FLOP *** [3d As 4s]
|
||||||
|
Player0: checks
|
||||||
|
Player1: bets $2
|
||||||
|
Player0: calls $2
|
||||||
|
*** TURN *** [3d As 4s] [Jd]
|
||||||
|
Player0: checks
|
||||||
|
Player1: checks
|
||||||
|
*** RIVER *** [3d As 4s Jd] [3h]
|
||||||
|
Player0: checks
|
||||||
|
Player1: checks
|
||||||
|
*** SHOW DOWN ***
|
||||||
|
Player0: shows [Ks 9c] (a pair of Threes)
|
||||||
|
Player1: mucks hand
|
||||||
|
Player0 collected $6.70 from pot
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $7 | Rake $0.30
|
||||||
|
Board [3d As 4s Jd 3h]
|
||||||
|
Seat 1: Player0 (big blind) showed [Ks 9c] and won ($6.70) with a pair of Threes
|
||||||
|
Seat 2: Player1 (button) (small blind) mucked [6c 5s]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PokerStars Game #10697227103: Hold'em No Limit ($0.25/$0.50 USD) - 2010/05/23 22:41:10 WET [2010/05/23 17:41:10 ET]
|
||||||
|
Table '99999999 II' 2-max Seat #1 is the button
|
||||||
|
Seat 1: Player0 ($22.90 in chips)
|
||||||
|
Seat 2: Player1 ($50 in chips)
|
||||||
|
Player0: posts small blind $0.25
|
||||||
|
Player1: posts big blind $0.50
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player0 [Ts 3d]
|
||||||
|
Player0: folds
|
||||||
|
Uncalled bet ($0.25) returned to Player1
|
||||||
|
Player1 collected $0.50 from pot
|
||||||
|
Player1: doesn't show hand
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $0.50 | Rake $0
|
||||||
|
Seat 1: Player0 (button) (small blind) folded before Flop
|
||||||
|
Seat 2: Player1 (big blind) collected ($0.50)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PokerStars Game #27159326072: Hold'em No Limit ($0.25/$0.50 USD) - 2010/05/23 22:41:17 WET [2010/05/23 17:41:17 ET]
|
||||||
|
Table '99999999 II' 2-max Seat #2 is the button
|
||||||
|
Seat 1: Player0 ($22.65 in chips)
|
||||||
|
Seat 2: Player1 ($50.25 in chips)
|
||||||
|
Player1: posts small blind $0.25
|
||||||
|
Player0: posts big blind $0.50
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player0 [4h Ks]
|
||||||
|
Player1: raises $1 to $1.50
|
||||||
|
Player0: folds
|
||||||
|
Uncalled bet ($1) returned to Player1
|
||||||
|
Player1 collected $1 from pot
|
||||||
|
Player1: doesn't show hand
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $1 | Rake $0
|
||||||
|
Seat 1: Player0 (big blind) folded before Flop
|
||||||
|
Seat 2: Player1 (button) (small blind) collected ($1)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
PokerStars Game #42738187409: Hold'em No Limit ($0.01/$0.02 USD) - 2010/04/16 11:14:06 WET [2010/04/16 6:14:06 ET]
|
||||||
|
Table 'Circinus V' 9-max Seat #4 is the button
|
||||||
|
Seat 1: Player2 ($4.26 in chips)
|
||||||
|
Seat 2: Player1 ($0.35 in chips)
|
||||||
|
Seat 3: Player7 ($8.34 in chips)
|
||||||
|
Seat 4: Player5 ($3.70 in chips)
|
||||||
|
Seat 5: Player6 ($4.98 in chips)
|
||||||
|
Seat 7: Player3 ($2.55 in chips)
|
||||||
|
Seat 8: Player0 ($4.91 in chips)
|
||||||
|
Seat 9: Player4 ($1.31 in chips)
|
||||||
|
Player6: posts small blind $0.01
|
||||||
|
Alehta: is sitting out
|
||||||
|
Player3: posts big blind $0.02
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player1 [3d Ks]
|
||||||
|
Alehta leaves the table
|
||||||
|
Player0: calls $0.02
|
||||||
|
Player4: raises $0.06 to $0.08
|
||||||
|
Player2: raises $0.16 to $0.24
|
||||||
|
AFMAT joins the table at seat #6
|
||||||
|
Player1: folds
|
||||||
|
Player7: folds
|
||||||
|
Player5: folds
|
||||||
|
Player6: folds
|
||||||
|
Player3: folds
|
||||||
|
Player0: calls $0.22
|
||||||
|
Player4: raises $1.07 to $1.31 and is all-in
|
||||||
|
Player2: calls $1.07
|
||||||
|
Player0: folds
|
||||||
|
*** FLOP *** [7c Ac 6s]
|
||||||
|
*** TURN *** [7c Ac 6s] [5d]
|
||||||
|
*** RIVER *** [7c Ac 6s 5d] [Qh]
|
||||||
|
*** SHOW DOWN ***
|
||||||
|
Player4: shows [As Qs] (two pair, Aces and Queens)
|
||||||
|
Player2: shows [Jc Jd] (a pair of Jacks)
|
||||||
|
Player4 collected $2.79 from pot
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $2.89 | Rake $0.10
|
||||||
|
Board [7c Ac 6s 5d Qh]
|
||||||
|
Seat 1: Player2 showed [Jc Jd] and lost with a pair of Jacks
|
||||||
|
Seat 2: Player1 folded before Flop (didn't bet)
|
||||||
|
Seat 3: Player7 folded before Flop (didn't bet)
|
||||||
|
Seat 4: Player5 (button) folded before Flop (didn't bet)
|
||||||
|
Seat 5: Player6 (small blind) folded before Flop
|
||||||
|
Seat 7: Player3 (big blind) folded before Flop
|
||||||
|
Seat 8: Player0 folded before Flop
|
||||||
|
Seat 9: Player4 showed [As Qs] and won ($2.79) with two pair, Aces and Queens
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,45 @@
|
||||||
|
PokerStars Game #24782122321: Hold'em No Limit ($0.01/$0.02 USD) - 2010/06/06 22:24:02 WET [2010/06/06 17:24:02 ET]
|
||||||
|
Table '999999999' 9-max Seat #1 is the button
|
||||||
|
Seat 1: Player2 ($0.88 in chips)
|
||||||
|
Seat 2: Player0 ($1.61 in chips)
|
||||||
|
Seat 3: Player5 ($5.27 in chips)
|
||||||
|
Seat 5: Player1 ($2.15 in chips)
|
||||||
|
Seat 6: Player3 ($2.55 in chips)
|
||||||
|
Seat 7: Player6 ($2.90 in chips)
|
||||||
|
Seat 9: Player4 ($1.93 in chips)
|
||||||
|
Player0: posts small blind $0.01
|
||||||
|
Player5: posts big blind $0.02
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player0 [Td Qc]
|
||||||
|
Player1: folds
|
||||||
|
Player3: calls $0.02
|
||||||
|
Player3 said, "":D""
|
||||||
|
Player6: folds
|
||||||
|
Player4: folds
|
||||||
|
Player2 has timed out
|
||||||
|
Player2: folds
|
||||||
|
Player0: calls $0.01
|
||||||
|
Player5: checks
|
||||||
|
*** FLOP *** [7d 2s Jc]
|
||||||
|
Player0: checks
|
||||||
|
Player5: checks
|
||||||
|
Player3: checks
|
||||||
|
*** TURN *** [7d 2s Jc] [2h]
|
||||||
|
Player0: folds
|
||||||
|
Player5: bets $0.06
|
||||||
|
Player3: folds
|
||||||
|
Uncalled bet ($0.06) returned to Player5
|
||||||
|
Player5 collected $0.06 from pot
|
||||||
|
Player5: doesn't show hand
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $0.06 | Rake $0
|
||||||
|
Board [7d 2s Jc 2h]
|
||||||
|
Seat 1: Player2 (button) folded before Flop (didn't bet)
|
||||||
|
Seat 2: Player0 (small blind) folded on the Turn
|
||||||
|
Seat 3: Player5 (big blind) collected ($0.06)
|
||||||
|
Seat 5: Player1 folded before Flop (didn't bet)
|
||||||
|
Seat 6: Player3 folded on the Turn
|
||||||
|
Seat 7: Player6 folded before Flop (didn't bet)
|
||||||
|
Seat 9: Player4 folded before Flop (didn't bet)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
PokerStars Game #42875758685: Hold'em No Limit ($0.05/$0.10 USD) - 2010/04/19 0:19:11 WET [2010/04/18 19:19:11 ET]
|
||||||
|
Table 'gimick VI' 9-max Seat #4 is the button
|
||||||
|
Seat 3: Player1 ($5.55 in chips)
|
||||||
|
Seat 4: Player0 ($2.40 in chips)
|
||||||
|
Seat 8: Player2 ($3.90 in chips)
|
||||||
|
Player2: posts small blind $0.05
|
||||||
|
Player1: posts big blind $0.10
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player0 [7d 8d]
|
||||||
|
Player0: raises $0.30 to $0.40
|
||||||
|
Player2: calls $0.35
|
||||||
|
Player1: folds
|
||||||
|
*** FLOP *** [2h 2d Qd]
|
||||||
|
Player2: checks
|
||||||
|
Player0: bets $0.60
|
||||||
|
Player2: raises $0.60 to $1.20
|
||||||
|
Player0: calls $0.60
|
||||||
|
*** TURN *** [2h 2d Qd] [5d]
|
||||||
|
Player2: bets $0.90
|
||||||
|
Player0: calls $0.80 and is all-in
|
||||||
|
Uncalled bet ($0.10) returned to Player2
|
||||||
|
*** RIVER *** [2h 2d Qd 5d] [4d]
|
||||||
|
*** SHOW DOWN ***
|
||||||
|
Player2: shows [9d As] (a flush, Queen high)
|
||||||
|
Player0: shows [7d 8d] (a flush, Queen high - lower cards)
|
||||||
|
Player2 collected $4.70 from pot
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $4.90 | Rake $0.20
|
||||||
|
Board [2h 2d Qd 5d 4d]
|
||||||
|
Seat 3: Player1 (big blind) folded before Flop
|
||||||
|
Seat 4: Player0 (button) showed [7d 8d] and lost with a flush, Queen high
|
||||||
|
Seat 8: Player2 (small blind) showed [9d As] and won ($4.70) with a flush, Queen high
|
||||||
|
|
|
@ -0,0 +1,158 @@
|
||||||
|
|
||||||
|
PokerStars Game #14311270221: Omaha Pot Limit ($0.01/$0.02 USD) - 2010/06/07 20:13:12 WET [2010/06/07 15:13:12 ET]
|
||||||
|
Table '99999999I' 9-max Seat #3 is the button
|
||||||
|
Seat 2: Player5 ($0.58 in chips)
|
||||||
|
Seat 3: Player1 ($0.65 in chips)
|
||||||
|
Seat 6: Player4 ($1.92 in chips)
|
||||||
|
Seat 7: Player6 ($2.81 in chips)
|
||||||
|
Seat 8: Player3 ($2.50 in chips)
|
||||||
|
Seat 9: Player2 ($0.80 in chips)
|
||||||
|
Player0 will be allowed to play after the button
|
||||||
|
Player4: posts small blind $0.01
|
||||||
|
Player6: posts big blind $0.02
|
||||||
|
Player3: posts big blind $0.02
|
||||||
|
Player2: posts big blind $0.02
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player1 [8d As 2h Ks]
|
||||||
|
Player3: checks
|
||||||
|
Player2: checks
|
||||||
|
Player5: raises $0.02 to $0.04
|
||||||
|
Player1: raises $0.02 to $0.06
|
||||||
|
Player4: calls $0.05
|
||||||
|
Player6: folds
|
||||||
|
Player3: calls $0.04
|
||||||
|
Player2: calls $0.04
|
||||||
|
Player5: calls $0.02
|
||||||
|
*** FLOP *** [Qh 7c Qs]
|
||||||
|
Player4: checks
|
||||||
|
Player3: checks
|
||||||
|
Player2: bets $0.31
|
||||||
|
Player5: folds
|
||||||
|
Player1: folds
|
||||||
|
Player4: folds
|
||||||
|
Player3: folds
|
||||||
|
Uncalled bet ($0.31) returned to Player2
|
||||||
|
Player2 collected $0.31 from pot
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $0.32 | Rake $0.01
|
||||||
|
Board [Qh 7c Qs]
|
||||||
|
Seat 2: Player5 folded on the Flop
|
||||||
|
Seat 3: Player1 (button) folded on the Flop
|
||||||
|
Seat 6: Player4 (small blind) folded on the Flop
|
||||||
|
Seat 7: Player6 (big blind) folded before Flop
|
||||||
|
Seat 8: Player3 folded on the Flop
|
||||||
|
Seat 9: Player2 collected ($0.31)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PokerStars Game #22865231671: Omaha Pot Limit ($0.01/$0.02 USD) - 2010/06/07 20:14:17 WET [2010/06/07 15:14:17 ET]
|
||||||
|
Table '99999999I' 9-max Seat #6 is the button
|
||||||
|
Seat 2: Player5 ($0.52 in chips)
|
||||||
|
Seat 3: Player1 ($0.59 in chips)
|
||||||
|
Seat 5: Player0 ($0.90 in chips)
|
||||||
|
Seat 6: Player4 ($1.86 in chips)
|
||||||
|
Seat 7: Player6 ($2.79 in chips)
|
||||||
|
Seat 8: Player3 ($5 in chips)
|
||||||
|
Seat 9: Player2 ($1.05 in chips)
|
||||||
|
Player6: posts small blind $0.01
|
||||||
|
Player3: posts big blind $0.02
|
||||||
|
Player0: posts big blind $0.02
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player1 [6d 3c 5s As]
|
||||||
|
Player2: calls $0.02
|
||||||
|
Player5: calls $0.02
|
||||||
|
Player1: calls $0.02
|
||||||
|
Player0: raises $0.06 to $0.08
|
||||||
|
Player4: calls $0.08
|
||||||
|
Player6: folds
|
||||||
|
Player3: folds
|
||||||
|
Player2: calls $0.06
|
||||||
|
Player5: calls $0.06
|
||||||
|
Player1: raises $0.06 to $0.14
|
||||||
|
Player0: raises $0.55 to $0.69
|
||||||
|
Player4: calls $0.61
|
||||||
|
Player2: raises $0.36 to $1.05 and is all-in
|
||||||
|
Player5: folds
|
||||||
|
Player1: calls $0.45 and is all-in
|
||||||
|
Player0: calls $0.21 and is all-in
|
||||||
|
Player4: calls $0.36
|
||||||
|
*** FLOP *** [6c Kc Qc]
|
||||||
|
*** TURN *** [6c Kc Qc] [Jc]
|
||||||
|
*** RIVER *** [6c Kc Qc Jc] [4c]
|
||||||
|
*** SHOW DOWN ***
|
||||||
|
Player2: shows [Js Ah 5d 9h] (a pair of Jacks)
|
||||||
|
Player4: shows [9c 9d 7d 7h] (a pair of Nines)
|
||||||
|
Player2 collected $0.29 from side pot-2
|
||||||
|
Player0: shows [Ks Ad 7s Tc] (a straight, Ten to Ace)
|
||||||
|
Player0 collected $0.88 from side pot-1
|
||||||
|
Player1: shows [6d 3c 5s As] (a pair of Sixes)
|
||||||
|
Player0 collected $2.35 from main pot
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $3.70 Main pot $2.35. Side pot-1 $0.88. Side pot-2 $0.29. | Rake $0.18
|
||||||
|
Board [6c Kc Qc Jc 4c]
|
||||||
|
Seat 2: Player5 folded before Flop
|
||||||
|
Seat 3: Player1 showed [6d 3c 5s As] and lost with a pair of Sixes
|
||||||
|
Seat 5: Player0 showed [Ks Ad 7s Tc] and won ($3.23) with a straight, Ten to Ace
|
||||||
|
Seat 6: Player4 (button) showed [9c 9d 7d 7h] and lost with a pair of Nines
|
||||||
|
Seat 7: Player6 (small blind) folded before Flop
|
||||||
|
Seat 8: Player3 (big blind) folded before Flop
|
||||||
|
Seat 9: Player2 showed [Js Ah 5d 9h] and won ($0.29) with a pair of Jacks
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PokerStars Game #60920749213: Omaha Pot Limit ($0.01/$0.02 USD) - 2010/06/07 20:15:29 WET [2010/06/07 15:15:29 ET]
|
||||||
|
Table '99999999I' 9-max Seat #7 is the button
|
||||||
|
Seat 2: Player5 ($0.44 in chips)
|
||||||
|
Seat 3: Player1 ($0.80 in chips)
|
||||||
|
Seat 5: Player0 ($3.23 in chips)
|
||||||
|
Seat 6: Player4 ($0.81 in chips)
|
||||||
|
Seat 7: Player6 ($2.78 in chips)
|
||||||
|
Seat 8: Player3 ($4.98 in chips)
|
||||||
|
Seat 9: Player2 ($0.29 in chips)
|
||||||
|
Player3: posts small blind $0.01
|
||||||
|
Player2: posts big blind $0.02
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player1 [2c 4c 3s 7c]
|
||||||
|
Player5: calls $0.02
|
||||||
|
Player1: calls $0.02
|
||||||
|
Player0: calls $0.02
|
||||||
|
Player4: folds
|
||||||
|
Player6: calls $0.02
|
||||||
|
Player3: folds
|
||||||
|
Player2: checks
|
||||||
|
*** FLOP *** [7h 8s 4s]
|
||||||
|
Player2: checks
|
||||||
|
Player5: bets $0.02
|
||||||
|
Player1: raises $0.02 to $0.04
|
||||||
|
Player0: raises $0.14 to $0.18
|
||||||
|
Player6: calls $0.18
|
||||||
|
Player2: raises $0.09 to $0.27 and is all-in
|
||||||
|
Player5: calls $0.25
|
||||||
|
Player1: raises $0.51 to $0.78 and is all-in
|
||||||
|
Player0: calls $0.60
|
||||||
|
Player6: folds
|
||||||
|
Player5: calls $0.15 and is all-in
|
||||||
|
*** TURN *** [7h 8s 4s] [2s]
|
||||||
|
*** RIVER *** [7h 8s 4s 2s] [2h]
|
||||||
|
*** SHOW DOWN ***
|
||||||
|
Player1: shows [2c 4c 3s 7c] (a full house, Deuces full of Sevens)
|
||||||
|
Player0: shows [6h 3h Tc 9c] (a pair of Deuces)
|
||||||
|
Player1 collected $0.69 from side pot-2
|
||||||
|
Player5: shows [3d 5c 8h 7s] (two pair, Eights and Sevens)
|
||||||
|
Player1 collected $0.42 from side pot-1
|
||||||
|
Player2: shows [5s 7d Kd 9h] (two pair, Sevens and Deuces)
|
||||||
|
Player1 collected $1.31 from main pot
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot $2.54 Main pot $1.31. Side pot-1 $0.42. Side pot-2 $0.69. | Rake $0.12
|
||||||
|
Board [7h 8s 4s 2s 2h]
|
||||||
|
Seat 2: Player5 showed [3d 5c 8h 7s] and lost with two pair, Eights and Sevens
|
||||||
|
Seat 3: Player1 showed [2c 4c 3s 7c] and won ($2.42) with a full house, Deuces full of Sevens
|
||||||
|
Seat 5: Player0 showed [6h 3h Tc 9c] and lost with a pair of Deuces
|
||||||
|
Seat 6: Player4 folded before Flop (didn't bet)
|
||||||
|
Seat 7: Player6 (button) folded on the Flop
|
||||||
|
Seat 8: Player3 (small blind) folded before Flop
|
||||||
|
Seat 9: Player2 (big blind) showed [5s 7d Kd 9h] and lost with two pair, Sevens and Deuces
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
Full Tilt Poker Game #19505996411: $2 + $0.25 Sit & Go (148860619), Table 1 - 300/600 - Limit Hold'em - 18:58:46 ET - 2010/03/23
|
||||||
|
Seat 2: Player2 (7,723)
|
||||||
|
Seat 5: Player5 (3,409)
|
||||||
|
Seat 6: Player6 (50)
|
||||||
|
Seat 8: Player8 (818)
|
||||||
|
Player6 posts the small blind of 50, and is all in
|
||||||
|
Player8 posts the big blind of 300
|
||||||
|
The button is in seat #5
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player5 [2h 9h]
|
||||||
|
Player2 has 15 seconds left to act
|
||||||
|
Player2 calls 300
|
||||||
|
Player5 folds
|
||||||
|
Player8 checks
|
||||||
|
*** FLOP *** [2d 7s Qc]
|
||||||
|
Player8 checks
|
||||||
|
Player2 checks
|
||||||
|
*** TURN *** [2d 7s Qc] [8s]
|
||||||
|
Player8 checks
|
||||||
|
Player2 checks
|
||||||
|
*** RIVER *** [2d 7s Qc 8s] [5c]
|
||||||
|
Player8 checks
|
||||||
|
Player2 checks
|
||||||
|
*** SHOW DOWN ***
|
||||||
|
Player8 shows [Ts 4c] Queen Ten high
|
||||||
|
Player2 shows [2c As] a pair of Twos
|
||||||
|
Player2 wins the side pot (500) with a pair of Twos
|
||||||
|
Player6 shows [7c 5s] two pair, Sevens and Fives
|
||||||
|
Player6 wins the main pot (150) with two pair, Sevens and Fives
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot 650 Main pot 150. Side pot 500. | Rake 0
|
||||||
|
Board: [2d 7s Qc 8s 5c]
|
||||||
|
Seat 2: Player2 showed [2c As] and won (500) with a pair of Twos
|
||||||
|
Seat 5: Player5 (button) didn't bet (folded)
|
||||||
|
Seat 6: Player6 (small blind) showed [7c 5s] and won (150) with two pair, Sevens and Fives
|
||||||
|
Seat 8: Player8 (big blind) showed [Ts 4c] and lost with Queen Ten high
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,65 @@
|
||||||
|
PokerStars Game #74759586758: Tournament #589688686, $1.00+$0.15 USD Hold'em No Limit - Level I (10/20) - 2010/04/10 22:18:19 WET [2010/04/10 17:18:19 ET]
|
||||||
|
Table '589688686 1' 10-max Seat #4 is the button
|
||||||
|
Seat 1: Player3 (1400 in chips)
|
||||||
|
Seat 2: Player5 (1470 in chips)
|
||||||
|
Seat 3: Player0 (1820 in chips)
|
||||||
|
Seat 4: Player2 (1620 in chips)
|
||||||
|
Seat 5: Player6 (560 in chips)
|
||||||
|
Seat 6: Player7 (1500 in chips)
|
||||||
|
Seat 7: Player8 (1500 in chips)
|
||||||
|
Seat 8: Player4 (1500 in chips)
|
||||||
|
Seat 9: Player1 (1500 in chips)
|
||||||
|
Seat 10: Player9 (2130 in chips)
|
||||||
|
Player6: posts small blind 10
|
||||||
|
Player7: posts big blind 20
|
||||||
|
*** HOLE CARDS ***
|
||||||
|
Dealt to Player0 [8c Tc]
|
||||||
|
Player8: calls 20
|
||||||
|
Player4: folds
|
||||||
|
Player1: folds
|
||||||
|
Player9: folds
|
||||||
|
Player3: folds
|
||||||
|
Player5: calls 20
|
||||||
|
Player0: calls 20
|
||||||
|
Player2: raises 20 to 40
|
||||||
|
Player6: calls 30
|
||||||
|
Player7: folds
|
||||||
|
Player8: calls 20
|
||||||
|
Player5: calls 20
|
||||||
|
Player0: raises 20 to 60
|
||||||
|
Player2: raises 20 to 80
|
||||||
|
Player6: calls 40
|
||||||
|
Player8: calls 40
|
||||||
|
Player5: folds
|
||||||
|
Player0: raises 20 to 100
|
||||||
|
Player2: raises 20 to 120
|
||||||
|
Player6: calls 40
|
||||||
|
Player8: calls 40
|
||||||
|
Player0: raises 20 to 140
|
||||||
|
Player2: raises 1480 to 1620 and is all-in
|
||||||
|
Player6: folds
|
||||||
|
Player8: folds
|
||||||
|
Player0: calls 1480
|
||||||
|
*** FLOP *** [8d 7d Qs]
|
||||||
|
*** TURN *** [8d 7d Qs] [Qc]
|
||||||
|
*** RIVER *** [8d 7d Qs Qc] [7c]
|
||||||
|
*** SHOW DOWN ***
|
||||||
|
Player0: shows [8c Tc] (two pair, Queens and Eights)
|
||||||
|
Player2: shows [3d Ad] (two pair, Queens and Sevens)
|
||||||
|
Player0 collected 3540 from pot
|
||||||
|
*** SUMMARY ***
|
||||||
|
Total pot 3540 | Rake 0
|
||||||
|
Board [8d 7d Qs Qc 7c]
|
||||||
|
Seat 1: Player3 folded before Flop (didn't bet)
|
||||||
|
Seat 2: Player5 folded before Flop
|
||||||
|
Seat 3: Player0 showed [8c Tc] and won (3540) with two pair, Queens and Eights
|
||||||
|
Seat 4: Player2 (button) showed [3d Ad] and lost with two pair, Queens and Sevens
|
||||||
|
Seat 5: Player6 (small blind) folded before Flop
|
||||||
|
Seat 6: Player7 (big blind) folded before Flop
|
||||||
|
Seat 7: Player8 folded before Flop
|
||||||
|
Seat 8: Player4 folded before Flop (didn't bet)
|
||||||
|
Seat 9: Player1 folded before Flop (didn't bet)
|
||||||
|
Seat 10: Player9 folded before Flop (didn't bet)
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
7
run_fpdb.py
Normal file → Executable file
7
run_fpdb.py
Normal file → Executable file
|
@ -15,7 +15,6 @@
|
||||||
#In the "official" distribution you can find the license in
|
#In the "official" distribution you can find the license in
|
||||||
#agpl-3.0.txt in the docs folder of the package.
|
#agpl-3.0.txt in the docs folder of the package.
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
@ -25,6 +24,8 @@ sys.path[0] = sys.path[0]+os.sep+"pyfpdb"
|
||||||
os.chdir(sys.path[0])
|
os.chdir(sys.path[0])
|
||||||
#print "sys.path[0] =", sys.path[0], "cwd =", os.getcwd()
|
#print "sys.path[0] =", sys.path[0], "cwd =", os.getcwd()
|
||||||
|
|
||||||
|
if os.name=='nt':
|
||||||
os.execvpe('pythonw.exe', ('pythonw.exe', 'fpdb.pyw', '-r'), os.environ)
|
os.execvpe('pythonw.exe', list(('pythonw.exe', 'fpdb.pyw', '-r'))+sys.argv[1:], os.environ)
|
||||||
|
else:
|
||||||
|
os.execvpe('python', list(('python', 'fpdb.pyw', '-r'))+sys.argv[1:], os.environ)
|
||||||
# first arg is ignored (name of program being run)
|
# first arg is ignored (name of program being run)
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
#Copyright 2008 Steffen Jobbagy-Felso
|
|
||||||
#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 in the docs folder of the package.
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import MySQLdb
|
|
||||||
|
|
||||||
db = MySQLdb.connect("localhost", "fpdb", sys.argv[1], "fpdb")
|
|
||||||
cursor = db.cursor()
|
|
||||||
print "Connected to MySQL on localhost. Printing dev-supplied base data:"
|
|
||||||
|
|
||||||
cursor.execute("SELECT * FROM sites")
|
|
||||||
print "Sites"
|
|
||||||
print "====="
|
|
||||||
print cursor.fetchall()
|
|
||||||
|
|
||||||
cursor.execute("SELECT * FROM gametypes")
|
|
||||||
print "Gametypes"
|
|
||||||
print "========="
|
|
||||||
result=cursor.fetchall()
|
|
||||||
for i in range (len(result)):
|
|
||||||
print result[i]
|
|
||||||
|
|
||||||
cursor.close()
|
|
||||||
db.close()
|
|
|
@ -1,83 +0,0 @@
|
||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
#Copyright 2008 Steffen Jobbagy-Felso
|
|
||||||
#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 in the docs folder of the package.
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import MySQLdb
|
|
||||||
|
|
||||||
db = MySQLdb.connect("localhost", "fpdb", sys.argv[1], "fpdb")
|
|
||||||
cursor = db.cursor()
|
|
||||||
print "Connected to MySQL on localhost. Printing summary stats:"
|
|
||||||
|
|
||||||
cursor.execute("SELECT id FROM Players")
|
|
||||||
print "Players:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT id FROM Autorates")
|
|
||||||
print "Autorates:",cursor.rowcount
|
|
||||||
|
|
||||||
cursor.execute("SELECT id FROM Sites")
|
|
||||||
print "Sites:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT id FROM Gametypes")
|
|
||||||
print "Gametypes:",cursor.rowcount
|
|
||||||
|
|
||||||
cursor.execute("SELECT id FROM Hands")
|
|
||||||
print "Total Hands:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.type='ring'")
|
|
||||||
print "Hands, Ring:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.type='stt'")
|
|
||||||
print "Hands, STT:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.type='mtt'")
|
|
||||||
print "Hands, MTT:",cursor.rowcount
|
|
||||||
|
|
||||||
print ""
|
|
||||||
print "Hands per category and type"
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.limitType='cn'")
|
|
||||||
print "Hands, Cap No Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.limitType='cp'")
|
|
||||||
print "Hands, Cap Pot Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='holdem' AND Gametypes.limitType='nl'")
|
|
||||||
print "Hands, Holdem No Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='holdem' AND Gametypes.limitType='pl'")
|
|
||||||
print "Hands, Holdem Pot Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='holdem' AND Gametypes.limitType='fl'")
|
|
||||||
print "Hands, Holdem Fixed Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='omahahi' AND Gametypes.limitType='nl'")
|
|
||||||
print "Hands, Omaha Hi No Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='omahahi' AND Gametypes.limitType='pl'")
|
|
||||||
print "Hands, Omaha Hi Pot Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='omahahi' AND Gametypes.limitType='fl'")
|
|
||||||
print "Hands, Omaha Hi Fixed Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='omahahilo' AND Gametypes.limitType='nl'")
|
|
||||||
print "Hands, Omaha Hi/Lo No Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='omahahilo' AND Gametypes.limitType='pl'")
|
|
||||||
print "Hands, Omaha Hi/Lo Pot Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='omahahilo' AND Gametypes.limitType='fl'")
|
|
||||||
print "Hands, Omaha Hi/Lo Fixed Limit:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='razz'")
|
|
||||||
print "Hands, Razz:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='studhi'")
|
|
||||||
print "Hands, Stud Hi:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT Hands.id FROM Hands INNER JOIN Gametypes ON Hands.gametypeId = Gametypes.id WHERE Gametypes.category='studhilo'")
|
|
||||||
print "Hands, Stud Hi/Lo:",cursor.rowcount
|
|
||||||
print ""
|
|
||||||
cursor.execute("SELECT id FROM BoardCards")
|
|
||||||
print "Board_cards:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT id FROM HandsPlayers")
|
|
||||||
print "Hands_players:",cursor.rowcount
|
|
||||||
cursor.execute("SELECT id FROM HandsActions")
|
|
||||||
print "Hands_actions:",cursor.rowcount
|
|
||||||
|
|
||||||
cursor.close()
|
|
||||||
db.close()
|
|
Loading…
Reference in New Issue
Block a user