Merge
This commit is contained in:
commit
ec8f8aff76
BIN
gfx/Table.png
Normal file
BIN
gfx/Table.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.3 KiB |
|
@ -2,6 +2,19 @@
|
|||
# Distributed under the terms of the GNU General Public License v2
|
||||
# created by Steffen Schaumburg, steffen@schaumburger.info
|
||||
|
||||
29 Aug 2010; Erki Ferenc <erkiferenc@gmail.com>
|
||||
fpdb-0.20.906.ebuild, fpdb-9999.ebuild:
|
||||
improve l10n handling
|
||||
|
||||
29 Aug 2010; Steffen Schaumburg <steffen@schaumburger.info>
|
||||
fpdb-0.20.1.ebuild, fpdb-0.20.906.ebuild, fpdb-9999.ebuild:
|
||||
change required python version to 2.6
|
||||
|
||||
*fpdb-0.20.906 (29 Aug 2010)
|
||||
29 Aug 2010; Steffen Schaumburg <steffen@schaumburger.info>
|
||||
+fpdb-0.20.906.ebuild -fpdb-0.20.904.ebuild:
|
||||
Bump version
|
||||
|
||||
*fpdb-0.20.1 fpdb-0.20.904 fpdb-9999 (17 Aug 2010)
|
||||
|
||||
17 Aug 2010; Steffen Schaumburg <steffen@schaumburger.info>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
DIST fpdb-0.20.1.tar.bz2 662807 RMD160 b5f22a684c605ddbba7d2154005a822b02a19490 SHA1 e4cc40de5849d3ae33a680d917b340ab37c6448b SHA256 46eff0625f300c070ce88c519ae6019f6e1c98a7725733c5e16b50a058247fe3
|
||||
DIST fpdb-0.20.904.tar.bz2 632871 RMD160 6af83a9b30e8b3f394b011a4dc92937f130b9e15 SHA1 083c51f1627f901e24801bf6abebf1d07646bd89 SHA256 5e72055fe7ebb0c6048282f8edc972ee01be21063d6f8071abef22111f3e82f9
|
||||
EBUILD fpdb-0.20.1.ebuild 1591 RMD160 56ccbca72353e56718a927178e58d148177f5846 SHA1 770df692b29b7314d70703010e1f6afac623c3f3 SHA256 e3f434df58d98760a118458166f9fdfcf3612712c78c704f089f6e8ec72bd224
|
||||
EBUILD fpdb-0.20.904.ebuild 1595 RMD160 b5cbcdb8d2984b149c833db8b6aee362168e9c7d SHA1 7151fd3cef087c38060b44adb622843a84209f33 SHA256 41c6ed71aa0ff727d670c94cc72cf595bcd038f601121e51222532df727a6d01
|
||||
EBUILD fpdb-9999.ebuild 1618 RMD160 843d309bbc2ccdd95dbb4b0eb08571d8e16d06ad SHA1 b1ebdbe0e40bd6c0d4ec417dd2b8a135884547a6 SHA256 72205c1f94bcf2c3f310d396928e357fabaee4861773044c1dac71f98f6596bf
|
||||
MISC ChangeLog 395 RMD160 b195ccf198011356ca79b16071093c4d92e5927a SHA1 9aa56e5dc9c5d03b62fb60bc81069f3440b1f606 SHA256 b7ba8c180da0e6a405d939c4485f9c8e52fdcafb04207ef6de217a807015bd03
|
||||
DIST fpdb-0.20.906.tar.bz2 702558 RMD160 bc5d01ef4899502aea33f286ac4274ef7ef498ef SHA1 9791680d53de1b276dc0297ac43a0e11758d3e19 SHA256 9ae706d5e9c2a2ee031d2b222ba46e088993cc892fc08b5276bbfd5e44a0436b
|
||||
EBUILD fpdb-0.20.1.ebuild 1508 RMD160 7585cd1de73172649e182782d427a476afed4036 SHA1 3c92d6dbb868b8b4c26b75539771641087742761 SHA256 9a7d302016e4c4d6cc18af14514bd5112d18aeb7dc6390a3413e3e4cc71da6bd
|
||||
EBUILD fpdb-0.20.906.ebuild 1643 RMD160 ed44ee49d715458b54edbbe054eb5c9775c6ac7a SHA1 ebd8ea291ace0671d4eb264754dfb0616373a51a SHA256 a9bdad768a0ab5ef065f3e6e2e1bd89dded6e0d3b64c4771944c4aae7d163efd
|
||||
EBUILD fpdb-9999.ebuild 1685 RMD160 f06457ead33dca99c0acf830f26bbf2f8ca12cd1 SHA1 70444fa4a88439955472407ec0b072970993631a SHA256 2df59120b376bb4e5966f8a719bc881c756b3210b7a30d394ee1753efbfd706e
|
||||
MISC ChangeLog 831 RMD160 efd32886d09b0750e680716030c0034c3a280a25 SHA1 82f3eda3cd83cbba3e45d4b75593e74f3dd4f568 SHA256 d74efef05cf51ef3840ef043218c8a30c1bcccfa9d9d2e4ca1b7198ed1c91f29
|
||||
MISC metadata.xml 550 RMD160 a6fa8799f644c0882f832a12cc9e6a0f4f09ae7f SHA1 3a40c442cadb1f532e0299040c2da79e9721dd4f SHA256 b5a1c538de3786446a87479b1023cdb4f084085feb7290959619739969ce7d3b
|
||||
|
|
|
@ -4,10 +4,7 @@
|
|||
|
||||
EAPI="2"
|
||||
|
||||
inherit eutils
|
||||
inherit games
|
||||
|
||||
NEED_PYTHON=2.5
|
||||
inherit eutils games
|
||||
|
||||
DESCRIPTION="A free/open source tracker/HUD for use with online poker"
|
||||
HOMEPAGE="http://fpdb.wiki.sourceforge.net/"
|
||||
|
@ -49,7 +46,7 @@ src_install() {
|
|||
newicon gfx/fpdb-icon.png ${PN}.png
|
||||
make_desktop_entry ${PN}
|
||||
|
||||
chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw
|
||||
fperms +x "${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw
|
||||
prepgamesdirs
|
||||
}
|
||||
|
||||
|
|
|
@ -4,10 +4,7 @@
|
|||
|
||||
EAPI="2"
|
||||
|
||||
inherit eutils
|
||||
inherit games
|
||||
|
||||
NEED_PYTHON=2.5
|
||||
inherit eutils games
|
||||
|
||||
DESCRIPTION="A free/open source tracker/HUD for use with online poker"
|
||||
HOMEPAGE="http://fpdb.wiki.sourceforge.net/"
|
||||
|
@ -18,7 +15,7 @@ SLOT="0"
|
|||
KEYWORDS="~amd64 ~x86"
|
||||
#note: this should work on other architectures too, please send me your experiences
|
||||
|
||||
IUSE="graph mysql postgres sqlite linguas_hu linguas_it"
|
||||
IUSE="graph mysql postgres sqlite linguas_hu"
|
||||
RDEPEND="
|
||||
mysql? ( virtual/mysql
|
||||
dev-python/mysql-python )
|
||||
|
@ -36,29 +33,27 @@ DEPEND="${RDEPEND}"
|
|||
|
||||
src_install() {
|
||||
insinto "${GAMES_DATADIR}"/${PN}
|
||||
doins -r gfx
|
||||
doins -r pyfpdb
|
||||
doins -r gfx || die "failed to install gfx directory"
|
||||
doins -r pyfpdb || die "failed to install pyfpdb directory"
|
||||
|
||||
if use linguas_hu; then
|
||||
dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo
|
||||
msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo || die "failed to create hungarian mo file"
|
||||
fi
|
||||
|
||||
if use linguas_it; then
|
||||
dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/it/LC_MESSAGES/${PN}.mo /usr/share/locale/it/LC_MESSAGES/${PN}.mo
|
||||
fi
|
||||
domo pyfpdb/locale/*.mo || die "failed to install mo files"
|
||||
|
||||
doins readme.txt
|
||||
doins readme.txt || die "failed to install readme.txt file"
|
||||
|
||||
exeinto "${GAMES_DATADIR}"/${PN}
|
||||
doexe run_fpdb.py
|
||||
doexe run_fpdb.py || die "failed to install executable run_fpdb.py"
|
||||
|
||||
dodir "${GAMES_BINDIR}"
|
||||
dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN}
|
||||
dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} || die "failed to create symlink for starting fpdb"
|
||||
|
||||
newicon gfx/fpdb-icon.png ${PN}.png
|
||||
make_desktop_entry ${PN}
|
||||
newicon gfx/fpdb-icon.png ${PN}.png || die "failed to install fpdb icon"
|
||||
make_desktop_entry ${PN} || die "failed to create desktop entry"
|
||||
|
||||
chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw
|
||||
fperms +x "${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw
|
||||
prepgamesdirs
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
Repoman currently gives the following errors for our ebuilds:
|
||||
ebuild.allmasked: This error can be ignored, as all our packages are supposed to be masked
|
||||
ebuild.badheader 3
|
||||
games-util/fpdb/fpdb-0.20.1.ebuild: Malformed CVS Header on line: 3
|
||||
games-util/fpdb/fpdb-0.20.904.ebuild: Malformed CVS Header on line: 3
|
||||
games-util/fpdb/fpdb-9999.ebuild: Malformed CVS Header on line: 3
|
||||
not sure what the correct header is for a sunrise ebuild so leaving as-is for now
|
||||
|
||||
Useful Links:
|
||||
http://overlays.gentoo.org/proj/sunrise/wiki/SunriseFaq
|
||||
|
|
|
@ -4,11 +4,7 @@
|
|||
|
||||
EAPI="2"
|
||||
|
||||
inherit eutils
|
||||
inherit games
|
||||
inherit git
|
||||
|
||||
NEED_PYTHON=2.5
|
||||
inherit eutils games git
|
||||
|
||||
DESCRIPTION="A free/open source tracker/HUD for use with online poker"
|
||||
HOMEPAGE="http://fpdb.wiki.sourceforge.net/"
|
||||
|
@ -17,9 +13,8 @@ EGIT_REPO_URI="git://git.assembla.com/fpdb.git"
|
|||
LICENSE="AGPL-3"
|
||||
SLOT="0"
|
||||
KEYWORDS=""
|
||||
#note: this should work on other architectures too, please send me your experiences
|
||||
|
||||
IUSE="graph mysql postgres sqlite linguas_hu linguas_it"
|
||||
IUSE="graph mysql postgres sqlite linguas_de linguas_hu"
|
||||
RDEPEND="
|
||||
mysql? ( virtual/mysql
|
||||
dev-python/mysql-python )
|
||||
|
@ -44,14 +39,16 @@ src_install() {
|
|||
doins -r gfx
|
||||
doins -r pyfpdb
|
||||
|
||||
if use linguas_hu; then
|
||||
dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo
|
||||
if use linguas_de; then
|
||||
msgfmt pyfpdb/locale/fpdb-de_DE.po -o pyfpdb/locale/de.mo
|
||||
fi
|
||||
|
||||
if use linguas_it; then
|
||||
dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/it/LC_MESSAGES/${PN}.mo /usr/share/locale/it/LC_MESSAGES/${PN}.mo
|
||||
if use linguas_hu; then
|
||||
msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo
|
||||
fi
|
||||
|
||||
domo pyfpdb/locale/*.mo
|
||||
|
||||
doins readme.txt
|
||||
|
||||
exeinto "${GAMES_DATADIR}"/${PN}
|
||||
|
@ -63,7 +60,7 @@ src_install() {
|
|||
newicon gfx/fpdb-icon.png ${PN}.png
|
||||
make_desktop_entry ${PN}
|
||||
|
||||
chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw
|
||||
fperms +x "${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw
|
||||
prepgamesdirs
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# TODO: I have no idea if AP has multi-currency options, i just copied the regex out of Everleaf converter for the currency symbols.. weeeeee - Eric
|
||||
import sys
|
||||
import logging
|
||||
|
@ -42,7 +45,13 @@ class Absolute(HandHistoryConverter):
|
|||
#Seat 6 - FETS63 ($0.75 in chips)
|
||||
#Board [10s 5d Kh Qh 8c]
|
||||
|
||||
re_GameInfo = re.compile(ur"^Stage #(C?[0-9]+): (?P<GAME>Holdem|HORSE)(?: \(1 on 1\)|)? ?(?P<LIMIT>No Limit|Pot Limit|Normal|)? ?(?P<CURRENCY>\$| €|)(?P<SB>[.0-9]+)/?(?:\$| €|)(?P<BB>[.0-9]+)?", re.MULTILINE)
|
||||
re_GameInfo = re.compile(ur"""^Stage #(C?[0-9]+):\s+
|
||||
(?P<GAME>Holdem|Seven\sCard\sHi\/L|HORSE)
|
||||
(?:\s\(1\son\s1\)|)?\s+?
|
||||
(?P<LIMIT>No Limit|Pot\sLimit|Normal|)?\s?
|
||||
(?P<CURRENCY>\$|\s€|)
|
||||
(?P<SB>[.0-9]+)/?(?:\$|\s€|)(?P<BB>[.0-9]+)?
|
||||
""", re.MULTILINE|re.VERBOSE)
|
||||
re_HorseGameInfo = re.compile(ur"^Game Type: (?P<LIMIT>Limit) (?P<GAME>Holdem)", re.MULTILINE)
|
||||
# TODO: can set max seats via (1 on 1) to a known 2 ..
|
||||
re_HandInfo = re.compile(ur"^Stage #C?(?P<HID>[0-9]+): .*(?P<DATETIME>\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d).*\n(Table: (?P<TABLE>.*) \(Real Money\))?", re.MULTILINE)
|
||||
|
@ -50,12 +59,6 @@ class Absolute(HandHistoryConverter):
|
|||
re_Button = re.compile(ur"Seat #(?P<BUTTON>[0-9]) is the ?[dead]* dealer$", re.MULTILINE) # TODO: that's not the right way to match for "dead" dealer is it?
|
||||
re_PlayerInfo = re.compile(ur"^Seat (?P<SEAT>[0-9]) - (?P<PNAME>.*) \((?:\$| €|)(?P<CASH>[0-9]*[.0-9]+) in chips\)", re.MULTILINE)
|
||||
re_Board = re.compile(ur"\[(?P<CARDS>[^\]]*)\]? *$", re.MULTILINE)
|
||||
# re_GameInfo = re.compile(ur"^(Blinds )?(?P<CURRENCY>\$| €|)(?P<SB>[.0-9]+)/(?:\$| €)?(?P<BB>[.0-9]+) (?P<LIMIT>NL|PL|) ?(?P<GAME>(Holdem|Omaha|7 Card Stud))", re.MULTILINE)
|
||||
#re.compile(ur"^(Blinds )?(?P<CURRENCY>\$| €|)(?P<SB>[.0-9]+)/(?:\$| €)?(?P<BB>[.0-9]+) (?P<LIMIT>NL|PL|) (?P<GAME>(Hold\'em|Omaha|7 Card Stud))", re.MULTILINE)
|
||||
# re_HandInfo = re.compile(ur".*#(?P<HID>[0-9]+)\n.*\n(Blinds )?(?:\$| €|)(?P<SB>[.0-9]+)/(?:\$| €|)(?P<BB>[.0-9]+) (?P<GAMETYPE>.*) - (?P<DATETIME>\d\d\d\d/\d\d/\d\d - \d\d:\d\d:\d\d)\nTable (?P<TABLE>.+$)", re.MULTILINE)
|
||||
# re_Button = re.compile(ur"^Seat (?P<BUTTON>\d+) is the button", re.MULTILINE)
|
||||
# re_PlayerInfo = re.compile(ur"^Seat (?P<SEAT>[0-9]+): (?P<PNAME>.*) \(\s+((?:\$| €|) (?P<CASH>[.0-9]+) (USD|EUR|)|new player|All-in) \)", re.MULTILINE)
|
||||
# re_Board = re.compile(ur"\[ (?P<CARDS>.+) \]")
|
||||
|
||||
|
||||
def compilePlayerRegexs(self, hand):
|
||||
|
@ -112,16 +115,21 @@ class Absolute(HandHistoryConverter):
|
|||
|
||||
m = self.re_GameInfo.search(handText)
|
||||
if not m:
|
||||
return None
|
||||
tmp = handText[0:100]
|
||||
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||
|
||||
|
||||
mg = m.groupdict()
|
||||
|
||||
# translations from captured groups to our info strings
|
||||
limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Normal':'fl', 'Limit':'fl'}
|
||||
games = { # base, category
|
||||
"Holdem" : ('hold','holdem'),
|
||||
"Holdem" : ('hold','holdem'),
|
||||
'Omaha' : ('hold','omahahi'),
|
||||
'Razz' : ('stud','razz'),
|
||||
'Seven Card Hi/L' : ('stud','studhilo'),
|
||||
'7 Card Stud' : ('stud','studhi')
|
||||
}
|
||||
currencies = { u' €':'EUR', '$':'USD', '':'T$' }
|
||||
|
@ -164,7 +172,7 @@ class Absolute(HandHistoryConverter):
|
|||
def readHandInfo(self, hand):
|
||||
m = self.re_HandInfo.search(hand.handText)
|
||||
if(m == None):
|
||||
logging.info("Didn't match re_HandInfo")
|
||||
logging.info(_("Didn't match re_HandInfo"))
|
||||
logging.info(hand.handText)
|
||||
return None
|
||||
logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE')))
|
||||
|
@ -221,7 +229,7 @@ class Absolute(HandHistoryConverter):
|
|||
hand.setCommunityCards(street=street, cards=cards)
|
||||
|
||||
def readAntes(self, hand):
|
||||
logging.debug("reading antes")
|
||||
logging.debug(_("reading antes"))
|
||||
m = self.re_Antes.finditer(hand.handText)
|
||||
for player in m:
|
||||
logging.debug("hand.addAnte(%s,%s)" %(player.group('PNAME'), player.group('ANTE')))
|
||||
|
@ -230,17 +238,17 @@ class Absolute(HandHistoryConverter):
|
|||
def readBringIn(self, hand):
|
||||
m = self.re_BringIn.search(hand.handText,re.DOTALL)
|
||||
if m:
|
||||
logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN')))
|
||||
logging.debug(_("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN'))))
|
||||
hand.addBringIn(m.group('PNAME'), m.group('BRINGIN'))
|
||||
else:
|
||||
logging.warning("No bringin found.")
|
||||
logging.warning(_("No bringin found."))
|
||||
|
||||
def readBlinds(self, hand):
|
||||
m = self.re_PostSB.search(hand.handText)
|
||||
if m is not None:
|
||||
hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB'))
|
||||
else:
|
||||
logging.debug("No small blind")
|
||||
logging.debug(_("No small blind"))
|
||||
hand.addBlind(None, None, None)
|
||||
for a in self.re_PostBB.finditer(hand.handText):
|
||||
hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB'))
|
||||
|
@ -267,7 +275,7 @@ class Absolute(HandHistoryConverter):
|
|||
|
||||
def readStudPlayerCards(self, hand, street):
|
||||
# lol. see Plymouth.txt
|
||||
logging.warning("Absolute readStudPlayerCards is only a stub.")
|
||||
logging.warning(_("Absolute readStudPlayerCards is only a stub."))
|
||||
#~ if street in ('THIRD', 'FOURTH', 'FIFTH', 'SIXTH'):
|
||||
#~ hand.addPlayerCards(player = player.group('PNAME'), street = street, closed = [], open = [])
|
||||
|
||||
|
@ -290,7 +298,7 @@ class Absolute(HandHistoryConverter):
|
|||
elif action.group('ATYPE') == ' complete to': # TODO: not supported yet ?
|
||||
hand.addComplete( street, action.group('PNAME'), action.group('BET'))
|
||||
else:
|
||||
logging.debug("Unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),))
|
||||
logging.debug(_("Unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),)))
|
||||
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
|
@ -334,9 +342,9 @@ if __name__ == "__main__":
|
|||
config = Configuration.Config(None)
|
||||
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="-")
|
||||
parser.add_option("-o", "--output", dest="opath", help="output translation to", default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help="follow (tail -f) the input", action="store_true", default=False)
|
||||
parser.add_option("-i", "--input", dest="ipath", help=_("parse input hand history"), default="-")
|
||||
parser.add_option("-o", "--output", dest="opath", help=_("output translation to"), default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help=_("follow (tail -f) the input"), action="store_true", default=False)
|
||||
parser.add_option("-q", "--quiet",
|
||||
action="store_const", const=logging.CRITICAL, dest="verbosity", default=logging.INFO)
|
||||
parser.add_option("-v", "--verbose",
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import os
|
||||
import re
|
||||
import codecs
|
||||
|
@ -23,17 +26,6 @@ import HandHistoryConverter
|
|||
import Configuration
|
||||
import sys
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
(options, argv) = Options.fpdb_options()
|
||||
config = Configuration.Config()
|
||||
|
|
|
@ -18,22 +18,13 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
import logging
|
||||
from HandHistoryConverter import *
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# Betfair HH format
|
||||
|
||||
class Betfair(HandHistoryConverter):
|
||||
|
@ -44,7 +35,7 @@ class Betfair(HandHistoryConverter):
|
|||
siteId = 7 # Needs to match id entry in Sites database
|
||||
|
||||
# Static regexes
|
||||
re_GameInfo = re.compile("^(?P<LIMIT>NL|PL|) (?P<CURRENCY>\$|)?(?P<SB>[.0-9]+)/\$?(?P<BB>[.0-9]+) (?P<GAME>(Texas Hold\'em|Omaha Hi|Razz))", re.MULTILINE)
|
||||
re_GameInfo = re.compile("^(?P<LIMIT>NL|PL|) (?P<CURRENCY>\$|)?(?P<SB>[.0-9]+)/\$?(?P<BB>[.0-9]+) (?P<GAME>(Texas Hold\'em|Omaha Hi|Omaha|Razz))", re.MULTILINE)
|
||||
re_SplitHands = re.compile(r'\n\n+')
|
||||
re_HandInfo = re.compile("\*\*\*\*\* Betfair Poker Hand History for Game (?P<HID>[0-9]+) \*\*\*\*\*\n(?P<LIMIT>NL|PL|) (?P<CURRENCY>\$|)?(?P<SB>[.0-9]+)/\$?(?P<BB>[.0-9]+) (?P<GAMETYPE>(Texas Hold\'em|Omaha Hi|Razz)) - (?P<DATETIME>[a-zA-Z]+, [a-zA-Z]+ \d+, \d\d:\d\d:\d\d GMT \d\d\d\d)\nTable (?P<TABLE>[ a-zA-Z0-9]+) \d-max \(Real Money\)\nSeat (?P<BUTTON>[0-9]+)", re.MULTILINE)
|
||||
re_Button = re.compile(ur"^Seat (?P<BUTTON>\d+) is the button", re.MULTILINE)
|
||||
|
@ -72,7 +63,8 @@ class Betfair(HandHistoryConverter):
|
|||
self.re_ShownCards = re.compile(r"%s (?P<SEAT>[0-9]+) (?P<CARDS>adsfasdf)" % player_re, re.MULTILINE)
|
||||
|
||||
def readSupportedGames(self):
|
||||
return [["ring", "hold", "nl"]
|
||||
return [["ring", "hold", "nl"],
|
||||
["ring", "hold", "pl"]
|
||||
]
|
||||
|
||||
def determineGameType(self, handText):
|
||||
|
@ -80,8 +72,10 @@ class Betfair(HandHistoryConverter):
|
|||
|
||||
m = self.re_GameInfo.search(handText)
|
||||
if not m:
|
||||
logging.info(_('GameInfo regex did not match'))
|
||||
return None
|
||||
tmp = handText[0:100]
|
||||
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||
|
||||
mg = m.groupdict()
|
||||
|
||||
|
@ -90,6 +84,7 @@ class Betfair(HandHistoryConverter):
|
|||
games = { # base, category
|
||||
"Texas Hold'em" : ('hold','holdem'),
|
||||
'Omaha Hi' : ('hold','omahahi'),
|
||||
'Omaha' : ('hold','omahahi'),
|
||||
'Razz' : ('stud','razz'),
|
||||
'7 Card Stud' : ('stud','studhi')
|
||||
}
|
||||
|
@ -104,16 +99,15 @@ class Betfair(HandHistoryConverter):
|
|||
info['bb'] = mg['BB']
|
||||
if 'CURRENCY' in mg:
|
||||
info['currency'] = currencies[mg['CURRENCY']]
|
||||
# NB: SB, BB must be interpreted as blinds or bets depending on limit type.
|
||||
|
||||
return info
|
||||
|
||||
def readHandInfo(self, hand):
|
||||
m = self.re_HandInfo.search(hand.handText)
|
||||
if(m == None):
|
||||
logging.info(_("Didn't match re_HandInfo"))
|
||||
logging.info(hand.handText)
|
||||
return None
|
||||
log.error(_("Didn't match re_HandInfo"))
|
||||
raise FpdbParseError(_("No match in readHandInfo."))
|
||||
print "DEBUG: got this far!"
|
||||
logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE')))
|
||||
hand.handid = m.group('HID')
|
||||
hand.tablename = m.group('TABLE')
|
||||
|
@ -127,7 +121,7 @@ class Betfair(HandHistoryConverter):
|
|||
|
||||
#Shouldn't really dip into the Hand object, but i've no idea how to tell the length of iter m
|
||||
if len(hand.players) < 2:
|
||||
logging.info("readPlayerStacks: Less than 2 players found in a hand")
|
||||
logging.info(_("readPlayerStacks: Less than 2 players found in a hand"))
|
||||
|
||||
def markStreets(self, hand):
|
||||
m = re.search(r"\*\* Dealing down cards \*\*(?P<PREFLOP>.+(?=\*\* Dealing Flop \*\*)|.+)"
|
||||
|
@ -164,7 +158,7 @@ class Betfair(HandHistoryConverter):
|
|||
def readBringIn(self, hand):
|
||||
m = self.re_BringIn.search(hand.handText,re.DOTALL)
|
||||
if m:
|
||||
logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN')))
|
||||
logging.debug(_("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN'))))
|
||||
hand.addBringIn(m.group('PNAME'), m.group('BRINGIN'))
|
||||
else:
|
||||
logging.warning(_("No bringin found"))
|
||||
|
|
|
@ -19,11 +19,13 @@
|
|||
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# This code is based heavily on EverleafToFpdb.py, by Carl Gherardi
|
||||
#
|
||||
# TODO:
|
||||
#
|
||||
# -- No siteID assigned
|
||||
# -- No support for games other than NL hold 'em cash. Hand histories for other
|
||||
# games required
|
||||
# -- No support for limit hold 'em yet, though this would be easy to add
|
||||
|
@ -53,6 +55,7 @@ import logging
|
|||
from HandHistoryConverter import *
|
||||
from decimal import Decimal
|
||||
|
||||
|
||||
class Carbon(HandHistoryConverter):
|
||||
|
||||
sitename = "Carbon"
|
||||
|
@ -73,8 +76,8 @@ class Carbon(HandHistoryConverter):
|
|||
# The following are also static regexes: there is no need to call
|
||||
# compilePlayerRegexes (which does nothing), since players are identified
|
||||
# not by name but by seat number
|
||||
re_PostSB = re.compile(r'<event sequence="[0-9]+" type="(SMALL_BLIND|RETURN_BLIND)" player="(?P<PSEAT>[0-9])" amount="(?P<SB>[.0-9]+)"/>', re.MULTILINE)
|
||||
re_PostBB = re.compile(r'<event sequence="[0-9]+" type="(BIG_BLIND|INITIAL_BLIND)" player="(?P<PSEAT>[0-9])" amount="(?P<BB>[.0-9]+)"/>', re.MULTILINE)
|
||||
re_PostSB = re.compile(r'<event sequence="[0-9]+" type="(SMALL_BLIND|RETURN_BLIND)" (?P<TIMESTAMP>timestamp="[0-9]+" )?player="(?P<PSEAT>[0-9])" amount="(?P<SB>[.0-9]+)"/>', re.MULTILINE)
|
||||
re_PostBB = re.compile(r'<event sequence="[0-9]+" type="(BIG_BLIND|INITIAL_BLIND)" (?P<TIMESTAMP>timestamp="[0-9]+" )?player="(?P<PSEAT>[0-9])" amount="(?P<BB>[.0-9]+)"/>', re.MULTILINE)
|
||||
re_PostBoth = re.compile(r'<event sequence="[0-9]+" type="(RETURN_BLIND)" player="(?P<PSEAT>[0-9])" amount="(?P<SBBB>[.0-9]+)"/>', re.MULTILINE)
|
||||
#re_Antes = ???
|
||||
#re_BringIn = ???
|
||||
|
@ -119,7 +122,15 @@ or None if we fail to get the info """
|
|||
# a hand history file; hence it is not supplied with the second
|
||||
# and subsequent hands. In these cases we use the value previously
|
||||
# stored.
|
||||
return self.info
|
||||
try:
|
||||
self.info
|
||||
return self.info
|
||||
except AttributeError:
|
||||
tmp = handText[0:100]
|
||||
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||
|
||||
self.info = {}
|
||||
mg = m.groupdict()
|
||||
|
||||
|
@ -148,9 +159,9 @@ or None if we fail to get the info """
|
|||
def readHandInfo(self, hand):
|
||||
m = self.re_HandInfo.search(hand.handText)
|
||||
if m is None:
|
||||
logging.info("Didn't match re_HandInfo")
|
||||
logging.info(_("Didn't match re_HandInfo"))
|
||||
logging.info(hand.handText)
|
||||
return None
|
||||
raise FpdbParseError(_("No match in readHandInfo."))
|
||||
logging.debug("HID %s-%s, Table %s" % (m.group('HID1'),
|
||||
m.group('HID2'), m.group('TABLE')[:-1]))
|
||||
hand.handid = m.group('HID1') + m.group('HID2')
|
||||
|
@ -161,7 +172,7 @@ or None if we fail to get the info """
|
|||
# Check that the hand is complete up to the awarding of the pot; if
|
||||
# not, the hand is unparseable
|
||||
if self.re_EndOfHand.search(hand.handText) is None:
|
||||
raise FpdbParseError(hid=m.group('HID1') + "-" + m.group('HID2'))
|
||||
raise FpdbParseError("readHandInfo failed: HID: '%s' HID2: '%s'" %(m.group('HID1'), m.group('HID2')))
|
||||
|
||||
def readPlayerStacks(self, hand):
|
||||
m = self.re_PlayerInfo.finditer(hand.handText)
|
||||
|
@ -201,15 +212,13 @@ or None if we fail to get the info """
|
|||
pass # ???
|
||||
|
||||
def readBlinds(self, hand):
|
||||
try:
|
||||
m = self.re_PostSB.search(hand.handText)
|
||||
hand.addBlind(self.playerNameFromSeatNo(m.group('PSEAT'), hand),
|
||||
'small blind', m.group('SB'))
|
||||
except: # no small blind
|
||||
hand.addBlind(None, None, None)
|
||||
for a in self.re_PostSB.finditer(hand.handText):
|
||||
#print "DEBUG: found sb: '%s' '%s'" %(self.playerNameFromSeatNo(a.group('PSEAT'), hand), a.group('SB'))
|
||||
hand.addBlind(self.playerNameFromSeatNo(a.group('PSEAT'), hand),'small blind', a.group('SB'))
|
||||
|
||||
for a in self.re_PostBB.finditer(hand.handText):
|
||||
hand.addBlind(self.playerNameFromSeatNo(a.group('PSEAT'), hand),
|
||||
'big blind', a.group('BB'))
|
||||
#print "DEBUG: found bb: '%s' '%s'" %(self.playerNameFromSeatNo(a.group('PSEAT'), hand), a.group('BB'))
|
||||
hand.addBlind(self.playerNameFromSeatNo(a.group('PSEAT'), hand), 'big blind', a.group('BB'))
|
||||
for a in self.re_PostBoth.finditer(hand.handText):
|
||||
bb = Decimal(self.info['bb'])
|
||||
amount = Decimal(a.group('SBBB'))
|
||||
|
@ -254,8 +263,8 @@ or None if we fail to get the info """
|
|||
elif action.group('ATYPE') == 'ALL_IN':
|
||||
hand.addAllIn(street, player, action.group('BET'))
|
||||
else:
|
||||
logging.debug("Unimplemented readAction: %s %s"
|
||||
% (action.group('PSEAT'),action.group('ATYPE'),))
|
||||
logging.debug(_("Unimplemented readAction: %s %s"
|
||||
% (action.group('PSEAT'),action.group('ATYPE'),)))
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
for shows in self.re_ShowdownAction.finditer(hand.handText):
|
||||
|
@ -285,9 +294,9 @@ or None if we fail to get the info """
|
|||
|
||||
if __name__ == "__main__":
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="-")
|
||||
parser.add_option("-o", "--output", dest="opath", help="output translation to", default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help="follow (tail -f) the input", action="store_true", default=False)
|
||||
parser.add_option("-i", "--input", dest="ipath", help=_("parse input hand history"), default="-")
|
||||
parser.add_option("-o", "--output", dest="opath", help=_("output translation to"), default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help=_("follow (tail -f) the input"), action="store_true", default=False)
|
||||
parser.add_option("-q", "--quiet", action="store_const", const=logging.CRITICAL, dest="verbosity", default=logging.INFO)
|
||||
parser.add_option("-v", "--verbose", action="store_const", const=logging.INFO, dest="verbosity")
|
||||
parser.add_option("--vv", action="store_const", const=logging.DEBUG, dest="verbosity")
|
||||
|
|
293
pyfpdb/Card.py
293
pyfpdb/Card.py
|
@ -15,34 +15,37 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# From fpdb_simple
|
||||
card_map = { "0": 0, "2": 2, "3" : 3, "4" : 4, "5" : 5, "6" : 6, "7" : 7, "8" : 8,
|
||||
"9" : 9, "T" : 10, "J" : 11, "Q" : 12, "K" : 13, "A" : 14}
|
||||
|
||||
card_map_low = { "0": 0, "A":1, "2": 2, "3" : 3, "4" : 4, "5" : 5, "6" : 6, "7" : 7, "8" : 8,
|
||||
"9" : 9, "T" : 10, "J" : 11, "Q" : 12, "K" : 13}
|
||||
|
||||
def decodeStartHandValue(game, value):
|
||||
if game == "holdem":
|
||||
return twoStartCardString(value)
|
||||
elif game == "razz":
|
||||
return decodeRazzStartHand(value)
|
||||
else:
|
||||
return "xx"
|
||||
|
||||
|
||||
# FIXME: the following is a workaround until switching to newimport.
|
||||
# This should be moved into DerivedStats
|
||||
# I'd also like to change HandsPlayers.startCards to a different datatype
|
||||
# so we can 'trivially' add different start card classifications
|
||||
|
||||
def calcStartCards(hand, player):
|
||||
hcs = hand.join_holecards(player, asList=True)
|
||||
if hand.gametype['category'] == 'holdem':
|
||||
hcs = hand.join_holecards(player, asList=True)
|
||||
#print "DEBUG: hcs: %s" % hcs
|
||||
value1 = card_map[hcs[0][0]]
|
||||
value2 = card_map[hcs[1][0]]
|
||||
return twoStartCards(value1, hcs[0][1], value2, hcs[1][1])
|
||||
elif hand.gametype['category'] == 'razz':
|
||||
return encodeRazzStartHand(hcs)
|
||||
else:
|
||||
# FIXME: Only do startCards value for holdem at the moment
|
||||
return 0
|
||||
|
@ -95,7 +98,7 @@ def twoStartCardString(card):
|
|||
if x == y: ret = s[x] + s[y]
|
||||
elif x > y: ret = s[x] + s[y] + 's'
|
||||
else: ret = s[y] + s[x] + 'o'
|
||||
# print "twoStartCardString(", card ,") = " + ret
|
||||
print "twoStartCardString(", card ,") = " + ret
|
||||
return ret
|
||||
|
||||
def fourStartCards(value1, suit1, value2, suit2, value3, suit3, value4, suit4):
|
||||
|
@ -163,6 +166,266 @@ def encodeCard(cardString):
|
|||
if cardString not in encodeCardList: return 0
|
||||
return encodeCardList[cardString]
|
||||
|
||||
def decodeRazzStartHand(idx):
|
||||
decodeRazzList = {
|
||||
-13:'(00)A',-12:'(00)2',-11:'(00)3',-10:'(00)4',-9:'(00)5',-8:'(00)6',-7:'(00)7',-6:'(00)8',-5:'(00)9',-4:'(00)T',
|
||||
-3:'(00)J',-2:'(00)Q',-1:'(00)K',0:'xxx',
|
||||
1:'(32)A',2:'(3A)2',3:'(2A)3',4:'(42)A',5:'(4A)2',6:'(2A)4',7:'(43)A',8:'(4A)3',9:'(3A)4',
|
||||
10:'(43)2',11:'(42)3',12:'(32)4',13:'(52)A',14:'(5A)2',15:'(2A)5',16:'(53)A',17:'(5A)3',18:'(3A)5',19:'(53)2',
|
||||
20:'(52)3',21:'(32)5',22:'(54)A',23:'(5A)4',24:'(4A)5',25:'(54)2',26:'(52)4',27:'(42)5',28:'(54)3',29:'(53)4',
|
||||
30:'(43)5',31:'(62)A',32:'(6A)2',33:'(2A)6',34:'(63)A',35:'(6A)3',36:'(3A)6',37:'(63)2',38:'(62)3',39:'(32)6',
|
||||
40:'(64)A',41:'(6A)4',42:'(4A)6',43:'(64)2',44:'(62)4',45:'(42)6',46:'(64)3',47:'(63)4',48:'(43)6',49:'(65)A',
|
||||
50:'(6A)5',51:'(5A)6',52:'(65)2',53:'(62)5',54:'(52)6',55:'(65)3',56:'(63)5',57:'(53)6',58:'(65)4',59:'(64)5',
|
||||
60:'(54)6',61:'(72)A',62:'(7A)2',63:'(2A)7',64:'(73)A',65:'(7A)3',66:'(3A)7',67:'(73)2',68:'(72)3',69:'(32)7',
|
||||
70:'(74)A',71:'(7A)4',72:'(4A)7',73:'(74)2',74:'(72)4',75:'(42)7',76:'(74)3',77:'(73)4',78:'(43)7',79:'(75)A',
|
||||
80:'(7A)5',81:'(5A)7',82:'(75)2',83:'(72)5',84:'(52)7',85:'(75)3',86:'(73)5',87:'(53)7',88:'(75)4',89:'(74)5',
|
||||
90:'(54)7',91:'(76)A',92:'(7A)6',93:'(6A)7',94:'(76)2',95:'(72)6',96:'(62)7',97:'(76)3',98:'(73)6',99:'(63)7',
|
||||
100:'(76)4',101:'(74)6',102:'(64)7',103:'(76)5',104:'(75)6',105:'(65)7',106:'(82)A',107:'(8A)2',108:'(2A)8',109:'(83)A',
|
||||
110:'(8A)3',111:'(3A)8',112:'(83)2',113:'(82)3',114:'(32)8',115:'(84)A',116:'(8A)4',117:'(4A)8',118:'(84)2',119:'(82)4',
|
||||
120:'(42)8',121:'(84)3',122:'(83)4',123:'(43)8',124:'(85)A',125:'(8A)5',126:'(5A)8',127:'(85)2',128:'(82)5',129:'(52)8',
|
||||
130:'(85)3',131:'(83)5',132:'(53)8',133:'(85)4',134:'(84)5',135:'(54)8',136:'(86)A',137:'(8A)6',138:'(6A)8',139:'(86)2',
|
||||
140:'(82)6',141:'(62)8',142:'(86)3',143:'(83)6',144:'(63)8',145:'(86)4',146:'(84)6',147:'(64)8',148:'(86)5',149:'(85)6',
|
||||
150:'(65)8',151:'(87)A',152:'(8A)7',153:'(7A)8',154:'(87)2',155:'(82)7',156:'(72)8',157:'(87)3',158:'(83)7',159:'(73)8',
|
||||
160:'(87)4',161:'(84)7',162:'(74)8',163:'(87)5',164:'(85)7',165:'(75)8',166:'(87)6',167:'(86)7',168:'(76)8',169:'(92)A',
|
||||
170:'(9A)2',171:'(2A)9',172:'(93)A',173:'(9A)3',174:'(3A)9',175:'(93)2',176:'(92)3',177:'(32)9',178:'(94)A',179:'(9A)4',
|
||||
180:'(4A)9',181:'(94)2',182:'(92)4',183:'(42)9',184:'(94)3',185:'(93)4',186:'(43)9',187:'(95)A',188:'(9A)5',189:'(5A)9',
|
||||
190:'(95)2',191:'(92)5',192:'(52)9',193:'(95)3',194:'(93)5',195:'(53)9',196:'(95)4',197:'(94)5',198:'(54)9',199:'(96)A',
|
||||
200:'(9A)6',201:'(6A)9',202:'(96)2',203:'(92)6',204:'(62)9',205:'(96)3',206:'(93)6',207:'(63)9',208:'(96)4',209:'(94)6',
|
||||
210:'(64)9',211:'(96)5',212:'(95)6',213:'(65)9',214:'(97)A',215:'(9A)7',216:'(7A)9',217:'(97)2',218:'(92)7',219:'(72)9',
|
||||
220:'(97)3',221:'(93)7',222:'(73)9',223:'(97)4',224:'(94)7',225:'(74)9',226:'(97)5',227:'(95)7',228:'(75)9',229:'(97)6',
|
||||
230:'(96)7',231:'(76)9',232:'(98)A',233:'(9A)8',234:'(8A)9',235:'(98)2',236:'(92)8',237:'(82)9',238:'(98)3',239:'(93)8',
|
||||
240:'(83)9',241:'(98)4',242:'(94)8',243:'(84)9',244:'(98)5',245:'(95)8',246:'(85)9',247:'(98)6',248:'(96)8',249:'(86)9',
|
||||
250:'(98)7',251:'(97)8',252:'(87)9',253:'(T2)A',254:'(TA)2',255:'(2A)T',256:'(T3)A',257:'(TA)3',258:'(3A)T',259:'(T3)2',
|
||||
260:'(T2)3',261:'(32)T',262:'(T4)A',263:'(TA)4',264:'(4A)T',265:'(T4)2',266:'(T2)4',267:'(42)T',268:'(T4)3',269:'(T3)4',
|
||||
270:'(43)T',271:'(T5)A',272:'(TA)5',273:'(5A)T',274:'(T5)2',275:'(T2)5',276:'(52)T',277:'(T5)3',278:'(T3)5',279:'(53)T',
|
||||
280:'(T5)4',281:'(T4)5',282:'(54)T',283:'(T6)A',284:'(TA)6',285:'(6A)T',286:'(T6)2',287:'(T2)6',288:'(62)T',289:'(T6)3',
|
||||
290:'(T3)6',291:'(63)T',292:'(T6)4',293:'(T4)6',294:'(64)T',295:'(T6)5',296:'(T5)6',297:'(65)T',298:'(T7)A',299:'(TA)7',
|
||||
300:'(7A)T',301:'(T7)2',302:'(T2)7',303:'(72)T',304:'(T7)3',305:'(T3)7',306:'(73)T',307:'(T7)4',308:'(T4)7',309:'(74)T',
|
||||
310:'(T7)5',311:'(T5)7',312:'(75)T',313:'(T7)6',314:'(T6)7',315:'(76)T',316:'(T8)A',317:'(TA)8',318:'(8A)T',319:'(T8)2',
|
||||
320:'(T2)8',321:'(82)T',322:'(T8)3',323:'(T3)8',324:'(83)T',325:'(T8)4',326:'(T4)8',327:'(84)T',328:'(T8)5',329:'(T5)8',
|
||||
330:'(85)T',331:'(T8)6',332:'(T6)8',333:'(86)T',334:'(T8)7',335:'(T7)8',336:'(87)T',337:'(T9)A',338:'(TA)9',339:'(9A)T',
|
||||
340:'(T9)2',341:'(T2)9',342:'(92)T',343:'(T9)3',344:'(T3)9',345:'(93)T',346:'(T9)4',347:'(T4)9',348:'(94)T',349:'(T9)5',
|
||||
350:'(T5)9',351:'(95)T',352:'(T9)6',353:'(T6)9',354:'(96)T',355:'(T9)7',356:'(T7)9',357:'(97)T',358:'(T9)8',359:'(T8)9',
|
||||
360:'(98)T',361:'(J2)A',362:'(JA)2',363:'(2A)J',364:'(J3)A',365:'(JA)3',366:'(3A)J',367:'(J3)2',368:'(J2)3',369:'(32)J',
|
||||
370:'(J4)A',371:'(JA)4',372:'(4A)J',373:'(J4)2',374:'(J2)4',375:'(42)J',376:'(J4)3',377:'(J3)4',378:'(43)J',379:'(J5)A',
|
||||
380:'(JA)5',381:'(5A)J',382:'(J5)2',383:'(J2)5',384:'(52)J',385:'(J5)3',386:'(J3)5',387:'(53)J',388:'(J5)4',389:'(J4)5',
|
||||
390:'(54)J',391:'(J6)A',392:'(JA)6',393:'(6A)J',394:'(J6)2',395:'(J2)6',396:'(62)J',397:'(J6)3',398:'(J3)6',399:'(63)J',
|
||||
400:'(J6)4',401:'(J4)6',402:'(64)J',403:'(J6)5',404:'(J5)6',405:'(65)J',406:'(J7)A',407:'(JA)7',408:'(7A)J',409:'(J7)2',
|
||||
410:'(J2)7',411:'(72)J',412:'(J7)3',413:'(J3)7',414:'(73)J',415:'(J7)4',416:'(J4)7',417:'(74)J',418:'(J7)5',419:'(J5)7',
|
||||
420:'(75)J',421:'(J7)6',422:'(J6)7',423:'(76)J',424:'(J8)A',425:'(JA)8',426:'(8A)J',427:'(J8)2',428:'(J2)8',429:'(82)J',
|
||||
430:'(J8)3',431:'(J3)8',432:'(83)J',433:'(J8)4',434:'(J4)8',435:'(84)J',436:'(J8)5',437:'(J5)8',438:'(85)J',439:'(J8)6',
|
||||
440:'(J6)8',441:'(86)J',442:'(J8)7',443:'(J7)8',444:'(87)J',445:'(J9)A',446:'(JA)9',447:'(9A)J',448:'(J9)2',449:'(J2)9',
|
||||
450:'(92)J',451:'(J9)3',452:'(J3)9',453:'(93)J',454:'(J9)4',455:'(J4)9',456:'(94)J',457:'(J9)5',458:'(J5)9',459:'(95)J',
|
||||
460:'(J9)6',461:'(J6)9',462:'(96)J',463:'(J9)7',464:'(J7)9',465:'(97)J',466:'(J9)8',467:'(J8)9',468:'(98)J',469:'(JT)A',
|
||||
470:'(JA)T',471:'(TA)J',472:'(JT)2',473:'(J2)T',474:'(T2)J',475:'(JT)3',476:'(J3)T',477:'(T3)J',478:'(JT)4',479:'(J4)T',
|
||||
480:'(T4)J',481:'(JT)5',482:'(J5)T',483:'(T5)J',484:'(JT)6',485:'(J6)T',486:'(T6)J',487:'(JT)7',488:'(J7)T',489:'(T7)J',
|
||||
490:'(JT)8',491:'(J8)T',492:'(T8)J',493:'(JT)9',494:'(J9)T',495:'(T9)J',496:'(Q2)A',497:'(QA)2',498:'(2A)Q',499:'(Q3)A',
|
||||
500:'(QA)3',501:'(3A)Q',502:'(Q3)2',503:'(Q2)3',504:'(32)Q',505:'(Q4)A',506:'(QA)4',507:'(4A)Q',508:'(Q4)2',509:'(Q2)4',
|
||||
510:'(42)Q',511:'(Q4)3',512:'(Q3)4',513:'(43)Q',514:'(Q5)A',515:'(QA)5',516:'(5A)Q',517:'(Q5)2',518:'(Q2)5',519:'(52)Q',
|
||||
520:'(Q5)3',521:'(Q3)5',522:'(53)Q',523:'(Q5)4',524:'(Q4)5',525:'(54)Q',526:'(Q6)A',527:'(QA)6',528:'(6A)Q',529:'(Q6)2',
|
||||
530:'(Q2)6',531:'(62)Q',532:'(Q6)3',533:'(Q3)6',534:'(63)Q',535:'(Q6)4',536:'(Q4)6',537:'(64)Q',538:'(Q6)5',539:'(Q5)6',
|
||||
540:'(65)Q',541:'(Q7)A',542:'(QA)7',543:'(7A)Q',544:'(Q7)2',545:'(Q2)7',546:'(72)Q',547:'(Q7)3',548:'(Q3)7',549:'(73)Q',
|
||||
550:'(Q7)4',551:'(Q4)7',552:'(74)Q',553:'(Q7)5',554:'(Q5)7',555:'(75)Q',556:'(Q7)6',557:'(Q6)7',558:'(76)Q',559:'(Q8)A',
|
||||
560:'(QA)8',561:'(8A)Q',562:'(Q8)2',563:'(Q2)8',564:'(82)Q',565:'(Q8)3',566:'(Q3)8',567:'(83)Q',568:'(Q8)4',569:'(Q4)8',
|
||||
570:'(84)Q',571:'(Q8)5',572:'(Q5)8',573:'(85)Q',574:'(Q8)6',575:'(Q6)8',576:'(86)Q',577:'(Q8)7',578:'(Q7)8',579:'(87)Q',
|
||||
580:'(Q9)A',581:'(QA)9',582:'(9A)Q',583:'(Q9)2',584:'(Q2)9',585:'(92)Q',586:'(Q9)3',587:'(Q3)9',588:'(93)Q',589:'(Q9)4',
|
||||
590:'(Q4)9',591:'(94)Q',592:'(Q9)5',593:'(Q5)9',594:'(95)Q',595:'(Q9)6',596:'(Q6)9',597:'(96)Q',598:'(Q9)7',599:'(Q7)9',
|
||||
600:'(97)Q',601:'(Q9)8',602:'(Q8)9',603:'(98)Q',604:'(QT)A',605:'(QA)T',606:'(TA)Q',607:'(QT)2',608:'(Q2)T',609:'(T2)Q',
|
||||
610:'(QT)3',611:'(Q3)T',612:'(T3)Q',613:'(QT)4',614:'(Q4)T',615:'(T4)Q',616:'(QT)5',617:'(Q5)T',618:'(T5)Q',619:'(QT)6',
|
||||
620:'(Q6)T',621:'(T6)Q',622:'(QT)7',623:'(Q7)T',624:'(T7)Q',625:'(QT)8',626:'(Q8)T',627:'(T8)Q',628:'(QT)9',629:'(Q9)T',
|
||||
630:'(T9)Q',631:'(QJ)A',632:'(QA)J',633:'(JA)Q',634:'(QJ)2',635:'(Q2)J',636:'(J2)Q',637:'(QJ)3',638:'(Q3)J',639:'(J3)Q',
|
||||
640:'(QJ)4',641:'(Q4)J',642:'(J4)Q',643:'(QJ)5',644:'(Q5)J',645:'(J5)Q',646:'(QJ)6',647:'(Q6)J',648:'(J6)Q',649:'(QJ)7',
|
||||
650:'(Q7)J',651:'(J7)Q',652:'(QJ)8',653:'(Q8)J',654:'(J8)Q',655:'(QJ)9',656:'(Q9)J',657:'(J9)Q',658:'(QJ)T',659:'(QT)J',
|
||||
660:'(JT)Q',661:'(K2)A',662:'(KA)2',663:'(2A)K',664:'(K3)A',665:'(KA)3',666:'(3A)K',667:'(K3)2',668:'(K2)3',669:'(32)K',
|
||||
670:'(K4)A',671:'(KA)4',672:'(4A)K',673:'(K4)2',674:'(K2)4',675:'(42)K',676:'(K4)3',677:'(K3)4',678:'(43)K',679:'(K5)A',
|
||||
680:'(KA)5',681:'(5A)K',682:'(K5)2',683:'(K2)5',684:'(52)K',685:'(K5)3',686:'(K3)5',687:'(53)K',688:'(K5)4',689:'(K4)5',
|
||||
690:'(54)K',691:'(K6)A',692:'(KA)6',693:'(6A)K',694:'(K6)2',695:'(K2)6',696:'(62)K',697:'(K6)3',698:'(K3)6',699:'(63)K',
|
||||
700:'(K6)4',701:'(K4)6',702:'(64)K',703:'(K6)5',704:'(K5)6',705:'(65)K',706:'(K7)A',707:'(KA)7',708:'(7A)K',709:'(K7)2',
|
||||
710:'(K2)7',711:'(72)K',712:'(K7)3',713:'(K3)7',714:'(73)K',715:'(K7)4',716:'(K4)7',717:'(74)K',718:'(K7)5',719:'(K5)7',
|
||||
720:'(75)K',721:'(K7)6',722:'(K6)7',723:'(76)K',724:'(K8)A',725:'(KA)8',726:'(8A)K',727:'(K8)2',728:'(K2)8',729:'(82)K',
|
||||
730:'(K8)3',731:'(K3)8',732:'(83)K',733:'(K8)4',734:'(K4)8',735:'(84)K',736:'(K8)5',737:'(K5)8',738:'(85)K',739:'(K8)6',
|
||||
740:'(K6)8',741:'(86)K',742:'(K8)7',743:'(K7)8',744:'(87)K',745:'(K9)A',746:'(KA)9',747:'(9A)K',748:'(K9)2',749:'(K2)9',
|
||||
750:'(92)K',751:'(K9)3',752:'(K3)9',753:'(93)K',754:'(K9)4',755:'(K4)9',756:'(94)K',757:'(K9)5',758:'(K5)9',759:'(95)K',
|
||||
760:'(K9)6',761:'(K6)9',762:'(96)K',763:'(K9)7',764:'(K7)9',765:'(97)K',766:'(K9)8',767:'(K8)9',768:'(98)K',769:'(KT)A',
|
||||
770:'(KA)T',771:'(TA)K',772:'(KT)2',773:'(K2)T',774:'(T2)K',775:'(KT)3',776:'(K3)T',777:'(T3)K',778:'(KT)4',779:'(K4)T',
|
||||
780:'(T4)K',781:'(KT)5',782:'(K5)T',783:'(T5)K',784:'(KT)6',785:'(K6)T',786:'(T6)K',787:'(KT)7',788:'(K7)T',789:'(T7)K',
|
||||
790:'(KT)8',791:'(K8)T',792:'(T8)K',793:'(KT)9',794:'(K9)T',795:'(T9)K',796:'(KJ)A',797:'(KA)J',798:'(JA)K',799:'(KJ)2',
|
||||
800:'(K2)J',801:'(J2)K',802:'(KJ)3',803:'(K3)J',804:'(J3)K',805:'(KJ)4',806:'(K4)J',807:'(J4)K',808:'(KJ)5',809:'(K5)J',
|
||||
810:'(J5)K',811:'(KJ)6',812:'(K6)J',813:'(J6)K',814:'(KJ)7',815:'(K7)J',816:'(J7)K',817:'(KJ)8',818:'(K8)J',819:'(J8)K',
|
||||
820:'(KJ)9',821:'(K9)J',822:'(J9)K',823:'(KJ)T',824:'(KT)J',825:'(JT)K',826:'(KQ)A',827:'(KA)Q',828:'(QA)K',829:'(KQ)2',
|
||||
830:'(K2)Q',831:'(Q2)K',832:'(KQ)3',833:'(K3)Q',834:'(Q3)K',835:'(KQ)4',836:'(K4)Q',837:'(Q4)K',838:'(KQ)5',839:'(K5)Q',
|
||||
840:'(Q5)K',841:'(KQ)6',842:'(K6)Q',843:'(Q6)K',844:'(KQ)7',845:'(K7)Q',846:'(Q7)K',847:'(KQ)8',848:'(K8)Q',849:'(Q8)K',
|
||||
850:'(KQ)9',851:'(K9)Q',852:'(Q9)K',853:'(KQ)T',854:'(KT)Q',855:'(QT)K',856:'(KQ)J',857:'(KJ)Q',858:'(QJ)K',859:'(2A)A',
|
||||
860:'(22)A',861:'(AA)2',862:'(2A)2',863:'(3A)A',864:'(33)A',865:'(AA)3',866:'(3A)3',867:'(32)2',868:'(33)2',869:'(22)3',
|
||||
870:'(32)3',871:'(4A)A',872:'(44)A',873:'(AA)4',874:'(4A)4',875:'(42)2',876:'(44)2',877:'(22)4',878:'(42)4',879:'(43)3',
|
||||
880:'(44)3',881:'(33)4',882:'(43)4',883:'(5A)A',884:'(55)A',885:'(AA)5',886:'(5A)5',887:'(52)2',888:'(55)2',889:'(22)5',
|
||||
890:'(52)5',891:'(53)3',892:'(55)3',893:'(33)5',894:'(53)5',895:'(54)4',896:'(55)4',897:'(44)5',898:'(54)5',899:'(6A)A',
|
||||
900:'(66)A',901:'(AA)6',902:'(6A)6',903:'(62)2',904:'(66)2',905:'(22)6',906:'(62)6',907:'(63)3',908:'(66)3',909:'(33)6',
|
||||
910:'(63)6',911:'(64)4',912:'(66)4',913:'(44)6',914:'(64)6',915:'(65)5',916:'(66)5',917:'(55)6',918:'(65)6',919:'(7A)A',
|
||||
920:'(77)A',921:'(AA)7',922:'(7A)7',923:'(72)2',924:'(77)2',925:'(22)7',926:'(72)7',927:'(73)3',928:'(77)3',929:'(33)7',
|
||||
930:'(73)7',931:'(74)4',932:'(77)4',933:'(44)7',934:'(74)7',935:'(75)5',936:'(77)5',937:'(55)7',938:'(75)7',939:'(76)6',
|
||||
940:'(77)6',941:'(66)7',942:'(76)7',943:'(8A)A',944:'(88)A',945:'(AA)8',946:'(8A)8',947:'(82)2',948:'(88)2',949:'(22)8',
|
||||
950:'(82)8',951:'(83)3',952:'(88)3',953:'(33)8',954:'(83)8',955:'(84)4',956:'(88)4',957:'(44)8',958:'(84)8',959:'(85)5',
|
||||
960:'(88)5',961:'(55)8',962:'(85)8',963:'(86)6',964:'(88)6',965:'(66)8',966:'(86)8',967:'(87)7',968:'(88)7',969:'(77)8',
|
||||
970:'(87)8',971:'(9A)A',972:'(99)A',973:'(AA)9',974:'(9A)9',975:'(92)2',976:'(99)2',977:'(22)9',978:'(92)9',979:'(93)3',
|
||||
980:'(99)3',981:'(33)9',982:'(93)9',983:'(94)4',984:'(99)4',985:'(44)9',986:'(94)9',987:'(95)5',988:'(99)5',989:'(55)9',
|
||||
990:'(95)9',991:'(96)6',992:'(99)6',993:'(66)9',994:'(96)9',995:'(97)7',996:'(99)7',997:'(77)9',998:'(97)9',999:'(98)8',
|
||||
1000:'(99)8',1001:'(88)9',1002:'(98)9',1003:'(TA)A',1004:'(TT)A',1005:'(AA)T',1006:'(TA)T',1007:'(T2)2',1008:'(TT)2',1009:'(22)T',
|
||||
1010:'(T2)T',1011:'(T3)3',1012:'(TT)3',1013:'(33)T',1014:'(T3)T',1015:'(T4)4',1016:'(TT)4',1017:'(44)T',1018:'(T4)T',1019:'(T5)5',
|
||||
1020:'(TT)5',1021:'(55)T',1022:'(T5)T',1023:'(T6)6',1024:'(TT)6',1025:'(66)T',1026:'(T6)T',1027:'(T7)7',1028:'(TT)7',1029:'(77)T',
|
||||
1030:'(T7)T',1031:'(T8)8',1032:'(TT)8',1033:'(88)T',1034:'(T8)T',1035:'(T9)9',1036:'(TT)9',1037:'(99)T',1038:'(T9)T',1039:'(JA)A',
|
||||
1040:'(JJ)A',1041:'(AA)J',1042:'(JA)J',1043:'(J2)2',1044:'(JJ)2',1045:'(22)J',1046:'(J2)J',1047:'(J3)3',1048:'(JJ)3',1049:'(33)J',
|
||||
1050:'(J3)J',1051:'(J4)4',1052:'(JJ)4',1053:'(44)J',1054:'(J4)J',1055:'(J5)5',1056:'(JJ)5',1057:'(55)J',1058:'(J5)J',1059:'(J6)6',
|
||||
1060:'(JJ)6',1061:'(66)J',1062:'(J6)J',1063:'(J7)7',1064:'(JJ)7',1065:'(77)J',1066:'(J7)J',1067:'(J8)8',1068:'(JJ)8',1069:'(88)J',
|
||||
1070:'(J8)J',1071:'(J9)9',1072:'(JJ)9',1073:'(99)J',1074:'(J9)J',1075:'(JT)T',1076:'(JJ)T',1077:'(TT)J',1078:'(JT)J',1079:'(QA)A',
|
||||
1080:'(QQ)A',1081:'(AA)Q',1082:'(QA)Q',1083:'(Q2)2',1084:'(QQ)2',1085:'(22)Q',1086:'(Q2)Q',1087:'(Q3)3',1088:'(QQ)3',1089:'(33)Q',
|
||||
1090:'(Q3)Q',1091:'(Q4)4',1092:'(QQ)4',1093:'(44)Q',1094:'(Q4)Q',1095:'(Q5)5',1096:'(QQ)5',1097:'(55)Q',1098:'(Q5)Q',1099:'(Q6)6',
|
||||
1100:'(QQ)6',1101:'(66)Q',1102:'(Q6)Q',1103:'(Q7)7',1104:'(QQ)7',1105:'(77)Q',1106:'(Q7)Q',1107:'(Q8)8',1108:'(QQ)8',1109:'(88)Q',
|
||||
1110:'(Q8)Q',1111:'(Q9)9',1112:'(QQ)9',1113:'(99)Q',1114:'(Q9)Q',1115:'(QT)T',1116:'(QQ)T',1117:'(TT)Q',1118:'(QT)Q',1119:'(QJ)J',
|
||||
1120:'(QQ)J',1121:'(JJ)Q',1122:'(QJ)Q',1123:'(KA)A',1124:'(KK)A',1125:'(AA)K',1126:'(KA)K',1127:'(K2)2',1128:'(KK)2',1129:'(22)K',
|
||||
1130:'(K2)K',1131:'(K3)3',1132:'(KK)3',1133:'(33)K',1134:'(K3)K',1135:'(K4)4',1136:'(KK)4',1137:'(44)K',1138:'(K4)K',1139:'(K5)5',
|
||||
1140:'(KK)5',1141:'(55)K',1142:'(K5)K',1143:'(K6)6',1144:'(KK)6',1145:'(66)K',1146:'(K6)K',1147:'(K7)7',1148:'(KK)7',1149:'(77)K',
|
||||
1150:'(K7)K',1151:'(K8)8',1152:'(KK)8',1153:'(88)K',1154:'(K8)K',1155:'(K9)9',1156:'(KK)9',1157:'(99)K',1158:'(K9)K',1159:'(KT)T',
|
||||
1160:'(KK)T',1161:'(TT)K',1162:'(KT)K',1163:'(KJ)J',1164:'(KK)J',1165:'(JJ)K',1166:'(KJ)K',1167:'(KQ)Q',1168:'(KK)Q',1169:'(QQ)K',
|
||||
1170:'(KQ)K',1171:'(AA)A',1172:'(22)2',1173:'(33)3',1174:'(44)4',1175:'(55)5',1176:'(66)6',1177:'(77)7',1178:'(88)8',1179:'(99)9',
|
||||
1180:'(TT)T',1181:'(JJ)J',1182:'(QQ)Q',1183:'(KK)K',
|
||||
}
|
||||
return decodeRazzList[idx]
|
||||
|
||||
def encodeRazzStartHand(cards):
|
||||
"""Take Razz starting hand and return an integer index for storing in db"""
|
||||
startHand = ""
|
||||
if card_map_low[cards[0][0]] > card_map_low[cards[1][0]]:
|
||||
startHand = "(%s%s)%s" %(cards[0][0], cards[1][0], cards[2][0])
|
||||
else:
|
||||
startHand = "(%s%s)%s" %(cards[1][0], cards[0][0], cards[2][0])
|
||||
#print "DEBUG: startHand: %s" % startHand
|
||||
encodeRazzList = {
|
||||
'(00)A':-13,'(00)2':-12,'(00)3':-11,'(00)4':-10,'(00)5':-9,'(00)6':-8,'(00)7':-7,'(00)8':-6,'(00)9':-5,'(00)T':-4,
|
||||
'(00)J':-3,'(00)Q':-2,'(00)K':-1,
|
||||
'(32)A':1,'(3A)2':2,'(2A)3':3,'(42)A':4,'(4A)2':5,'(2A)4':6,'(43)A':7,'(4A)3':8,'(3A)4':9,
|
||||
'(43)2':10,'(42)3':11,'(32)4':12,'(52)A':13,'(5A)2':14,'(2A)5':15,'(53)A':16,'(5A)3':17,'(3A)5':18,'(53)2':19,
|
||||
'(52)3':20,'(32)5':21,'(54)A':22,'(5A)4':23,'(4A)5':24,'(54)2':25,'(52)4':26,'(42)5':27,'(54)3':28,'(53)4':29,
|
||||
'(43)5':30,'(62)A':31,'(6A)2':32,'(2A)6':33,'(63)A':34,'(6A)3':35,'(3A)6':36,'(63)2':37,'(62)3':38,'(32)6':39,
|
||||
'(64)A':40,'(6A)4':41,'(4A)6':42,'(64)2':43,'(62)4':44,'(42)6':45,'(64)3':46,'(63)4':47,'(43)6':48,'(65)A':49,
|
||||
'(6A)5':50,'(5A)6':51,'(65)2':52,'(62)5':53,'(52)6':54,'(65)3':55,'(63)5':56,'(53)6':57,'(65)4':58,'(64)5':59,
|
||||
'(54)6':60,'(72)A':61,'(7A)2':62,'(2A)7':63,'(73)A':64,'(7A)3':65,'(3A)7':66,'(73)2':67,'(72)3':68,'(32)7':69,
|
||||
'(74)A':70,'(7A)4':71,'(4A)7':72,'(74)2':73,'(72)4':74,'(42)7':75,'(74)3':76,'(73)4':77,'(43)7':78,'(75)A':79,
|
||||
'(7A)5':80,'(5A)7':81,'(75)2':82,'(72)5':83,'(52)7':84,'(75)3':85,'(73)5':86,'(53)7':87,'(75)4':88,'(74)5':89,
|
||||
'(54)7':90,'(76)A':91,'(7A)6':92,'(6A)7':93,'(76)2':94,'(72)6':95,'(62)7':96,'(76)3':97,'(73)6':98,'(63)7':99,
|
||||
'(76)4':100,'(74)6':101,'(64)7':102,'(76)5':103,'(75)6':104,'(65)7':105,'(82)A':106,'(8A)2':107,'(2A)8':108,'(83)A':109,
|
||||
'(8A)3':110,'(3A)8':111,'(83)2':112,'(82)3':113,'(32)8':114,'(84)A':115,'(8A)4':116,'(4A)8':117,'(84)2':118,'(82)4':119,
|
||||
'(42)8':120,'(84)3':121,'(83)4':122,'(43)8':123,'(85)A':124,'(8A)5':125,'(5A)8':126,'(85)2':127,'(82)5':128,'(52)8':129,
|
||||
'(85)3':130,'(83)5':131,'(53)8':132,'(85)4':133,'(84)5':134,'(54)8':135,'(86)A':136,'(8A)6':137,'(6A)8':138,'(86)2':139,
|
||||
'(82)6':140,'(62)8':141,'(86)3':142,'(83)6':143,'(63)8':144,'(86)4':145,'(84)6':146,'(64)8':147,'(86)5':148,'(85)6':149,
|
||||
'(65)8':150,'(87)A':151,'(8A)7':152,'(7A)8':153,'(87)2':154,'(82)7':155,'(72)8':156,'(87)3':157,'(83)7':158,'(73)8':159,
|
||||
'(87)4':160,'(84)7':161,'(74)8':162,'(87)5':163,'(85)7':164,'(75)8':165,'(87)6':166,'(86)7':167,'(76)8':168,'(92)A':169,
|
||||
'(9A)2':170,'(2A)9':171,'(93)A':172,'(9A)3':173,'(3A)9':174,'(93)2':175,'(92)3':176,'(32)9':177,'(94)A':178,'(9A)4':179,
|
||||
'(4A)9':180,'(94)2':181,'(92)4':182,'(42)9':183,'(94)3':184,'(93)4':185,'(43)9':186,'(95)A':187,'(9A)5':188,'(5A)9':189,
|
||||
'(95)2':190,'(92)5':191,'(52)9':192,'(95)3':193,'(93)5':194,'(53)9':195,'(95)4':196,'(94)5':197,'(54)9':198,'(96)A':199,
|
||||
'(9A)6':200,'(6A)9':201,'(96)2':202,'(92)6':203,'(62)9':204,'(96)3':205,'(93)6':206,'(63)9':207,'(96)4':208,'(94)6':209,
|
||||
'(64)9':210,'(96)5':211,'(95)6':212,'(65)9':213,'(97)A':214,'(9A)7':215,'(7A)9':216,'(97)2':217,'(92)7':218,'(72)9':219,
|
||||
'(97)3':220,'(93)7':221,'(73)9':222,'(97)4':223,'(94)7':224,'(74)9':225,'(97)5':226,'(95)7':227,'(75)9':228,'(97)6':229,
|
||||
'(96)7':230,'(76)9':231,'(98)A':232,'(9A)8':233,'(8A)9':234,'(98)2':235,'(92)8':236,'(82)9':237,'(98)3':238,'(93)8':239,
|
||||
'(83)9':240,'(98)4':241,'(94)8':242,'(84)9':243,'(98)5':244,'(95)8':245,'(85)9':246,'(98)6':247,'(96)8':248,'(86)9':249,
|
||||
'(98)7':250,'(97)8':251,'(87)9':252,'(T2)A':253,'(TA)2':254,'(2A)T':255,'(T3)A':256,'(TA)3':257,'(3A)T':258,'(T3)2':259,
|
||||
'(T2)3':260,'(32)T':261,'(T4)A':262,'(TA)4':263,'(4A)T':264,'(T4)2':265,'(T2)4':266,'(42)T':267,'(T4)3':268,'(T3)4':269,
|
||||
'(43)T':270,'(T5)A':271,'(TA)5':272,'(5A)T':273,'(T5)2':274,'(T2)5':275,'(52)T':276,'(T5)3':277,'(T3)5':278,'(53)T':279,
|
||||
'(T5)4':280,'(T4)5':281,'(54)T':282,'(T6)A':283,'(TA)6':284,'(6A)T':285,'(T6)2':286,'(T2)6':287,'(62)T':288,'(T6)3':289,
|
||||
'(T3)6':290,'(63)T':291,'(T6)4':292,'(T4)6':293,'(64)T':294,'(T6)5':295,'(T5)6':296,'(65)T':297,'(T7)A':298,'(TA)7':299,
|
||||
'(7A)T':300,'(T7)2':301,'(T2)7':302,'(72)T':303,'(T7)3':304,'(T3)7':305,'(73)T':306,'(T7)4':307,'(T4)7':308,'(74)T':309,
|
||||
'(T7)5':310,'(T5)7':311,'(75)T':312,'(T7)6':313,'(T6)7':314,'(76)T':315,'(T8)A':316,'(TA)8':317,'(8A)T':318,'(T8)2':319,
|
||||
'(T2)8':320,'(82)T':321,'(T8)3':322,'(T3)8':323,'(83)T':324,'(T8)4':325,'(T4)8':326,'(84)T':327,'(T8)5':328,'(T5)8':329,
|
||||
'(85)T':330,'(T8)6':331,'(T6)8':332,'(86)T':333,'(T8)7':334,'(T7)8':335,'(87)T':336,'(T9)A':337,'(TA)9':338,'(9A)T':339,
|
||||
'(T9)2':340,'(T2)9':341,'(92)T':342,'(T9)3':343,'(T3)9':344,'(93)T':345,'(T9)4':346,'(T4)9':347,'(94)T':348,'(T9)5':349,
|
||||
'(T5)9':350,'(95)T':351,'(T9)6':352,'(T6)9':353,'(96)T':354,'(T9)7':355,'(T7)9':356,'(97)T':357,'(T9)8':358,'(T8)9':359,
|
||||
'(98)T':360,'(J2)A':361,'(JA)2':362,'(2A)J':363,'(J3)A':364,'(JA)3':365,'(3A)J':366,'(J3)2':367,'(J2)3':368,'(32)J':369,
|
||||
'(J4)A':370,'(JA)4':371,'(4A)J':372,'(J4)2':373,'(J2)4':374,'(42)J':375,'(J4)3':376,'(J3)4':377,'(43)J':378,'(J5)A':379,
|
||||
'(JA)5':380,'(5A)J':381,'(J5)2':382,'(J2)5':383,'(52)J':384,'(J5)3':385,'(J3)5':386,'(53)J':387,'(J5)4':388,'(J4)5':389,
|
||||
'(54)J':390,'(J6)A':391,'(JA)6':392,'(6A)J':393,'(J6)2':394,'(J2)6':395,'(62)J':396,'(J6)3':397,'(J3)6':398,'(63)J':399,
|
||||
'(J6)4':400,'(J4)6':401,'(64)J':402,'(J6)5':403,'(J5)6':404,'(65)J':405,'(J7)A':406,'(JA)7':407,'(7A)J':408,'(J7)2':409,
|
||||
'(J2)7':410,'(72)J':411,'(J7)3':412,'(J3)7':413,'(73)J':414,'(J7)4':415,'(J4)7':416,'(74)J':417,'(J7)5':418,'(J5)7':419,
|
||||
'(75)J':420,'(J7)6':421,'(J6)7':422,'(76)J':423,'(J8)A':424,'(JA)8':425,'(8A)J':426,'(J8)2':427,'(J2)8':428,'(82)J':429,
|
||||
'(J8)3':430,'(J3)8':431,'(83)J':432,'(J8)4':433,'(J4)8':434,'(84)J':435,'(J8)5':436,'(J5)8':437,'(85)J':438,'(J8)6':439,
|
||||
'(J6)8':440,'(86)J':441,'(J8)7':442,'(J7)8':443,'(87)J':444,'(J9)A':445,'(JA)9':446,'(9A)J':447,'(J9)2':448,'(J2)9':449,
|
||||
'(92)J':450,'(J9)3':451,'(J3)9':452,'(93)J':453,'(J9)4':454,'(J4)9':455,'(94)J':456,'(J9)5':457,'(J5)9':458,'(95)J':459,
|
||||
'(J9)6':460,'(J6)9':461,'(96)J':462,'(J9)7':463,'(J7)9':464,'(97)J':465,'(J9)8':466,'(J8)9':467,'(98)J':468,'(JT)A':469,
|
||||
'(JA)T':470,'(TA)J':471,'(JT)2':472,'(J2)T':473,'(T2)J':474,'(JT)3':475,'(J3)T':476,'(T3)J':477,'(JT)4':478,'(J4)T':479,
|
||||
'(T4)J':480,'(JT)5':481,'(J5)T':482,'(T5)J':483,'(JT)6':484,'(J6)T':485,'(T6)J':486,'(JT)7':487,'(J7)T':488,'(T7)J':489,
|
||||
'(JT)8':490,'(J8)T':491,'(T8)J':492,'(JT)9':493,'(J9)T':494,'(T9)J':495,'(Q2)A':496,'(QA)2':497,'(2A)Q':498,'(Q3)A':499,
|
||||
'(QA)3':500,'(3A)Q':501,'(Q3)2':502,'(Q2)3':503,'(32)Q':504,'(Q4)A':505,'(QA)4':506,'(4A)Q':507,'(Q4)2':508,'(Q2)4':509,
|
||||
'(42)Q':510,'(Q4)3':511,'(Q3)4':512,'(43)Q':513,'(Q5)A':514,'(QA)5':515,'(5A)Q':516,'(Q5)2':517,'(Q2)5':518,'(52)Q':519,
|
||||
'(Q5)3':520,'(Q3)5':521,'(53)Q':522,'(Q5)4':523,'(Q4)5':524,'(54)Q':525,'(Q6)A':526,'(QA)6':527,'(6A)Q':528,'(Q6)2':529,
|
||||
'(Q2)6':530,'(62)Q':531,'(Q6)3':532,'(Q3)6':533,'(63)Q':534,'(Q6)4':535,'(Q4)6':536,'(64)Q':537,'(Q6)5':538,'(Q5)6':539,
|
||||
'(65)Q':540,'(Q7)A':541,'(QA)7':542,'(7A)Q':543,'(Q7)2':544,'(Q2)7':545,'(72)Q':546,'(Q7)3':547,'(Q3)7':548,'(73)Q':549,
|
||||
'(Q7)4':550,'(Q4)7':551,'(74)Q':552,'(Q7)5':553,'(Q5)7':554,'(75)Q':555,'(Q7)6':556,'(Q6)7':557,'(76)Q':558,'(Q8)A':559,
|
||||
'(QA)8':560,'(8A)Q':561,'(Q8)2':562,'(Q2)8':563,'(82)Q':564,'(Q8)3':565,'(Q3)8':566,'(83)Q':567,'(Q8)4':568,'(Q4)8':569,
|
||||
'(84)Q':570,'(Q8)5':571,'(Q5)8':572,'(85)Q':573,'(Q8)6':574,'(Q6)8':575,'(86)Q':576,'(Q8)7':577,'(Q7)8':578,'(87)Q':579,
|
||||
'(Q9)A':580,'(QA)9':581,'(9A)Q':582,'(Q9)2':583,'(Q2)9':584,'(92)Q':585,'(Q9)3':586,'(Q3)9':587,'(93)Q':588,'(Q9)4':589,
|
||||
'(Q4)9':590,'(94)Q':591,'(Q9)5':592,'(Q5)9':593,'(95)Q':594,'(Q9)6':595,'(Q6)9':596,'(96)Q':597,'(Q9)7':598,'(Q7)9':599,
|
||||
'(97)Q':600,'(Q9)8':601,'(Q8)9':602,'(98)Q':603,'(QT)A':604,'(QA)T':605,'(TA)Q':606,'(QT)2':607,'(Q2)T':608,'(T2)Q':609,
|
||||
'(QT)3':610,'(Q3)T':611,'(T3)Q':612,'(QT)4':613,'(Q4)T':614,'(T4)Q':615,'(QT)5':616,'(Q5)T':617,'(T5)Q':618,'(QT)6':619,
|
||||
'(Q6)T':620,'(T6)Q':621,'(QT)7':622,'(Q7)T':623,'(T7)Q':624,'(QT)8':625,'(Q8)T':626,'(T8)Q':627,'(QT)9':628,'(Q9)T':629,
|
||||
'(T9)Q':630,'(QJ)A':631,'(QA)J':632,'(JA)Q':633,'(QJ)2':634,'(Q2)J':635,'(J2)Q':636,'(QJ)3':637,'(Q3)J':638,'(J3)Q':639,
|
||||
'(QJ)4':640,'(Q4)J':641,'(J4)Q':642,'(QJ)5':643,'(Q5)J':644,'(J5)Q':645,'(QJ)6':646,'(Q6)J':647,'(J6)Q':648,'(QJ)7':649,
|
||||
'(Q7)J':650,'(J7)Q':651,'(QJ)8':652,'(Q8)J':653,'(J8)Q':654,'(QJ)9':655,'(Q9)J':656,'(J9)Q':657,'(QJ)T':658,'(QT)J':659,
|
||||
'(JT)Q':660,'(K2)A':661,'(KA)2':662,'(2A)K':663,'(K3)A':664,'(KA)3':665,'(3A)K':666,'(K3)2':667,'(K2)3':668,'(32)K':669,
|
||||
'(K4)A':670,'(KA)4':671,'(4A)K':672,'(K4)2':673,'(K2)4':674,'(42)K':675,'(K4)3':676,'(K3)4':677,'(43)K':678,'(K5)A':679,
|
||||
'(KA)5':680,'(5A)K':681,'(K5)2':682,'(K2)5':683,'(52)K':684,'(K5)3':685,'(K3)5':686,'(53)K':687,'(K5)4':688,'(K4)5':689,
|
||||
'(54)K':690,'(K6)A':691,'(KA)6':692,'(6A)K':693,'(K6)2':694,'(K2)6':695,'(62)K':696,'(K6)3':697,'(K3)6':698,'(63)K':699,
|
||||
'(K6)4':700,'(K4)6':701,'(64)K':702,'(K6)5':703,'(K5)6':704,'(65)K':705,'(K7)A':706,'(KA)7':707,'(7A)K':708,'(K7)2':709,
|
||||
'(K2)7':710,'(72)K':711,'(K7)3':712,'(K3)7':713,'(73)K':714,'(K7)4':715,'(K4)7':716,'(74)K':717,'(K7)5':718,'(K5)7':719,
|
||||
'(75)K':720,'(K7)6':721,'(K6)7':722,'(76)K':723,'(K8)A':724,'(KA)8':725,'(8A)K':726,'(K8)2':727,'(K2)8':728,'(82)K':729,
|
||||
'(K8)3':730,'(K3)8':731,'(83)K':732,'(K8)4':733,'(K4)8':734,'(84)K':735,'(K8)5':736,'(K5)8':737,'(85)K':738,'(K8)6':739,
|
||||
'(K6)8':740,'(86)K':741,'(K8)7':742,'(K7)8':743,'(87)K':744,'(K9)A':745,'(KA)9':746,'(9A)K':747,'(K9)2':748,'(K2)9':749,
|
||||
'(92)K':750,'(K9)3':751,'(K3)9':752,'(93)K':753,'(K9)4':754,'(K4)9':755,'(94)K':756,'(K9)5':757,'(K5)9':758,'(95)K':759,
|
||||
'(K9)6':760,'(K6)9':761,'(96)K':762,'(K9)7':763,'(K7)9':764,'(97)K':765,'(K9)8':766,'(K8)9':767,'(98)K':768,'(KT)A':769,
|
||||
'(KA)T':770,'(TA)K':771,'(KT)2':772,'(K2)T':773,'(T2)K':774,'(KT)3':775,'(K3)T':776,'(T3)K':777,'(KT)4':778,'(K4)T':779,
|
||||
'(T4)K':780,'(KT)5':781,'(K5)T':782,'(T5)K':783,'(KT)6':784,'(K6)T':785,'(T6)K':786,'(KT)7':787,'(K7)T':788,'(T7)K':789,
|
||||
'(KT)8':790,'(K8)T':791,'(T8)K':792,'(KT)9':793,'(K9)T':794,'(T9)K':795,'(KJ)A':796,'(KA)J':797,'(JA)K':798,'(KJ)2':799,
|
||||
'(K2)J':800,'(J2)K':801,'(KJ)3':802,'(K3)J':803,'(J3)K':804,'(KJ)4':805,'(K4)J':806,'(J4)K':807,'(KJ)5':808,'(K5)J':809,
|
||||
'(J5)K':810,'(KJ)6':811,'(K6)J':812,'(J6)K':813,'(KJ)7':814,'(K7)J':815,'(J7)K':816,'(KJ)8':817,'(K8)J':818,'(J8)K':819,
|
||||
'(KJ)9':820,'(K9)J':821,'(J9)K':822,'(KJ)T':823,'(KT)J':824,'(JT)K':825,'(KQ)A':826,'(KA)Q':827,'(QA)K':828,'(KQ)2':829,
|
||||
'(K2)Q':830,'(Q2)K':831,'(KQ)3':832,'(K3)Q':833,'(Q3)K':834,'(KQ)4':835,'(K4)Q':836,'(Q4)K':837,'(KQ)5':838,'(K5)Q':839,
|
||||
'(Q5)K':840,'(KQ)6':841,'(K6)Q':842,'(Q6)K':843,'(KQ)7':844,'(K7)Q':845,'(Q7)K':846,'(KQ)8':847,'(K8)Q':848,'(Q8)K':849,
|
||||
'(KQ)9':850,'(K9)Q':851,'(Q9)K':852,'(KQ)T':853,'(KT)Q':854,'(QT)K':855,'(KQ)J':856,'(KJ)Q':857,'(QJ)K':858,'(2A)A':859,
|
||||
'(22)A':860,'(AA)2':861,'(2A)2':862,'(3A)A':863,'(33)A':864,'(AA)3':865,'(3A)3':866,'(32)2':867,'(33)2':868,'(22)3':869,
|
||||
'(32)3':870,'(4A)A':871,'(44)A':872,'(AA)4':873,'(4A)4':874,'(42)2':875,'(44)2':876,'(22)4':877,'(42)4':878,'(43)3':879,
|
||||
'(44)3':880,'(33)4':881,'(43)4':882,'(5A)A':883,'(55)A':884,'(AA)5':885,'(5A)5':886,'(52)2':887,'(55)2':888,'(22)5':889,
|
||||
'(52)5':890,'(53)3':891,'(55)3':892,'(33)5':893,'(53)5':894,'(54)4':895,'(55)4':896,'(44)5':897,'(54)5':898,'(6A)A':899,
|
||||
'(66)A':900,'(AA)6':901,'(6A)6':902,'(62)2':903,'(66)2':904,'(22)6':905,'(62)6':906,'(63)3':907,'(66)3':908,'(33)6':909,
|
||||
'(63)6':910,'(64)4':911,'(66)4':912,'(44)6':913,'(64)6':914,'(65)5':915,'(66)5':916,'(55)6':917,'(65)6':918,'(7A)A':919,
|
||||
'(77)A':920,'(AA)7':921,'(7A)7':922,'(72)2':923,'(77)2':924,'(22)7':925,'(72)7':926,'(73)3':927,'(77)3':928,'(33)7':929,
|
||||
'(73)7':930,'(74)4':931,'(77)4':932,'(44)7':933,'(74)7':934,'(75)5':935,'(77)5':936,'(55)7':937,'(75)7':938,'(76)6':939,
|
||||
'(77)6':940,'(66)7':941,'(76)7':942,'(8A)A':943,'(88)A':944,'(AA)8':945,'(8A)8':946,'(82)2':947,'(88)2':948,'(22)8':949,
|
||||
'(82)8':950,'(83)3':951,'(88)3':952,'(33)8':953,'(83)8':954,'(84)4':955,'(88)4':956,'(44)8':957,'(84)8':958,'(85)5':959,
|
||||
'(88)5':960,'(55)8':961,'(85)8':962,'(86)6':963,'(88)6':964,'(66)8':965,'(86)8':966,'(87)7':967,'(88)7':968,'(77)8':969,
|
||||
'(87)8':970,'(9A)A':971,'(99)A':972,'(AA)9':973,'(9A)9':974,'(92)2':975,'(99)2':976,'(22)9':977,'(92)9':978,'(93)3':979,
|
||||
'(99)3':980,'(33)9':981,'(93)9':982,'(94)4':983,'(99)4':984,'(44)9':985,'(94)9':986,'(95)5':987,'(99)5':988,'(55)9':989,
|
||||
'(95)9':990,'(96)6':991,'(99)6':992,'(66)9':993,'(96)9':994,'(97)7':995,'(99)7':996,'(77)9':997,'(97)9':998,'(98)8':999,
|
||||
'(99)8':1000,'(88)9':1001,'(98)9':1002,'(TA)A':1003,'(TT)A':1004,'(AA)T':1005,'(TA)T':1006,'(T2)2':1007,'(TT)2':1008,'(22)T':1009,
|
||||
'(T2)T':1010,'(T3)3':1011,'(TT)3':1012,'(33)T':1013,'(T3)T':1014,'(T4)4':1015,'(TT)4':1016,'(44)T':1017,'(T4)T':1018,'(T5)5':1019,
|
||||
'(TT)5':1020,'(55)T':1021,'(T5)T':1022,'(T6)6':1023,'(TT)6':1024,'(66)T':1025,'(T6)T':1026,'(T7)7':1027,'(TT)7':1028,'(77)T':1029,
|
||||
'(T7)T':1030,'(T8)8':1031,'(TT)8':1032,'(88)T':1033,'(T8)T':1034,'(T9)9':1035,'(TT)9':1036,'(99)T':1037,'(T9)T':1038,'(JA)A':1039,
|
||||
'(JJ)A':1040,'(AA)J':1041,'(JA)J':1042,'(J2)2':1043,'(JJ)2':1044,'(22)J':1045,'(J2)J':1046,'(J3)3':1047,'(JJ)3':1048,'(33)J':1049,
|
||||
'(J3)J':1050,'(J4)4':1051,'(JJ)4':1052,'(44)J':1053,'(J4)J':1054,'(J5)5':1055,'(JJ)5':1056,'(55)J':1057,'(J5)J':1058,'(J6)6':1059,
|
||||
'(JJ)6':1060,'(66)J':1061,'(J6)J':1062,'(J7)7':1063,'(JJ)7':1064,'(77)J':1065,'(J7)J':1066,'(J8)8':1067,'(JJ)8':1068,'(88)J':1069,
|
||||
'(J8)J':1070,'(J9)9':1071,'(JJ)9':1072,'(99)J':1073,'(J9)J':1074,'(JT)T':1075,'(JJ)T':1076,'(TT)J':1077,'(JT)J':1078,'(QA)A':1079,
|
||||
'(QQ)A':1080,'(AA)Q':1081,'(QA)Q':1082,'(Q2)2':1083,'(QQ)2':1084,'(22)Q':1085,'(Q2)Q':1086,'(Q3)3':1087,'(QQ)3':1088,'(33)Q':1089,
|
||||
'(Q3)Q':1090,'(Q4)4':1091,'(QQ)4':1092,'(44)Q':1093,'(Q4)Q':1094,'(Q5)5':1095,'(QQ)5':1096,'(55)Q':1097,'(Q5)Q':1098,'(Q6)6':1099,
|
||||
'(QQ)6':1100,'(66)Q':1101,'(Q6)Q':1102,'(Q7)7':1103,'(QQ)7':1104,'(77)Q':1105,'(Q7)Q':1106,'(Q8)8':1107,'(QQ)8':1108,'(88)Q':1109,
|
||||
'(Q8)Q':1110,'(Q9)9':1111,'(QQ)9':1112,'(99)Q':1113,'(Q9)Q':1114,'(QT)T':1115,'(QQ)T':1116,'(TT)Q':1117,'(QT)Q':1118,'(QJ)J':1119,
|
||||
'(QQ)J':1120,'(JJ)Q':1121,'(QJ)Q':1122,'(KA)A':1123,'(KK)A':1124,'(AA)K':1125,'(KA)K':1126,'(K2)2':1127,'(KK)2':1128,'(22)K':1129,
|
||||
'(K2)K':1130,'(K3)3':1131,'(KK)3':1132,'(33)K':1133,'(K3)K':1134,'(K4)4':1135,'(KK)4':1136,'(44)K':1137,'(K4)K':1138,'(K5)5':1139,
|
||||
'(KK)5':1140,'(55)K':1141,'(K5)K':1142,'(K6)6':1143,'(KK)6':1144,'(66)K':1145,'(K6)K':1146,'(K7)7':1147,'(KK)7':1148,'(77)K':1149,
|
||||
'(K7)K':1150,'(K8)8':1151,'(KK)8':1152,'(88)K':1153,'(K8)K':1154,'(K9)9':1155,'(KK)9':1156,'(99)K':1157,'(K9)K':1158,'(KT)T':1159,
|
||||
'(KK)T':1160,'(TT)K':1161,'(KT)K':1162,'(KJ)J':1163,'(KK)J':1164,'(JJ)K':1165,'(KJ)K':1166,'(KQ)Q':1167,'(KK)Q':1168,'(QQ)K':1169,
|
||||
'(KQ)K':1170,'(AA)A':1171,'(22)2':1172,'(33)3':1173,'(44)4':1174,'(55)5':1175,'(66)6':1176,'(77)7':1177,'(88)8':1178,'(99)9':1179,
|
||||
'(TT)T':1180,'(JJ)J':1181,'(QQ)Q':1182,'(KK)K':1183,
|
||||
}
|
||||
#print "DEBUG: encodeRazzList['%s']: %s" % (startHand, encodeRazzList[startHand])
|
||||
return encodeRazzList[startHand]
|
||||
|
||||
if __name__ == '__main__':
|
||||
print _("fpdb card encoding(same as pokersource)")
|
||||
for i in xrange(1, 14):
|
||||
|
|
35
pyfpdb/Configuration.py
Executable file → Normal file
35
pyfpdb/Configuration.py
Executable file → Normal file
|
@ -23,8 +23,13 @@ Handles HUD configuration files.
|
|||
|
||||
########################################################################
|
||||
|
||||
|
||||
# Standard Library modules
|
||||
from __future__ import with_statement
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import os
|
||||
import sys
|
||||
import inspect
|
||||
|
@ -36,18 +41,6 @@ import re
|
|||
import xml.dom.minidom
|
||||
from xml.dom.minidom import Node
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
import logging, logging.config
|
||||
import ConfigParser
|
||||
|
||||
|
@ -132,8 +125,8 @@ def get_config(file_name, fallback = True):
|
|||
print msg
|
||||
logging.info(msg)
|
||||
except:
|
||||
print _("Error copying .example file, cannot fall back. Exiting.\n")
|
||||
sys.stderr.write(_("Error copying .example file, cannot fall back. Exiting.\n"))
|
||||
print _("Error copying .example config file, cannot fall back. Exiting.\n")
|
||||
sys.stderr.write(_("Error copying .example config file, cannot fall back. Exiting.\n"))
|
||||
sys.stderr.write( str(sys.exc_info()) )
|
||||
sys.exit()
|
||||
elif fallback:
|
||||
|
@ -484,7 +477,7 @@ class Import:
|
|||
self.callFpdbHud = node.getAttribute("callFpdbHud")
|
||||
self.hhArchiveBase = node.getAttribute("hhArchiveBase")
|
||||
self.hhBulkPath = node.getAttribute("hhBulkPath")
|
||||
self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=True)
|
||||
self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=False)
|
||||
self.fastStoreHudCache = string_to_bool(node.getAttribute("fastStoreHudCache"), default=False)
|
||||
self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False)
|
||||
|
||||
|
@ -680,6 +673,7 @@ class Config:
|
|||
sys.stderr.write(_("Configuration file %s not found. Using defaults.") % (file))
|
||||
file = None
|
||||
|
||||
self.example_copy,example_file = True,None
|
||||
if file is None: (file,self.example_copy,example_file) = get_config("HUD_config.xml", True)
|
||||
|
||||
self.file = file
|
||||
|
@ -697,10 +691,11 @@ class Config:
|
|||
self.aux_windows = {}
|
||||
self.hhcs = {}
|
||||
self.popup_windows = {}
|
||||
self.db_selected = None # database the user would like to use
|
||||
self.db_selected = None # database the user would like to use
|
||||
self.general = General()
|
||||
self.emails = {}
|
||||
self.gui_cash_stats = GUICashStats()
|
||||
self.site_ids = {} # site ID list from the database
|
||||
|
||||
added,n = 1,0 # use n to prevent infinite loop if add_missing_elements() fails somehow
|
||||
while added > 0 and n < 2:
|
||||
|
@ -1261,7 +1256,7 @@ class Config:
|
|||
except: imp['hhBulkPath'] = ""
|
||||
|
||||
try: imp['saveActions'] = self.imp.saveActions
|
||||
except: imp['saveActions'] = True
|
||||
except: imp['saveActions'] = False
|
||||
|
||||
try: imp['saveStarsHH'] = self.imp.saveStarsHH
|
||||
except: imp['saveStarsHH'] = False
|
||||
|
@ -1390,6 +1385,12 @@ class Config:
|
|||
if font_size is not None: site_node.setAttribute("font_size", font_size)
|
||||
return
|
||||
|
||||
def set_site_ids(self, sites):
|
||||
self.site_ids = dict(sites)
|
||||
|
||||
def get_site_id(self, site):
|
||||
return( self.site_ids[site] )
|
||||
|
||||
def get_aux_windows(self):
|
||||
"""Gets the list of mucked window formats in the configuration."""
|
||||
return self.aux_windows.keys()
|
||||
|
|
|
@ -20,6 +20,9 @@ Create and manage the database objects.
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
########################################################################
|
||||
|
||||
# TODO: - rebuild indexes / vacuum option
|
||||
|
@ -46,18 +49,6 @@ import logging
|
|||
# logging has been set up in fpdb.py or HUD_main.py, use their settings:
|
||||
log = logging.getLogger("db")
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# FreePokerTools modules
|
||||
import SQL
|
||||
import Card
|
||||
|
@ -302,6 +293,7 @@ class Database:
|
|||
self.saveActions = False if self.import_options['saveActions'] == False else True
|
||||
|
||||
if self.is_connected():
|
||||
self.get_sites()
|
||||
self.connection.rollback() # make sure any locks taken so far are released
|
||||
#end def __init__
|
||||
|
||||
|
@ -466,6 +458,15 @@ class Database:
|
|||
self.cursor.execute(self.sql.query['set tx level'])
|
||||
self.check_version(database=database, create=create)
|
||||
|
||||
def get_sites(self):
|
||||
self.cursor.execute("SELECT name,id FROM Sites")
|
||||
sites = self.cursor.fetchall()
|
||||
self.config.set_site_ids(sites)
|
||||
|
||||
def add_site(self, site, site_code):
|
||||
self.cursor.execute("INSERT INTO Sites "
|
||||
"SELECT max(id)+1, '%s', '%s' "
|
||||
"FROM Sites " % (site, site_code) )
|
||||
|
||||
def check_version(self, database, create):
|
||||
self.wrongDbVersion = False
|
||||
|
@ -1433,6 +1434,8 @@ class Database:
|
|||
c.execute("INSERT INTO Sites (name,code) VALUES ('Partouche', 'PA')")
|
||||
c.execute("INSERT INTO Sites (name,code) VALUES ('Carbon', 'CA')")
|
||||
c.execute("INSERT INTO Sites (name,code) VALUES ('PKR', 'PK')")
|
||||
c.execute("INSERT INTO Sites (name,code) VALUES ('iPoker', 'IP')")
|
||||
c.execute("INSERT INTO Sites (name,code) VALUES ('Winamax', 'WM')")
|
||||
#end def fillDefaultData
|
||||
|
||||
def rebuild_indexes(self, start=None):
|
||||
|
@ -1756,6 +1759,38 @@ class Database:
|
|||
c = self.get_cursor()
|
||||
c.executemany(q, inserts)
|
||||
|
||||
def storeHandsActions(self, hid, pids, adata, printdata = False):
|
||||
#print "DEBUG: %s %s %s" %(hid, pids, adata)
|
||||
if printdata:
|
||||
import pprint
|
||||
pp = pprint.PrettyPrinter(indent=4)
|
||||
pp.pprint(adata)
|
||||
|
||||
#inserts = []
|
||||
#for p in pdata:
|
||||
# inserts.append( (hid,
|
||||
# pids[p],
|
||||
# adata[p]['startCash'],
|
||||
# adata[p]['seatNo'],
|
||||
# adata[p]['sitout'],
|
||||
# adata[p]['card1'],
|
||||
|
||||
#handsPlayerId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handsPlayerId) REFERENCES HandsPlayers(id),
|
||||
#street SMALLINT NOT NULL,
|
||||
#actionNo SMALLINT NOT NULL,
|
||||
#action CHAR(5) NOT NULL,
|
||||
#allIn BOOLEAN NOT NULL,
|
||||
#amount INT NOT NULL,
|
||||
|
||||
|
||||
q = self.sql.query['store_hands_actions']
|
||||
#q = q.replace('%s', self.sql.query['placeholder'])
|
||||
|
||||
#print "DEBUG: inserts: %s" %inserts
|
||||
#print "DEBUG: q: %s" % q
|
||||
#c = self.get_cursor()
|
||||
#c.executemany(q, inserts)
|
||||
|
||||
def storeHudCache(self, gid, pids, starttime, pdata):
|
||||
"""Update cached statistics. If update fails because no record exists, do an insert."""
|
||||
|
||||
|
@ -1906,7 +1941,7 @@ class Database:
|
|||
hilo = "h"
|
||||
if game['category'] in ['studhilo', 'omahahilo']:
|
||||
hilo = "s"
|
||||
elif game['category'] in ['razz','27_3draw','badugi']:
|
||||
elif game['category'] in ['razz','27_3draw','badugi', '27_1draw']:
|
||||
hilo = "l"
|
||||
tmp = self.insertGameTypes( (siteid, game['currency'], game['type'], game['base'], game['category'], game['limitType'], hilo,
|
||||
int(Decimal(game['sb'])*100), int(Decimal(game['bb'])*100),
|
||||
|
|
|
@ -34,8 +34,9 @@ class DerivedStats():
|
|||
def __init__(self, hand):
|
||||
self.hand = hand
|
||||
|
||||
self.hands = {}
|
||||
self.hands = {}
|
||||
self.handsplayers = {}
|
||||
self.handsactions = {}
|
||||
|
||||
def getStats(self, hand):
|
||||
|
||||
|
@ -92,12 +93,16 @@ class DerivedStats():
|
|||
self.assembleHands(self.hand)
|
||||
self.assembleHandsPlayers(self.hand)
|
||||
|
||||
if DEBUG:
|
||||
self.assembleHandsActions(self.hand)
|
||||
|
||||
if DEBUG:
|
||||
print "Hands:"
|
||||
pp.pprint(self.hands)
|
||||
print "HandsPlayers:"
|
||||
pp.pprint(self.handsplayers)
|
||||
#print "Hands:"
|
||||
#pp.pprint(self.hands)
|
||||
#print "HandsPlayers:"
|
||||
#pp.pprint(self.handsplayers)
|
||||
print "HandsActions:"
|
||||
pp.pprint(self.handsactions)
|
||||
|
||||
def getHands(self):
|
||||
return self.hands
|
||||
|
@ -105,6 +110,9 @@ class DerivedStats():
|
|||
def getHandsPlayers(self):
|
||||
return self.handsplayers
|
||||
|
||||
def getHandsActions(self):
|
||||
return self.handsactions
|
||||
|
||||
def assembleHands(self, hand):
|
||||
self.hands['tableName'] = hand.tablename
|
||||
self.hands['siteHandNo'] = hand.handid
|
||||
|
@ -207,6 +215,10 @@ class DerivedStats():
|
|||
# 3betSB, 3betBB
|
||||
# Squeeze, Ratchet?
|
||||
|
||||
def assembleHandsActions(self, hand):
|
||||
print "DEBUG: hand.actions"
|
||||
pp.pprint(hand.actions)
|
||||
pass
|
||||
|
||||
def setPositions(self, hand):
|
||||
"""Sets the position for each player in HandsPlayers
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
import logging
|
||||
from HandHistoryConverter import *
|
||||
|
@ -133,7 +136,7 @@ or None if we fail to get the info """
|
|||
def readHandInfo(self, hand):
|
||||
m = self.re_HandInfo.search(hand.handText)
|
||||
if(m == None):
|
||||
logging.info("Didn't match re_HandInfo")
|
||||
logging.info(_("Didn't match re_HandInfo"))
|
||||
logging.info(hand.handText)
|
||||
return None
|
||||
logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE')))
|
||||
|
@ -202,7 +205,7 @@ or None if we fail to get the info """
|
|||
hand.setCommunityCards(street=street, cards=cards)
|
||||
|
||||
def readAntes(self, hand):
|
||||
logging.debug("reading antes")
|
||||
logging.debug(_("reading antes"))
|
||||
m = self.re_Antes.finditer(hand.handText)
|
||||
for player in m:
|
||||
logging.debug("hand.addAnte(%s,%s)" %(player.group('PNAME'), player.group('ANTE')))
|
||||
|
@ -214,14 +217,14 @@ or None if we fail to get the info """
|
|||
logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN')))
|
||||
hand.addBringIn(m.group('PNAME'), m.group('BRINGIN'))
|
||||
else:
|
||||
logging.warning("No bringin found.")
|
||||
logging.warning(_("No bringin found."))
|
||||
|
||||
def readBlinds(self, hand):
|
||||
m = self.re_PostSB.search(hand.handText)
|
||||
if m is not None:
|
||||
hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB'))
|
||||
else:
|
||||
logging.debug("No small blind")
|
||||
logging.debug(_("No small blind"))
|
||||
hand.addBlind(None, None, None)
|
||||
for a in self.re_PostBB.finditer(hand.handText):
|
||||
hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB'))
|
||||
|
@ -249,7 +252,7 @@ or None if we fail to get the info """
|
|||
|
||||
def readStudPlayerCards(self, hand, street):
|
||||
# lol. see Plymouth.txt
|
||||
logging.warning("Everleaf readStudPlayerCards is only a stub.")
|
||||
logging.warning(_("Everleaf readStudPlayerCards is only a stub."))
|
||||
#~ if street in ('THIRD', 'FOURTH', 'FIFTH', 'SIXTH'):
|
||||
#~ hand.addPlayerCards(player = player.group('PNAME'), street = street, closed = [], open = [])
|
||||
|
||||
|
@ -272,7 +275,7 @@ or None if we fail to get the info """
|
|||
elif action.group('ATYPE') == ' complete to':
|
||||
hand.addComplete( street, action.group('PNAME'), action.group('BET'))
|
||||
else:
|
||||
logging.debug("Unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),))
|
||||
logging.debug(_("Unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),)))
|
||||
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
|
@ -281,7 +284,7 @@ or None if we fail to get the info """
|
|||
for shows in self.re_ShowdownAction.finditer(hand.handText):
|
||||
cards = shows.group('CARDS')
|
||||
cards = cards.split(', ')
|
||||
logging.debug("readShowdownActions %s %s" %(cards, shows.group('PNAME')))
|
||||
logging.debug(_("readShowdownActions %s %s" %(cards, shows.group('PNAME'))))
|
||||
hand.addShownCards(cards, shows.group('PNAME'))
|
||||
|
||||
|
||||
|
@ -310,9 +313,9 @@ or None if we fail to get the info """
|
|||
|
||||
if __name__ == "__main__":
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="-")
|
||||
parser.add_option("-o", "--output", dest="opath", help="output translation to", default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help="follow (tail -f) the input", action="store_true", default=False)
|
||||
parser.add_option("-i", "--input", dest="ipath", help=_("parse input hand history"), default="-")
|
||||
parser.add_option("-o", "--output", dest="opath", help=_("output translation to"), default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help=_("follow (tail -f) the input"), action="store_true", default=False)
|
||||
parser.add_option("-q", "--quiet",
|
||||
action="store_const", const=logging.CRITICAL, dest="verbosity", default=logging.INFO)
|
||||
parser.add_option("-v", "--verbose",
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import threading
|
||||
import pygtk
|
||||
pygtk.require('2.0')
|
||||
|
@ -30,18 +33,6 @@ import logging
|
|||
# logging has been set up in fpdb.py or HUD_main.py, use their settings:
|
||||
log = logging.getLogger("filter")
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
import Configuration
|
||||
import Database
|
||||
import SQL
|
||||
|
@ -63,7 +54,7 @@ class Filters(threading.Thread):
|
|||
,'seatsbetween':_('Between:'), 'seatsand':_('And:'), 'seatsshow':_('Show Number of _Players')
|
||||
,'playerstitle':_('Hero:'), 'sitestitle':_('Sites:'), 'gamestitle':_('Games:')
|
||||
,'limitstitle':_('Limits:'), 'seatstitle':_('Number of Players:')
|
||||
,'groupstitle':_('Grouping:'), 'posnshow':_('Show Position Stats:')
|
||||
,'groupstitle':_('Grouping:'), 'posnshow':_('Show Position Stats')
|
||||
,'datestitle':_('Date:')
|
||||
,'groupsall':_('All Players')
|
||||
,'limitsFL':'FL', 'limitsNL':'NL', 'limitsPL':'PL', 'ring':_('Ring'), 'tour':_('Tourney')
|
||||
|
@ -891,7 +882,7 @@ class Filters(threading.Thread):
|
|||
hbox = gtk.HBox()
|
||||
vbox1.pack_start(hbox, False, True, 0)
|
||||
|
||||
lbl_start = gtk.Label('From:')
|
||||
lbl_start = gtk.Label(_('From:'))
|
||||
|
||||
btn_start = gtk.Button()
|
||||
btn_start.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
|
||||
|
@ -905,7 +896,7 @@ class Filters(threading.Thread):
|
|||
hbox = gtk.HBox()
|
||||
vbox1.pack_start(hbox, False, True, 0)
|
||||
|
||||
lbl_end = gtk.Label(' To:')
|
||||
lbl_end = gtk.Label(_('To:'))
|
||||
btn_end = gtk.Button()
|
||||
btn_end.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
|
||||
btn_end.connect('clicked', self.__calendar_dialog, self.end_date)
|
||||
|
|
129
pyfpdb/FullTiltPokerSummary.py
Normal file
129
pyfpdb/FullTiltPokerSummary.py
Normal file
|
@ -0,0 +1,129 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
#Copyright 2008-2010 Steffen Schaumburg
|
||||
#This program is free software: you can redistribute it and/or modify
|
||||
#it under the terms of the GNU Affero General Public License as published by
|
||||
#the Free Software Foundation, version 3 of the License.
|
||||
#
|
||||
#This program is distributed in the hope that it will be useful,
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#GNU General Public License for more details.
|
||||
#
|
||||
#You should have received a copy of the GNU Affero General Public License
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
"""pokerstars-specific summary parsing code"""
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
from decimal import Decimal
|
||||
import datetime
|
||||
|
||||
from Exceptions import FpdbParseError
|
||||
from HandHistoryConverter import *
|
||||
import PokerStarsToFpdb
|
||||
from TourneySummary import *
|
||||
|
||||
class FullTiltPokerSummary(TourneySummary):
|
||||
limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Limit':'fl', 'LIMIT':'fl' }
|
||||
games = { # base, category
|
||||
"Hold'em" : ('hold','holdem'),
|
||||
'Omaha' : ('hold','omahahi'),
|
||||
'Omaha Hi/Lo' : ('hold','omahahilo'),
|
||||
'Razz' : ('stud','razz'),
|
||||
'RAZZ' : ('stud','razz'),
|
||||
'7 Card Stud' : ('stud','studhi'),
|
||||
'7 Card Stud Hi/Lo' : ('stud','studhilo'),
|
||||
'Badugi' : ('draw','badugi'),
|
||||
'Triple Draw 2-7 Lowball' : ('draw','27_3draw'),
|
||||
'5 Card Draw' : ('draw','fivedraw')
|
||||
}
|
||||
|
||||
substitutions = {
|
||||
'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes
|
||||
'LS' : "\$|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8)
|
||||
}
|
||||
|
||||
re_SplitTourneys = re.compile("^Full Tilt Poker Tournament Summary")
|
||||
|
||||
re_TourNo = re.compile("\#(?P<TOURNO>[0-9]+),")
|
||||
|
||||
re_TourneyInfo = re.compile(u"""
|
||||
\s.*
|
||||
(?P<TYPE>Tournament|Sit\s\&\sGo)\s\((?P<TOURNO>[0-9]+)\)(\s+)?
|
||||
(?P<GAME>Hold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s+
|
||||
(?P<LIMIT>No\sLimit|Limit|LIMIT|Pot\sLimit)\s+
|
||||
(Buy-In:\s\$(?P<BUYIN>[.\d]+)(\s\+\s\$(?P<FEE>[.\d]+))?\s+)?
|
||||
(Buy-In\sChips:\s(?P<CHIPS>\d+)\s+)?
|
||||
(?P<ENTRIES>[0-9]+)\sEntries\s+
|
||||
(\$?(?P<ADDED>[.\d]+)\sadded\sto\sthe\sprize\spool\sby\sPokerStars\.com\s+)?
|
||||
(Total\sPrize\sPool:\s\$?(?P<PRIZEPOOL>[.0-9]+)\s+)?
|
||||
(Target\sTournament\s.*)?
|
||||
Tournament\sstarted:\s
|
||||
(?P<Y>[\d]{4})\/(?P<M>[\d]{2})\/(?P<D>[\d]+)\s+(?P<H>[\d]+):(?P<MIN>[\d]+):(?P<S>[\d]+)\s??(?P<TZ>[A-Z]+)\s
|
||||
""" % substitutions ,re.VERBOSE|re.MULTILINE|re.DOTALL)
|
||||
|
||||
re_Currency = re.compile(u"""(?P<CURRENCY>[%(LS)s]|FPP)""" % substitutions)
|
||||
|
||||
re_Player = re.compile(u"""(?P<RANK>[\d]+):\s(?P<NAME>[^,\r\n]{2,15})(,(\s)?\$(?P<WINNINGS>[.\d]+))?""")
|
||||
|
||||
re_DateTime = re.compile("\[(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\- ]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)")
|
||||
|
||||
codepage = ["utf-16", "cp1252", "utf-8"]
|
||||
|
||||
def parseSummary(self):
|
||||
m = self.re_TourneyInfo.search(self.summaryText)
|
||||
if m == None:
|
||||
tmp = self.summaryText[0:200]
|
||||
log.error(_("parseSummary: Unable to recognise Tourney Info: '%s'") % tmp)
|
||||
log.error(_("parseSummary: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise Tourney Info: '%s'") % tmp)
|
||||
|
||||
print "DEBUG: m.groupdict(): %s" % m.groupdict()
|
||||
|
||||
mg = m.groupdict()
|
||||
if 'TOURNO' in mg: self.tourNo = mg['TOURNO']
|
||||
if 'LIMIT' in mg: self.gametype['limitType'] = self.limits[mg['LIMIT']]
|
||||
if 'GAME' in mg: self.gametype['category'] = self.games[mg['GAME']][1]
|
||||
if mg['BUYIN'] != None:
|
||||
self.buyin = int(100*Decimal(mg['BUYIN']))
|
||||
if mg['FEE'] != None:
|
||||
self.fee = int(100*Decimal(mg['FEE']))
|
||||
if 'PRIZEPOOL' in mg: self.prizepool = mg['PRIZEPOOL']
|
||||
if 'ENTRIES' in mg: self.entries = mg['ENTRIES']
|
||||
|
||||
datetimestr = "%s/%s/%s %s:%s:%s" % (mg['Y'], mg['M'], mg['D'], mg['H'], mg['MIN'], mg['S'])
|
||||
self.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S")
|
||||
|
||||
if 'TZ' in mg:
|
||||
self.startTime = HandHistoryConverter.changeTimezone(self.startTime, mg['TZ'], "UTC")
|
||||
|
||||
|
||||
m = self.re_Currency.search(self.summaryText)
|
||||
if m == None:
|
||||
log.error(_("parseSummary: Unable to locate currency"))
|
||||
log.error(_("parseSummary: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to locate currency"))
|
||||
#print "DEBUG: m.groupdict(): %s" % m.groupdict()
|
||||
|
||||
mg = m.groupdict()
|
||||
if mg['CURRENCY'] == "$": self.currency = "USD"
|
||||
elif mg['CURRENCY'] == u"€": self.currency="EUR"
|
||||
elif mg['CURRENCY'] == "FPP": self.currency="PSFP"
|
||||
|
||||
m = self.re_Player.finditer(self.summaryText)
|
||||
for a in m:
|
||||
mg = a.groupdict()
|
||||
print "DEBUG: a.groupdict(): %s" % mg
|
||||
name = mg['NAME']
|
||||
rank = mg['RANK']
|
||||
winnings = 0
|
||||
|
||||
if 'WINNINGS' in mg and mg['WINNINGS'] != None:
|
||||
winnings = int(100*Decimal(mg['WINNINGS']))
|
||||
self.addPlayer(rank, name, winnings, self.currency, None, None, None)
|
||||
|
|
@ -18,6 +18,9 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import logging
|
||||
from HandHistoryConverter import *
|
||||
#import TourneySummary
|
||||
|
@ -49,7 +52,7 @@ class Fulltilt(HandHistoryConverter):
|
|||
(?P<LIMIT>(No\sLimit|Pot\sLimit|Limit))?\s
|
||||
(?P<GAME>(Hold\'em|Omaha\sHi|Omaha\sH/L|7\sCard\sStud|Stud\sH/L|Razz|Stud\sHi))
|
||||
''' % substitutions, re.VERBOSE)
|
||||
re_SplitHands = re.compile(r"\n\n+")
|
||||
re_SplitHands = re.compile(r"\n\n\n+")
|
||||
re_TailSplitHands = re.compile(r"(\n\n+)")
|
||||
re_HandInfo = re.compile(r'''.*\#(?P<HID>[0-9]+):\s
|
||||
(?:(?P<TOURNAMENT>.+)\s\((?P<TOURNO>\d+)\),\s)?
|
||||
|
@ -174,7 +177,10 @@ class Fulltilt(HandHistoryConverter):
|
|||
|
||||
m = self.re_GameInfo.search(handText)
|
||||
if not m:
|
||||
return None
|
||||
tmp = handText[0:100]
|
||||
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||
mg = m.groupdict()
|
||||
|
||||
# translations from captured groups to our info strings
|
||||
|
@ -206,9 +212,9 @@ class Fulltilt(HandHistoryConverter):
|
|||
def readHandInfo(self, hand):
|
||||
m = self.re_HandInfo.search(hand.handText)
|
||||
if m is None:
|
||||
logging.info("Didn't match re_HandInfo")
|
||||
logging.info(_("Didn't match re_HandInfo"))
|
||||
logging.info(hand.handText)
|
||||
raise FpdbParseError("No match in readHandInfo.")
|
||||
raise FpdbParseError(_("No match in readHandInfo."))
|
||||
hand.handid = m.group('HID')
|
||||
hand.tablename = m.group('TABLE')
|
||||
|
||||
|
@ -336,7 +342,7 @@ class Fulltilt(HandHistoryConverter):
|
|||
hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB'))
|
||||
|
||||
def readAntes(self, hand):
|
||||
logging.debug("reading antes")
|
||||
logging.debug(_("reading antes"))
|
||||
m = self.re_Antes.finditer(hand.handText)
|
||||
for player in m:
|
||||
logging.debug("hand.addAnte(%s,%s)" %(player.group('PNAME'), player.group('ANTE')))
|
||||
|
@ -346,10 +352,10 @@ class Fulltilt(HandHistoryConverter):
|
|||
def readBringIn(self, hand):
|
||||
m = self.re_BringIn.search(hand.handText,re.DOTALL)
|
||||
if m:
|
||||
logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN')))
|
||||
logging.debug(_("Player bringing in: %s for %s") %(m.group('PNAME'), m.group('BRINGIN')))
|
||||
hand.addBringIn(m.group('PNAME'), m.group('BRINGIN'))
|
||||
else:
|
||||
logging.warning("No bringin found, handid =%s" % hand.handid)
|
||||
logging.warning(_("No bringin found, handid =%s") % hand.handid)
|
||||
|
||||
def readButton(self, hand):
|
||||
hand.buttonpos = int(self.re_Button.search(hand.handText).group('BUTTON'))
|
||||
|
@ -406,7 +412,7 @@ class Fulltilt(HandHistoryConverter):
|
|||
elif action.group('ATYPE') == ' checks':
|
||||
hand.addCheck( street, action.group('PNAME'))
|
||||
else:
|
||||
print "FullTilt: DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),)
|
||||
print _("FullTilt: DEBUG: unimplemented readAction: '%s' '%s'") %(action.group('PNAME'),action.group('ATYPE'),)
|
||||
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
|
@ -482,7 +488,7 @@ class Fulltilt(HandHistoryConverter):
|
|||
|
||||
m = self.re_TourneyInfo.search(tourneyText)
|
||||
if not m:
|
||||
log.info( "determineTourneyType : Parsing NOK" )
|
||||
log.info(_("determineTourneyType : Parsing NOK"))
|
||||
return False
|
||||
mg = m.groupdict()
|
||||
#print mg
|
||||
|
@ -540,7 +546,7 @@ class Fulltilt(HandHistoryConverter):
|
|||
if mg['TOURNO'] is not None:
|
||||
tourney.tourNo = mg['TOURNO']
|
||||
else:
|
||||
log.info( "Unable to get a valid Tournament ID -- File rejected" )
|
||||
log.info(_("Unable to get a valid Tournament ID -- File rejected"))
|
||||
return False
|
||||
if tourney.isMatrix:
|
||||
if mg['MATCHNO'] is not None:
|
||||
|
@ -571,18 +577,18 @@ class Fulltilt(HandHistoryConverter):
|
|||
tourney.buyin = 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))
|
||||
else :
|
||||
if 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) != tourney.buyin:
|
||||
log.error( "Conflict between buyins read in topline (%s) and in BuyIn field (%s)" % (tourney.buyin, 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))) )
|
||||
log.error(_("Conflict between buyins read in topline (%s) and in BuyIn field (%s)") % (tourney.buyin, 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))) )
|
||||
tourney.subTourneyBuyin = 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))
|
||||
if mg['FEE'] is not None:
|
||||
if tourney.fee is None:
|
||||
tourney.fee = 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))
|
||||
else :
|
||||
if 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) != tourney.fee:
|
||||
log.error( "Conflict between fees read in topline (%s) and in BuyIn field (%s)" % (tourney.fee, 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))) )
|
||||
log.error(_("Conflict between fees read in topline (%s) and in BuyIn field (%s)") % (tourney.fee, 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))) )
|
||||
tourney.subTourneyFee = 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))
|
||||
|
||||
if tourney.buyin is None:
|
||||
log.info( "Unable to affect a buyin to this tournament : assume it's a freeroll" )
|
||||
log.info(_("Unable to affect a buyin to this tournament : assume it's a freeroll"))
|
||||
tourney.buyin = 0
|
||||
tourney.fee = 0
|
||||
else:
|
||||
|
@ -683,7 +689,7 @@ class Fulltilt(HandHistoryConverter):
|
|||
|
||||
tourney.addPlayer(rank, a.group('PNAME'), winnings, "USD", 0, 0, 0) #TODO: make it store actual winnings currency
|
||||
else:
|
||||
print "FullTilt: Player finishing stats unreadable : %s" % a
|
||||
print (_("FullTilt: Player finishing stats unreadable : %s") % a)
|
||||
|
||||
# Find Hero
|
||||
n = self.re_TourneyHeroFinishingP.search(playersText)
|
||||
|
@ -692,17 +698,17 @@ class Fulltilt(HandHistoryConverter):
|
|||
tourney.hero = heroName
|
||||
# Is this really useful ?
|
||||
if heroName not in tourney.ranks:
|
||||
print "FullTilt:", heroName, "not found in tourney.ranks ..."
|
||||
print (_("FullTilt: %s not found in tourney.ranks ...") % heroName)
|
||||
elif (tourney.ranks[heroName] != Decimal(n.group('HERO_FINISHING_POS'))):
|
||||
print "FullTilt: Bad parsing : finish position incoherent : %s / %s" % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS'))
|
||||
print (_("FullTilt: Bad parsing : finish position incoherent : %s / %s") % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS')))
|
||||
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="regression-test-files/fulltilt/razz/FT20090223 Danville - $0.50-$1 Ante $0.10 - Limit Razz.txt")
|
||||
parser.add_option("-o", "--output", dest="opath", help="output translation to", default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help="follow (tail -f) the input", action="store_true", default=False)
|
||||
parser.add_option("-i", "--input", dest="ipath", help=_("parse input hand history"), default="regression-test-files/fulltilt/razz/FT20090223 Danville - $0.50-$1 Ante $0.10 - Limit Razz.txt")
|
||||
parser.add_option("-o", "--output", dest="opath", help=_("output translation to"), default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help=_("follow (tail -f) the input"), action="store_true", default=False)
|
||||
parser.add_option("-q", "--quiet",
|
||||
action="store_const", const=logging.CRITICAL, dest="verbosity", default=logging.INFO)
|
||||
parser.add_option("-v", "--verbose",
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import threading
|
||||
import subprocess
|
||||
import traceback
|
||||
|
@ -26,23 +29,17 @@ import gobject
|
|||
import os
|
||||
import sys
|
||||
import time
|
||||
|
||||
import logging
|
||||
# logging has been set up in fpdb.py or HUD_main.py, use their settings:
|
||||
log = logging.getLogger("importer")
|
||||
|
||||
|
||||
import fpdb_import
|
||||
from optparse import OptionParser
|
||||
import Configuration
|
||||
import string
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
class GuiAutoImport (threading.Thread):
|
||||
def __init__(self, settings, config, sql, parent):
|
||||
self.importtimer = 0
|
||||
|
@ -113,7 +110,7 @@ class GuiAutoImport (threading.Thread):
|
|||
hbox.pack_start(lbl1, expand=True, fill=False)
|
||||
|
||||
self.doAutoImportBool = False
|
||||
self.startButton = gtk.ToggleButton(_(" Start _Autoimport "))
|
||||
self.startButton = gtk.ToggleButton(_(" Start _Auto Import "))
|
||||
self.startButton.connect("clicked", self.startClicked, "start clicked")
|
||||
hbox.pack_start(self.startButton, expand=False, fill=False)
|
||||
|
||||
|
@ -132,7 +129,7 @@ class GuiAutoImport (threading.Thread):
|
|||
scrolledwindow.add(self.textview)
|
||||
|
||||
self.mainVBox.show_all()
|
||||
self.addText(_("AutoImport Ready."))
|
||||
self.addText(_("Auto Import Ready."))
|
||||
|
||||
def addText(self, text):
|
||||
end_iter = self.textbuffer.get_end_iter()
|
||||
|
@ -145,7 +142,7 @@ class GuiAutoImport (threading.Thread):
|
|||
"""runs when user clicks one of the browse buttons in the auto import tab"""
|
||||
current_path=data[1].get_text()
|
||||
|
||||
dia_chooser = gtk.FileChooserDialog(title=_("Please choose the path that you want to auto import"),
|
||||
dia_chooser = gtk.FileChooserDialog(title=_("Please choose the path that you want to Auto Import"),
|
||||
action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
|
||||
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
|
||||
#dia_chooser.set_current_folder(pathname)
|
||||
|
@ -179,9 +176,9 @@ class GuiAutoImport (threading.Thread):
|
|||
|
||||
def reset_startbutton(self):
|
||||
if self.pipe_to_hud is not None:
|
||||
self.startButton.set_label(_(u' Stop _Autoimport '))
|
||||
self.startButton.set_label(_(u' Stop _Auto Import '))
|
||||
else:
|
||||
self.startButton.set_label(_(u' Start _Autoimport '))
|
||||
self.startButton.set_label(_(u' Start _Auto Import '))
|
||||
|
||||
return False
|
||||
|
||||
|
@ -206,7 +203,7 @@ class GuiAutoImport (threading.Thread):
|
|||
if self.settings['global_lock'].acquire(False): # returns false immediately if lock not acquired
|
||||
self.addText(_("\nGlobal lock taken ... Auto Import Started.\n"))
|
||||
self.doAutoImportBool = True
|
||||
widget.set_label(_(u' _Stop Autoimport '))
|
||||
widget.set_label(_(u' _Stop Auto Import '))
|
||||
if self.pipe_to_hud is None:
|
||||
if Configuration.FROZEN:
|
||||
path = Configuration.EXEC_PATH
|
||||
|
@ -246,19 +243,19 @@ class GuiAutoImport (threading.Thread):
|
|||
self.importtimer = gobject.timeout_add(interval * 1000, self.do_import)
|
||||
|
||||
else:
|
||||
self.addText(_("\nauto-import aborted - global lock not available"))
|
||||
self.addText(_("\nAuto Import aborted - global lock not available"))
|
||||
else: # toggled off
|
||||
gobject.source_remove(self.importtimer)
|
||||
self.settings['global_lock'].release()
|
||||
self.doAutoImportBool = False # do_import will return this and stop the gobject callback timer
|
||||
self.addText(_("\nStopping autoimport - global lock released."))
|
||||
self.addText(_("\nStopping Auto Import - global lock released."))
|
||||
if self.pipe_to_hud.poll() is not None:
|
||||
self.addText(_("\n * Stop Autoimport: HUD already terminated"))
|
||||
self.addText(_("\n * Stop Auto Import: HUD already terminated"))
|
||||
else:
|
||||
#print >>self.pipe_to_hud.stdin, "\n"
|
||||
self.pipe_to_hud.communicate('\n') # waits for process to terminate
|
||||
self.pipe_to_hud = None
|
||||
self.startButton.set_label(_(u' Start _Autoimport '))
|
||||
self.startButton.set_label(_(u' Start _Auto Import '))
|
||||
|
||||
#end def GuiAutoImport.startClicked
|
||||
|
||||
|
@ -296,6 +293,7 @@ class GuiAutoImport (threading.Thread):
|
|||
|
||||
def addSites(self, vbox1, vbox2):
|
||||
the_sites = self.config.get_supported_sites()
|
||||
#log.debug("addSites: the_sites="+str(the_sites))
|
||||
for site in the_sites:
|
||||
pathHBox1 = gtk.HBox(False, 0)
|
||||
vbox1.pack_start(pathHBox1, False, True, 0)
|
||||
|
@ -306,6 +304,7 @@ class GuiAutoImport (threading.Thread):
|
|||
paths = self.config.get_default_paths(site)
|
||||
self.createSiteLine(pathHBox1, pathHBox2, site, False, paths['hud-defaultPath'], params['converter'], params['enabled'])
|
||||
self.input_settings[site] = [paths['hud-defaultPath']] + [params['converter']]
|
||||
#log.debug("addSites: input_settings="+str(self.input_settings))
|
||||
|
||||
if __name__== "__main__":
|
||||
def destroy(*args): # call back for terminating the main eventloop
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# Standard Library modules
|
||||
import os
|
||||
import sys
|
||||
|
@ -33,17 +36,6 @@ import fpdb_import
|
|||
import Configuration
|
||||
import Exceptions
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
class GuiBulkImport():
|
||||
|
||||
|
@ -136,16 +128,18 @@ class GuiBulkImport():
|
|||
#self.settings['global_lock'].release()
|
||||
self.settings['global_lock'].release()
|
||||
else:
|
||||
print _("bulk-import aborted - global lock not available")
|
||||
print _("bulk import aborted - global lock not available")
|
||||
|
||||
def get_vbox(self):
|
||||
"""returns the vbox of this thread"""
|
||||
return self.vbox
|
||||
|
||||
def __init__(self, settings, config, sql = None):
|
||||
def __init__(self, settings, config, sql = None, parent = None):
|
||||
self.settings = settings
|
||||
self.config = config
|
||||
self.importer = fpdb_import.Importer(self, self.settings, config, sql)
|
||||
self.parent = parent
|
||||
|
||||
self.importer = fpdb_import.Importer(self, self.settings, config, sql, parent)
|
||||
|
||||
self.vbox = gtk.VBox(False, 0)
|
||||
self.vbox.show()
|
||||
|
@ -356,6 +350,8 @@ def main(argv=None):
|
|||
help=_("Print some useful one liners"))
|
||||
parser.add_option("-s", "--starsarchive", action="store_true", dest="starsArchive", default=False,
|
||||
help=_("Do the required conversion for Stars Archive format (ie. as provided by support"))
|
||||
parser.add_option("-F", "--ftparchive", action="store_true", dest="ftpArchive", default=False,
|
||||
help=_("Do the required conversion for FTP Archive format (ie. as provided by support"))
|
||||
parser.add_option("-t", "--testdata", action="store_true", dest="testData", default=False,
|
||||
help=_("Output the pprinted version of the HandsPlayer hash for regresion testing"))
|
||||
(options, argv) = parser.parse_args(args = argv)
|
||||
|
@ -385,7 +381,7 @@ def main(argv=None):
|
|||
print _('-q is deprecated. Just use "-f filename" instead')
|
||||
# This is because -q on its own causes an error, so -f is necessary and sufficient for cmd line use
|
||||
if not options.filename:
|
||||
i = GuiBulkImport(settings, config)
|
||||
i = GuiBulkImport(settings, config, None)
|
||||
main_window = gtk.Window()
|
||||
main_window.connect('destroy', destroy)
|
||||
main_window.add(i.vbox)
|
||||
|
@ -393,7 +389,7 @@ def main(argv=None):
|
|||
gtk.main()
|
||||
else:
|
||||
#Do something useful
|
||||
importer = fpdb_import.Importer(False,settings, config)
|
||||
importer = fpdb_import.Importer(False,settings, config, None)
|
||||
# importer.setDropIndexes("auto")
|
||||
importer.setDropIndexes(_("don't drop"))
|
||||
importer.setFailOnError(options.failOnError)
|
||||
|
@ -402,6 +398,8 @@ def main(argv=None):
|
|||
importer.setCallHud(False)
|
||||
if options.starsArchive:
|
||||
importer.setStarsArchive(True)
|
||||
if options.ftpArchive:
|
||||
importer.setFTPArchive(True)
|
||||
if options.testData:
|
||||
importer.setPrintTestData(True)
|
||||
(stored, dups, partial, errs, ttime) = importer.runImport()
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
|
@ -31,24 +34,11 @@ import logging
|
|||
# logging has been set up in fpdb.py or HUD_main.py, use their settings:
|
||||
log = logging.getLogger("maintdbs")
|
||||
|
||||
|
||||
import Exceptions
|
||||
import Configuration
|
||||
import Database
|
||||
import SQL
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
class GuiDatabase:
|
||||
|
||||
# columns in liststore:
|
||||
|
@ -300,7 +290,7 @@ class GuiDatabase:
|
|||
self.dia.show()
|
||||
except:
|
||||
err = traceback.extract_tb(sys.exc_info()[2])[-1]
|
||||
print _('loaddbs error: ')+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' \
|
||||
print _('loadDbs error: ')+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' \
|
||||
+ err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1])
|
||||
|
||||
def sortCols(self, col, n):
|
||||
|
@ -368,7 +358,7 @@ class GuiDatabase:
|
|||
try:
|
||||
# is creating empty db for sqlite ... mod db.py further?
|
||||
# add noDbTables flag to db.py?
|
||||
log.debug(_("loaddbs: trying to connect to: %s/%s, %s, %s/%s") % (str(dbms_num),dbms,name,user,passwd))
|
||||
log.debug(_("testDB: trying to connect to: %s/%s, %s, %s/%s") % (str(dbms_num),dbms,name,user,passwd))
|
||||
db.connect(backend=dbms_num, host=host, database=name, user=user, password=passwd, create=False)
|
||||
if db.connected:
|
||||
log.debug(_(" connected ok"))
|
||||
|
@ -384,14 +374,16 @@ class GuiDatabase:
|
|||
status = "failed"
|
||||
icon = gtk.STOCK_CANCEL
|
||||
except Exceptions.FpdbMySQLNoDatabase:
|
||||
err_msg = _("MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started")
|
||||
err_msg = _("MySQL client reports: 2002 or 2003 error. Unable to connect - ") \
|
||||
+ _("Please check that the MySQL service has been started")
|
||||
status = "failed"
|
||||
icon = gtk.STOCK_CANCEL
|
||||
except Exceptions.FpdbPostgresqlAccessDenied:
|
||||
err_msg = _("Postgres Server reports: Access denied. Are your permissions set correctly?")
|
||||
err_msg = _("PostgreSQL Server reports: Access denied. Are your permissions set correctly?")
|
||||
status = "failed"
|
||||
except Exceptions.FpdbPostgresqlNoDatabase:
|
||||
err_msg = _("Postgres client reports: Unable to connect - Please check that the Postgres service has been started")
|
||||
err_msg = _("PostgreSQL client reports: Unable to connect - ") \
|
||||
+ _("Please check that the PostgreSQL service has been started")
|
||||
status = "failed"
|
||||
icon = gtk.STOCK_CANCEL
|
||||
except:
|
||||
|
@ -401,8 +393,7 @@ class GuiDatabase:
|
|||
status = "failed"
|
||||
icon = gtk.STOCK_CANCEL
|
||||
if err_msg:
|
||||
log.info( _('db connection to ') + str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: '
|
||||
+ err_msg )
|
||||
log.info( _('db connection to %s, %s, %s, %s, %s failed: %s') % (str(dbms_num), host, name, user, passwd, err_msg))
|
||||
|
||||
return( status, err_msg, icon )
|
||||
|
||||
|
@ -410,7 +401,7 @@ class GuiDatabase:
|
|||
class AddDB(gtk.Dialog):
|
||||
|
||||
def __init__(self, config, parent):
|
||||
log.debug("AddDB starting")
|
||||
log.debug(_("AddDB starting"))
|
||||
self.dbnames = { 'Sqlite' : Configuration.DATABASE_TYPE_SQLITE
|
||||
, 'MySQL' : Configuration.DATABASE_TYPE_MYSQL
|
||||
, 'PostgreSQL' : Configuration.DATABASE_TYPE_POSTGRESQL
|
||||
|
@ -419,7 +410,7 @@ class AddDB(gtk.Dialog):
|
|||
# create dialog and add icon and label
|
||||
super(AddDB,self).__init__( parent=parent
|
||||
, flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT
|
||||
, title="Add New Database"
|
||||
, title=_("Add New Database")
|
||||
, buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT
|
||||
,gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT)
|
||||
) # , buttons=btns
|
||||
|
@ -487,7 +478,7 @@ class AddDB(gtk.Dialog):
|
|||
|
||||
def run(self):
|
||||
response = super(AddDB,self).run()
|
||||
log.debug("adddb.run: response is "+str(response)+" accept is "+str(int(gtk.RESPONSE_ACCEPT)))
|
||||
log.debug(_("addDB.run: response is %s accept is %s" % (str(response), str(int(gtk.RESPONSE_ACCEPT)))))
|
||||
|
||||
ok,retry = False,True
|
||||
while response == gtk.RESPONSE_ACCEPT:
|
||||
|
@ -501,7 +492,7 @@ class AddDB(gtk.Dialog):
|
|||
,name, db_desc, user, passwd, host) = ("error", "error", None, None, None
|
||||
,None, None, None, None, None)
|
||||
if ok:
|
||||
log.debug("start creating new db")
|
||||
log.debug(_("start creating new db"))
|
||||
# add a new db
|
||||
master_password = None
|
||||
dbms = self.dbnames[ self.cb_dbms.get_active_text() ]
|
||||
|
@ -520,7 +511,7 @@ class AddDB(gtk.Dialog):
|
|||
|
||||
# test db after creating?
|
||||
status, err_msg, icon = GuiDatabase.testDB(self.config, dbms, dbms_num, name, user, passwd, host)
|
||||
log.debug('tested new db, result='+str((status,err_msg)))
|
||||
log.debug(_('tested new db, result=%s') % str((status,err_msg)))
|
||||
if status == 'ok':
|
||||
#dia = InfoBox( parent=self, str1=_('Database created') )
|
||||
str1 = _('Database created')
|
||||
|
@ -539,7 +530,7 @@ class AddDB(gtk.Dialog):
|
|||
"""check fields and return true/false according to whether user wants to try again
|
||||
return False if fields are ok
|
||||
"""
|
||||
log.debug("check_fields: starting")
|
||||
log.debug(_("check_fields: starting"))
|
||||
try_again = False
|
||||
ok = True
|
||||
|
||||
|
@ -571,11 +562,11 @@ class AddDB(gtk.Dialog):
|
|||
# checks for postgres
|
||||
pass
|
||||
else:
|
||||
msg = "Unknown Database Type selected"
|
||||
msg = _("Unknown Database Type selected")
|
||||
ok = False
|
||||
|
||||
if not ok:
|
||||
log.debug("check_fields: open dialog")
|
||||
log.debug(_("check_fields: open dialog"))
|
||||
dia = gtk.MessageDialog( parent=self
|
||||
, flags=gtk.DIALOG_DESTROY_WITH_PARENT
|
||||
, type=gtk.MESSAGE_ERROR
|
||||
|
@ -588,14 +579,14 @@ class AddDB(gtk.Dialog):
|
|||
dia.vbox.add(l)
|
||||
dia.show_all()
|
||||
ret = dia.run()
|
||||
log.debug("check_fields: ret is "+str(ret)+" cancel is "+str(int(gtk.RESPONSE_CANCEL)))
|
||||
log.debug(_("check_fields: ret is %s cancel is %s" % (str(ret), str(int(gtk.RESPONSE_CANCEL)))))
|
||||
if ret == gtk.RESPONSE_YES:
|
||||
try_again = True
|
||||
log.debug("check_fields: destroy dialog")
|
||||
log.debug(_("check_fields: destroy dialog"))
|
||||
dia.hide()
|
||||
dia.destroy()
|
||||
|
||||
log.debug("check_fields: returning ok as "+str(ok)+", try_again as "+str(try_again))
|
||||
log.debug(_("check_fields: returning ok as %s, try_again as %s") % (str(ok), str(try_again)))
|
||||
return(ok,try_again)
|
||||
|
||||
def db_type_changed(self, widget, data):
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import threading
|
||||
import pygtk
|
||||
pygtk.require('2.0')
|
||||
|
@ -26,6 +29,11 @@ from time import *
|
|||
from datetime import datetime
|
||||
#import pokereval
|
||||
|
||||
import fpdb_import
|
||||
import Database
|
||||
import Filters
|
||||
import Charset
|
||||
|
||||
try:
|
||||
import matplotlib
|
||||
matplotlib.use('GTKCairo')
|
||||
|
@ -42,23 +50,6 @@ except ImportError, inst:
|
|||
and HUD are NOT affected by this problem.""")
|
||||
print "ImportError: %s" % inst.args
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
import fpdb_import
|
||||
import Database
|
||||
import Filters
|
||||
import Charset
|
||||
|
||||
class GuiGraphViewer (threading.Thread):
|
||||
|
||||
def __init__(self, querylist, config, parent, debug=True):
|
||||
|
@ -88,9 +79,9 @@ class GuiGraphViewer (threading.Thread):
|
|||
}
|
||||
|
||||
self.filters = Filters.Filters(self.db, self.conf, self.sql, display = filters_display)
|
||||
self.filters.registerButton1Name("Refresh _Graph")
|
||||
self.filters.registerButton1Name(_("Refresh _Graph"))
|
||||
self.filters.registerButton1Callback(self.generateGraph)
|
||||
self.filters.registerButton2Name("_Export to File")
|
||||
self.filters.registerButton2Name(_("_Export to File"))
|
||||
self.filters.registerButton2Callback(self.exportGraph)
|
||||
|
||||
self.mainHBox = gtk.HBox(False, 0)
|
||||
|
@ -153,6 +144,11 @@ class GuiGraphViewer (threading.Thread):
|
|||
siteids = self.filters.getSiteIds()
|
||||
limits = self.filters.getLimits()
|
||||
games = self.filters.getGames()
|
||||
graphs = {
|
||||
"profit" : True,
|
||||
"sawShowdown" : True,
|
||||
"nonShowdown" : True
|
||||
}
|
||||
|
||||
for i in ('show', 'none'):
|
||||
if i in limits:
|
||||
|
@ -230,17 +226,14 @@ class GuiGraphViewer (threading.Thread):
|
|||
#print "No hands returned by graph query"
|
||||
else:
|
||||
self.ax.set_title(_("Profit graph for ring games"))
|
||||
#text = "Profit: $%.2f\nTotal Hands: %d" %(green[-1], len(green))
|
||||
#self.ax.annotate(text,
|
||||
# xy=(10, -10),
|
||||
# xycoords='axes points',
|
||||
# horizontalalignment='left', verticalalignment='top',
|
||||
# fontsize=10)
|
||||
|
||||
#Draw plot
|
||||
self.ax.plot(green, color='green', label=_('Hands: %d\nProfit: $%.2f') %(len(green), green[-1]))
|
||||
self.ax.plot(blue, color='blue', label=_('Showdown: $%.2f') %(blue[-1]))
|
||||
self.ax.plot(red, color='red', label=_('Non-showdown: $%.2f') %(red[-1]))
|
||||
if graphs['profit'] == True:
|
||||
self.ax.plot(green, color='green', label=_('Hands: %d\nProfit: $%.2f') %(len(green), green[-1]))
|
||||
if graphs['sawShowdown'] == True:
|
||||
self.ax.plot(blue, color='blue', label=_('Showdown: $%.2f') %(blue[-1]))
|
||||
if graphs['nonShowdown'] == True:
|
||||
self.ax.plot(red, color='red', label=_('Non-showdown: $%.2f') %(red[-1]))
|
||||
if sys.version[0:3] == '2.5':
|
||||
self.ax.legend(loc='upper left', shadow=True, prop=FontProperties(size='smaller'))
|
||||
else:
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import threading
|
||||
import pygtk
|
||||
pygtk.require('2.0')
|
||||
|
@ -22,18 +25,6 @@ import gtk
|
|||
from imaplib import IMAP4
|
||||
from socket import gaierror
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
import ImapFetcher
|
||||
|
||||
class GuiImapFetcher (threading.Thread):
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import os
|
||||
import Queue
|
||||
|
||||
|
@ -30,18 +33,6 @@ import logging
|
|||
# logging has been set up in fpdb.py or HUD_main.py, use their settings:
|
||||
log = logging.getLogger("logview")
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
MAX_LINES = 100000 # max lines to display in window
|
||||
EST_CHARS_PER_LINE = 150 # used to guesstimate number of lines in log file
|
||||
LOGFILES = [ [ 'Fpdb Errors', 'fpdb-errors.txt', False ] # label, filename, start value
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import traceback
|
||||
import threading
|
||||
import pygtk
|
||||
|
@ -24,18 +27,6 @@ import os
|
|||
import sys
|
||||
from time import time, strftime
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
import Card
|
||||
import fpdb_import
|
||||
import Database
|
||||
|
@ -103,34 +94,6 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats):
|
|||
# columns to display, keys match column name returned by sql, values in tuple are:
|
||||
# is column displayed(summary then position), column heading, xalignment, formatting, celltype
|
||||
self.columns = self.conf.get_gui_cash_stat_params()
|
||||
# self.columns = [ ["game", True, True, "Game", 0.0, "%s", "str"]
|
||||
# , ["hand", False, False, "Hand", 0.0, "%s", "str"] # initial setting ignored for this line (set in code)
|
||||
# , ["plposition", False, False, "Posn", 1.0, "%s", "str"] # initial setting ignored for this line (set in code)
|
||||
# , ["pname", False, False, "Name", 0.0, "%s", "str"] # initial setting ignored for this line (set in code)
|
||||
# , ["n", True, True, "Hds", 1.0, "%1.0f", "str"]
|
||||
# , ["avgseats", False, False, "Seats", 1.0, "%3.1f", "str"]
|
||||
# , ["vpip", True, True, "VPIP", 1.0, "%3.1f", "str"]
|
||||
# , ["pfr", True, True, "PFR", 1.0, "%3.1f", "str"]
|
||||
# , ["pf3", True, True, "PF3", 1.0, "%3.1f", "str"]
|
||||
# , ["aggfac", True, True, "AggFac", 1.0, "%2.2f", "str"]
|
||||
# , ["aggfrq", True, True, "AggFreq", 1.0, "%3.1f", "str"]
|
||||
# , ["conbet", True, True, "ContBet", 1.0, "%3.1f", "str"]
|
||||
# , ["rfi", True, True, "RFI", 1.0, "%3.1f", "str"]
|
||||
# , ["steals", True, True, "Steals", 1.0, "%3.1f", "str"]
|
||||
# , ["saw_f", True, True, "Saw_F", 1.0, "%3.1f", "str"]
|
||||
# , ["sawsd", True, True, "SawSD", 1.0, "%3.1f", "str"]
|
||||
# , ["wtsdwsf", True, True, "WtSDwsF", 1.0, "%3.1f", "str"]
|
||||
# , ["wmsd", True, True, "W$SD", 1.0, "%3.1f", "str"]
|
||||
# , ["flafq", True, True, "FlAFq", 1.0, "%3.1f", "str"]
|
||||
# , ["tuafq", True, True, "TuAFq", 1.0, "%3.1f", "str"]
|
||||
# , ["rvafq", True, True, "RvAFq", 1.0, "%3.1f", "str"]
|
||||
# , ["pofafq", False, False, "PoFAFq", 1.0, "%3.1f", "str"]
|
||||
# , ["net", True, True, "Net($)", 1.0, "%6.2f", "cash"]
|
||||
# , ["bbper100", True, True, "bb/100", 1.0, "%4.2f", "str"]
|
||||
# , ["rake", True, True, "Rake($)", 1.0, "%6.2f", "cash"]
|
||||
# , ["bb100xr", True, True, "bbxr/100", 1.0, "%4.2f", "str"]
|
||||
# , ["variance", True, True, "Variance", 1.0, "%5.2f", "str"]
|
||||
# ]
|
||||
|
||||
# Detail filters: This holds the data used in the popup window, extra values are
|
||||
# added at the end of these lists during processing
|
||||
|
@ -401,6 +364,7 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats):
|
|||
|
||||
tmp = self.sql.query[query]
|
||||
tmp = self.refineQuery(tmp, flags, playerids, sitenos, limits, type, seats, groups, dates, games)
|
||||
#print "DEBUG: query: %s" % tmp
|
||||
self.cursor.execute(tmp)
|
||||
result = self.cursor.fetchall()
|
||||
colnames = [desc[0].lower() for desc in self.cursor.description]
|
||||
|
@ -476,7 +440,7 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats):
|
|||
else:
|
||||
if column[colalias] == 'game':
|
||||
if holecards:
|
||||
value = Card.twoStartCardString( result[sqlrow][hgametypeid_idx] )
|
||||
value = Card.decodeStartHandValue(result[sqlrow][colnames.index('category')], result[sqlrow][hgametypeid_idx] )
|
||||
else:
|
||||
minbb = result[sqlrow][colnames.index('minbigblind')]
|
||||
maxbb = result[sqlrow][colnames.index('maxbigblind')]
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
import threading
|
||||
import pygtk
|
||||
|
@ -41,18 +44,6 @@ except ImportError, inst:
|
|||
print _("""Failed to load numpy and/or matplotlib in Session Viewer""")
|
||||
print _("ImportError: %s") % inst.args
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
import Card
|
||||
import fpdb_import
|
||||
import Database
|
||||
|
|
310
pyfpdb/GuiTourneyGraphViewer.py
Normal file
310
pyfpdb/GuiTourneyGraphViewer.py
Normal file
|
@ -0,0 +1,310 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
#Copyright 2008-2010 Carl Gherardi
|
||||
#This program is free software: you can redistribute it and/or modify
|
||||
#it under the terms of the GNU Affero General Public License as published by
|
||||
#the Free Software Foundation, version 3 of the License.
|
||||
#
|
||||
#This program is distributed in the hope that it will be useful,
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#GNU General Public License for more details.
|
||||
#
|
||||
#You should have received a copy of the GNU Affero General Public License
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import threading
|
||||
import pygtk
|
||||
pygtk.require('2.0')
|
||||
import gtk
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
from time import *
|
||||
from datetime import datetime
|
||||
#import pokereval
|
||||
|
||||
import fpdb_import
|
||||
import Database
|
||||
import Filters
|
||||
import Charset
|
||||
|
||||
try:
|
||||
import matplotlib
|
||||
matplotlib.use('GTKCairo')
|
||||
from matplotlib.figure import Figure
|
||||
from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas
|
||||
from matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbar
|
||||
from matplotlib.font_manager import FontProperties
|
||||
from numpy import arange, cumsum
|
||||
from pylab import *
|
||||
except ImportError, inst:
|
||||
print _("""Failed to load libs for graphing, graphing will not function. Please
|
||||
install numpy and matplotlib if you want to use graphs.""")
|
||||
print _("""This is of no consequence for other parts of the program, e.g. import
|
||||
and HUD are NOT affected by this problem.""")
|
||||
print "ImportError: %s" % inst.args
|
||||
|
||||
class GuiTourneyGraphViewer (threading.Thread):
|
||||
|
||||
def __init__(self, querylist, config, parent, debug=True):
|
||||
"""Constructor for GraphViewer"""
|
||||
self.sql = querylist
|
||||
self.conf = config
|
||||
self.debug = debug
|
||||
self.parent = parent
|
||||
#print "start of GraphViewer constructor"
|
||||
self.db = Database.Database(self.conf, sql=self.sql)
|
||||
|
||||
|
||||
filters_display = { "Heroes" : True,
|
||||
"Sites" : True,
|
||||
"Games" : False,
|
||||
"Limits" : False,
|
||||
"LimitSep" : False,
|
||||
"LimitType" : False,
|
||||
"Type" : False,
|
||||
"UseType" : 'tour',
|
||||
"Seats" : False,
|
||||
"SeatSep" : False,
|
||||
"Dates" : True,
|
||||
"Groups" : False,
|
||||
"Button1" : True,
|
||||
"Button2" : True
|
||||
}
|
||||
|
||||
self.filters = Filters.Filters(self.db, self.conf, self.sql, display = filters_display)
|
||||
self.filters.registerButton1Name(_("Refresh _Graph"))
|
||||
self.filters.registerButton1Callback(self.generateGraph)
|
||||
self.filters.registerButton2Name(_("_Export to File"))
|
||||
self.filters.registerButton2Callback(self.exportGraph)
|
||||
|
||||
self.mainHBox = gtk.HBox(False, 0)
|
||||
self.mainHBox.show()
|
||||
|
||||
self.leftPanelBox = self.filters.get_vbox()
|
||||
|
||||
self.hpane = gtk.HPaned()
|
||||
self.hpane.pack1(self.leftPanelBox)
|
||||
self.mainHBox.add(self.hpane)
|
||||
# hierarchy: self.mainHBox / self.hpane / self.graphBox / self.canvas / self.fig / self.ax
|
||||
|
||||
self.graphBox = gtk.VBox(False, 0)
|
||||
self.graphBox.show()
|
||||
self.hpane.pack2(self.graphBox)
|
||||
self.hpane.show()
|
||||
|
||||
self.fig = None
|
||||
#self.exportButton.set_sensitive(False)
|
||||
self.canvas = None
|
||||
|
||||
|
||||
self.db.rollback()
|
||||
|
||||
def get_vbox(self):
|
||||
"""returns the vbox of this thread"""
|
||||
return self.mainHBox
|
||||
#end def get_vbox
|
||||
|
||||
def clearGraphData(self):
|
||||
|
||||
try:
|
||||
try:
|
||||
if self.canvas:
|
||||
self.graphBox.remove(self.canvas)
|
||||
except:
|
||||
pass
|
||||
|
||||
if self.fig != None:
|
||||
self.fig.clear()
|
||||
self.fig = Figure(figsize=(5,4), dpi=100)
|
||||
if self.canvas is not None:
|
||||
self.canvas.destroy()
|
||||
|
||||
self.canvas = FigureCanvas(self.fig) # a gtk.DrawingArea
|
||||
except:
|
||||
err = traceback.extract_tb(sys.exc_info()[2])[-1]
|
||||
print _("***Error: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1])
|
||||
raise
|
||||
|
||||
def generateGraph(self, widget, data):
|
||||
try:
|
||||
self.clearGraphData()
|
||||
|
||||
sitenos = []
|
||||
playerids = []
|
||||
|
||||
sites = self.filters.getSites()
|
||||
heroes = self.filters.getHeroes()
|
||||
siteids = self.filters.getSiteIds()
|
||||
|
||||
# Which sites are selected?
|
||||
for site in sites:
|
||||
if sites[site] == True:
|
||||
sitenos.append(siteids[site])
|
||||
_hname = Charset.to_utf8(heroes[site])
|
||||
result = self.db.get_player_id(self.conf, site, _hname)
|
||||
if result is not None:
|
||||
playerids.append(int(result))
|
||||
|
||||
if not sitenos:
|
||||
#Should probably pop up here.
|
||||
print _("No sites selected - defaulting to PokerStars")
|
||||
self.db.rollback()
|
||||
return
|
||||
|
||||
if not playerids:
|
||||
print _("No player ids found")
|
||||
self.db.rollback()
|
||||
return
|
||||
|
||||
#Set graph properties
|
||||
self.ax = self.fig.add_subplot(111)
|
||||
|
||||
#Get graph data from DB
|
||||
starttime = time()
|
||||
green = self.getData(playerids, sitenos)
|
||||
print _("Graph generated in: %s") %(time() - starttime)
|
||||
|
||||
|
||||
#Set axis labels and grid overlay properites
|
||||
self.ax.set_xlabel(_("Tournaments"), fontsize = 12)
|
||||
self.ax.set_ylabel("$", fontsize = 12)
|
||||
self.ax.grid(color='g', linestyle=':', linewidth=0.2)
|
||||
if green == None or green == []:
|
||||
self.ax.set_title(_("No Data for Player(s) Found"))
|
||||
green = ([ 0., 0., 0., 0., 500., 1000., 900., 800.,
|
||||
700., 600., 500., 400., 300., 200., 100., 0.,
|
||||
500., 1000., 1000., 1000., 1000., 1000., 1000., 1000.,
|
||||
1000., 1000., 1000., 1000., 1000., 1000., 875., 750.,
|
||||
625., 500., 375., 250., 125., 0., 0., 0.,
|
||||
0., 500., 1000., 900., 800., 700., 600., 500.,
|
||||
400., 300., 200., 100., 0., 500., 1000., 1000.])
|
||||
red = ([ 0., 0., 0., 0., 500., 1000., 900., 800.,
|
||||
700., 600., 500., 400., 300., 200., 100., 0.,
|
||||
0., 0., 0., 0., 0., 0., 125., 250.,
|
||||
375., 500., 500., 500., 500., 500., 500., 500.,
|
||||
500., 500., 375., 250., 125., 0., 0., 0.,
|
||||
0., 500., 1000., 900., 800., 700., 600., 500.,
|
||||
400., 300., 200., 100., 0., 500., 1000., 1000.])
|
||||
blue = ([ 0., 0., 0., 0., 500., 1000., 900., 800.,
|
||||
700., 600., 500., 400., 300., 200., 100., 0.,
|
||||
0., 0., 0., 0., 0., 0., 125., 250.,
|
||||
375., 500., 625., 750., 875., 1000., 875., 750.,
|
||||
625., 500., 375., 250., 125., 0., 0., 0.,
|
||||
0., 500., 1000., 900., 800., 700., 600., 500.,
|
||||
400., 300., 200., 100., 0., 500., 1000., 1000.])
|
||||
|
||||
self.ax.plot(green, color='green', label=_('Tournaments: %d\nProfit: $%.2f') %(len(green), green[-1]))
|
||||
#self.ax.plot(blue, color='blue', label=_('Showdown: $%.2f') %(blue[-1]))
|
||||
#self.ax.plot(red, color='red', label=_('Non-showdown: $%.2f') %(red[-1]))
|
||||
self.graphBox.add(self.canvas)
|
||||
self.canvas.show()
|
||||
self.canvas.draw()
|
||||
|
||||
#TODO: Do something useful like alert user
|
||||
#print "No hands returned by graph query"
|
||||
else:
|
||||
self.ax.set_title(_("Tournament Results"))
|
||||
|
||||
#Draw plot
|
||||
self.ax.plot(green, color='green', label=_('Tournaments: %d\nProfit: $%.2f') %(len(green), green[-1]))
|
||||
#self.ax.plot(blue, color='blue', label=_('Showdown: $%.2f') %(blue[-1]))
|
||||
#self.ax.plot(red, color='red', label=_('Non-showdown: $%.2f') %(red[-1]))
|
||||
if sys.version[0:3] == '2.5':
|
||||
self.ax.legend(loc='upper left', shadow=True, prop=FontProperties(size='smaller'))
|
||||
else:
|
||||
self.ax.legend(loc='upper left', fancybox=True, shadow=True, prop=FontProperties(size='smaller'))
|
||||
|
||||
self.graphBox.add(self.canvas)
|
||||
self.canvas.show()
|
||||
self.canvas.draw()
|
||||
#self.exportButton.set_sensitive(True)
|
||||
except:
|
||||
err = traceback.extract_tb(sys.exc_info()[2])[-1]
|
||||
print _("***Error: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1])
|
||||
|
||||
#end of def showClicked
|
||||
|
||||
def getData(self, names, sites):
|
||||
tmp = self.sql.query['tourneyResults']
|
||||
print "DEBUG: getData"
|
||||
start_date, end_date = self.filters.getDates()
|
||||
|
||||
#Buggered if I can find a way to do this 'nicely' take a list of integers and longs
|
||||
# and turn it into a tuple readale by sql.
|
||||
# [5L] into (5) not (5,) and [5L, 2829L] into (5, 2829)
|
||||
nametest = str(tuple(names))
|
||||
sitetest = str(tuple(sites))
|
||||
|
||||
#Must be a nicer way to deal with tuples of size 1 ie. (2,) - which makes sql barf
|
||||
tmp = tmp.replace("<player_test>", nametest)
|
||||
tmp = tmp.replace("<site_test>", sitetest)
|
||||
tmp = tmp.replace("<startdate_test>", start_date)
|
||||
tmp = tmp.replace("<enddate_test>", end_date)
|
||||
tmp = tmp.replace(",)", ")")
|
||||
|
||||
print "DEBUG: sql query:"
|
||||
print tmp
|
||||
self.db.cursor.execute(tmp)
|
||||
#returns (HandId,Winnings,Costs,Profit)
|
||||
winnings = self.db.cursor.fetchall()
|
||||
self.db.rollback()
|
||||
|
||||
if len(winnings) == 0:
|
||||
return None
|
||||
|
||||
green = map(lambda x:float(x[1]), winnings)
|
||||
#blue = map(lambda x: float(x[1]) if x[2] == True else 0.0, winnings)
|
||||
#red = map(lambda x: float(x[1]) if x[2] == False else 0.0, winnings)
|
||||
greenline = cumsum(green)
|
||||
#blueline = cumsum(blue)
|
||||
#redline = cumsum(red)
|
||||
return (greenline/100)
|
||||
|
||||
def exportGraph (self, widget, data):
|
||||
if self.fig is None:
|
||||
return # Might want to disable export button until something has been generated.
|
||||
|
||||
dia_chooser = gtk.FileChooserDialog(title=_("Please choose the directory you wish to export to:"),
|
||||
action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
|
||||
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OK,gtk.RESPONSE_OK))
|
||||
dia_chooser.set_destroy_with_parent(True)
|
||||
dia_chooser.set_transient_for(self.parent)
|
||||
try:
|
||||
dia_chooser.set_filename(self.exportFile) # use previously chosen export path as default
|
||||
except:
|
||||
pass
|
||||
|
||||
response = dia_chooser.run()
|
||||
|
||||
if response <> gtk.RESPONSE_OK:
|
||||
print _('Closed, no graph exported')
|
||||
dia_chooser.destroy()
|
||||
return
|
||||
|
||||
# generate a unique filename for export
|
||||
now = datetime.now()
|
||||
now_formatted = now.strftime("%Y%m%d%H%M%S")
|
||||
self.exportFile = dia_chooser.get_filename() + "/fpdb" + now_formatted + ".png"
|
||||
dia_chooser.destroy()
|
||||
|
||||
#print "DEBUG: self.exportFile = %s" %(self.exportFile)
|
||||
self.fig.savefig(self.exportFile, format="png")
|
||||
|
||||
#display info box to confirm graph created
|
||||
diainfo = gtk.MessageDialog(parent=self.parent,
|
||||
flags=gtk.DIALOG_DESTROY_WITH_PARENT,
|
||||
type=gtk.MESSAGE_INFO,
|
||||
buttons=gtk.BUTTONS_OK,
|
||||
message_format=_("Graph created"))
|
||||
diainfo.format_secondary_text(self.exportFile)
|
||||
diainfo.run()
|
||||
diainfo.destroy()
|
||||
|
||||
#end of def exportGraph
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
#import traceback
|
||||
import threading
|
||||
import pygtk
|
||||
|
@ -24,18 +27,6 @@ import gtk
|
|||
#import sys
|
||||
from time import time, strftime
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
#import Card
|
||||
#import fpdb_import
|
||||
#import Database
|
||||
|
|
|
@ -15,23 +15,14 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import threading
|
||||
import pygtk
|
||||
pygtk.require('2.0')
|
||||
import gtk
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
class GuiTourneyViewer (threading.Thread):
|
||||
def __init__(self, config, db, sql, mainwin, debug=True):
|
||||
self.db = db
|
||||
|
|
83
pyfpdb/HHReplayer.py
Normal file
83
pyfpdb/HHReplayer.py
Normal file
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
#Copyright 2008-2010 Carl Gherardi
|
||||
#This program is free software: you can redistribute it and/or modify
|
||||
#it under the terms of the GNU Affero General Public License as published by
|
||||
#the Free Software Foundation, version 3 of the License.
|
||||
#
|
||||
#This program is distributed in the hope that it will be useful,
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#GNU General Public License for more details.
|
||||
#
|
||||
#You should have received a copy of the GNU Affero General Public License
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import os, pygame
|
||||
import time
|
||||
from pygame.locals import *
|
||||
from pygame.compat import geterror
|
||||
|
||||
main_dir = os.path.split(os.path.abspath(__file__))[0]
|
||||
data_dir = os.path.join(main_dir, '.')
|
||||
|
||||
def load_image(name, colorkey=None):
|
||||
fullname = os.path.join(data_dir, name)
|
||||
try:
|
||||
image = pygame.image.load(fullname)
|
||||
except pygame.error:
|
||||
print ('Cannot load image:', fullname)
|
||||
print "data_dir: '%s' name: '%s'" %( data_dir, name)
|
||||
raise SystemExit(str(geterror()))
|
||||
image = image.convert()
|
||||
if colorkey is not None:
|
||||
if colorkey is -1:
|
||||
colorkey = image.get_at((0,0))
|
||||
image.set_colorkey(colorkey, RLEACCEL)
|
||||
return image, image.get_rect()
|
||||
|
||||
|
||||
def main():
|
||||
#Initialize Everything
|
||||
pygame.init()
|
||||
clock = pygame.time.Clock()
|
||||
screen = pygame.display.set_mode((640, 480))
|
||||
table_string = "Tournament 2010090009 Table %s - Blinds $600/$1200 Anto $150"
|
||||
table_no = 1
|
||||
table_title = "Nongoma V - $200/$400 USD - Limit Holdem"
|
||||
pygame.display.set_caption(table_title)
|
||||
pygame.mouse.set_visible(0)
|
||||
|
||||
# Load background image
|
||||
bgimage, rect = load_image('../gfx/Table.png')
|
||||
background = pygame.Surface(screen.get_size())
|
||||
background.blit(bgimage, (0, 0))
|
||||
|
||||
#Put Text On The Background, Centered
|
||||
if pygame.font:
|
||||
font = pygame.font.Font(None, 24)
|
||||
text = font.render("FPDB Replayer Table", 1, (10, 10, 10))
|
||||
textpos = text.get_rect(centerx=background.get_width()/2)
|
||||
background.blit(text, textpos)
|
||||
|
||||
#Display The Background
|
||||
screen.blit(background, (0, 0))
|
||||
pygame.display.flip()
|
||||
|
||||
going = True
|
||||
while going:
|
||||
clock.tick(6000)
|
||||
# Draw
|
||||
screen.blit(background, (0, 0))
|
||||
# Change table #
|
||||
#table_no += 1
|
||||
#table_title = "Tournament 2010090009 Table %s - Blinds $600/$1200 Anto $150" % table_no
|
||||
#pygame.display.set_caption(table_title)
|
||||
time.sleep(10)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<FreePokerToolsConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FreePokerToolsConfig.xsd">
|
||||
|
||||
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True"></import>
|
||||
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="False"></import>
|
||||
|
||||
<!-- These values determine what stats are displayed in the HUD
|
||||
|
||||
|
@ -573,7 +573,11 @@ Left-Drag to Move"
|
|||
<hhc site="Absolute" converter="AbsoluteToFpdb"/>
|
||||
<hhc site="PartyPoker" converter="PartyPokerToFpdb"/>
|
||||
<hhc site="Betfair" converter="BetfairToFpdb"/>
|
||||
<hhc site="OnGame" converter="OnGameToFpdb"/>
|
||||
<hhc site="Partouche" converter="PartoucheToFpdb"/>
|
||||
<hhc site="Carbon" converter="CarbonToFpdb"/>
|
||||
<hhc site="PKR" converter="PkrToFpdb"/>
|
||||
<hhc site="iPoker" converter="iPokerToFpdb"/>
|
||||
</hhcs>
|
||||
|
||||
<supported_databases>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
config_difficulty="expert"
|
||||
/>
|
||||
|
||||
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True"></import>
|
||||
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="False"></import>
|
||||
|
||||
<gui_cash_stats>
|
||||
<col col_name="game" disp_all="True" disp_posn="True" col_title="Game" xalignment="0.0" field_format="%s" field_type="str" />
|
||||
|
@ -514,6 +514,79 @@ Left-Drag to Move"
|
|||
<location seat="9" x="70" y="53"> </location>
|
||||
</layout>
|
||||
</site>
|
||||
|
||||
<site HH_path="C:/Program Files/PKR/HandHistory/YOUR SCREEN NAME HERE/" converter="PkrToFpdb" decoder="everleaf_decode_table" enabled="False" screen_name="YOUR SCREEN NAME HERE" site_name="PKR" site_path="C:/Program Files/PKR/" supported_games="holdem" table_finder="PKR.exe">
|
||||
<layout fav_seat="0" height="547" max="8" width="794">
|
||||
<location seat="1" x="640" y="64"> </location>
|
||||
<location seat="2" x="650" y="230"> </location>
|
||||
<location seat="3" x="650" y="385"> </location>
|
||||
<location seat="4" x="588" y="425"> </location>
|
||||
<location seat="5" x="92" y="425"> </location>
|
||||
<location seat="6" x="0" y="373"> </location>
|
||||
<location seat="7" x="0" y="223"> </location>
|
||||
<location seat="8" x="25" y="50"> </location>
|
||||
</layout>
|
||||
<layout fav_seat="0" height="547" max="6" width="794">
|
||||
<location seat="1" x="640" y="58"> </location>
|
||||
<location seat="2" x="654" y="288"> </location>
|
||||
<location seat="3" x="615" y="424"> </location>
|
||||
<location seat="4" x="70" y="421"> </location>
|
||||
<location seat="5" x="0" y="280"> </location>
|
||||
<location seat="6" x="70" y="58"> </location>
|
||||
</layout>
|
||||
<layout fav_seat="0" height="547" max="2" width="794">
|
||||
<location seat="1" x="651" y="288"> </location>
|
||||
<location seat="2" x="10" y="288"> </location>
|
||||
</layout>
|
||||
<layout fav_seat="0" height="547" max="9" width="794">
|
||||
<location seat="1" x="634" y="38"> </location>
|
||||
<location seat="2" x="667" y="184"> </location>
|
||||
<location seat="3" x="667" y="321"> </location>
|
||||
<location seat="4" x="667" y="445"> </location>
|
||||
<location seat="5" x="337" y="459"> </location>
|
||||
<location seat="6" x="0" y="400"> </location>
|
||||
<location seat="7" x="0" y="322"> </location>
|
||||
<location seat="8" x="0" y="181"> </location>
|
||||
<location seat="9" x="70" y="53"> </location>
|
||||
</layout>
|
||||
</site>
|
||||
|
||||
<site HH_path="C:/Program Files/Winamax/HandHistory/YOUR SCREEN NAME HERE/" converter="WinamaxToFpdb" decoder="everleaf_decode_table" enabled="False" screen_name="YOUR SCREEN NAME HERE" site_name="Winamax" site_path="C:/Program Files/Winamax/" supported_games="holdem" table_finder="Winamax.exe">
|
||||
<layout fav_seat="0" height="547" max="8" width="794">
|
||||
<location seat="1" x="640" y="64"> </location>
|
||||
<location seat="2" x="650" y="230"> </location>
|
||||
<location seat="3" x="650" y="385"> </location>
|
||||
<location seat="4" x="588" y="425"> </location>
|
||||
<location seat="5" x="92" y="425"> </location>
|
||||
<location seat="6" x="0" y="373"> </location>
|
||||
<location seat="7" x="0" y="223"> </location>
|
||||
<location seat="8" x="25" y="50"> </location>
|
||||
</layout>
|
||||
<layout fav_seat="0" height="547" max="6" width="794">
|
||||
<location seat="1" x="640" y="58"> </location>
|
||||
<location seat="2" x="654" y="288"> </location>
|
||||
<location seat="3" x="615" y="424"> </location>
|
||||
<location seat="4" x="70" y="421"> </location>
|
||||
<location seat="5" x="0" y="280"> </location>
|
||||
<location seat="6" x="70" y="58"> </location>
|
||||
</layout>
|
||||
<layout fav_seat="0" height="547" max="2" width="794">
|
||||
<location seat="1" x="651" y="288"> </location>
|
||||
<location seat="2" x="10" y="288"> </location>
|
||||
</layout>
|
||||
<layout fav_seat="0" height="547" max="9" width="794">
|
||||
<location seat="1" x="634" y="38"> </location>
|
||||
<location seat="2" x="667" y="184"> </location>
|
||||
<location seat="3" x="667" y="321"> </location>
|
||||
<location seat="4" x="667" y="445"> </location>
|
||||
<location seat="5" x="337" y="459"> </location>
|
||||
<location seat="6" x="0" y="400"> </location>
|
||||
<location seat="7" x="0" y="322"> </location>
|
||||
<location seat="8" x="0" y="181"> </location>
|
||||
<location seat="9" x="70" y="53"> </location>
|
||||
</layout>
|
||||
</site>
|
||||
|
||||
</supported_sites>
|
||||
|
||||
<supported_games>
|
||||
|
@ -573,6 +646,43 @@ Left-Drag to Move"
|
|||
<stat click="tog_decorate" col="0" popup="default" row="2" stat_name="saw_f" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="1" popup="default" row="2" stat_name="ffreq1" tip="tip1"> </stat>
|
||||
</game>
|
||||
|
||||
<game cols="3" db="fpdb" game_name="27_3draw" rows="2">
|
||||
<stat click="tog_decorate" col="0" popup="default" row="0" stat_name="vpip" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="1" popup="default" row="0" stat_name="pfr" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="2" popup="default" row="0" stat_name="ffreq1" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="0" popup="default" row="1" stat_name="n" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="1" popup="default" row="1" stat_name="wtsd" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="2" popup="default" row="1" stat_name="wmsd" tip="tip1"> </stat>
|
||||
</game>
|
||||
|
||||
<game cols="3" db="fpdb" game_name="27_1draw" rows="2">
|
||||
<stat click="tog_decorate" col="0" popup="default" row="0" stat_name="vpip" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="1" popup="default" row="0" stat_name="pfr" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="2" popup="default" row="0" stat_name="ffreq1" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="0" popup="default" row="1" stat_name="n" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="1" popup="default" row="1" stat_name="wtsd" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="2" popup="default" row="1" stat_name="wmsd" tip="tip1"> </stat>
|
||||
</game>
|
||||
|
||||
<game cols="3" db="fpdb" game_name="badugi" rows="2">
|
||||
<stat click="tog_decorate" col="0" popup="default" row="0" stat_name="vpip" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="1" popup="default" row="0" stat_name="pfr" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="2" popup="default" row="0" stat_name="ffreq1" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="0" popup="default" row="1" stat_name="n" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="1" popup="default" row="1" stat_name="wtsd" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="2" popup="default" row="1" stat_name="wmsd" tip="tip1"> </stat>
|
||||
</game>
|
||||
|
||||
<game cols="3" db="fpdb" game_name="fivedraw" rows="2">
|
||||
<stat click="tog_decorate" col="0" popup="default" row="0" stat_name="vpip" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="1" popup="default" row="0" stat_name="pfr" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="2" popup="default" row="0" stat_name="ffreq1" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="0" popup="default" row="1" stat_name="n" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="1" popup="default" row="1" stat_name="wtsd" tip="tip1"> </stat>
|
||||
<stat click="tog_decorate" col="2" popup="default" row="1" stat_name="wmsd" tip="tip1"> </stat>
|
||||
</game>
|
||||
|
||||
</supported_games>
|
||||
|
||||
<popup_windows>
|
||||
|
@ -665,6 +775,9 @@ Left-Drag to Move"
|
|||
<hhc site="Partouche" converter="PartoucheToFpdb"/>
|
||||
<hhc site="Carbon" converter="CarbonToFpdb"/>
|
||||
<hhc site="OnGame" converter="OnGameToFpdb"/>
|
||||
<hhc site="PKR" converter="PkrToFpdb"/>
|
||||
<hhc site="iPoker" converter="iPokerToFpdb"/>
|
||||
<hhc site="Winamax" converter="WinamaxToFpdb"/>
|
||||
</hhcs>
|
||||
|
||||
<raw_hands save="none" compression="none"/>
|
||||
|
|
|
@ -109,6 +109,11 @@ class HUD_main(object):
|
|||
|
||||
# a main window
|
||||
self.main_window = gtk.Window()
|
||||
self.main_window.connect("client_moved", self.client_moved)
|
||||
self.main_window.connect("client_resized", self.client_resized)
|
||||
self.main_window.connect("client_destroyed", self.client_destroyed)
|
||||
self.main_window.connect("game_changed", self.game_changed)
|
||||
self.main_window.connect("table_changed", self.table_changed)
|
||||
self.main_window.connect("destroy", self.destroy)
|
||||
self.vb = gtk.VBox()
|
||||
self.label = gtk.Label(_('Closing this window will exit from the HUD.'))
|
||||
|
@ -116,11 +121,27 @@ class HUD_main(object):
|
|||
self.main_window.add(self.vb)
|
||||
self.main_window.set_title(_("HUD Main Window"))
|
||||
self.main_window.show_all()
|
||||
gobject.timeout_add(100, self.check_tables)
|
||||
except:
|
||||
log.error( "*** Exception in HUD_main.init() *** " )
|
||||
for e in traceback.format_tb(sys.exc_info()[2]):
|
||||
log.error(e)
|
||||
|
||||
def client_moved(self, widget, hud):
|
||||
print hud, hud.table.name, "moved", hud.table.x, hud.table.y
|
||||
|
||||
def client_resized(self, widget, hud):
|
||||
print "Client resized"
|
||||
|
||||
def client_destroyed(self, widget, hud): # call back for terminating the main eventloop
|
||||
self.kill_hud(None, hud.table.name)
|
||||
|
||||
def game_changed(self, widget, hud):
|
||||
print "Game Changed."
|
||||
|
||||
def table_changed(self, widget, hud):
|
||||
print "Table Changed."
|
||||
self.kill_hud(None, hud.table.name)
|
||||
|
||||
def destroy(self, *args): # call back for terminating the main eventloop
|
||||
log.info(_("Terminating normally."))
|
||||
|
@ -135,6 +156,11 @@ class HUD_main(object):
|
|||
del(self.hud_dict[table])
|
||||
self.main_window.resize(1,1)
|
||||
|
||||
def check_tables(self):
|
||||
for hud in self.hud_dict.keys():
|
||||
self.hud_dict[hud].table.check_table(self.hud_dict[hud])
|
||||
return True
|
||||
|
||||
def create_HUD(self, new_hand_id, table, table_name, max, poker_game, type, stat_dict, cards):
|
||||
"""type is "ring" or "tour" used to set hud_params"""
|
||||
|
||||
|
@ -269,6 +295,7 @@ class HUD_main(object):
|
|||
stat_dict = self.db_connection.get_stats_from_hand(new_hand_id, type, self.hud_dict[temp_key].hud_params
|
||||
,self.hero_ids[site_id], num_seats)
|
||||
t3 = time.time()
|
||||
|
||||
try:
|
||||
self.hud_dict[temp_key].stat_dict = stat_dict
|
||||
except KeyError: # HUD instance has been killed off, key is stale
|
||||
|
@ -299,10 +326,7 @@ class HUD_main(object):
|
|||
cards['common'] = comm_cards['common']
|
||||
|
||||
table_kwargs = dict(table_name = table_name, tournament = tour_number, table_number = tab_number)
|
||||
search_string = getTableTitleRe(self.config, site_name, type, **table_kwargs)
|
||||
# print "getTableTitleRe ", self.config, site_name, type, "=", search_string
|
||||
tablewindow = Tables.Table(search_string, **table_kwargs)
|
||||
|
||||
tablewindow = Tables.Table(self.config, site_name, **table_kwargs)
|
||||
if tablewindow is None:
|
||||
# If no client window is found on the screen, complain and continue
|
||||
if type == "tour":
|
||||
|
@ -321,7 +345,8 @@ class HUD_main(object):
|
|||
log.info(_("HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%4.3f)")
|
||||
% (t6-t0,t1-t0,t2-t0,t3-t0,t4-t0,t5-t0,t6-t0))
|
||||
self.db_connection.connection.rollback()
|
||||
|
||||
if type == "tour":
|
||||
tablewindow.check_table_no()
|
||||
if __name__== "__main__":
|
||||
|
||||
# start the HUD_main object
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# TODO: get writehand() encoding correct
|
||||
|
||||
import re
|
||||
|
@ -28,18 +31,6 @@ import time,datetime
|
|||
from copy import deepcopy
|
||||
import pprint
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
import logging
|
||||
# logging has been set up in fpdb.py or HUD_main.py, use their settings:
|
||||
log = logging.getLogger("parser")
|
||||
|
@ -56,9 +47,8 @@ class Hand(object):
|
|||
# Class Variables
|
||||
UPS = {'a':'A', 't':'T', 'j':'J', 'q':'Q', 'k':'K', 'S':'s', 'C':'c', 'H':'h', 'D':'d'}
|
||||
LCS = {'H':'h', 'D':'d', 'C':'c', 'S':'s'}
|
||||
SYMBOL = {'USD': '$', 'EUR': u'$', 'T$': '', 'play': ''}
|
||||
SYMBOL = {'USD': '$', 'EUR': u'$', 'GBP': '$', 'T$': '', 'play': ''}
|
||||
MS = {'horse' : 'HORSE', '8game' : '8-Game', 'hose' : 'HOSE', 'ha': 'HA'}
|
||||
SITEIDS = {'Fulltilt':1, 'PokerStars':2, 'Everleaf':3, 'Win2day':4, 'OnGame':5, 'UltimateBet':6, 'Betfair':7, 'Absolute':8, 'PartyPoker':9, 'Partouche':10, 'Carbon':11, 'PKR':12 }
|
||||
|
||||
|
||||
def __init__(self, config, sitename, gametype, handText, builtFrom = "HHC"):
|
||||
|
@ -66,7 +56,7 @@ class Hand(object):
|
|||
self.config = config
|
||||
#log = Configuration.get_logger("logging.conf", "db", log_dir=self.config.dir_log)
|
||||
self.sitename = sitename
|
||||
self.siteId = self.SITEIDS[sitename]
|
||||
self.siteId = self.config.get_site_id(sitename)
|
||||
self.stats = DerivedStats.DerivedStats(self)
|
||||
self.gametype = gametype
|
||||
self.startTime = 0
|
||||
|
@ -275,6 +265,7 @@ db: a connected Database object"""
|
|||
db.storeHandsPlayers(self.dbid_hands, self.dbid_pids, self.stats.getHandsPlayers(), printdata = printtest)
|
||||
# TODO HandsActions - all actions for all players for all streets - self.actions
|
||||
# HudCache data can be generated from HandsActions (HandsPlayers?)
|
||||
#db.storeHandsActions(self.dbid_hands, self.dbid_pids, self.stats.getHandsActions(), printdata = printtest)
|
||||
else:
|
||||
log.info(_("Hand.insert(): hid #: %s is a duplicate") % hh['siteHandNo'])
|
||||
self.is_duplicate = True # i.e. don't update hudcache
|
||||
|
@ -697,10 +688,7 @@ class HoldemOmahaHand(Hand):
|
|||
if self.cancelled:
|
||||
return
|
||||
|
||||
try: hhc.readBlinds(self)
|
||||
except:
|
||||
print _("*** Parse error reading blinds (check compilePlayerRegexs as a likely culprit)"), self
|
||||
return
|
||||
hhc.readBlinds(self)
|
||||
|
||||
hhc.readAntes(self)
|
||||
hhc.readButton(self)
|
||||
|
@ -1224,7 +1212,8 @@ class StudHand(Hand):
|
|||
self.addHoleCards('FOURTH', player, open=[cards[3]], closed=[cards[2]], shown=shown, mucked=mucked)
|
||||
self.addHoleCards('FIFTH', player, open=[cards[4]], closed=cards[2:4], shown=shown, mucked=mucked)
|
||||
self.addHoleCards('SIXTH', player, open=[cards[5]], closed=cards[2:5], shown=shown, mucked=mucked)
|
||||
self.addHoleCards('SEVENTH', player, open=[], closed=[cards[6]], shown=shown, mucked=mucked)
|
||||
if len(cards) > 6:
|
||||
self.addHoleCards('SEVENTH', player, open=[], closed=[cards[6]], shown=shown, mucked=mucked)
|
||||
|
||||
|
||||
def addPlayerCards(self, player, street, open=[], closed=[]):
|
||||
|
@ -1514,11 +1503,15 @@ class Pot(object):
|
|||
commitsall = sorted([(v,k) for (k,v) in self.committed.items() if v >0])
|
||||
|
||||
self.pots = []
|
||||
while len(commitsall) > 0:
|
||||
commitslive = [(v,k) for (v,k) in commitsall if k in self.contenders]
|
||||
v1 = commitslive[0][0]
|
||||
self.pots += [sum([min(v,v1) for (v,k) in commitsall])]
|
||||
commitsall = [((v-v1),k) for (v,k) in commitsall if v-v1 >0]
|
||||
try:
|
||||
while len(commitsall) > 0:
|
||||
commitslive = [(v,k) for (v,k) in commitsall if k in self.contenders]
|
||||
v1 = commitslive[0][0]
|
||||
self.pots += [sum([min(v,v1) for (v,k) in commitsall])]
|
||||
commitsall = [((v-v1),k) for (v,k) in commitsall if v-v1 >0]
|
||||
except IndexError, e:
|
||||
log.error(_("Pot.end(): Major failure while calculating pot: '%s'" % e))
|
||||
raise FpdbParseError(_("Pot.end(): Major failure while calculating pot: '%s'" % e))
|
||||
|
||||
# TODO: I think rake gets taken out of the pots.
|
||||
# so it goes:
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import re
|
||||
import sys
|
||||
import traceback
|
||||
|
@ -41,18 +44,6 @@ import Hand
|
|||
from Exceptions import FpdbParseError
|
||||
import Configuration
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
import pygtk
|
||||
import gtk
|
||||
|
||||
|
@ -72,7 +63,9 @@ class HandHistoryConverter():
|
|||
|
||||
re_tzOffset = re.compile('^\w+[+-]\d{4}$')
|
||||
|
||||
def __init__(self, config, in_path = '-', out_path = '-', follow=False, index=0, autostart=True, starsArchive=False, ftpArchive=False):
|
||||
# maybe archive params should be one archive param, then call method in specific converter. if archive: convert_archive()
|
||||
def __init__( self, config, in_path = '-', out_path = '-', follow=False, index=0
|
||||
, autostart=True, starsArchive=False, ftpArchive=False, sitename="PokerStars" ):
|
||||
"""\
|
||||
in_path (default '-' = sys.stdin)
|
||||
out_path (default '-' = sys.stdout)
|
||||
|
@ -80,8 +73,10 @@ follow : whether to tail -f the input"""
|
|||
|
||||
self.config = config
|
||||
self.import_parameters = self.config.get_import_parameters()
|
||||
self.sitename = sitename
|
||||
#log = Configuration.get_logger("logging.conf", "parser", log_dir=self.config.dir_log)
|
||||
log.info("HandHistory init - %s subclass, in_path '%s'; out_path '%s'" % (self.sitename, in_path, out_path) )
|
||||
log.info("HandHistory init - %s site, %s subclass, in_path '%s'; out_path '%s'"
|
||||
% (self.sitename, self.__class__, in_path, out_path) ) # should use self.filter, not self.sitename
|
||||
|
||||
self.index = index
|
||||
self.starsArchive = starsArchive
|
||||
|
@ -252,6 +247,9 @@ which it expects to find at self.re_TailSplitHands -- see for e.g. Everleaf.py.
|
|||
self.readFile()
|
||||
self.obs = self.obs.strip()
|
||||
self.obs = self.obs.replace('\r\n', '\n')
|
||||
# maybe archive params should be one archive param, then call method in specific converter?
|
||||
# if self.archive:
|
||||
# self.obs = self.convert_archive(self.obs)
|
||||
if self.starsArchive == True:
|
||||
log.debug(_("Converting starsArchive format to readable"))
|
||||
m = re.compile('^Hand #\d+', re.MULTILINE)
|
||||
|
@ -259,7 +257,8 @@ which it expects to find at self.re_TailSplitHands -- see for e.g. Everleaf.py.
|
|||
|
||||
if self.ftpArchive == True:
|
||||
log.debug(_("Converting ftpArchive format to readable"))
|
||||
m = re.compile('^\*\*\*\*\*\*+\s#\s\d+\s\*\*\*\*\*+$', re.MULTILINE)
|
||||
# Remove ******************** # 1 *************************
|
||||
m = re.compile('\*{20}\s#\s\d+\s\*{25}\s+', re.MULTILINE)
|
||||
self.obs = m.sub('', self.obs)
|
||||
|
||||
if self.obs is None or self.obs == "":
|
||||
|
@ -282,6 +281,7 @@ which it expects to find at self.re_TailSplitHands -- see for e.g. Everleaf.py.
|
|||
base = gametype['base']
|
||||
limit = gametype['limitType']
|
||||
l = [type] + [base] + [limit]
|
||||
|
||||
if l in self.readSupportedGames():
|
||||
if gametype['base'] == 'hold':
|
||||
log.debug("hand = Hand.HoldemOmahaHand(self, self.sitename, gametype, handtext)")
|
||||
|
@ -292,14 +292,14 @@ which it expects to find at self.re_TailSplitHands -- see for e.g. Everleaf.py.
|
|||
hand = Hand.DrawHand(self.config, self, self.sitename, gametype, handText)
|
||||
else:
|
||||
log.info(_("Unsupported game type: %s" % gametype))
|
||||
raise FpdbParseError(_("Unsupported game type: %s" % gametype))
|
||||
|
||||
if hand:
|
||||
#hand.writeHand(self.out_fh)
|
||||
return hand
|
||||
else:
|
||||
log.info(_("Unsupported game type: %s" % gametype))
|
||||
log.error(_("Unsupported game type: %s" % gametype))
|
||||
# TODO: pity we don't know the HID at this stage. Log the entire hand?
|
||||
# From the log we can deduce that it is the hand after the one before :)
|
||||
|
||||
|
||||
# These functions are parse actions that may be overridden by the inheriting class
|
||||
|
@ -661,12 +661,23 @@ or None if we fail to get the info """
|
|||
else:
|
||||
return table_name
|
||||
|
||||
|
||||
@staticmethod
|
||||
def getTableNoRe(tournament):
|
||||
"Returns string to search window title for tournament table no."
|
||||
# Full Tilt: $30 + $3 Tournament (181398949), Table 1 - 600/1200 Ante 100 - Limit Razz
|
||||
# PokerStars: WCOOP 2nd Chance 02: $1,050 NLHE - Tournament 307521826 Table 1 - Blinds $30/$60
|
||||
return "%s.+Table (\d+)" % (tournament, )
|
||||
|
||||
def getTableTitleRe(config, sitename, *args, **kwargs):
|
||||
"Returns string to search in windows titles for current site"
|
||||
return getSiteHhc(config, sitename).getTableTitleRe(*args, **kwargs)
|
||||
|
||||
def getTableNoRe(config, sitename, *args, **kwargs):
|
||||
"Returns string to search window titles for tournament table no."
|
||||
return getSiteHhc(config, sitename).getTableNoRe(*args, **kwargs)
|
||||
|
||||
|
||||
|
||||
def getSiteHhc(config, sitename):
|
||||
"Returns HHC class for current site"
|
||||
hhcName = config.supported_sites[sitename].converter
|
||||
|
|
|
@ -22,6 +22,10 @@ Create and manage the hud overlays.
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# Standard Library modules
|
||||
import os
|
||||
import sys
|
||||
|
@ -42,18 +46,6 @@ if os.name == 'nt':
|
|||
import win32con
|
||||
import win32api
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# FreePokerTools modules
|
||||
import Configuration
|
||||
import Stats
|
||||
|
@ -78,7 +70,8 @@ class Hud:
|
|||
# cannot touch the gui
|
||||
if parent is None: # running from cli ..
|
||||
self.parent = self
|
||||
self.parent = parent
|
||||
else:
|
||||
self.parent = parent
|
||||
self.table = table
|
||||
self.config = config
|
||||
self.poker_game = poker_game
|
||||
|
@ -95,6 +88,7 @@ class Hud:
|
|||
self.popup_windows = {}
|
||||
self.aux_windows = []
|
||||
|
||||
# configure default font and colors from the configuration
|
||||
(font, font_size) = config.get_default_font(self.table.site)
|
||||
self.colors = config.get_default_colors(self.table.site)
|
||||
self.hud_ui = config.get_hud_ui_parameters()
|
||||
|
@ -107,6 +101,7 @@ class Hud:
|
|||
# do we need to add some sort of condition here for dealing with a request for a font that doesn't exist?
|
||||
|
||||
game_params = config.get_game_parameters(self.poker_game)
|
||||
# if there are AUX windows configured, set them up (Ray knows how this works, if anyone needs info)
|
||||
if not game_params['aux'] == [""]:
|
||||
for aux in game_params['aux']:
|
||||
aux_params = config.get_aux_parameters(aux)
|
||||
|
@ -118,14 +113,16 @@ class Hud:
|
|||
self.creation_attrs = None
|
||||
|
||||
def create_mw(self):
|
||||
|
||||
# Set up a main window for this this instance of the HUD
|
||||
win = gtk.Window()
|
||||
win.set_skip_taskbar_hint(True) # invisible to taskbar
|
||||
win.set_gravity(gtk.gdk.GRAVITY_STATIC)
|
||||
win.set_title("%s FPDBHUD" % (self.table.name))
|
||||
win.set_skip_taskbar_hint(True)
|
||||
win.set_decorated(False)
|
||||
win.set_opacity(self.colors["hudopacity"])
|
||||
win.set_title("%s FPDBHUD" % (self.table.name)) # give it a title that we can easily filter out in the window list when Table search code is looking
|
||||
win.set_decorated(False) # kill titlebars
|
||||
win.set_opacity(self.colors["hudopacity"]) # set it to configured hud opacity
|
||||
win.set_focus(None)
|
||||
win.set_focus_on_map(False)
|
||||
win.set_accept_focus(False)
|
||||
|
||||
eventbox = gtk.EventBox()
|
||||
label = gtk.Label(self.hud_ui['label'])
|
||||
|
@ -133,6 +130,7 @@ class Hud:
|
|||
win.add(eventbox)
|
||||
eventbox.add(label)
|
||||
|
||||
# set it to the desired color of the HUD for this site
|
||||
label.modify_bg(gtk.STATE_NORMAL, self.backgroundcolor)
|
||||
label.modify_fg(gtk.STATE_NORMAL, self.foregroundcolor)
|
||||
|
||||
|
@ -140,9 +138,11 @@ class Hud:
|
|||
eventbox.modify_fg(gtk.STATE_NORMAL, self.foregroundcolor)
|
||||
|
||||
self.main_window = win
|
||||
# move it to the table window's X/Y position (0,0 on the table window usually)
|
||||
self.main_window.move(self.table.x, self.table.y)
|
||||
|
||||
# A popup menu for the main window
|
||||
# This menu code has become extremely long - is there a better way to do this?
|
||||
menu = gtk.Menu()
|
||||
|
||||
killitem = gtk.MenuItem(_('Kill This HUD'))
|
||||
|
@ -457,6 +457,13 @@ class Hud:
|
|||
log.debug("setting self.hud_params[%s] = %s" % (param, style))
|
||||
|
||||
def update_table_position(self):
|
||||
# get table's X/Y position on the desktop, and relocate all of our child windows to accomodate
|
||||
# In Windows, we can verify the existence of a Window, with win32gui.IsWindow(). In Linux, there doesn't seem to be a
|
||||
# way to verify the existence of a Window, without trying to access it, which if it doesn't exist anymore, results in a
|
||||
# big giant X trap and crash.
|
||||
# People tell me this is a bad idea, because theoretically, IsWindow() could return true now, but not be true when we actually
|
||||
# use it, but accessing a dead window doesn't result in a complete windowing system shutdown in Windows, whereas it does
|
||||
# in X. - Eric
|
||||
if os.name == 'nt':
|
||||
if not win32gui.IsWindow(self.table.number):
|
||||
self.parent.kill_hud(self, self.table.name)
|
||||
|
@ -465,20 +472,11 @@ class Hud:
|
|||
return False
|
||||
# anyone know how to do this in unix, or better yet, trap the X11 error that is triggered when executing the get_origin() for a closed window?
|
||||
if self.table.gdkhandle is not None:
|
||||
updateFlag = False
|
||||
actual_seat = self.get_actual_seat(self.config.supported_sites[self.table.site].screen_name)
|
||||
if self.table.hud != actual_seat:
|
||||
self.table.hud = actual_seat
|
||||
updateFlag = True
|
||||
# dont know what the intention of table.hud was, so misusing the variable here
|
||||
(x, y) = self.table.gdkhandle.get_origin()
|
||||
if self.table.x != x or self.table.y != y:
|
||||
(x, y) = self.table.gdkhandle.get_origin() # In Windows, this call returns (0,0) if it's an invalid window. In X, the X server is immediately killed.
|
||||
if self.table.x != x or self.table.y != y: # If the current position does not equal the stored position, save the new position, and then move all the sub windows.
|
||||
self.table.x = x
|
||||
self.table.y = y
|
||||
# self.main_window.move(x, y)
|
||||
self.main_window.move(x + self.site_params['xshift'], y + self.site_params['yshift'])
|
||||
updateFlag = True
|
||||
if updateFlag:
|
||||
adj = self.adj_seats(self.hand, self.config)
|
||||
loc = self.config.get_locations(self.table.site, self.max)
|
||||
# TODO: is stat_windows getting converted somewhere from a list to a dict, for no good reason?
|
||||
|
@ -496,10 +494,10 @@ class Hud:
|
|||
return True
|
||||
|
||||
def on_button_press(self, widget, event):
|
||||
if event.button == 1:
|
||||
if event.button == 1: # if primary button, start movement
|
||||
self.main_window.begin_move_drag(event.button, int(event.x_root), int(event.y_root), event.time)
|
||||
return True
|
||||
if event.button == 3:
|
||||
if event.button == 3: # if secondary button, popup our main popup window
|
||||
widget.popup(None, None, None, event.button, event.time)
|
||||
return True
|
||||
return False
|
||||
|
@ -552,7 +550,7 @@ class Hud:
|
|||
self.config.save()
|
||||
|
||||
def adj_seats(self, hand, config):
|
||||
|
||||
# determine how to adjust seating arrangements, if a "preferred seat" is set in the hud layout configuration
|
||||
# Need range here, not xrange -> need the actual list
|
||||
adj = range(0, self.max + 1) # default seat adjustments = no adjustment
|
||||
# does the user have a fav_seat?
|
||||
|
@ -595,7 +593,7 @@ class Hud:
|
|||
|
||||
self.stat_dict = stat_dict
|
||||
self.cards = cards
|
||||
sys.stderr.write(_("------------------------------------------------------------\nCreating hud from hand %s\n") % hand)
|
||||
log.info(_('Creating hud from hand ')+str(hand))
|
||||
adj = self.adj_seats(hand, config)
|
||||
loc = self.config.get_locations(self.table.site, self.max)
|
||||
if loc is None and self.max != 10:
|
||||
|
@ -630,7 +628,7 @@ class Hud:
|
|||
[config.supported_games[self.poker_game].stats[stat].col] = \
|
||||
config.supported_games[self.poker_game].stats[stat].stat_name
|
||||
|
||||
if os.name == "nt":
|
||||
if os.name == "nt": # we call update_table_position() regularly in Windows to see if we're moving around. See comments on that function for why this isn't done in X.
|
||||
gobject.timeout_add(500, self.update_table_position)
|
||||
|
||||
def update(self, hand, config):
|
||||
|
@ -677,9 +675,12 @@ class Hud:
|
|||
|
||||
window.label[r][c].set_text(statstring)
|
||||
if statstring != "xxx": # is there a way to tell if this particular stat window is visible already, or no?
|
||||
window.window.show_all()
|
||||
unhidewindow = True
|
||||
tip = "%s\n%s\n%s, %s" % (statd['screen_name'], number[5], number[3], number[4])
|
||||
Stats.do_tip(window.e_box[r][c], tip)
|
||||
if unhidewindow: #and not window.window.visible: # there is no "visible" attribute in gtk.Window, although the docs seem to indicate there should be
|
||||
window.window.show_all()
|
||||
unhidewindow = False
|
||||
|
||||
def topify_window(self, window):
|
||||
window.set_focus_on_map(False)
|
||||
|
@ -695,7 +696,7 @@ class Stat_Window:
|
|||
# This handles all callbacks from button presses on the event boxes in
|
||||
# the stat windows. There is a bit of an ugly kludge to separate single-
|
||||
# and double-clicks.
|
||||
self.window.show_all()
|
||||
self.window.show() #_all()
|
||||
|
||||
if event.button == 3: # right button event
|
||||
newpopup = Popup_window(self.window, self)
|
||||
|
@ -754,11 +755,13 @@ class Stat_Window:
|
|||
|
||||
self.window = gtk.Window()
|
||||
self.window.set_decorated(0)
|
||||
self.window.set_property("skip-taskbar-hint", True)
|
||||
self.window.set_gravity(gtk.gdk.GRAVITY_STATIC)
|
||||
|
||||
self.window.set_title("%s" % seat)
|
||||
self.window.set_property("skip-taskbar-hint", True)
|
||||
self.window.set_focus(None) # set gtk default focus widget for this window to None
|
||||
self.window.set_focus_on_map(False)
|
||||
self.window.set_accept_focus(False)
|
||||
|
||||
grid = gtk.Table(rows = game.rows, columns = game.cols, homogeneous = False)
|
||||
self.grid = grid
|
||||
|
|
|
@ -19,27 +19,40 @@
|
|||
#see http://docs.python.org/library/imaplib.html for the python interface
|
||||
#see http://tools.ietf.org/html/rfc2060#section-6.4.4 for IMAP4 search criteria
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
from imaplib import IMAP4, IMAP4_SSL
|
||||
import sys
|
||||
import codecs
|
||||
import re
|
||||
|
||||
import Configuration
|
||||
import Database
|
||||
from Exceptions import FpdbParseError
|
||||
import SQL
|
||||
import Options
|
||||
import PokerStarsSummary
|
||||
import FullTiltPokerSummary
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
def splitPokerStarsSummaries(emailText):
|
||||
splitSummaries=emailText.split("\nPokerStars Tournament #")[1:]
|
||||
for i in range(len(splitSummaries)):
|
||||
splitSummaries[i]="PokerStars Tournament #"+splitSummaries[i]
|
||||
def splitPokerStarsSummaries(summaryText): #TODO: this needs to go to PSS.py
|
||||
re_SplitTourneys = PokerStarsSummary.PokerStarsSummary.re_SplitTourneys
|
||||
splitSummaries = re.split(re_SplitTourneys, summaryText)
|
||||
|
||||
if len(splitSummaries) <= 1:
|
||||
print _("DEBUG: re_SplitTourneys isn't matching")
|
||||
|
||||
return splitSummaries
|
||||
|
||||
def splitFullTiltSummaries(summaryText):#TODO: this needs to go to FTPS.py
|
||||
re_SplitTourneys = FullTiltPokerSummary.FullTiltPokerSummary.re_SplitTourneys
|
||||
splitSummaries = re.split(re_SplitTourneys, summaryText)
|
||||
|
||||
if len(splitSummaries) <= 1:
|
||||
print _("DEBUG: re_SplitTourneys isn't matching")
|
||||
|
||||
return splitSummaries
|
||||
#end def emailText
|
||||
|
||||
def run(config, db):
|
||||
#print "start of IS.run"
|
||||
|
@ -63,30 +76,118 @@ def run(config, db):
|
|||
response, searchData = server.search(None, "SUBJECT", "PokerStars Tournament History Request")
|
||||
for messageNumber in searchData[0].split(" "):
|
||||
response, headerData = server.fetch(messageNumber, "(BODY[HEADER.FIELDS (SUBJECT)])")
|
||||
#print "response to fetch subject:",response
|
||||
if response!="OK":
|
||||
raise error #TODO: show error message
|
||||
neededMessages.append(("PS", messageNumber))
|
||||
|
||||
print _("ImapFetcher: Found %s messages to fetch") %(len(neededMessages))
|
||||
|
||||
if (len(neededMessages)==0):
|
||||
raise error #TODO: show error message
|
||||
for messageData in neededMessages:
|
||||
|
||||
email_bodies = []
|
||||
for i, messageData in enumerate(neededMessages, start=1):
|
||||
print "Retrieving message %s" % i
|
||||
response, bodyData = server.fetch(messageData[1], "(UID BODY[TEXT])")
|
||||
bodyData=bodyData[0][1]
|
||||
if response!="OK":
|
||||
raise error #TODO: show error message
|
||||
if messageData[0]=="PS":
|
||||
summaryTexts=(splitPokerStarsSummaries(bodyData))
|
||||
for summaryText in summaryTexts:
|
||||
result=PokerStarsSummary.PokerStarsSummary(db=db, config=config, siteName=u"PokerStars", summaryText=summaryText, builtFrom = "IMAP")
|
||||
#print "finished importing a PS summary with result:",result
|
||||
#TODO: count results and output to shell like hand importer does
|
||||
|
||||
print _("completed running Imap import, closing server connection")
|
||||
email_bodies.append(bodyData)
|
||||
#finally:
|
||||
# try:
|
||||
server.close()
|
||||
# finally:
|
||||
# pass
|
||||
server.logout()
|
||||
print _("Completed retrieving IMAP messages, closing server connection")
|
||||
|
||||
errors = 0
|
||||
if len(email_bodies) > 0:
|
||||
errors = importSummaries(db, config, email_bodies, options = None)
|
||||
else:
|
||||
print _("No Tournament summaries found.")
|
||||
|
||||
print _("Errors: %s" % errors)
|
||||
|
||||
def readFile(filename, options):
|
||||
codepage = ["utf8"]
|
||||
whole_file = None
|
||||
if options.hhc == "PokerStars":
|
||||
codepage = PokerStarsSummary.PokerStarsSummary.codepage
|
||||
elif options.hhc == "Full Tilt Poker":
|
||||
codepage = FullTiltPokerSummary.FullTiltPokerSummary.codepage
|
||||
|
||||
for kodec in codepage:
|
||||
#print "trying", kodec
|
||||
try:
|
||||
in_fh = codecs.open(filename, 'r', kodec)
|
||||
whole_file = in_fh.read()
|
||||
in_fh.close()
|
||||
break
|
||||
except:
|
||||
pass
|
||||
|
||||
return whole_file
|
||||
|
||||
def runFake(db, config, options):
|
||||
summaryText = readFile(options.infile, options)
|
||||
importSummaries(db, config,[summaryText], options=options)
|
||||
|
||||
def importSummaries(db, config, summaries, options = None):
|
||||
# TODO: At this point we should have:
|
||||
# - list of strings to process
|
||||
# - The sitename OR specialised TourneySummary object
|
||||
# Using options is pretty ugly
|
||||
errors = 0
|
||||
for summaryText in summaries:
|
||||
# And we should def be using a 'Split' from the site object
|
||||
if options == None or options.hhc == "PokerStars":
|
||||
summaryTexts=(splitPokerStarsSummaries(summaryText))
|
||||
elif options.hhc == "Full Tilt Poker":
|
||||
summaryTexts=(splitFullTiltSummaries(summaryText))
|
||||
|
||||
print "Found %s summaries in email" %(len(summaryTexts))
|
||||
for j, summaryText in enumerate(summaryTexts, start=1):
|
||||
try:
|
||||
if options == None or options.hhc == "PokerStars":
|
||||
PokerStarsSummary.PokerStarsSummary(db=db, config=config, siteName=u"PokerStars", summaryText=summaryText, builtFrom = "IMAP")
|
||||
elif options.hhc == "Full Tilt Poker":
|
||||
FullTiltPokerSummary.FullTiltPokerSummary(db=db, config=config, siteName=u"Fulltilt", summaryText=summaryText, builtFrom = "IMAP")
|
||||
except FpdbParseError, e:
|
||||
errors += 1
|
||||
print _("Finished importing %s/%s PS summaries") %(j, len(summaryTexts))
|
||||
|
||||
return errors
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
if argv is None:
|
||||
argv = sys.argv[1:]
|
||||
|
||||
(options, argv) = Options.fpdb_options()
|
||||
|
||||
if options.usage == True:
|
||||
#Print usage examples and exit
|
||||
print _("USAGE:")
|
||||
sys.exit(0)
|
||||
|
||||
if options.hhc == "PokerStarsToFpdb":
|
||||
print _("Need to define a converter")
|
||||
exit(0)
|
||||
|
||||
# These options should really come from the OptionsParser
|
||||
config = Configuration.Config()
|
||||
db = Database.Database(config)
|
||||
sql = SQL.Sql(db_server = 'sqlite')
|
||||
settings = {}
|
||||
settings.update(config.get_db_parameters())
|
||||
settings.update(config.get_import_parameters())
|
||||
settings.update(config.get_default_paths())
|
||||
db.recreate_tables()
|
||||
|
||||
runFake(db, config, options)
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
|
37
pyfpdb/L10n.py
Normal file
37
pyfpdb/L10n.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
#Copyright 2010 Steffen Schaumburg
|
||||
#This program is free software: you can redistribute it and/or modify
|
||||
#it under the terms of the GNU Affero General Public License as published by
|
||||
#the Free Software Foundation, version 3 of the License.
|
||||
#
|
||||
#This program is distributed in the hope that it will be useful,
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#GNU General Public License for more details.
|
||||
#
|
||||
#You should have received a copy of the GNU Affero General Public License
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import locale
|
||||
def pass_through(to_translate): return to_translate
|
||||
|
||||
(lang, charset) = locale.getdefaultlocale()
|
||||
if lang==None or lang[:2]=="en":
|
||||
translation=pass_through
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
translation=_
|
||||
except IOError:
|
||||
translation=pass_through
|
||||
|
||||
#def translate(to_translate):
|
||||
# return _(to_translate)
|
||||
|
||||
def get_translation():
|
||||
return translation
|
|
@ -18,6 +18,9 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
import exceptions
|
||||
|
||||
|
@ -30,22 +33,10 @@ import Configuration
|
|||
from HandHistoryConverter import *
|
||||
from decimal import Decimal
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# OnGame HH Format
|
||||
|
||||
class OnGame(HandHistoryConverter):
|
||||
sitename = "OnGame"
|
||||
filter = "OnGame"
|
||||
filetype = "text"
|
||||
codepage = ("utf8", "cp1252")
|
||||
siteId = 5 # Needs to match id entry in Sites database
|
||||
|
@ -66,7 +57,7 @@ class OnGame(HandHistoryConverter):
|
|||
# 'Razz' : ('stud','razz'),
|
||||
# 'RAZZ' : ('stud','razz'),
|
||||
# '7 Card Stud' : ('stud','studhi'),
|
||||
# '7 Card Stud Hi/Lo' : ('stud','studhilo'),
|
||||
'SEVEN_CARD_STUD_HI_LO' : ('stud','studhilo'),
|
||||
# 'Badugi' : ('draw','badugi'),
|
||||
# 'Triple Draw 2-7 Lowball' : ('draw','27_3draw'),
|
||||
# '5 Card Draw' : ('draw','fivedraw')
|
||||
|
@ -111,14 +102,12 @@ class OnGame(HandHistoryConverter):
|
|||
re_DateTime = re.compile("""
|
||||
[a-zA-Z]{3}\s
|
||||
(?P<M>[a-zA-Z]{3})\s
|
||||
(?P<D>[0-9]{2})\s
|
||||
(?P<D>[0-9]+)\s
|
||||
(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)\s
|
||||
(?P<OFFSET>\w+[-+]\d+)\s
|
||||
(?P<Y>[0-9]{4})
|
||||
""", re.MULTILINE|re.VERBOSE)
|
||||
|
||||
# self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P<BUTTONPNAME>.*)\n')
|
||||
|
||||
#Seat 1: .Lucchess ($4.17 in chips)
|
||||
#Seat 1: phantomaas ($27.11)
|
||||
#Seat 5: mleo17 ($9.37)
|
||||
|
@ -138,10 +127,11 @@ class OnGame(HandHistoryConverter):
|
|||
player_re = "(?P<PNAME>" + "|".join(map(re.escape, players)) + ")"
|
||||
subst = {'PLYR': player_re, 'CUR': self.sym[hand.gametype['currency']]}
|
||||
self.re_PostSB = re.compile('(?P<PNAME>.*) posts small blind \((%(CUR)s)?(?P<SB>[\.0-9]+)\)' % subst, re.MULTILINE)
|
||||
self.re_PostBB = re.compile('\), (?P<PNAME>.*) posts big blind \((%(CUR)s)?(?P<BB>[\.0-9]+)\)' % subst, re.MULTILINE)
|
||||
self.re_PostBB = re.compile('(?P<PNAME>.*) posts big blind \((%(CUR)s)?(?P<BB>[\.0-9]+)\)' % subst, re.MULTILINE)
|
||||
self.re_Antes = re.compile(r"^%(PLYR)s: posts the ante (%(CUR)s)?(?P<ANTE>[\.0-9]+)" % subst, re.MULTILINE)
|
||||
self.re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for (%(CUR)s)?(?P<BRINGIN>[\.0-9]+)" % subst, re.MULTILINE)
|
||||
self.re_PostBoth = re.compile('.*\n(?P<PNAME>.*): posts small \& big blinds \( (%(CUR)s)?(?P<SBBB>[\.0-9]+)\)' % subst)
|
||||
self.re_PostBoth = re.compile('(?P<PNAME>.*): posts small \& big blind \( (%(CUR)s)?(?P<SBBB>[\.0-9]+)\)' % subst)
|
||||
self.re_PostDead = re.compile('(?P<PNAME>.*) posts dead blind \((%(CUR)s)?(?P<DEAD>[\.0-9]+)\)' % subst, re.MULTILINE)
|
||||
self.re_HeroCards = re.compile('Dealing\sto\s%(PLYR)s:\s\[(?P<CARDS>.*)\]' % subst)
|
||||
|
||||
#lopllopl checks, Eurolll checks, .Lucchess checks.
|
||||
|
@ -165,6 +155,7 @@ class OnGame(HandHistoryConverter):
|
|||
return [
|
||||
["ring", "hold", "fl"],
|
||||
["ring", "hold", "nl"],
|
||||
["ring", "stud", "fl"],
|
||||
]
|
||||
|
||||
def determineGameType(self, handText):
|
||||
|
@ -217,21 +208,28 @@ class OnGame(HandHistoryConverter):
|
|||
#hand.startTime = time.strptime(m.group('DATETIME'), "%a %b %d %H:%M:%S GMT%z %Y")
|
||||
# Stupid library doesn't seem to support %z (http://docs.python.org/library/time.html?highlight=strptime#time.strptime)
|
||||
# So we need to re-interpret te string to be useful
|
||||
m1 = self.re_DateTime.finditer(info[key])
|
||||
for a in m1:
|
||||
a = self.re_DateTime.search(info[key])
|
||||
if a:
|
||||
datetimestr = "%s/%s/%s %s:%s:%s" % (a.group('Y'),a.group('M'), a.group('D'), a.group('H'),a.group('MIN'),a.group('S'))
|
||||
tzoffset = a.group('OFFSET')
|
||||
# TODO: Manually adjust time against OFFSET
|
||||
else:
|
||||
datetimestr = "2010/Jan/01 01:01:01"
|
||||
log.error(_("readHandInfo: DATETIME not matched: '%s'" % info[key]))
|
||||
print "DEBUG: readHandInfo: DATETIME not matched: '%s'" % info[key]
|
||||
# TODO: Manually adjust time against OFFSET
|
||||
hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%b/%d %H:%M:%S") # also timezone at end, e.g. " ET"
|
||||
hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, tzoffset, "UTC")
|
||||
if key == 'HID':
|
||||
hand.handid = info[key]
|
||||
# Need to remove non-alphanumerics for MySQL
|
||||
hand.handid = hand.handid.replace('R','')
|
||||
hand.handid = hand.handid.replace('-','')
|
||||
if key == 'TABLE':
|
||||
hand.tablename = info[key]
|
||||
|
||||
# TODO: These
|
||||
hand.buttonpos = 1
|
||||
hand.maxseats = 10
|
||||
hand.maxseats = None # Set to None - Hand.py will guessMaxSeats()
|
||||
hand.mixed = None
|
||||
|
||||
def readPlayerStacks(self, hand):
|
||||
|
@ -280,7 +278,6 @@ class OnGame(HandHistoryConverter):
|
|||
hand.setCommunityCards(street, m.group('CARDS').split(', '))
|
||||
|
||||
def readBlinds(self, hand):
|
||||
#log.debug( _("readBlinds starting, hand=") + "\n["+hand.handText+"]" )
|
||||
try:
|
||||
m = self.re_PostSB.search(hand.handText)
|
||||
hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB'))
|
||||
|
@ -289,6 +286,9 @@ class OnGame(HandHistoryConverter):
|
|||
#hand.addBlind(None, None, None)
|
||||
for a in self.re_PostBB.finditer(hand.handText):
|
||||
hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB'))
|
||||
for a in self.re_PostDead.finditer(hand.handText):
|
||||
#print "DEBUG: Found dead blind: addBlind(%s, 'secondsb', %s)" %(a.group('PNAME'), a.group('DEAD'))
|
||||
hand.addBlind(a.group('PNAME'), 'secondsb', a.group('DEAD'))
|
||||
for a in self.re_PostBoth.finditer(hand.handText):
|
||||
hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB'))
|
||||
|
||||
|
|
|
@ -15,22 +15,13 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
from optparse import OptionParser
|
||||
# http://docs.python.org/library/optparse.html
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
def fpdb_options():
|
||||
|
||||
"""Process command line options for fpdb and HUD_main."""
|
||||
|
@ -60,6 +51,9 @@ def fpdb_options():
|
|||
default = 'EMPTY')
|
||||
parser.add_option("-v", "--version", action = "store_true",
|
||||
help = _("Print version information and exit."))
|
||||
parser.add_option("-u", "--usage", action="store_true", dest="usage", default=False,
|
||||
help=_("Print some useful one liners"))
|
||||
|
||||
|
||||
(options, argv) = parser.parse_args()
|
||||
return (options, argv)
|
||||
|
|
|
@ -18,21 +18,12 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
from collections import defaultdict
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
from Exceptions import FpdbParseError
|
||||
from HandHistoryConverter import *
|
||||
|
||||
|
@ -199,6 +190,10 @@ class PartyPoker(HandHistoryConverter):
|
|||
m = self._getGameType(handText)
|
||||
m_20BBmin = self.re_20BBmin.search(handText)
|
||||
if m is None:
|
||||
tmp = handText[0:100]
|
||||
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||
return None
|
||||
|
||||
mg = m.groupdict()
|
||||
|
@ -358,6 +353,39 @@ class PartyPoker(HandHistoryConverter):
|
|||
hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'),
|
||||
clearMoneyString(a.group('CASH')))
|
||||
|
||||
# detecting new active players without a seat
|
||||
# and new active players with zero stack
|
||||
|
||||
if hand.gametype['type'] == 'ring':
|
||||
re_JoiningPlayers = re.compile(r"(?P<PLAYERNAME>.*) has joined the table")
|
||||
re_BBPostingPlayers = re.compile(r"(?P<PLAYERNAME>.*) posts big blind")
|
||||
seatedPlayers = list([(f[1]) for f in hand.players])
|
||||
|
||||
def findFirstEmptySeat(startSeat):
|
||||
while startSeat in occupiedSeats:
|
||||
if startSeat >= hand.maxseats:
|
||||
startSeat = 0
|
||||
startSeat += 1
|
||||
return startSeat
|
||||
|
||||
match_JoiningPlayers = re_JoiningPlayers.findall(hand.handText)
|
||||
match_BBPostingPlayers = re_BBPostingPlayers.findall(hand.handText)
|
||||
ringLimit = self.re_GameInfoRing.search(hand.handText).groupdict()['RINGLIMIT']
|
||||
unseatedActivePlayers = list(set(match_BBPostingPlayers) - set(seatedPlayers))
|
||||
|
||||
for player in seatedPlayers:
|
||||
if hand.stacks[player] == 0 and player in match_BBPostingPlayers:
|
||||
hand.stacks[player] = Decimal(ringLimit)
|
||||
|
||||
if unseatedActivePlayers:
|
||||
for player in unseatedActivePlayers:
|
||||
previousBBPoster = match_BBPostingPlayers[match_BBPostingPlayers.index(player)-1]
|
||||
previousBBPosterSeat = dict([(f[1], f[0]) for f in hand.players])[previousBBPoster]
|
||||
occupiedSeats = list([(f[0]) for f in hand.players])
|
||||
occupiedSeats.sort()
|
||||
newPlayerSeat = findFirstEmptySeat(previousBBPosterSeat)
|
||||
hand.addPlayer(newPlayerSeat,player,clearMoneyString(ringLimit))
|
||||
|
||||
def markStreets(self, hand):
|
||||
m = re.search(
|
||||
r"\*{2} Dealing down cards \*{2}"
|
||||
|
|
|
@ -18,22 +18,12 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
from HandHistoryConverter import *
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
|
||||
class Pkr(HandHistoryConverter):
|
||||
|
||||
|
@ -115,8 +105,8 @@ class Pkr(HandHistoryConverter):
|
|||
^%(PLYR)s(?P<ATYPE>\sbets|\schecks|\sraises|\scalls|\sfolds)(\sto)?
|
||||
(\s(%(CUR)s)?(?P<BET>[.\d]+))?
|
||||
""" % subst, re.MULTILINE|re.VERBOSE)
|
||||
self.re_ShowdownAction = re.compile(r"^%s: shows \[(?P<CARDS>.*)\]" % player_re, re.MULTILINE)
|
||||
self.re_CollectPot = re.compile(r"Seat (?P<SEAT>[0-9]+): %(PLYR)s (\(button\) |\(small blind\) |\(big blind\) |\(button\) \(small blind\) )?(collected|showed \[.*\] and won) \(%(CUR)s(?P<POT>[.\d]+)\)(, mucked| with.*|)" % subst, re.MULTILINE)
|
||||
self.re_ShowdownAction = re.compile(r"^%(PLYR)s shows \[(?P<CARDS>.*)\]" % subst, re.MULTILINE)
|
||||
self.re_CollectPot = re.compile(r"^%(PLYR)s wins %(CUR)s(?P<POT>[.\d]+)" % subst, re.MULTILINE)
|
||||
self.re_sitsOut = re.compile("^%s sits out" % player_re, re.MULTILINE)
|
||||
self.re_ShownCards = re.compile("^Seat (?P<SEAT>[0-9]+): %s (\(.*\) )?(?P<SHOWED>showed|mucked) \[(?P<CARDS>.*)\].*" % player_re, re.MULTILINE)
|
||||
|
||||
|
@ -125,15 +115,9 @@ class Pkr(HandHistoryConverter):
|
|||
["ring", "hold", "pl"],
|
||||
["ring", "hold", "fl"],
|
||||
|
||||
["ring", "stud", "fl"],
|
||||
|
||||
["ring", "draw", "fl"],
|
||||
|
||||
["tour", "hold", "nl"],
|
||||
["tour", "hold", "pl"],
|
||||
["tour", "hold", "fl"],
|
||||
|
||||
["tour", "stud", "fl"],
|
||||
]
|
||||
|
||||
def determineGameType(self, handText):
|
||||
|
@ -148,6 +132,8 @@ class Pkr(HandHistoryConverter):
|
|||
mg = m.groupdict()
|
||||
#print "DEBUG: %s" % mg
|
||||
|
||||
info['type'] = 'ring'
|
||||
|
||||
if 'LIMIT' in mg:
|
||||
info['limitType'] = self.limits[mg['LIMIT']]
|
||||
if 'GAME' in mg:
|
||||
|
@ -159,11 +145,6 @@ class Pkr(HandHistoryConverter):
|
|||
if 'CURRENCY' in mg:
|
||||
info['currency'] = self.currencies[mg['CURRENCY']]
|
||||
|
||||
if 'TOURNO' in mg and mg['TOURNO'] is None:
|
||||
info['type'] = 'ring'
|
||||
else:
|
||||
info['type'] = 'tour'
|
||||
|
||||
if info['limitType'] == 'fl' and info['bb'] is not None and info['type'] == 'ring' and info['base'] != 'stud':
|
||||
try:
|
||||
info['sb'] = self.Lim_Blinds[mg['BB']][0]
|
||||
|
@ -240,8 +221,17 @@ class Pkr(HandHistoryConverter):
|
|||
def readPlayerStacks(self, hand):
|
||||
log.debug("readPlayerStacks")
|
||||
m = self.re_PlayerInfo.finditer(hand.handText)
|
||||
players = {} # Player Stacks are printed in the same format
|
||||
# At the beginning and end of the hand history
|
||||
# The hash is to cache the player names, and ignore
|
||||
# The second round
|
||||
for a in m:
|
||||
hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH'))
|
||||
if players.has_key(a.group('PNAME')):
|
||||
pass # Ignore
|
||||
else:
|
||||
#print "DEBUG: addPlayer(%s, %s, %s)" % (a.group('SEAT'), a.group('PNAME'), a.group('CASH'))
|
||||
hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH'))
|
||||
players[a.group('PNAME')] = True
|
||||
|
||||
def markStreets(self, hand):
|
||||
# PREFLOP = ** Dealing down cards **
|
||||
|
@ -336,9 +326,16 @@ class Pkr(HandHistoryConverter):
|
|||
m = self.re_Action.finditer(hand.streets[street])
|
||||
for action in m:
|
||||
acts = action.groupdict()
|
||||
#print "DEBUG: readAction: acts: %s" % acts
|
||||
if action.group('ATYPE') == ' raises':
|
||||
hand.addRaiseTo( street, action.group('PNAME'), action.group('BET') )
|
||||
elif action.group('ATYPE') == ' calls':
|
||||
# Amount in hand history is not cumulative
|
||||
# ie. Player3 calls 0.08
|
||||
# Player5 raises to 0.16
|
||||
# Player3 calls 0.16 (Doh! he's only calling 0.08
|
||||
# TODO: Going to have to write an addCallStoopid()
|
||||
#print "DEBUG: addCall( %s, %s, None)" %(street,action.group('PNAME'))
|
||||
hand.addCall( street, action.group('PNAME'), action.group('BET') )
|
||||
elif action.group('ATYPE') == ' bets':
|
||||
hand.addBet( street, action.group('PNAME'), action.group('BET') )
|
||||
|
@ -355,13 +352,15 @@ class Pkr(HandHistoryConverter):
|
|||
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
# TODO: pick up mucks also??
|
||||
# TODO: pick up mucks also??
|
||||
for shows in self.re_ShowdownAction.finditer(hand.handText):
|
||||
cards = shows.group('CARDS').split(' ')
|
||||
#print "DEBUG: addShownCards(%s, %s)" %(cards, shows.group('PNAME'))
|
||||
hand.addShownCards(cards, shows.group('PNAME'))
|
||||
|
||||
def readCollectPot(self,hand):
|
||||
for m in self.re_CollectPot.finditer(hand.handText):
|
||||
#print "DEBUG: addCollectPot(%s, %s)" %(m.group('PNAME'), m.group('POT'))
|
||||
hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT'))
|
||||
|
||||
def readShownCards(self,hand):
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
"""pokerstars-specific summary parsing code"""
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
from decimal import Decimal
|
||||
import datetime
|
||||
|
||||
|
@ -40,117 +43,110 @@ class PokerStarsSummary(TourneySummary):
|
|||
'5 Card Draw' : ('draw','fivedraw')
|
||||
}
|
||||
|
||||
re_TourNo = re.compile("\#[0-9]+,")
|
||||
re_Entries = re.compile("[0-9]+")
|
||||
re_Prizepool = re.compile("\$[0-9]+\.[0-9]+")
|
||||
re_Player = re.compile(u"""(?P<RANK>[0-9]+):\s(?P<NAME>.*)\s\(.*\),(\s)?(\$(?P<WINNINGS>[0-9]+\.[0-9]+))?(?P<STILLPLAYING>still\splaying)?""")
|
||||
re_BuyInFee = re.compile("(?P<BUYIN>[0-9]+\.[0-9]+).*(?P<FEE>[0-9]+\.[0-9]+)")
|
||||
re_FPP = re.compile("(?P<FPP>[0-9]+)\sFPP")
|
||||
#note: the dollar and cent in the below line are currency-agnostic
|
||||
re_Added = re.compile("(?P<DOLLAR>[0-9]+)\.(?P<CENT>[0-9]+)\s(?P<CURRENCY>[A-Z]+)(\sadded\sto\sthe\sprize\spool\sby\sPokerStars)")
|
||||
substitutions = {
|
||||
'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes
|
||||
'LS' : "\$|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8)
|
||||
}
|
||||
|
||||
re_SplitTourneys = re.compile("PokerStars Tournament ")
|
||||
|
||||
re_TourNo = re.compile("\#(?P<TOURNO>[0-9]+),")
|
||||
|
||||
re_TourneyInfo = re.compile(u"""
|
||||
\#(?P<TOURNO>[0-9]+),\s
|
||||
(?P<LIMIT>No\sLimit|Limit|LIMIT|Pot\sLimit)\s
|
||||
(?P<GAME>Hold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s+
|
||||
(?P<DESC>[ a-zA-Z]+\s+)?
|
||||
(Buy-In:\s\$(?P<BUYIN>[.0-9]+)(\/\$(?P<FEE>[.0-9]+))?\s+)?
|
||||
(?P<ENTRIES>[0-9]+)\splayers\s+
|
||||
(\$?(?P<ADDED>[.\d]+)\sadded\sto\sthe\sprize\spool\sby\sPokerStars\.com\s+)?
|
||||
(Total\sPrize\sPool:\s\$?(?P<PRIZEPOOL>[.0-9]+)\s+)?
|
||||
(Target\sTournament\s.*)?
|
||||
Tournament\sstarted\s-\s
|
||||
(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\-\s]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)\s?\(?(?P<TZ>[A-Z]+)\)\s
|
||||
""" % substitutions ,re.VERBOSE|re.MULTILINE|re.DOTALL)
|
||||
|
||||
re_Currency = re.compile(u"""(?P<CURRENCY>[%(LS)s]|FPP)""" % substitutions)
|
||||
|
||||
re_Player = re.compile(u"""(?P<RANK>[0-9]+):\s(?P<NAME>.*)\s\(.*\),(\s)?(\$(?P<WINNINGS>[0-9]+\.[0-9]+))?(?P<STILLPLAYING>still\splaying)?((?P<TICKET>Tournament\sTicket)\s\(WSOP\sStep\s(?P<LEVEL>\d)\))?(\s+)?""")
|
||||
|
||||
re_DateTime = re.compile("\[(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\- ]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)")
|
||||
re_DateTimeET = re.compile("(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\- ]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)")
|
||||
re_GameInfo = re.compile(u""".+(?P<LIMIT>No\sLimit|Limit|LIMIT|Pot\sLimit)\s(?P<GAME>Hold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)""")
|
||||
|
||||
codepage = ["utf-8"]
|
||||
|
||||
def parseSummary(self):
|
||||
lines=self.summaryText.splitlines()
|
||||
m = self.re_TourneyInfo.search(self.summaryText)
|
||||
if m == None:
|
||||
tmp = self.summaryText[0:200]
|
||||
log.error(_("parseSummary: Unable to recognise Tourney Info: '%s'") % tmp)
|
||||
log.error(_("parseSummary: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise Tourney Info: '%s'") % tmp)
|
||||
|
||||
self.tourNo = self.re_TourNo.findall(lines[0])[0][1:-1] #ignore game and limit type as thats not recorded
|
||||
#print "DEBUG: m.groupdict(): %s" % m.groupdict()
|
||||
|
||||
result=self.re_GameInfo.search(lines[0])
|
||||
result=result.groupdict()
|
||||
self.gametype['limitType']=self.limits[result['LIMIT']]
|
||||
self.gametype['category']=self.games[result['GAME']][1]
|
||||
mg = m.groupdict()
|
||||
if 'TOURNO' in mg: self.tourNo = mg['TOURNO']
|
||||
if 'LIMIT' in mg: self.gametype['limitType'] = self.limits[mg['LIMIT']]
|
||||
if 'GAME' in mg: self.gametype['category'] = self.games[mg['GAME']][1]
|
||||
if mg['BUYIN'] != None:
|
||||
self.buyin = int(100*Decimal(mg['BUYIN']))
|
||||
if mg['FEE'] != None:
|
||||
self.fee = int(100*Decimal(mg['FEE']))
|
||||
if 'PRIZEPOOL' in mg: self.prizepool = mg['PRIZEPOOL']
|
||||
if 'ENTRIES' in mg: self.entries = mg['ENTRIES']
|
||||
|
||||
if lines[1].find("$")!=-1: #TODO: move this into a method and call that from PokerStarsToFpdb.py:269 if hand.buyinCurrency=="USD" etc.
|
||||
self.currency="USD"
|
||||
elif lines[1].find(u"€")!=-1:
|
||||
self.currency="EUR"
|
||||
elif lines[1].find("FPP")!=-1:
|
||||
self.currency="PSFP"
|
||||
else:
|
||||
raise FpdbParseError(_("didn't recognise buyin currency in:")+lines[1])
|
||||
datetimestr = "%s/%s/%s %s:%s:%s" % (mg['Y'], mg['M'], mg['D'], mg['H'], mg['MIN'], mg['S'])
|
||||
self.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S")
|
||||
|
||||
if self.currency=="USD" or self.currency=="EUR":
|
||||
result=self.re_BuyInFee.search(lines[1])
|
||||
result=result.groupdict()
|
||||
self.buyin=int(100*Decimal(result['BUYIN']))
|
||||
self.fee=int(100*Decimal(result['FEE']))
|
||||
elif self.currency=="PSFP":
|
||||
result=self.re_FPP.search(lines[1])
|
||||
result=result.groupdict()
|
||||
self.buyin=int(Decimal(result['FPP']))
|
||||
self.fee=0
|
||||
if 'TZ' in mg:
|
||||
self.startTime = HandHistoryConverter.changeTimezone(self.startTime, mg['TZ'], "UTC")
|
||||
|
||||
currentLine=2
|
||||
self.entries = self.re_Entries.findall(lines[currentLine])[0]
|
||||
currentLine+=1 #note that I chose to make the code keep state (the current line number)
|
||||
#as that means it'll fail rather than silently skip potentially valuable information
|
||||
#print "after entries lines[currentLine]", lines[currentLine]
|
||||
|
||||
result=self.re_Added.search(lines[currentLine])
|
||||
if result:
|
||||
result=result.groupdict()
|
||||
self.added=100*int(Decimal(result['DOLLAR']))+int(Decimal(result['CENT']))
|
||||
self.addedCurrency=result['CURRENCY']
|
||||
currentLine+=1
|
||||
else:
|
||||
self.added=0
|
||||
self.addedCurrency="NA"
|
||||
#print "after added/entries lines[currentLine]", lines[currentLine]
|
||||
m = self.re_Currency.search(self.summaryText)
|
||||
if m == None:
|
||||
log.error(_("parseSummary: Unable to locate currency"))
|
||||
log.error(_("parseSummary: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to locate currency"))
|
||||
#print "DEBUG: m.groupdict(): %s" % m.groupdict()
|
||||
|
||||
result=self.re_Prizepool.findall(lines[currentLine])
|
||||
if result:
|
||||
self.prizepool = result[0]
|
||||
self.prizepool = self.prizepool[1:-3]+self.prizepool[-2:]
|
||||
currentLine+=1
|
||||
#print "after prizepool lines[currentLine]", lines[currentLine]
|
||||
mg = m.groupdict()
|
||||
if mg['CURRENCY'] == "$": self.currency = "USD"
|
||||
elif mg['CURRENCY'] == u"€": self.currency="EUR"
|
||||
elif mg['CURRENCY'] == "FPP": self.currency="PSFP"
|
||||
|
||||
useET=False
|
||||
result=self.re_DateTime.search(lines[currentLine])
|
||||
if not result:
|
||||
print _("in not result starttime")
|
||||
useET=True
|
||||
result=self.re_DateTimeET.search(lines[currentLine])
|
||||
result=result.groupdict()
|
||||
datetimestr = "%s/%s/%s %s:%s:%s" % (result['Y'], result['M'],result['D'],result['H'],result['MIN'],result['S'])
|
||||
self.startTime= datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S") # also timezone at end, e.g. " ET"
|
||||
self.startTime = HandHistoryConverter.changeTimezone(self.startTime, "ET", "UTC")
|
||||
currentLine+=1
|
||||
m = self.re_Player.finditer(self.summaryText)
|
||||
for a in m:
|
||||
mg = a.groupdict()
|
||||
#print "DEBUG: a.groupdict(): %s" % mg
|
||||
name = mg['NAME']
|
||||
rank = mg['RANK']
|
||||
winnings = 0
|
||||
|
||||
if useET:
|
||||
result=self.re_DateTimeET.search(lines[currentLine])
|
||||
else:
|
||||
result=self.re_DateTime.search(lines[currentLine])
|
||||
if result:
|
||||
result=result.groupdict()
|
||||
datetimestr = "%s/%s/%s %s:%s:%s" % (result['Y'], result['M'],result['D'],result['H'],result['MIN'],result['S'])
|
||||
self.endTime= datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S") # also timezone at end, e.g. " ET"
|
||||
self.endTime = HandHistoryConverter.changeTimezone(self.endTime, "ET", "UTC")
|
||||
currentLine+=1
|
||||
if 'WINNINGS' in mg and mg['WINNINGS'] != None:
|
||||
winnings = int(100*Decimal(mg['WINNINGS']))
|
||||
|
||||
if lines[currentLine].find("Tournament is still in progress")!=-1:
|
||||
currentLine+=1
|
||||
|
||||
for i in range(currentLine,len(lines)-2): #lines with rank and winnings info
|
||||
if lines[i].find(":")==-1:
|
||||
break
|
||||
result=self.re_Player.search(lines[i])
|
||||
result=result.groupdict()
|
||||
rank=result['RANK']
|
||||
name=result['NAME']
|
||||
winnings=result['WINNINGS']
|
||||
|
||||
if winnings:
|
||||
winnings=int(100*Decimal(winnings))
|
||||
else:
|
||||
winnings=0
|
||||
|
||||
if result['STILLPLAYING']:
|
||||
if 'STILLPLAYING' in mg and mg['STILLPLAYING'] != None:
|
||||
#print "stillplaying"
|
||||
rank=None
|
||||
winnings=None
|
||||
|
||||
self.addPlayer(rank, name, winnings, self.currency, None, None, None)#TODO: currency, ko/addon/rebuy count -> need examples!
|
||||
#end def parseSummary
|
||||
if 'TICKET' and mg['TICKET'] != None:
|
||||
#print "Tournament Ticket Level %s" % mg['LEVEL']
|
||||
step_values = {
|
||||
'1' : '750', # Step 1 - $7.50 USD
|
||||
'2' : '2750', # Step 2 - $27.00 USD
|
||||
'3' : '8200', # Step 3 - $82.00 USD
|
||||
'4' : '21500', # Step 4 - $215.00 USD
|
||||
'5' : '70000', # Step 5 - $700.00 USD
|
||||
'6' : '210000', # Step 6 - $2100.00 USD
|
||||
}
|
||||
winnings = step_values[mg['LEVEL']]
|
||||
|
||||
#TODO: currency, ko/addon/rebuy count -> need examples!
|
||||
#print "DEBUG: addPlayer(%s, %s, %s, %s, None, None, None)" %(rank, name, winnings, self.currency)
|
||||
#print "DEBUG: self.buyin: %s self.fee %s" %(self.buyin, self.fee)
|
||||
self.addPlayer(rank, name, winnings, self.currency, None, None, None)
|
||||
|
||||
#print self
|
||||
|
||||
#end class PokerStarsSummary
|
||||
|
|
|
@ -18,24 +18,15 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# TODO: straighten out discards for draw games
|
||||
|
||||
import sys
|
||||
from HandHistoryConverter import *
|
||||
from decimal import Decimal
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# PokerStars HH Format
|
||||
|
||||
class PokerStars(HandHistoryConverter):
|
||||
|
@ -83,6 +74,7 @@ class PokerStars(HandHistoryConverter):
|
|||
'7 Card Stud Hi/Lo' : ('stud','studhilo'),
|
||||
'Badugi' : ('draw','badugi'),
|
||||
'Triple Draw 2-7 Lowball' : ('draw','27_3draw'),
|
||||
'Single Draw 2-7 Lowball' : ('draw','27_1draw'),
|
||||
'5 Card Draw' : ('draw','fivedraw')
|
||||
}
|
||||
currencies = { u'€':'EUR', '$':'USD', '':'T$' }
|
||||
|
@ -96,7 +88,7 @@ class PokerStars(HandHistoryConverter):
|
|||
(?P<BUYIN>(?P<BIAMT>[%(LS)s\d\.]+)?\+?(?P<BIRAKE>[%(LS)s\d\.]+)?\+?(?P<BOUNTY>[%(LS)s\d\.]+)?\s?(?P<TOUR_ISO>%(LEGAL_ISO)s)?|Freeroll)\s+)?
|
||||
# close paren of tournament info
|
||||
(?P<MIXED>HORSE|8\-Game|HOSE|Mixed PLH/PLO)?\s?\(?
|
||||
(?P<GAME>Hold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s
|
||||
(?P<GAME>Hold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|Single\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s
|
||||
(?P<LIMIT>No\sLimit|Limit|LIMIT|Pot\sLimit)\)?,?\s
|
||||
(-\s)?
|
||||
(Match.*)? #TODO: waiting for reply from user as to what this means
|
||||
|
@ -169,6 +161,8 @@ class PokerStars(HandHistoryConverter):
|
|||
["ring", "stud", "fl"],
|
||||
|
||||
["ring", "draw", "fl"],
|
||||
["ring", "draw", "pl"],
|
||||
["ring", "draw", "nl"],
|
||||
|
||||
["tour", "hold", "nl"],
|
||||
["tour", "hold", "pl"],
|
||||
|
@ -178,10 +172,6 @@ class PokerStars(HandHistoryConverter):
|
|||
]
|
||||
|
||||
def determineGameType(self, handText):
|
||||
# inspect the handText and return the gametype dict
|
||||
# gametype dict is:
|
||||
# {'limitType': xxx, 'base': xxx, 'category': xxx}
|
||||
|
||||
info = {}
|
||||
m = self.re_GameInfo.search(handText)
|
||||
if not m:
|
||||
|
@ -191,10 +181,6 @@ class PokerStars(HandHistoryConverter):
|
|||
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||
|
||||
mg = m.groupdict()
|
||||
# I don't think this is doing what we think. mg will always have all
|
||||
# the expected keys, but the ones that didn't match in the regex will
|
||||
# have a value of None. It is OK if it throws an exception when it
|
||||
# runs across an unknown game or limit or whatever.
|
||||
if 'LIMIT' in mg:
|
||||
info['limitType'] = self.limits[mg['LIMIT']]
|
||||
if 'GAME' in mg:
|
||||
|
@ -227,9 +213,8 @@ class PokerStars(HandHistoryConverter):
|
|||
m = self.re_HandInfo.search(hand.handText,re.DOTALL)
|
||||
m2 = self.re_GameInfo.search(hand.handText)
|
||||
if m is None or m2 is None:
|
||||
logging.info("Didn't match re_HandInfo")
|
||||
logging.info(hand.handText)
|
||||
raise FpdbParseError("No match in readHandInfo.")
|
||||
log.error("Didn't match re_HandInfo")
|
||||
raise FpdbParseError(_("No match in readHandInfo."))
|
||||
|
||||
info.update(m.groupdict())
|
||||
info.update(m2.groupdict())
|
||||
|
@ -461,6 +446,7 @@ class PokerStars(HandHistoryConverter):
|
|||
if m.group('SHOWED') == "showed": shown = True
|
||||
elif m.group('SHOWED') == "mucked": mucked = True
|
||||
|
||||
#print "DEBUG: hand.addShownCards(%s, %s, %s, %s)" %(cards, m.group('PNAME'), shown, mucked)
|
||||
hand.addShownCards(cards=cards, player=m.group('PNAME'), shown=shown, mucked=mucked)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
158
pyfpdb/RazzStartHandGenerator.py
Normal file
158
pyfpdb/RazzStartHandGenerator.py
Normal file
|
@ -0,0 +1,158 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""Generate Razz startCards encoding and decoding for Card.py"""
|
||||
|
||||
import re
|
||||
|
||||
re_space = re.compile("([\(\)AKQJT0-9]+)\s+", re.MULTILINE)
|
||||
|
||||
razzlist = """(32)A (3A)2 (2A)3 (42)A (4A)2 (2A)4 (43)A (4A)3 (3A)4 (43)2
|
||||
(42)3 (32)4 (52)A (5A)2 (2A)5 (53)A (5A)3 (3A)5 (53)2 (52)3
|
||||
(32)5 (54)A (5A)4 (4A)5 (54)2 (52)4 (42)5 (54)3 (53)4 (43)5
|
||||
(62)A (6A)2 (2A)6 (63)A (6A)3 (3A)6 (63)2 (62)3 (32)6 (64)A
|
||||
(6A)4 (4A)6 (64)2 (62)4 (42)6 (64)3 (63)4 (43)6 (65)A (6A)5
|
||||
(5A)6 (65)2 (62)5 (52)6 (65)3 (63)5 (53)6 (65)4 (64)5 (54)6
|
||||
(72)A (7A)2 (2A)7 (73)A (7A)3 (3A)7 (73)2 (72)3 (32)7 (74)A
|
||||
(7A)4 (4A)7 (74)2 (72)4 (42)7 (74)3 (73)4 (43)7 (75)A (7A)5
|
||||
(5A)7 (75)2 (72)5 (52)7 (75)3 (73)5 (53)7 (75)4 (74)5 (54)7
|
||||
(76)A (7A)6 (6A)7 (76)2 (72)6 (62)7 (76)3 (73)6 (63)7 (76)4
|
||||
(74)6 (64)7 (76)5 (75)6 (65)7 (82)A (8A)2 (2A)8 (83)A (8A)3
|
||||
(3A)8 (83)2 (82)3 (32)8 (84)A (8A)4 (4A)8 (84)2 (82)4 (42)8
|
||||
(84)3 (83)4 (43)8 (85)A (8A)5 (5A)8 (85)2 (82)5 (52)8 (85)3
|
||||
(83)5 (53)8 (85)4 (84)5 (54)8 (86)A (8A)6 (6A)8 (86)2 (82)6
|
||||
(62)8 (86)3 (83)6 (63)8 (86)4 (84)6 (64)8 (86)5 (85)6 (65)8
|
||||
(87)A (8A)7 (7A)8 (87)2 (82)7 (72)8 (87)3 (83)7 (73)8 (87)4
|
||||
(84)7 (74)8 (87)5 (85)7 (75)8 (87)6 (86)7 (76)8 (92)A (9A)2
|
||||
(2A)9 (93)A (9A)3 (3A)9 (93)2 (92)3 (32)9 (94)A (9A)4 (4A)9
|
||||
(94)2 (92)4 (42)9 (94)3 (93)4 (43)9 (95)A (9A)5 (5A)9 (95)2
|
||||
(92)5 (52)9 (95)3 (93)5 (53)9 (95)4 (94)5 (54)9 (96)A (9A)6
|
||||
(6A)9 (96)2 (92)6 (62)9 (96)3 (93)6 (63)9 (96)4 (94)6 (64)9
|
||||
(96)5 (95)6 (65)9 (97)A (9A)7 (7A)9 (97)2 (92)7 (72)9 (97)3
|
||||
(93)7 (73)9 (97)4 (94)7 (74)9 (97)5 (95)7 (75)9 (97)6 (96)7
|
||||
(76)9 (98)A (9A)8 (8A)9 (98)2 (92)8 (82)9 (98)3 (93)8 (83)9
|
||||
(98)4 (94)8 (84)9 (98)5 (95)8 (85)9 (98)6 (96)8 (86)9 (98)7
|
||||
(97)8 (87)9 (T2)A (TA)2 (2A)T (T3)A (TA)3 (3A)T (T3)2 (T2)3
|
||||
(32)T (T4)A (TA)4 (4A)T (T4)2 (T2)4 (42)T (T4)3 (T3)4 (43)T
|
||||
(T5)A (TA)5 (5A)T (T5)2 (T2)5 (52)T (T5)3 (T3)5 (53)T (T5)4
|
||||
(T4)5 (54)T (T6)A (TA)6 (6A)T (T6)2 (T2)6 (62)T (T6)3 (T3)6
|
||||
(63)T (T6)4 (T4)6 (64)T (T6)5 (T5)6 (65)T (T7)A (TA)7 (7A)T
|
||||
(T7)2 (T2)7 (72)T (T7)3 (T3)7 (73)T (T7)4 (T4)7 (74)T (T7)5
|
||||
(T5)7 (75)T (T7)6 (T6)7 (76)T (T8)A (TA)8 (8A)T (T8)2 (T2)8
|
||||
(82)T (T8)3 (T3)8 (83)T (T8)4 (T4)8 (84)T (T8)5 (T5)8 (85)T
|
||||
(T8)6 (T6)8 (86)T (T8)7 (T7)8 (87)T (T9)A (TA)9 (9A)T (T9)2
|
||||
(T2)9 (92)T (T9)3 (T3)9 (93)T (T9)4 (T4)9 (94)T (T9)5 (T5)9
|
||||
(95)T (T9)6 (T6)9 (96)T (T9)7 (T7)9 (97)T (T9)8 (T8)9 (98)T
|
||||
(J2)A (JA)2 (2A)J (J3)A (JA)3 (3A)J (J3)2 (J2)3 (32)J (J4)A
|
||||
(JA)4 (4A)J (J4)2 (J2)4 (42)J (J4)3 (J3)4 (43)J (J5)A (JA)5
|
||||
(5A)J (J5)2 (J2)5 (52)J (J5)3 (J3)5 (53)J (J5)4 (J4)5 (54)J
|
||||
(J6)A (JA)6 (6A)J (J6)2 (J2)6 (62)J (J6)3 (J3)6 (63)J (J6)4
|
||||
(J4)6 (64)J (J6)5 (J5)6 (65)J (J7)A (JA)7 (7A)J (J7)2 (J2)7
|
||||
(72)J (J7)3 (J3)7 (73)J (J7)4 (J4)7 (74)J (J7)5 (J5)7 (75)J
|
||||
(J7)6 (J6)7 (76)J (J8)A (JA)8 (8A)J (J8)2 (J2)8 (82)J (J8)3
|
||||
(J3)8 (83)J (J8)4 (J4)8 (84)J (J8)5 (J5)8 (85)J (J8)6 (J6)8
|
||||
(86)J (J8)7 (J7)8 (87)J (J9)A (JA)9 (9A)J (J9)2 (J2)9 (92)J
|
||||
(J9)3 (J3)9 (93)J (J9)4 (J4)9 (94)J (J9)5 (J5)9 (95)J (J9)6
|
||||
(J6)9 (96)J (J9)7 (J7)9 (97)J (J9)8 (J8)9 (98)J (JT)A (JA)T
|
||||
(TA)J (JT)2 (J2)T (T2)J (JT)3 (J3)T (T3)J (JT)4 (J4)T (T4)J
|
||||
(JT)5 (J5)T (T5)J (JT)6 (J6)T (T6)J (JT)7 (J7)T (T7)J (JT)8
|
||||
(J8)T (T8)J (JT)9 (J9)T (T9)J (Q2)A (QA)2 (2A)Q (Q3)A (QA)3
|
||||
(3A)Q (Q3)2 (Q2)3 (32)Q (Q4)A (QA)4 (4A)Q (Q4)2 (Q2)4 (42)Q
|
||||
(Q4)3 (Q3)4 (43)Q (Q5)A (QA)5 (5A)Q (Q5)2 (Q2)5 (52)Q (Q5)3
|
||||
(Q3)5 (53)Q (Q5)4 (Q4)5 (54)Q (Q6)A (QA)6 (6A)Q (Q6)2 (Q2)6
|
||||
(62)Q (Q6)3 (Q3)6 (63)Q (Q6)4 (Q4)6 (64)Q (Q6)5 (Q5)6 (65)Q
|
||||
(Q7)A (QA)7 (7A)Q (Q7)2 (Q2)7 (72)Q (Q7)3 (Q3)7 (73)Q (Q7)4
|
||||
(Q4)7 (74)Q (Q7)5 (Q5)7 (75)Q (Q7)6 (Q6)7 (76)Q (Q8)A (QA)8
|
||||
(8A)Q (Q8)2 (Q2)8 (82)Q (Q8)3 (Q3)8 (83)Q (Q8)4 (Q4)8 (84)Q
|
||||
(Q8)5 (Q5)8 (85)Q (Q8)6 (Q6)8 (86)Q (Q8)7 (Q7)8 (87)Q (Q9)A
|
||||
(QA)9 (9A)Q (Q9)2 (Q2)9 (92)Q (Q9)3 (Q3)9 (93)Q (Q9)4 (Q4)9
|
||||
(94)Q (Q9)5 (Q5)9 (95)Q (Q9)6 (Q6)9 (96)Q (Q9)7 (Q7)9 (97)Q
|
||||
(Q9)8 (Q8)9 (98)Q (QT)A (QA)T (TA)Q (QT)2 (Q2)T (T2)Q (QT)3
|
||||
(Q3)T (T3)Q (QT)4 (Q4)T (T4)Q (QT)5 (Q5)T (T5)Q (QT)6 (Q6)T
|
||||
(T6)Q (QT)7 (Q7)T (T7)Q (QT)8 (Q8)T (T8)Q (QT)9 (Q9)T (T9)Q
|
||||
(QJ)A (QA)J (JA)Q (QJ)2 (Q2)J (J2)Q (QJ)3 (Q3)J (J3)Q (QJ)4
|
||||
(Q4)J (J4)Q (QJ)5 (Q5)J (J5)Q (QJ)6 (Q6)J (J6)Q (QJ)7 (Q7)J
|
||||
(J7)Q (QJ)8 (Q8)J (J8)Q (QJ)9 (Q9)J (J9)Q (QJ)T (QT)J (JT)Q
|
||||
(K2)A (KA)2 (2A)K (K3)A (KA)3 (3A)K (K3)2 (K2)3 (32)K (K4)A
|
||||
(KA)4 (4A)K (K4)2 (K2)4 (42)K (K4)3 (K3)4 (43)K (K5)A (KA)5
|
||||
(5A)K (K5)2 (K2)5 (52)K (K5)3 (K3)5 (53)K (K5)4 (K4)5 (54)K
|
||||
(K6)A (KA)6 (6A)K (K6)2 (K2)6 (62)K (K6)3 (K3)6 (63)K (K6)4
|
||||
(K4)6 (64)K (K6)5 (K5)6 (65)K (K7)A (KA)7 (7A)K (K7)2 (K2)7
|
||||
(72)K (K7)3 (K3)7 (73)K (K7)4 (K4)7 (74)K (K7)5 (K5)7 (75)K
|
||||
(K7)6 (K6)7 (76)K (K8)A (KA)8 (8A)K (K8)2 (K2)8 (82)K (K8)3
|
||||
(K3)8 (83)K (K8)4 (K4)8 (84)K (K8)5 (K5)8 (85)K (K8)6 (K6)8
|
||||
(86)K (K8)7 (K7)8 (87)K (K9)A (KA)9 (9A)K (K9)2 (K2)9 (92)K
|
||||
(K9)3 (K3)9 (93)K (K9)4 (K4)9 (94)K (K9)5 (K5)9 (95)K (K9)6
|
||||
(K6)9 (96)K (K9)7 (K7)9 (97)K (K9)8 (K8)9 (98)K (KT)A (KA)T
|
||||
(TA)K (KT)2 (K2)T (T2)K (KT)3 (K3)T (T3)K (KT)4 (K4)T (T4)K
|
||||
(KT)5 (K5)T (T5)K (KT)6 (K6)T (T6)K (KT)7 (K7)T (T7)K (KT)8
|
||||
(K8)T (T8)K (KT)9 (K9)T (T9)K (KJ)A (KA)J (JA)K (KJ)2 (K2)J
|
||||
(J2)K (KJ)3 (K3)J (J3)K (KJ)4 (K4)J (J4)K (KJ)5 (K5)J (J5)K
|
||||
(KJ)6 (K6)J (J6)K (KJ)7 (K7)J (J7)K (KJ)8 (K8)J (J8)K (KJ)9
|
||||
(K9)J (J9)K (KJ)T (KT)J (JT)K (KQ)A (KA)Q (QA)K (KQ)2 (K2)Q
|
||||
(Q2)K (KQ)3 (K3)Q (Q3)K (KQ)4 (K4)Q (Q4)K (KQ)5 (K5)Q (Q5)K
|
||||
(KQ)6 (K6)Q (Q6)K (KQ)7 (K7)Q (Q7)K (KQ)8 (K8)Q (Q8)K (KQ)9
|
||||
(K9)Q (Q9)K (KQ)T (KT)Q (QT)K (KQ)J (KJ)Q (QJ)K (2A)A (22)A
|
||||
(AA)2 (2A)2 (3A)A (33)A (AA)3 (3A)3 (32)2 (33)2 (22)3 (32)3
|
||||
(4A)A (44)A (AA)4 (4A)4 (42)2 (44)2 (22)4 (42)4 (43)3 (44)3
|
||||
(33)4 (43)4 (5A)A (55)A (AA)5 (5A)5 (52)2 (55)2 (22)5 (52)5
|
||||
(53)3 (55)3 (33)5 (53)5 (54)4 (55)4 (44)5 (54)5 (6A)A (66)A
|
||||
(AA)6 (6A)6 (62)2 (66)2 (22)6 (62)6 (63)3 (66)3 (33)6 (63)6
|
||||
(64)4 (66)4 (44)6 (64)6 (65)5 (66)5 (55)6 (65)6 (7A)A (77)A
|
||||
(AA)7 (7A)7 (72)2 (77)2 (22)7 (72)7 (73)3 (77)3 (33)7 (73)7
|
||||
(74)4 (77)4 (44)7 (74)7 (75)5 (77)5 (55)7 (75)7 (76)6 (77)6
|
||||
(66)7 (76)7 (8A)A (88)A (AA)8 (8A)8 (82)2 (88)2 (22)8 (82)8
|
||||
(83)3 (88)3 (33)8 (83)8 (84)4 (88)4 (44)8 (84)8 (85)5 (88)5
|
||||
(55)8 (85)8 (86)6 (88)6 (66)8 (86)8 (87)7 (88)7 (77)8 (87)8
|
||||
(9A)A (99)A (AA)9 (9A)9 (92)2 (99)2 (22)9 (92)9 (93)3 (99)3
|
||||
(33)9 (93)9 (94)4 (99)4 (44)9 (94)9 (95)5 (99)5 (55)9 (95)9
|
||||
(96)6 (99)6 (66)9 (96)9 (97)7 (99)7 (77)9 (97)9 (98)8 (99)8
|
||||
(88)9 (98)9 (TA)A (TT)A (AA)T (TA)T (T2)2 (TT)2 (22)T (T2)T
|
||||
(T3)3 (TT)3 (33)T (T3)T (T4)4 (TT)4 (44)T (T4)T (T5)5 (TT)5
|
||||
(55)T (T5)T (T6)6 (TT)6 (66)T (T6)T (T7)7 (TT)7 (77)T (T7)T
|
||||
(T8)8 (TT)8 (88)T (T8)T (T9)9 (TT)9 (99)T (T9)T (JA)A (JJ)A
|
||||
(AA)J (JA)J (J2)2 (JJ)2 (22)J (J2)J (J3)3 (JJ)3 (33)J (J3)J
|
||||
(J4)4 (JJ)4 (44)J (J4)J (J5)5 (JJ)5 (55)J (J5)J (J6)6 (JJ)6
|
||||
(66)J (J6)J (J7)7 (JJ)7 (77)J (J7)J (J8)8 (JJ)8 (88)J (J8)J
|
||||
(J9)9 (JJ)9 (99)J (J9)J (JT)T (JJ)T (TT)J (JT)J (QA)A (QQ)A
|
||||
(AA)Q (QA)Q (Q2)2 (QQ)2 (22)Q (Q2)Q (Q3)3 (QQ)3 (33)Q (Q3)Q
|
||||
(Q4)4 (QQ)4 (44)Q (Q4)Q (Q5)5 (QQ)5 (55)Q (Q5)Q (Q6)6 (QQ)6
|
||||
(66)Q (Q6)Q (Q7)7 (QQ)7 (77)Q (Q7)Q (Q8)8 (QQ)8 (88)Q (Q8)Q
|
||||
(Q9)9 (QQ)9 (99)Q (Q9)Q (QT)T (QQ)T (TT)Q (QT)Q (QJ)J (QQ)J
|
||||
(JJ)Q (QJ)Q (KA)A (KK)A (AA)K (KA)K (K2)2 (KK)2 (22)K (K2)K
|
||||
(K3)3 (KK)3 (33)K (K3)K (K4)4 (KK)4 (44)K (K4)K (K5)5 (KK)5
|
||||
(55)K (K5)K (K6)6 (KK)6 (66)K (K6)K (K7)7 (KK)7 (77)K (K7)K
|
||||
(K8)8 (KK)8 (88)K (K8)K (K9)9 (KK)9 (99)K (K9)K (KT)T (KK)T
|
||||
(TT)K (KT)K (KJ)J (KK)J (JJ)K (KJ)K (KQ)Q (KK)Q (QQ)K (KQ)K
|
||||
(AA)A (22)2 (33)3 (44)4 (55)5 (66)6 (77)7 (88)8 (99)9 (TT)T
|
||||
(JJ)J (QQ)Q (KK)K
|
||||
"""
|
||||
|
||||
count = 1
|
||||
string = ""
|
||||
|
||||
for a in re_space.finditer(razzlist):
|
||||
string = string + ("'%s':%s," %(a.group(1), count))
|
||||
count+=1
|
||||
if count%10 == 0:
|
||||
string = string + "\n"
|
||||
print "-------------------------"
|
||||
print "Razz encode list"
|
||||
print "------------------------ "
|
||||
print string
|
||||
|
||||
string = ""
|
||||
count = 1
|
||||
|
||||
for a in re_space.finditer(razzlist):
|
||||
string = string + ("%s:'%s'," %(count, a.group(1)))
|
||||
count+=1
|
||||
if count%10 == 0:
|
||||
string = string + "\n"
|
||||
|
||||
|
||||
print "-------------------------"
|
||||
print "Razz decode list"
|
||||
print "------------------------ "
|
||||
print string
|
||||
|
|
@ -3027,6 +3027,9 @@ class Sql:
|
|||
#elif db_server == 'sqlite':
|
||||
# self.query['playerStatsByPosition'] = """ """
|
||||
|
||||
####################################
|
||||
# Cash Game Graph query
|
||||
####################################
|
||||
self.query['getRingProfitAllHandsPlayerIdSite'] = """
|
||||
SELECT hp.handId, hp.totalProfit, hp.sawShowdown
|
||||
FROM HandsPlayers hp
|
||||
|
@ -3043,6 +3046,28 @@ class Sql:
|
|||
GROUP BY h.startTime, hp.handId, hp.sawShowdown, hp.totalProfit
|
||||
ORDER BY h.startTime"""
|
||||
|
||||
####################################
|
||||
# Tourney Results query
|
||||
####################################
|
||||
self.query['tourneyResults'] = """
|
||||
SELECT tp.tourneyId, (coalesce(tp.winnings,0) - coalesce(tt.buyIn,0) - coalesce(tt.fee,0)) as profit, tp.koCount, tp.rebuyCount, tp.addOnCount, tt.buyIn, tt.fee, t.siteTourneyNo
|
||||
FROM TourneysPlayers tp
|
||||
INNER JOIN Players pl ON (pl.id = tp.playerId)
|
||||
INNER JOIN Tourneys t ON (t.id = tp.tourneyId)
|
||||
INNER JOIN TourneyTypes tt ON (tt.id = t.tourneyTypeId)
|
||||
WHERE pl.id in <player_test>
|
||||
AND pl.siteId in <site_test>
|
||||
AND t.startTime > '<startdate_test>'
|
||||
AND t.startTime < '<enddate_test>'
|
||||
GROUP BY t.startTime, tp.tourneyId, tp.winningsCurrency,
|
||||
tp.winnings, tp.koCount,
|
||||
tp.rebuyCount, tp.addOnCount,
|
||||
tt.buyIn, tt.fee
|
||||
ORDER BY t.startTime"""
|
||||
|
||||
#AND gt.type = 'ring'
|
||||
#<limit_test>
|
||||
#<game_test>
|
||||
|
||||
####################################
|
||||
# Session stats query
|
||||
|
@ -4222,6 +4247,19 @@ class Sql:
|
|||
%s, %s, %s, %s, %s
|
||||
)"""
|
||||
|
||||
self.query['store_hands_actions'] = """INSERT INTO HandsActions (
|
||||
handsPlayerId,
|
||||
street,
|
||||
actionNo,
|
||||
action,
|
||||
allIn,
|
||||
amount
|
||||
)
|
||||
VALUES (
|
||||
%s, %s, %s, %s, %s,
|
||||
%s
|
||||
)"""
|
||||
|
||||
################################
|
||||
# Counts for DB stats window
|
||||
################################
|
||||
|
|
43
pyfpdb/Stats.py
Executable file → Normal file
43
pyfpdb/Stats.py
Executable file → Normal file
|
@ -47,6 +47,9 @@
|
|||
# other stuff.
|
||||
# 6 For each stat you make add a line to the __main__ function to test it.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# Standard Library modules
|
||||
import sys
|
||||
|
||||
|
@ -55,18 +58,6 @@ import pygtk
|
|||
import gtk
|
||||
import re
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# FreePokerTools modules
|
||||
import Configuration
|
||||
import Database
|
||||
|
@ -83,14 +74,29 @@ re_Places = re.compile("_[0-9]$")
|
|||
import codecs
|
||||
encoder = codecs.lookup(Configuration.LOCALE_ENCODING)
|
||||
|
||||
|
||||
# Since tuples are immutable, we have to create a new one when
|
||||
# overriding any decimal placements. Copy old ones and recreate the
|
||||
# second value in tuple to specified format-
|
||||
def __stat_override(decimals, stat_vals):
|
||||
s = '%.*f' % (decimals, 100.0*stat_vals[0])
|
||||
res = (stat_vals[0], s, stat_vals[2],
|
||||
stat_vals[3], stat_vals[4], stat_vals[5])
|
||||
return res
|
||||
|
||||
|
||||
def do_tip(widget, tip):
|
||||
_tip = Charset.to_utf8(tip)
|
||||
widget.set_tooltip_text(_tip)
|
||||
|
||||
|
||||
def do_stat(stat_dict, player = 24, stat = 'vpip'):
|
||||
statname = stat
|
||||
match = re_Places.search(stat)
|
||||
result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player})
|
||||
if match: # override if necessary
|
||||
statname = stat[0:-2]
|
||||
|
||||
result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': statname, 'player': player})
|
||||
|
||||
# If decimal places have been defined, override result[1]
|
||||
# NOTE: decimal place override ALWAYS assumes the raw result is a
|
||||
|
@ -99,9 +105,8 @@ def do_stat(stat_dict, player = 24, stat = 'vpip'):
|
|||
# to three decimal places anyhow, so they are unlikely override
|
||||
# candidates.
|
||||
if match:
|
||||
base = stat[0:-2]
|
||||
places = int(stat[-1:])
|
||||
result[1] = '%.*f' % (places, 100.0*result[0])
|
||||
result = __stat_override(places, result)
|
||||
return result
|
||||
|
||||
# OK, for reference the tuple returned by the stat is:
|
||||
|
@ -214,15 +219,17 @@ def wmsd(stat_dict, player):
|
|||
_('% won money at showdown')
|
||||
)
|
||||
|
||||
# Money is stored as pennies, so there is an implicit 100-multiplier
|
||||
# already in place
|
||||
def profit100(stat_dict, player):
|
||||
""" Profit won per 100 hands."""
|
||||
stat = 0.0
|
||||
try:
|
||||
stat = float(stat_dict[player]['net'])/float(stat_dict[player]['n'])
|
||||
return (stat,
|
||||
'%.0f' % (100.0*stat),
|
||||
'p=%.0f' % (100.0*stat),
|
||||
'p/100=%.0f' % (100.0*stat),
|
||||
'%.2f' % (stat),
|
||||
'p=%.2f' % (stat),
|
||||
'p/100=%.2f' % (stat),
|
||||
'%d/%d' % (stat_dict[player]['net'], stat_dict[player]['n']),
|
||||
_('profit/100hands')
|
||||
)
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Discover_TableWindow.py
|
||||
"""Base class for interacting with poker client windows.
|
||||
|
||||
Inspects the currently open windows and finds those of interest to us--that is
|
||||
poker table windows from supported sites. Returns a list
|
||||
of Table_Window objects representing the windows found.
|
||||
There are currently subclasses for X and Windows.
|
||||
|
||||
The class queries the poker client window for data of interest, such as
|
||||
size and location. It also controls the signals to alert the HUD when the
|
||||
client has been resized, destroyed, etc.
|
||||
"""
|
||||
# Copyright 2008-2010, Ray E. Barker
|
||||
# Copyright 2008 - 2010, Ray E. Barker
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -25,37 +27,38 @@ of Table_Window objects representing the windows found.
|
|||
########################################################################
|
||||
|
||||
# Standard Library modules
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
|
||||
# pyGTK modules
|
||||
import pygtk
|
||||
import gtk
|
||||
import gobject
|
||||
|
||||
# FreePokerTools modules
|
||||
import Configuration
|
||||
#if os.name == "posix":
|
||||
# import XTables
|
||||
#elif os.name == "nt":
|
||||
# import WinTables
|
||||
from HandHistoryConverter import getTableTitleRe
|
||||
from HandHistoryConverter import getTableNoRe
|
||||
|
||||
# Global used for figuring out the current game being played from the title
|
||||
# The dict key is the fpdb name for the game
|
||||
# Global used for figuring out the current game being played from the title.
|
||||
# The dict key is a tuple of (limit type, category) for the game.
|
||||
# The list is the names for those games used by the supported poker sites
|
||||
# This is currently only used for HORSE, so it only needs to support those
|
||||
# This is currently only used for mixed games, so it only needs to support those
|
||||
# games on PokerStars and Full Tilt.
|
||||
game_names = { #fpdb name Stars Name FTP Name
|
||||
"holdem" : ("Hold\'em" , ),
|
||||
"omahahilo" : ("Omaha H/L" , ),
|
||||
"studhilo" : ("Stud H/L" , ),
|
||||
"razz" : ("Razz" , ),
|
||||
"studhi" : ("Stud" , "Stud Hi")
|
||||
nlpl_game_names = { #fpdb name Stars Name FTP Name (if different)
|
||||
("nl", "holdem" ) : ("No Limit Hold\'em" , ),
|
||||
("pl", "holdem" ) : ("Pot Limit Hold\'em" , ),
|
||||
("pl", "omahahi" ) : ("Pot Limit Omaha" ,"Pot Limit Omaha Hi" ),
|
||||
}
|
||||
limit_game_names = { #fpdb name Stars Name FTP Name
|
||||
("fl", "holdem" ) : ("Limit Hold\'em" , ),
|
||||
("fl", "omahahilo" ) : ("Limit Omaha H/L" , ),
|
||||
("fl", "studhilo" ) : ("Limit Stud H/L" , ),
|
||||
("fl", "razz" ) : ("Limit Razz" , ),
|
||||
("fl", "studhi" ) : ("Limit Stud" , "Stud Hi"),
|
||||
("fl", "27_3draw" ) : ("Limit Triple Draw 2-7 Lowball", )
|
||||
}
|
||||
|
||||
# A window title might have our table name + one of theses words/
|
||||
# A window title might have our table name + one of these words/
|
||||
# phrases. If it has this word in the title, it is not a table.
|
||||
bad_words = ('History for table:', 'HUD:', 'Chat:')
|
||||
bad_words = ('History for table:', 'HUD:', 'Chat:', 'FPDBHUD')
|
||||
|
||||
# Here are the custom signals we define for allowing the 'client watcher'
|
||||
# thread to communicate with the gui thread. Any time a poker client is
|
||||
|
@ -76,11 +79,19 @@ gobject.signal_new("client_destroyed", gtk.Window,
|
|||
gobject.TYPE_NONE,
|
||||
(gobject.TYPE_PYOBJECT,))
|
||||
|
||||
gobject.signal_new("game_changed", gtk.Window,
|
||||
gobject.SIGNAL_RUN_LAST,
|
||||
gobject.TYPE_NONE,
|
||||
(gobject.TYPE_PYOBJECT,))
|
||||
|
||||
gobject.signal_new("table_changed", gtk.Window,
|
||||
gobject.SIGNAL_RUN_LAST,
|
||||
gobject.TYPE_NONE,
|
||||
(gobject.TYPE_PYOBJECT,))
|
||||
|
||||
# Each TableWindow object must have the following attributes correctly populated:
|
||||
# tw.name = the table name from the title bar, which must to match the table name
|
||||
# from the corresponding hand history.
|
||||
# tw.site = the site name, e.g. PokerStars, FullTilt. This must match the site
|
||||
# name specified in the config file.
|
||||
# from the corresponding hand record in the db.
|
||||
# tw.number = This is the system id number for the client table window in the
|
||||
# format that the system presents it. This is Xid in Xwindows and
|
||||
# hwnd in Microsoft Windows.
|
||||
|
@ -92,60 +103,152 @@ gobject.signal_new("client_destroyed", gtk.Window,
|
|||
# to the top left of the display screen. This also does not include the
|
||||
# title bar and window borders. To put it another way, this is the
|
||||
# screen location of (0, 0) in the working window.
|
||||
# tournament = Tournament number for a tournament or None for a cash game.
|
||||
# table = Table number for a tournament.
|
||||
# gdkhandle =
|
||||
# window =
|
||||
# parent =
|
||||
# game =
|
||||
# search_string =
|
||||
|
||||
class Table_Window(object):
|
||||
def __init__(self, search_string, table_name = None, tournament = None, table_number = None):
|
||||
def __init__(self, config, site, table_name = None, tournament = None, table_number = None):
|
||||
|
||||
self.config = config
|
||||
self.site = site
|
||||
if tournament is not None and table_number is not None:
|
||||
print "tournament %s, table %s" % (tournament, table_number)
|
||||
self.tournament = int(tournament)
|
||||
self.table = int(table_number)
|
||||
self.name = "%s - %s" % (self.tournament, self.table)
|
||||
self.type = "tour"
|
||||
table_kwargs = dict(tournament = self.tournament, table_number = self.table)
|
||||
self.tableno_re = getTableNoRe(self.config, self.site, tournament = self.tournament)
|
||||
elif table_name is not None:
|
||||
# search_string = table_name
|
||||
self.name = table_name
|
||||
self.type = "cash"
|
||||
self.tournament = None
|
||||
table_kwargs = dict(table_name = table_name)
|
||||
|
||||
else:
|
||||
return None
|
||||
|
||||
self.find_table_parameters(search_string)
|
||||
self.search_string = getTableTitleRe(self.config, self.site, self.type, **table_kwargs)
|
||||
self.find_table_parameters()
|
||||
|
||||
geo = self.get_geometry()
|
||||
if geo is None: return None
|
||||
self.width = geo['width']
|
||||
self.height = geo['height']
|
||||
self.x = geo['x']
|
||||
self.y = geo['y']
|
||||
|
||||
self.game = self.get_game()
|
||||
|
||||
def __str__(self):
|
||||
# __str__ method for testing
|
||||
likely_attrs = ("site", "number", "title", "width", "height", "x", "y",
|
||||
"tournament", "table", "gdkhandle")
|
||||
likely_attrs = ("number", "title", "site", "width", "height", "x", "y",
|
||||
"tournament", "table", "gdkhandle", "window", "parent",
|
||||
"game", "search_string", "tableno_re")
|
||||
temp = 'TableWindow object\n'
|
||||
for a in likely_attrs:
|
||||
if getattr(self, a, 0):
|
||||
temp += " %s = %s\n" % (a, getattr(self, a))
|
||||
return temp
|
||||
|
||||
####################################################################
|
||||
# "get" methods. These query the table and return the info to get.
|
||||
# They don't change the data in the table and are generally used
|
||||
# by the "check" methods. Most of the get methods are in the
|
||||
# subclass because they are specific to X, Windows, etc.
|
||||
def get_game(self):
|
||||
title = self.get_window_title()
|
||||
print title
|
||||
for game, names in game_names.iteritems():
|
||||
# title = self.get_window_title()
|
||||
# if title is None:
|
||||
# return False
|
||||
title = self.title
|
||||
|
||||
# check for nl and pl games first, to avoid bad matches
|
||||
for game, names in nlpl_game_names.iteritems():
|
||||
for name in names:
|
||||
if name in title:
|
||||
return game
|
||||
return None
|
||||
for game, names in limit_game_names.iteritems():
|
||||
for name in names:
|
||||
if name in title:
|
||||
return game
|
||||
return False
|
||||
|
||||
def check_geometry(self):
|
||||
def get_table_no(self):
|
||||
new_title = self.get_window_title()
|
||||
if new_title is None:
|
||||
return False
|
||||
|
||||
mo = re.search(self.tableno_re, new_title)
|
||||
if mo is not None:
|
||||
return mo[1]
|
||||
return False
|
||||
|
||||
####################################################################
|
||||
# check_table() is meant to be called by the hud periodically to
|
||||
# determine if the client has been moved or resized. check_table()
|
||||
# also checks and signals if the client has been closed.
|
||||
def check_table(self, hud):
|
||||
result = self.check_size()
|
||||
if result != False:
|
||||
hud.parent.main_window.emit(result, hud)
|
||||
if result == "client_destroyed":
|
||||
return True
|
||||
|
||||
result = self.check_loc()
|
||||
if result != False:
|
||||
hud.parent.main_window.emit(result, hud)
|
||||
if result == "client_destroyed":
|
||||
return True
|
||||
return True
|
||||
|
||||
####################################################################
|
||||
# "check" methods. They use the corresponding get method, update the
|
||||
# table object and return the name of the signal to be emitted or
|
||||
# False if unchanged. These do not signal for destroyed
|
||||
# clients to prevent a race condition.
|
||||
|
||||
# These might be called by a Window.timeout, so they must not
|
||||
# return False, or the timeout will be cancelled.
|
||||
def check_game(self, hud):
|
||||
new_game = self.get_game()
|
||||
if new_game is not None and self.game != new_game:
|
||||
self.game = new_game
|
||||
hud.main_window.emit("game_changed", hud)
|
||||
return "game_changed"
|
||||
return True
|
||||
|
||||
def check_size(self):
|
||||
new_geo = self.get_geometry()
|
||||
|
||||
if new_geo is None: # window destroyed
|
||||
return "client_destroyed"
|
||||
|
||||
elif self.x != new_geo['x'] or self.y != new_geo['y']: # window moved
|
||||
self.x = new_geo['x']
|
||||
self.y = new_geo['y']
|
||||
return "client_moved"
|
||||
|
||||
elif self.width != new_geo['width'] or self.height != new_geo['height']: # window resized
|
||||
self.width = new_geo['width']
|
||||
self.height = new_geo['height']
|
||||
return "client_resized"
|
||||
return False # no change
|
||||
|
||||
else: return False # window not changed
|
||||
def check_loc(self):
|
||||
new_geo = self.get_geometry()
|
||||
if new_geo is None: # window destroyed
|
||||
return "client_destroyed"
|
||||
|
||||
if self.x != new_geo['x'] or self.y != new_geo['y']: # window moved
|
||||
self.x = new_geo['x']
|
||||
self.y = new_geo['y']
|
||||
return "client_moved"
|
||||
return False # no change
|
||||
|
||||
def check_table_no(self, hud):
|
||||
result = self.get_table_no()
|
||||
if result != False and result != self.table:
|
||||
self.table = result
|
||||
hud.main_window.emit("table_changed", hud)
|
||||
return True
|
||||
|
||||
def check_bad_words(self, title):
|
||||
for word in bad_words:
|
||||
|
|
|
@ -22,31 +22,19 @@ Main program module to test/demo the Tables subclasses.
|
|||
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# Standard Library modules
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
# pyGTK modules
|
||||
import pygtk
|
||||
import gtk
|
||||
import gobject
|
||||
|
||||
# fpdb/free poker tools modules
|
||||
import Configuration
|
||||
from HandHistoryConverter import getTableTitleRe
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# get the correct module for the current os
|
||||
if os.name == 'posix':
|
||||
|
@ -73,24 +61,31 @@ if __name__=="__main__":
|
|||
self.main_window.move(table.x + dx, table.y + dy)
|
||||
self.main_window.show_all()
|
||||
table.topify(self)
|
||||
|
||||
# These are the currently defined signals. Do this in the HUD.
|
||||
self.main_window.connect("client_moved", self.client_moved)
|
||||
self.main_window.connect("client_resized", self.client_resized)
|
||||
self.main_window.connect("client_destroyed", self.client_destroyed)
|
||||
self.main_window.connect("game_changed", self.game_changed)
|
||||
self.main_window.connect("table_changed", self.table_changed)
|
||||
|
||||
# And these of the handlers that go with those signals.
|
||||
# These would live inside the HUD code.
|
||||
def client_moved(self, widget, hud):
|
||||
self.main_window.move(self.table.x + self.dx, self.table.y + self.dy)
|
||||
|
||||
def client_resized(self, *args):
|
||||
print "client resized"
|
||||
print "Client resized"
|
||||
|
||||
def client_destroyed(self, *args): # call back for terminating the main eventloop
|
||||
print "Client destroyed."
|
||||
gtk.main_quit()
|
||||
|
||||
def check_on_table(table, hud):
|
||||
result = table.check_geometry()
|
||||
if result != False:
|
||||
hud.main_window.emit(result, hud)
|
||||
return True
|
||||
def game_changed(self, *args):
|
||||
print "Game Changed."
|
||||
|
||||
def table_changed(self, *args):
|
||||
print "Table Changed."
|
||||
|
||||
print _("enter table name to find: "),
|
||||
table_name = sys.stdin.readline()
|
||||
|
@ -107,16 +102,12 @@ if __name__=="__main__":
|
|||
type = "cash"
|
||||
table_kwargs = dict(table_name = table_name)
|
||||
|
||||
search_string = getTableTitleRe(config, "Full Tilt Poker", type, **table_kwargs)
|
||||
table = Tables.Table(search_string, **table_kwargs)
|
||||
table.gdk_handle = gtk.gdk.window_foreign_new(table.number)
|
||||
|
||||
print "table =", table
|
||||
# print "game =", table.get_game()
|
||||
table = Tables.Table(config, "Full Tilt Poker", **table_kwargs)
|
||||
print table
|
||||
|
||||
fake = fake_hud(table)
|
||||
print "fake =", fake
|
||||
# gobject.timeout_add(100, check_on_table, table, fake)
|
||||
print _("calling main")
|
||||
gobject.timeout_add(1000, table.check_game, fake)
|
||||
gobject.timeout_add(100, table.check_table, fake)
|
||||
print "calling main"
|
||||
gtk.main()
|
||||
|
||||
|
|
151
pyfpdb/TestHandsPlayers.py
Normal file → Executable file
151
pyfpdb/TestHandsPlayers.py
Normal file → Executable file
|
@ -1,4 +1,23 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright 2010, Carl Gherardi
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import sys
|
||||
import os
|
||||
import codecs
|
||||
|
@ -16,6 +35,7 @@ class FpdbError:
|
|||
self.site = sitename
|
||||
self.errorcount = 0
|
||||
self.histogram = {}
|
||||
self.statcount = {}
|
||||
|
||||
def error_report(self, filename, hand, stat, ghash, testhash, player):
|
||||
print "Regression Test Error:"
|
||||
|
@ -26,6 +46,11 @@ class FpdbError:
|
|||
self.histogram[filename] += 1
|
||||
else:
|
||||
self.histogram[filename] = 1
|
||||
|
||||
if stat in self.statcount:
|
||||
self.statcount[stat] += 1
|
||||
else:
|
||||
self.statcount[stat] = 1
|
||||
self.errorcount += 1
|
||||
|
||||
def print_histogram(self):
|
||||
|
@ -34,16 +59,17 @@ class FpdbError:
|
|||
idx = f.find('regression')
|
||||
print "(%3d) : %s" %(self.histogram[f], f[idx:])
|
||||
|
||||
def compare(leaf, importer, errors):
|
||||
def compare(leaf, importer, errors, site):
|
||||
filename = leaf
|
||||
#print "DEBUG: fileanme: %s" % filename
|
||||
|
||||
# Test if this is a hand history file
|
||||
if filename.endswith('.txt'):
|
||||
# test if there is a .hp version of the file
|
||||
importer.addBulkImportImportFileOrDir(filename, site="PokerStars")
|
||||
importer.addBulkImportImportFileOrDir(filename, site=site)
|
||||
(stored, dups, partial, errs, ttime) = importer.runImport()
|
||||
if os.path.isfile(filename + '.hp'):
|
||||
|
||||
if os.path.isfile(filename + '.hp') and errs < 1:
|
||||
# Compare them
|
||||
hashfilename = filename + '.hp'
|
||||
|
||||
|
@ -65,26 +91,31 @@ def compare(leaf, importer, errors):
|
|||
|
||||
for stat in pstat:
|
||||
#print "pstat[%s][%s]: %s == %s" % (p, stat, pstat[stat], teststat[stat])
|
||||
if pstat[stat] == teststat[stat]:
|
||||
# The stats match - continue
|
||||
pass
|
||||
else:
|
||||
# Stats don't match - Doh!
|
||||
errors.error_report(filename, hand, stat, ghash, testhash, p)
|
||||
try:
|
||||
if pstat[stat] == teststat[stat]:
|
||||
# The stats match - continue
|
||||
pass
|
||||
else:
|
||||
# Stats don't match - Doh!
|
||||
errors.error_report(filename, hand, stat, ghash, testhash, p)
|
||||
except KeyError, e:
|
||||
errors.error_report(filename, False, "KeyError: '%s'" % stat, False, False, p)
|
||||
if errs > 0:
|
||||
errors.error_report(filename, False, "Parse", False, False, False)
|
||||
|
||||
importer.clearFileList()
|
||||
|
||||
|
||||
|
||||
def walk_testfiles(dir, function, importer, errors):
|
||||
def walk_testfiles(dir, function, importer, errors, site):
|
||||
"""Walks a directory, and executes a callback on each file """
|
||||
dir = os.path.abspath(dir)
|
||||
for file in [file for file in os.listdir(dir) if not file in [".",".."]]:
|
||||
nfile = os.path.join(dir,file)
|
||||
if os.path.isdir(nfile):
|
||||
walk_testfiles(nfile, compare, importer, errors)
|
||||
walk_testfiles(nfile, compare, importer, errors, site)
|
||||
else:
|
||||
compare(nfile, importer, errors)
|
||||
compare(nfile, importer, errors, site)
|
||||
|
||||
def main(argv=None):
|
||||
if argv is None:
|
||||
|
@ -98,32 +129,100 @@ def main(argv=None):
|
|||
settings.update(config.get_import_parameters())
|
||||
settings.update(config.get_default_paths())
|
||||
db.recreate_tables()
|
||||
importer = fpdb_import.Importer(False, settings, config)
|
||||
importer = fpdb_import.Importer(False, settings, config, None)
|
||||
importer.setDropIndexes("don't drop")
|
||||
importer.setFailOnError(True)
|
||||
importer.setThreads(-1)
|
||||
importer.setCallHud(False)
|
||||
importer.setFakeCacheHHC(True)
|
||||
|
||||
PokerStarsErrors = FpdbError('PokerStars')
|
||||
FTPErrors = FpdbError('Full Tilt Poker')
|
||||
PartyPokerErrors = FpdbError('Party Poker')
|
||||
BetfairErrors = FpdbError('Betfair')
|
||||
PokerStarsErrors = FpdbError('PokerStars')
|
||||
FTPErrors = FpdbError('Full Tilt Poker')
|
||||
PartyPokerErrors = FpdbError('Party Poker')
|
||||
BetfairErrors = FpdbError('Betfair')
|
||||
OnGameErrors = FpdbError('OnGame')
|
||||
AbsoluteErrors = FpdbError('Absolute Poker')
|
||||
EverleafErrors = FpdbError('Everleaf Poker')
|
||||
CarbonErrors = FpdbError('Carbon')
|
||||
PKRErrors = FpdbError('PKR')
|
||||
iPokerErrors = FpdbError('iPoker')
|
||||
|
||||
walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors)
|
||||
walk_testfiles("regression-test-files/cash/FTP/", compare, importer, FTPErrors)
|
||||
walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors)
|
||||
walk_testfiles("regression-test-files/cash/Betfair/", compare, importer, BetfairErrors)
|
||||
ErrorsList = [
|
||||
PokerStarsErrors, FTPErrors, PartyPokerErrors,
|
||||
BetfairErrors, OnGameErrors, AbsoluteErrors,
|
||||
EverleafErrors, CarbonErrors, PKRErrors,
|
||||
iPokerErrors
|
||||
]
|
||||
|
||||
totalerrors = PokerStarsErrors.errorcount + FTPErrors.errorcount + PartyPokerErrors.errorcount + BetfairErrors.errorcount
|
||||
sites = {
|
||||
'PokerStars' : True,
|
||||
'Full Tilt Poker' : True,
|
||||
'PartyPoker' : True,
|
||||
'Betfair' : True,
|
||||
'OnGame' : True,
|
||||
'Absolute' : True,
|
||||
'Everleaf' : True,
|
||||
'Carbon' : True,
|
||||
'PKR' : True,
|
||||
'iPoker' : True,
|
||||
}
|
||||
|
||||
if sites['PokerStars'] == True:
|
||||
walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars")
|
||||
walk_testfiles("regression-test-files/tour/Stars/", compare, importer, PokerStarsErrors, "PokerStars")
|
||||
if sites['Full Tilt Poker'] == True:
|
||||
walk_testfiles("regression-test-files/cash/FTP/", compare, importer, FTPErrors, "Full Tilt Poker")
|
||||
walk_testfiles("regression-test-files/tour/FTP/", compare, importer, FTPErrors, "Full Tilt Poker")
|
||||
if sites['PartyPoker'] == True:
|
||||
walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker")
|
||||
walk_testfiles("regression-test-files/tour/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker")
|
||||
if sites['Betfair'] == True:
|
||||
walk_testfiles("regression-test-files/cash/Betfair/", compare, importer, BetfairErrors, "Betfair")
|
||||
if sites['OnGame'] == True:
|
||||
walk_testfiles("regression-test-files/cash/OnGame/", compare, importer, OnGameErrors, "OnGame")
|
||||
if sites['Absolute'] == True:
|
||||
walk_testfiles("regression-test-files/cash/Absolute/", compare, importer, AbsoluteErrors, "Absolute")
|
||||
if sites['Everleaf'] == True:
|
||||
walk_testfiles("regression-test-files/cash/Everleaf/", compare, importer, EverleafErrors, "Everleaf")
|
||||
if sites['Carbon'] == True:
|
||||
walk_testfiles("regression-test-files/cash/Carbon/", compare, importer, CarbonErrors, "Carbon")
|
||||
if sites['PKR'] == True:
|
||||
walk_testfiles("regression-test-files/cash/PKR/", compare, importer, PKRErrors, "PKR")
|
||||
if sites['iPoker'] == True:
|
||||
walk_testfiles("regression-test-files/cash/iPoker/", compare, importer, iPokerErrors, "iPoker")
|
||||
|
||||
totalerrors = 0
|
||||
|
||||
for i, site in enumerate(ErrorsList):
|
||||
totalerrors += ErrorsList[i].errorcount
|
||||
|
||||
print "---------------------"
|
||||
print "Total Errors: %d" % totalerrors
|
||||
print "---------------------"
|
||||
PokerStarsErrors.print_histogram()
|
||||
FTPErrors.print_histogram()
|
||||
PartyPokerErrors.print_histogram()
|
||||
BetfairErrors.print_histogram()
|
||||
for i, site in enumerate(ErrorsList):
|
||||
ErrorsList[i].print_histogram()
|
||||
|
||||
# Merge the dicts of stats from the various error objects
|
||||
statdict = {}
|
||||
for i, site in enumerate(ErrorsList):
|
||||
tmp = ErrorsList[i].statcount
|
||||
for stat in tmp:
|
||||
if stat in statdict:
|
||||
statdict[stat] += tmp[stat]
|
||||
else:
|
||||
statdict[stat] = tmp[stat]
|
||||
|
||||
print "\n"
|
||||
print "---------------------"
|
||||
print "Errors by stat:"
|
||||
print "---------------------"
|
||||
#for stat in statdict:
|
||||
# print "(%3d) : %s" %(statdict[stat], stat)
|
||||
|
||||
sortedstats = sorted([(value,key) for (key,value) in statdict.items()])
|
||||
for num, stat in sortedstats:
|
||||
print "(%3d) : %s" %(num, stat)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
|
|
|
@ -21,6 +21,9 @@
|
|||
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# to do allow window resizing
|
||||
# to do hud to echo, but ignore non numbers
|
||||
# to do no stat window for hero
|
||||
|
@ -34,18 +37,6 @@ import traceback
|
|||
|
||||
(options, argv) = Options.fpdb_options()
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
if not options.errorsToConsole:
|
||||
print _("Note: error output is being diverted to fpdb-error-log.txt and HUD-error.txt. Any major error will be reported there _only_.")
|
||||
errorFile = open('tourneyerror.txt', 'w', 0)
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import threading
|
||||
import pygtk
|
||||
pygtk.require('2.0')
|
||||
|
@ -29,18 +32,6 @@ from time import gmtime, mktime, strftime, strptime
|
|||
import logging #logging has been set up in fpdb.py or HUD_main.py, use their settings:
|
||||
log = logging.getLogger("filter")
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
#import Configuration
|
||||
#import Database
|
||||
#import SQL
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
"""parses and stores summary sections from e.g. eMail or summary files"""
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# TODO: check to keep only the needed modules
|
||||
|
||||
import re
|
||||
|
@ -31,18 +34,6 @@ import time,datetime
|
|||
from copy import deepcopy
|
||||
from Exceptions import *
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
import pprint
|
||||
import DerivedStats
|
||||
import Card
|
||||
|
@ -74,8 +65,8 @@ class TourneySummary(object):
|
|||
self.endTime = None
|
||||
self.tourNo = None
|
||||
self.currency = None
|
||||
self.buyin = None
|
||||
self.fee = None
|
||||
self.buyin = 0
|
||||
self.fee = 0
|
||||
self.hero = None
|
||||
self.maxseats = 0
|
||||
self.entries = 0
|
||||
|
@ -125,8 +116,11 @@ class TourneySummary(object):
|
|||
self.sym = None
|
||||
|
||||
if builtFrom=="IMAP":
|
||||
self.parseSummary()
|
||||
self.insertOrUpdate()
|
||||
# Fix line endings?
|
||||
pass
|
||||
|
||||
self.parseSummary()
|
||||
self.insertOrUpdate()
|
||||
#end def __init__
|
||||
|
||||
def __str__(self):
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
from HandHistoryConverter import *
|
||||
|
||||
|
@ -39,7 +42,7 @@ in_path (default '-' = sys.stdin)
|
|||
out_path (default '-' = sys.stdout)
|
||||
follow : whether to tail -f the input"""
|
||||
HandHistoryConverter.__init__(self, in_path, out_path, sitename="UltimateBet", follow=follow, index=index)
|
||||
logging.info("Initialising UltimateBetconverter class")
|
||||
logging.info(_("Initialising UltimateBetconverter class"))
|
||||
self.filetype = "text"
|
||||
self.codepage = "cp1252"
|
||||
self.siteId = 6 # Needs to match id entry in Sites database
|
||||
|
@ -141,7 +144,7 @@ follow : whether to tail -f the input"""
|
|||
if m:
|
||||
hand.buttonpos = int(m.group('BUTTON'))
|
||||
else:
|
||||
logging.info('readButton: not found')
|
||||
logging.info(_('readButton: not found'))
|
||||
|
||||
def readPlayerStacks(self, hand):
|
||||
logging.debug("readPlayerStacks")
|
||||
|
@ -180,7 +183,7 @@ follow : whether to tail -f the input"""
|
|||
hand.setCommunityCards(street, m.group('CARDS').split(' '))
|
||||
|
||||
def readAntes(self, hand):
|
||||
logging.debug("reading antes")
|
||||
logging.debug(_("reading antes"))
|
||||
m = self.re_Antes.finditer(hand.handText)
|
||||
for player in m:
|
||||
#~ logging.debug("hand.addAnte(%s,%s)" %(player.group('PNAME'), player.group('ANTE')))
|
||||
|
@ -290,7 +293,7 @@ follow : whether to tail -f the input"""
|
|||
#elif action.group('ATYPE') == ' stands pat':
|
||||
# hand.addStandsPat( street, action.group('PNAME'))
|
||||
else:
|
||||
print "DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),)
|
||||
print _("DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),))
|
||||
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
|
@ -312,9 +315,9 @@ follow : whether to tail -f the input"""
|
|||
|
||||
if __name__ == "__main__":
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="regression-test-files/pokerstars/HH20090226 Natalie V - $0.10-$0.20 - HORSE.txt")
|
||||
parser.add_option("-o", "--output", dest="opath", help="output translation to", default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help="follow (tail -f) the input", action="store_true", default=False)
|
||||
parser.add_option("-i", "--input", dest="ipath", help=_("parse input hand history"), default="regression-test-files/pokerstars/HH20090226 Natalie V - $0.10-$0.20 - HORSE.txt")
|
||||
parser.add_option("-o", "--output", dest="opath", help=_("output translation to"), default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help=_("follow (tail -f) the input"), action="store_true", default=False)
|
||||
parser.add_option("-q", "--quiet",
|
||||
action="store_const", const=logging.CRITICAL, dest="verbosity", default=logging.INFO)
|
||||
parser.add_option("-v", "--verbose",
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
import datetime
|
||||
from HandHistoryConverter import *
|
||||
|
@ -88,8 +91,10 @@ class Win2day(HandHistoryConverter):
|
|||
|
||||
m = self.re_GameInfo.search(handText)
|
||||
if not m:
|
||||
print "determineGameType:", handText
|
||||
return None
|
||||
tmp = handText[0:100]
|
||||
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||
|
||||
mg = m.groupdict()
|
||||
|
||||
|
@ -98,7 +103,8 @@ class Win2day(HandHistoryConverter):
|
|||
limits = { 'NL':'nl', 'PL':'pl'}
|
||||
games = { # base, category
|
||||
"GAME_THM" : ('hold','holdem'),
|
||||
# 'Omaha' : ('hold','omahahi'),
|
||||
"GAME_OMA" : ('hold','omahahi'),
|
||||
|
||||
#'Omaha Hi/Lo' : ('hold','omahahilo'),
|
||||
# 'Razz' : ('stud','razz'),
|
||||
#'7 Card Stud' : ('stud','studhi'),
|
||||
|
@ -153,7 +159,7 @@ class Win2day(HandHistoryConverter):
|
|||
hand.buttonpos = player[0]
|
||||
break
|
||||
else:
|
||||
logging.info('readButton: not found')
|
||||
logging.info(_('readButton: not found'))
|
||||
|
||||
def readPlayerStacks(self, hand):
|
||||
logging.debug("readPlayerStacks")
|
||||
|
@ -182,19 +188,19 @@ class Win2day(HandHistoryConverter):
|
|||
if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP)
|
||||
#print "DEBUG readCommunityCards:", street, hand.streets.group(street)
|
||||
|
||||
boardCards = set([])
|
||||
boardCards = []
|
||||
if street == 'FLOP':
|
||||
m = self.re_Card.findall(hand.streets[street])
|
||||
for card in m:
|
||||
boardCards.add(self.convertWin2dayCards(card))
|
||||
boardCards.append(self.convertWin2dayCards(card))
|
||||
else:
|
||||
m = self.re_BoardLast.search(hand.streets[street])
|
||||
boardCards.add(self.convertWin2dayCards(m.group('CARD')))
|
||||
boardCards.append(self.convertWin2dayCards(m.group('CARD')))
|
||||
|
||||
hand.setCommunityCards(street, boardCards)
|
||||
|
||||
def readAntes(self, hand):
|
||||
logging.debug("reading antes")
|
||||
logging.debug(_("reading antes"))
|
||||
m = self.re_Antes.finditer(hand.handText)
|
||||
for player in m:
|
||||
#~ logging.debug("hand.addAnte(%s,%s)" %(player.group('PNAME'), player.group('ANTE')))
|
||||
|
@ -225,7 +231,7 @@ class Win2day(HandHistoryConverter):
|
|||
for found in m:
|
||||
hand.hero = found.group('PNAME')
|
||||
for card in self.re_Card.finditer(found.group('CARDS')):
|
||||
print self.convertWin2dayCards(card.group('CARD'))
|
||||
#print self.convertWin2dayCards(card.group('CARD'))
|
||||
newcards.append(self.convertWin2dayCards(card.group('CARD')))
|
||||
|
||||
#hand.addHoleCards(holeCards, m.group('PNAME'))
|
||||
|
@ -267,13 +273,13 @@ class Win2day(HandHistoryConverter):
|
|||
newcards = player.group('NEWCARDS')
|
||||
oldcards = player.group('OLDCARDS')
|
||||
if newcards == None:
|
||||
newcards = set()
|
||||
newcards = []
|
||||
else:
|
||||
newcards = set(newcards.split(' '))
|
||||
newcards = newcards.split(' ')
|
||||
if oldcards == None:
|
||||
oldcards = set()
|
||||
oldcards = []
|
||||
else:
|
||||
oldcards = set(oldcards.split(' '))
|
||||
oldcards = oldcards.split(' ')
|
||||
hand.addDrawHoleCards(newcards, oldcards, player.group('PNAME'), street)
|
||||
|
||||
|
||||
|
@ -332,15 +338,15 @@ class Win2day(HandHistoryConverter):
|
|||
elif action.group('ATYPE') == 'ACTION_STAND':
|
||||
hand.addStandsPat( street, action.group('PNAME'))
|
||||
else:
|
||||
print "DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),)
|
||||
print _("DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),))
|
||||
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
for shows in self.re_ShowdownAction.finditer(hand.handText):
|
||||
showdownCards = set([])
|
||||
showdownCards = []
|
||||
for card in self.re_Card.finditer(shows.group('CARDS')):
|
||||
#print "DEBUG:", card, card.group('CARD'), self.convertWin2dayCards(card.group('CARD'))
|
||||
showdownCards.add(self.convertWin2dayCards(card.group('CARD')))
|
||||
showdownCards.append(self.convertWin2dayCards(card.group('CARD')))
|
||||
|
||||
hand.addShownCards(showdownCards, shows.group('PNAME'))
|
||||
|
||||
|
@ -354,14 +360,14 @@ class Win2day(HandHistoryConverter):
|
|||
for m in self.re_ShownCards.finditer(hand.handText):
|
||||
if m.group('CARDS') is not None:
|
||||
cards = m.group('CARDS')
|
||||
cards = set(cards.split(' '))
|
||||
cards = cards.split(' ')
|
||||
hand.addShownCards(cards=cards, player=m.group('PNAME'))
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="-")
|
||||
parser.add_option("-o", "--output", dest="opath", help="output translation to", default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help="follow (tail -f) the input", action="store_true", default=False)
|
||||
parser.add_option("-i", "--input", dest="ipath", help=_("parse input hand history"), default="-")
|
||||
parser.add_option("-o", "--output", dest="opath", help=_("output translation to"), default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help=_("follow (tail -f) the input"), action="store_true", default=False)
|
||||
parser.add_option("-q", "--quiet",
|
||||
action="store_const", const=logging.CRITICAL, dest="verbosity", default=logging.INFO)
|
||||
parser.add_option("-v", "--verbose",
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""WinTables.py
|
||||
|
||||
Routines for detecting and handling poker client windows for MS Windows.
|
||||
"""Routines for detecting and handling poker client windows for MS Windows.
|
||||
"""
|
||||
# Copyright 2008-2010, Ray E. Barker
|
||||
# Copyright 2008 - 2010, Ray E. Barker
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -22,6 +20,9 @@ Routines for detecting and handling poker client windows for MS Windows.
|
|||
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# Standard Library modules
|
||||
import re
|
||||
|
||||
|
@ -40,18 +41,6 @@ import win32api
|
|||
import win32con
|
||||
import win32security
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# FreePokerTools modules
|
||||
from TableWindow import Table_Window
|
||||
|
||||
|
@ -62,45 +51,28 @@ tb_height = 29
|
|||
|
||||
class Table(Table_Window):
|
||||
|
||||
def find_table_parameters(self, search_string):
|
||||
def find_table_parameters(self):
|
||||
"""Finds poker client window with the given table name."""
|
||||
titles = {}
|
||||
win32gui.EnumWindows(win_enum_handler, titles)
|
||||
for hwnd in titles:
|
||||
if titles[hwnd] == "": continue
|
||||
# print "searching ", search_string, " in ", titles[hwnd]
|
||||
if re.search(search_string, titles[hwnd]):
|
||||
if 'History for table:' in titles[hwnd]: continue # Everleaf Network HH viewer window
|
||||
if 'HUD:' in titles[hwnd]: continue # FPDB HUD window
|
||||
if 'Chat:' in titles[hwnd]: continue # Some sites (FTP? PS? Others?) have seperable or seperately constructed chat windows
|
||||
if 'FPDBHUD' in titles[hwnd]: continue # can't attach to ourselves!
|
||||
if re.search(self.search_string, titles[hwnd]):
|
||||
if self.check_bad_words(titles[hwnd]): continue
|
||||
self.window = hwnd
|
||||
break
|
||||
|
||||
try:
|
||||
if self.window == None:
|
||||
log.error(_("Window %s not found. Skipping.") % search_string )
|
||||
log.error( "Window %s not found. Skipping." % self.search_string )
|
||||
return None
|
||||
except AttributeError:
|
||||
log.error(_("self.window doesn't exist? why?"))
|
||||
return None
|
||||
|
||||
(x, y, width, height) = win32gui.GetWindowRect(hwnd)
|
||||
log.debug("x = %s y = %s width = %s height = %s" % (x, y, width, height))
|
||||
self.x = int(x) + b_width
|
||||
self.y = int(y) + tb_height
|
||||
self.width = width - x
|
||||
self.height = height - y
|
||||
log.debug("x = %s y = %s width = %s height = %s" % (self.x, self.y, self.width, self.height))
|
||||
#self.height = int(height) - b_width - tb_height
|
||||
#self.width = int(width) - 2*b_width
|
||||
|
||||
self.exe = self.get_nt_exe(hwnd)
|
||||
self.title = titles[hwnd]
|
||||
self.site = ""
|
||||
self.hud = None
|
||||
self.number = hwnd
|
||||
self.gdkhandle = gtk.gdk.window_foreign_new(long(self.window))
|
||||
|
||||
def get_geometry(self):
|
||||
if not win32gui.IsWindow(self.number): # window closed
|
||||
|
@ -112,8 +84,8 @@ class Table(Table_Window):
|
|||
height = height - y
|
||||
return {'x' : int(x) + b_width,
|
||||
'y' : int(y) + tb_height,
|
||||
'width' : int(height) - b_width - tb_height,
|
||||
'height' : int(width) - 2*b_width
|
||||
'height' : int(height) - y,
|
||||
'width' : int(width) - x
|
||||
}
|
||||
except:
|
||||
return None
|
||||
|
@ -121,26 +93,27 @@ class Table(Table_Window):
|
|||
def get_window_title(self):
|
||||
return win32gui.GetWindowText(self.window)
|
||||
|
||||
def get_nt_exe(self, hwnd):
|
||||
"""Finds the name of the executable that the given window handle belongs to."""
|
||||
# def get_nt_exe(self, hwnd):
|
||||
# """Finds the name of the executable that the given window handle belongs to."""
|
||||
#
|
||||
# # Request privileges to enable "debug process", so we can later use PROCESS_VM_READ, retardedly required to GetModuleFileNameEx()
|
||||
# priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
|
||||
# hToken = win32security.OpenProcessToken (win32api.GetCurrentProcess(), priv_flags)
|
||||
# # enable "debug process"
|
||||
# privilege_id = win32security.LookupPrivilegeValue (None, win32security.SE_DEBUG_NAME)
|
||||
# old_privs = win32security.AdjustTokenPrivileges (hToken, 0, [(privilege_id, win32security.SE_PRIVILEGE_ENABLED)])
|
||||
#
|
||||
# # Open the process, and query it's filename
|
||||
# processid = win32process.GetWindowThreadProcessId(hwnd)
|
||||
# pshandle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, processid[1])
|
||||
# exename = win32process.GetModuleFileNameEx(pshandle, 0)
|
||||
#
|
||||
# # clean up
|
||||
# win32api.CloseHandle(pshandle)
|
||||
# win32api.CloseHandle(hToken)
|
||||
#
|
||||
# return exename
|
||||
|
||||
# Request privileges to enable "debug process", so we can later use PROCESS_VM_READ, retardedly required to GetModuleFileNameEx()
|
||||
priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
|
||||
hToken = win32security.OpenProcessToken (win32api.GetCurrentProcess(), priv_flags)
|
||||
# enable "debug process"
|
||||
privilege_id = win32security.LookupPrivilegeValue (None, win32security.SE_DEBUG_NAME)
|
||||
old_privs = win32security.AdjustTokenPrivileges (hToken, 0, [(privilege_id, win32security.SE_PRIVILEGE_ENABLED)])
|
||||
|
||||
# Open the process, and query it's filename
|
||||
processid = win32process.GetWindowThreadProcessId(hwnd)
|
||||
pshandle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, processid[1])
|
||||
exename = win32process.GetModuleFileNameEx(pshandle, 0)
|
||||
|
||||
# clean up
|
||||
win32api.CloseHandle(pshandle)
|
||||
win32api.CloseHandle(hToken)
|
||||
|
||||
return exename
|
||||
def topify(self, hud):
|
||||
"""Set the specified gtk window to stayontop in MS Windows."""
|
||||
|
||||
|
@ -159,10 +132,10 @@ class Table(Table_Window):
|
|||
# hud.main_window.gdkhandle = gtk.gdk.window_foreign_new(w[0])
|
||||
hud.main_window.gdkhandle = hud.main_window.window
|
||||
hud.main_window.gdkhandle.set_transient_for(self.gdkhandle)
|
||||
rect = self.gdkhandle.get_frame_extents()
|
||||
(innerx, innery) = self.gdkhandle.get_origin()
|
||||
b_width = rect.x - innerx
|
||||
tb_height = rect.y - innery
|
||||
# rect = self.gdkhandle.get_frame_extents()
|
||||
# (innerx, innery) = self.gdkhandle.get_origin()
|
||||
# b_width = rect.x - innerx
|
||||
# tb_height = rect.y - innery
|
||||
#
|
||||
# style = win32gui.GetWindowLong(self.number, win32con.GWL_EXSTYLE)
|
||||
# style |= win32con.WS_CLIPCHILDREN
|
||||
|
|
420
pyfpdb/WinamaxToFpdb.py
Executable file
420
pyfpdb/WinamaxToFpdb.py
Executable file
|
@ -0,0 +1,420 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2008-2010, Carl Gherardi
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
########################################################################
|
||||
|
||||
import sys
|
||||
import exceptions
|
||||
|
||||
import logging
|
||||
# logging has been set up in fpdb.py or HUD_main.py, use their settings:
|
||||
|
||||
import Configuration
|
||||
from HandHistoryConverter import *
|
||||
from decimal import Decimal
|
||||
import time
|
||||
import locale
|
||||
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# Winamax HH Format
|
||||
|
||||
class Winamax(HandHistoryConverter):
|
||||
def Trace(f):
|
||||
def my_f(*args, **kwds):
|
||||
print ( "entering " + f.__name__)
|
||||
result= f(*args, **kwds)
|
||||
print ( "exiting " + f.__name__)
|
||||
return result
|
||||
my_f.__name = f.__name__
|
||||
my_f.__doc__ = f.__doc__
|
||||
return my_f
|
||||
|
||||
filter = "Winamax"
|
||||
siteName = "Winamax"
|
||||
filetype = "text"
|
||||
codepage = ("utf8", "cp1252")
|
||||
siteId = 5 # Needs to match id entry in Sites database
|
||||
|
||||
mixes = { } # Legal mixed games
|
||||
sym = {'USD': "\$", 'CAD': "\$", 'T$': "", "EUR": "\xe2\x82\xac", "GBP": "\xa3"} # ADD Euro, Sterling, etc HERE
|
||||
substitutions = {
|
||||
'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes
|
||||
'LS' : "\$|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8)
|
||||
}
|
||||
|
||||
limits = { 'no limit':'nl', 'pot limit' : 'pl','LIMIT':'fl'}
|
||||
|
||||
games = { # base, category
|
||||
"Holdem" : ('hold','holdem'),
|
||||
'Omaha' : ('hold','omahahi'),
|
||||
# 'Omaha Hi/Lo' : ('hold','omahahilo'),
|
||||
# 'Razz' : ('stud','razz'),
|
||||
# 'RAZZ' : ('stud','razz'),
|
||||
# '7 Card Stud' : ('stud','studhi'),
|
||||
'SEVEN_CARD_STUD_HI_LO' : ('stud','studhilo'),
|
||||
# 'Badugi' : ('draw','badugi'),
|
||||
# 'Triple Draw 2-7 Lowball' : ('draw','27_3draw'),
|
||||
# '5 Card Draw' : ('draw','fivedraw')
|
||||
}
|
||||
|
||||
# Static regexes
|
||||
# ***** End of hand R5-75443872-57 *****
|
||||
re_SplitHands = re.compile(r'\n\n')
|
||||
|
||||
|
||||
|
||||
# Winamax Poker - CashGame - HandId: #279823-223-1285031451 - Holdem no limit (0.02€/0.05€) - 2010/09/21 03:10:51 UTC
|
||||
re_HandInfo = re.compile(u"""
|
||||
\s*Winamax\sPoker\s-\sCashGame\s-\sHandId:\s\#(?P<HID>[-A-Z\d]+).*\s
|
||||
(?P<GAME>Holdem|Omaha)\s
|
||||
(?P<LIMIT>no\slimit|pot\slimit)\s
|
||||
\(
|
||||
((%(LS)s)?(?P<SB>[.0-9]+)(%(LS)s)?)/
|
||||
((%(LS)s)?(?P<BB>[.0-9]+)(%(LS)s)?)
|
||||
\)\s-\s
|
||||
(?P<DATETIME>.*)
|
||||
""" % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE)
|
||||
|
||||
re_TailSplitHands = re.compile(r'\n\s*\n')
|
||||
re_Button = re.compile(r'Seat\s#(?P<BUTTON>\d+)\sis\sthe\sbutton')
|
||||
re_Board = re.compile(r"\[(?P<CARDS>.+)\]")
|
||||
|
||||
# 2010/09/21 03:10:51 UTC
|
||||
re_DateTime = re.compile("""
|
||||
(?P<Y>[0-9]{4})/
|
||||
(?P<M>[0-9]+)/
|
||||
(?P<D>[0-9]+)\s
|
||||
(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)\s
|
||||
UTC
|
||||
""", re.MULTILINE|re.VERBOSE)
|
||||
|
||||
# Seat 1: floflo...76 (5€)
|
||||
# Seat 2: francksp76 (6.33€)
|
||||
# Seat 3: Tonton73 (4.80€)
|
||||
# Seat 4: chris67poker (4.60€)
|
||||
re_PlayerInfo = re.compile(u'Seat\s(?P<SEAT>[0-9]+):\s(?P<PNAME>.*)\s\((%(LS)s)?(?P<CASH>[.0-9]+)(%(LS)s)?\)' % substitutions)
|
||||
|
||||
def compilePlayerRegexs(self, hand):
|
||||
players = set([player[1] for player in hand.players])
|
||||
if not players <= self.compiledPlayers: # x <= y means 'x is subset of y'
|
||||
# we need to recompile the player regexs.
|
||||
# TODO: should probably rename re_HeroCards and corresponding method,
|
||||
# since they are used to find all cards on lines starting with "Dealt to:"
|
||||
# They still identify the hero.
|
||||
self.compiledPlayers = players
|
||||
#ANTES/BLINDS
|
||||
#helander2222 posts blind ($0.25), lopllopl posts blind ($0.50).
|
||||
player_re = "(?P<PNAME>" + "|".join(map(re.escape, players)) + ")"
|
||||
subst = {'PLYR': player_re, 'CUR': self.sym[hand.gametype['currency']]}
|
||||
self.re_PostSB = re.compile('%(PLYR)s posts small blind (%(CUR)s)?(?P<SB>[\.0-9]+)(%(CUR)s)?' % subst, re.MULTILINE)
|
||||
self.re_PostBB = re.compile('%(PLYR)s posts big blind (%(CUR)s)?(?P<BB>[\.0-9]+)(%(CUR)s)?' % subst, re.MULTILINE)
|
||||
self.re_Antes = re.compile(r"^%(PLYR)s: posts the ante (%(CUR)s)?(?P<ANTE>[\.0-9]+)(%(CUR)s)?" % subst, re.MULTILINE)
|
||||
self.re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for (%(CUR)s)?(?P<BRINGIN>[\.0-9]+(%(CUR)s)?)" % subst, re.MULTILINE)
|
||||
self.re_PostBoth = re.compile('(?P<PNAME>.*): posts small \& big blind \( (%(CUR)s)?(?P<SBBB>[\.0-9]+)(%(CUR)s)?\)' % subst)
|
||||
self.re_PostDead = re.compile('(?P<PNAME>.*) posts dead blind \((%(CUR)s)?(?P<DEAD>[\.0-9]+)(%(CUR)s)?\)' % subst, re.MULTILINE)
|
||||
self.re_HeroCards = re.compile('Dealt\sto\s%(PLYR)s\s\[(?P<CARDS>.*)\]' % subst)
|
||||
|
||||
#lopllopl checks, Eurolll checks, .Lucchess checks.
|
||||
#chumley. calls $0.25
|
||||
self.re_Action = re.compile('(, )?(?P<PNAME>.*?)(?P<ATYPE> bets| checks| raises| calls| folds)( (%(CUR)s)?(?P<BET>[\d\.]+)(%(CUR)s)?)?( and is all-in)?' % subst)
|
||||
#self.re_Board = re.compile(r"\[board cards (?P<CARDS>.+) \]")
|
||||
|
||||
#Uchilka shows [ KC,JD ]
|
||||
self.re_ShowdownAction = re.compile('(?P<PNAME>.*) shows \[(?P<CARDS>.+)\]')
|
||||
|
||||
#Main pot: $3.57 won by mleo17 ($3.40)
|
||||
#Side pot 1: $3.26 won by maac_5 ($3.10)
|
||||
#Main pot: $2.87 won by maac_5 ($1.37), sagi34 ($1.36)
|
||||
# self.re_CollectPot = re.compile('\s*(?P<PNAME>.*)\scollected\s(%(CUR)s)?(?P<POT>[\.\d]+)(%(CUR)s)?\sfrom\spot' % subst)
|
||||
self.re_CollectPot = re.compile('\s*(?P<PNAME>.*)\scollected\s(%(CUR)s)?(?P<POT>[\.\d]+)(%(CUR)s)?.*' % subst)
|
||||
#Seat 5: mleo17 ($3.40), net: +$2.57, [Jd, Qd] (TWO_PAIR QUEEN, JACK)
|
||||
self.re_ShownCards = re.compile("^Seat (?P<SEAT>[0-9]+): %(PLYR)s showed \[(?P<CARDS>.*)\].*" % subst, re.MULTILINE)
|
||||
self.re_sitsOut = re.compile('(?P<PNAME>.*) sits out')
|
||||
|
||||
def readSupportedGames(self):
|
||||
return [
|
||||
["ring", "hold", "fl"],
|
||||
["ring", "hold", "nl"],
|
||||
["ring", "hold", "pl"],
|
||||
["ring", "stud", "fl"],
|
||||
]
|
||||
|
||||
def determineGameType(self, handText):
|
||||
# Inspect the handText and return the gametype dict
|
||||
# gametype dict is: {'limitType': xxx, 'base': xxx, 'category': xxx}
|
||||
info = {}
|
||||
|
||||
m = self.re_HandInfo.search(handText)
|
||||
if not m:
|
||||
tmp = handText[0:100]
|
||||
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||
|
||||
mg = m.groupdict()
|
||||
|
||||
info['type'] = 'ring'
|
||||
info['currency'] = 'EUR'
|
||||
|
||||
if 'LIMIT' in mg:
|
||||
if mg['LIMIT'] in self.limits:
|
||||
info['limitType'] = self.limits[mg['LIMIT']]
|
||||
else:
|
||||
tmp = handText[0:100]
|
||||
log.error(_("determineGameType: limit not found in self.limits(%s). hand: '%s'") % (str(mg),tmp))
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("limit not found in self.limits(%s). hand: '%s'") % (str(mg),tmp))
|
||||
if 'GAME' in mg:
|
||||
(info['base'], info['category']) = self.games[mg['GAME']]
|
||||
if 'SB' in mg:
|
||||
info['sb'] = mg['SB']
|
||||
if 'BB' in mg:
|
||||
info['bb'] = mg['BB']
|
||||
|
||||
#log.debug("determinegametype: returning "+str(info))
|
||||
return info
|
||||
|
||||
def readHandInfo(self, hand):
|
||||
info = {}
|
||||
m = self.re_HandInfo.search(hand.handText)
|
||||
|
||||
if m:
|
||||
info.update(m.groupdict())
|
||||
|
||||
#log.debug("readHandInfo: %s" % info)
|
||||
for key in info:
|
||||
if key == 'DATETIME':
|
||||
#'Wed Aug 18 19:45:30 GMT+0100 2010
|
||||
# %a %b %d %H:%M:%S %z %Y
|
||||
#hand.startTime = time.strptime(m.group('DATETIME'), "%a %b %d %H:%M:%S GMT%z %Y")
|
||||
# Stupid library doesn't seem to support %z (http://docs.python.org/library/time.html?highlight=strptime#time.strptime)
|
||||
# So we need to re-interpret te string to be useful
|
||||
a = self.re_DateTime.search(info[key])
|
||||
if a:
|
||||
datetimestr = "%s/%s/%s %s:%s:%s" % (a.group('Y'),a.group('M'), a.group('D'), a.group('H'),a.group('MIN'),a.group('S'))
|
||||
tzoffset = str(-time.timezone/3600)
|
||||
else:
|
||||
datetimestr = "2010/Jan/01 01:01:01"
|
||||
log.error(_("readHandInfo: DATETIME not matched: '%s'" % info[key]))
|
||||
print "DEBUG: readHandInfo: DATETIME not matched: '%s'" % info[key]
|
||||
# TODO: Manually adjust time against OFFSET
|
||||
hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S") # also timezone at end, e.g. " ET"
|
||||
# hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, tzoffset, "UTC")
|
||||
if key == 'HID':
|
||||
hand.handid = info[key]
|
||||
# Need to remove non-alphanumerics for MySQL
|
||||
hand.handid = hand.handid.replace('R','')
|
||||
hand.handid = hand.handid.replace('-','')
|
||||
if key == 'TABLE':
|
||||
hand.tablename = info[key]
|
||||
|
||||
# TODO: These
|
||||
hand.buttonpos = 1
|
||||
hand.maxseats = 10 # Set to None - Hand.py will guessMaxSeats()
|
||||
hand.mixed = None
|
||||
|
||||
def readPlayerStacks(self, hand):
|
||||
log.info("readplayerstacks: re is '%s'" % self.re_PlayerInfo)
|
||||
m = self.re_PlayerInfo.finditer(hand.handText)
|
||||
for a in m:
|
||||
print "DEBUG: found '%s' with '%s'" %(a.group('PNAME'), a.group('CASH'))
|
||||
hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH'))
|
||||
|
||||
|
||||
def markStreets(self, hand):
|
||||
# *** ANTE/BLINDS ***
|
||||
# francksp76 posts small blind 0.02€
|
||||
# Tonton73 posts big blind 0.05€
|
||||
# Dealt to johnny_nd [5d Kh 9c Tc]
|
||||
# *** PRE-FLOP ***
|
||||
# chris67poker folds
|
||||
# luckyluck21_ calls 0.05€
|
||||
# arawak folds
|
||||
# johnny_nd calls 0.05€
|
||||
# KILLAROUNDER calls 0.05€
|
||||
# floflo...76 folds
|
||||
# francksp76 calls 0.03€
|
||||
# Tonton73 checks
|
||||
# *** FLOP *** [5h 8d 3h]
|
||||
# francksp76 checks
|
||||
# Tonton73 checks
|
||||
# luckyluck21_ checks
|
||||
# johnny_nd checks
|
||||
# KILLAROUNDER checks
|
||||
# *** TURN *** [5h 8d 3h][7h]
|
||||
# francksp76 checks
|
||||
# Tonton73 checks
|
||||
# luckyluck21_ checks
|
||||
# johnny_nd checks
|
||||
# KILLAROUNDER checks
|
||||
# *** RIVER *** [5h 8d 3h 7h][2d]
|
||||
# francksp76 checks
|
||||
# Tonton73 checks
|
||||
# luckyluck21_ checks
|
||||
# johnny_nd bets 0.25€
|
||||
# KILLAROUNDER folds
|
||||
# francksp76 folds
|
||||
# Tonton73 folds
|
||||
# luckyluck21_ calls 0.25€
|
||||
# *** SHOW DOWN ***
|
||||
# johnny_nd shows [5d Kh 9c Tc] (One pair : 5)
|
||||
# luckyluck21_ shows [6h Js 9s Td] (Straight 9 high)
|
||||
# luckyluck21_ collected 0.71€ from pot
|
||||
# *** SUMMARY ***
|
||||
# Total pot 0.71€ | Rake 0.04€
|
||||
m = re.search(r"\*\*\* ANTE\/BLINDS \*\*\*(?P<PREFLOP>.+(?=\*\*\* FLOP \*\*\*)|.+)"
|
||||
r"(\*\*\* FLOP \*\*\*(?P<FLOP> \[\S\S \S\S \S\S\].+(?=\*\*\* TURN \*\*\*)|.+))?"
|
||||
r"(\*\*\* TURN \*\*\* \[\S\S \S\S \S\S] (?P<TURN>\[\S\S\].+(?=\*\*\* RIVER \*\*\*)|.+))?"
|
||||
r"(\*\*\* RIVER \*\*\* \[\S\S \S\S \S\S \S\S] (?P<RIVER>\[\S\S\].+))?", hand.handText,re.DOTALL)
|
||||
|
||||
try:
|
||||
hand.addStreets(m)
|
||||
print "add street"
|
||||
except:
|
||||
print ("Failed to add streets. handtext=%s")
|
||||
|
||||
#Needs to return a list in the format
|
||||
# ['player1name', 'player2name', ...] where player1name is the sb and player2name is bb,
|
||||
# addtional players are assumed to post a bb oop
|
||||
|
||||
def readButton(self, hand):
|
||||
m = self.re_Button.search(hand.handText)
|
||||
if m:
|
||||
hand.buttonpos = int(m.group('BUTTON'))
|
||||
log.debug('readButton: button on pos %d'%hand.buttonpos)
|
||||
else:
|
||||
log.warning(_('readButton: not found'))
|
||||
|
||||
# def readCommunityCards(self, hand, street):
|
||||
# #print hand.streets.group(street)
|
||||
# if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP)
|
||||
# m = self.re_Board.search(hand.streets.group(street))
|
||||
# hand.setCommunityCards(street, m.group('CARDS').split(','))
|
||||
|
||||
def readCommunityCards(self, hand, street): # street has been matched by markStreets, so exists in this hand
|
||||
if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP)
|
||||
#print "DEBUG readCommunityCards:", street, hand.streets.group(street)
|
||||
m = self.re_Board.search(hand.streets[street])
|
||||
hand.setCommunityCards(street, m.group('CARDS').split(' '))
|
||||
|
||||
def readBlinds(self, hand):
|
||||
try:
|
||||
m = self.re_PostSB.search(hand.handText)
|
||||
hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB'))
|
||||
except exceptions.AttributeError: # no small blind
|
||||
log.exception( _("readBlinds in noSB exception - no SB created")+str(sys.exc_info()) )
|
||||
#hand.addBlind(None, None, None)
|
||||
for a in self.re_PostBB.finditer(hand.handText):
|
||||
hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB'))
|
||||
for a in self.re_PostDead.finditer(hand.handText):
|
||||
#print "DEBUG: Found dead blind: addBlind(%s, 'secondsb', %s)" %(a.group('PNAME'), a.group('DEAD'))
|
||||
hand.addBlind(a.group('PNAME'), 'secondsb', a.group('DEAD'))
|
||||
for a in self.re_PostBoth.finditer(hand.handText):
|
||||
hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB'))
|
||||
|
||||
def readAntes(self, hand):
|
||||
log.debug(_("reading antes"))
|
||||
m = self.re_Antes.finditer(hand.handText)
|
||||
for player in m:
|
||||
#~ logging.debug("hand.addAnte(%s,%s)" %(player.group('PNAME'), player.group('ANTE')))
|
||||
hand.addAnte(player.group('PNAME'), player.group('ANTE'))
|
||||
|
||||
def readBringIn(self, hand):
|
||||
m = self.re_BringIn.search(hand.handText,re.DOTALL)
|
||||
if m:
|
||||
#~ logging.debug("readBringIn: %s for %s" %(m.group('PNAME'), m.group('BRINGIN')))
|
||||
hand.addBringIn(m.group('PNAME'), m.group('BRINGIN'))
|
||||
|
||||
def readHeroCards(self, hand):
|
||||
# streets PREFLOP, PREDRAW, and THIRD are special cases beacause
|
||||
# we need to grab hero's cards
|
||||
for street in ('PREFLOP', 'DEAL', 'BLINDSANTES'):
|
||||
if street in hand.streets.keys():
|
||||
m = self.re_HeroCards.finditer(hand.streets[street])
|
||||
if m == []:
|
||||
log.debug("No hole cards found for %s"%street)
|
||||
for found in m:
|
||||
hand.hero = found.group('PNAME')
|
||||
newcards = found.group('CARDS').split(' ')
|
||||
print "DEBUG: addHoleCards(%s, %s, %s)" %(street, hand.hero, newcards)
|
||||
hand.addHoleCards(street, hand.hero, closed=newcards, shown=False, mucked=False, dealt=True)
|
||||
log.debug("Hero cards %s: %s"%(hand.hero, newcards))
|
||||
|
||||
def readAction(self, hand, street):
|
||||
m = self.re_Action.finditer(hand.streets[street])
|
||||
for action in m:
|
||||
acts = action.groupdict()
|
||||
#log.debug("readaction: acts: %s" %acts)
|
||||
if action.group('ATYPE') == ' raises':
|
||||
hand.addRaiseBy( street, action.group('PNAME'), action.group('BET') )
|
||||
elif action.group('ATYPE') == ' calls':
|
||||
hand.addCall( street, action.group('PNAME'), action.group('BET') )
|
||||
elif action.group('ATYPE') == ' bets':
|
||||
hand.addBet( street, action.group('PNAME'), action.group('BET') )
|
||||
elif action.group('ATYPE') == ' folds':
|
||||
hand.addFold( street, action.group('PNAME'))
|
||||
elif action.group('ATYPE') == ' checks':
|
||||
hand.addCheck( street, action.group('PNAME'))
|
||||
elif action.group('ATYPE') == ' discards':
|
||||
hand.addDiscard(street, action.group('PNAME'), action.group('BET'), action.group('DISCARDED'))
|
||||
elif action.group('ATYPE') == ' stands pat':
|
||||
hand.addStandsPat( street, action.group('PNAME'))
|
||||
else:
|
||||
log.fatal("DEBUG: unimplemented readAction: '%s' '%s'") %(action.group('PNAME'),action.group('ATYPE'),)
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
for shows in self.re_ShowdownAction.finditer(hand.handText):
|
||||
log.debug("add show actions %s"%shows)
|
||||
cards = shows.group('CARDS')
|
||||
cards = cards.split(' ')
|
||||
print "DEBUG: addShownCards(%s, %s)" %(cards, shows.group('PNAME'))
|
||||
hand.addShownCards(cards, shows.group('PNAME'))
|
||||
|
||||
@Trace
|
||||
def readCollectPot(self,hand):
|
||||
for m in self.re_CollectPot.finditer(hand.handText):
|
||||
hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT'))
|
||||
|
||||
@Trace
|
||||
def readShownCards(self,hand):
|
||||
for m in self.re_ShownCards.finditer(hand.handText):
|
||||
log.debug("Read shown cards: %s"%m.group(0))
|
||||
cards = m.group('CARDS')
|
||||
cards = cards.split(' ') # needs to be a list, not a set--stud needs the order
|
||||
(shown, mucked) = (False, False)
|
||||
if m.group('CARDS') is not None:
|
||||
shown = True
|
||||
hand.addShownCards(cards=cards, player=m.group('PNAME'), shown=shown, mucked=mucked)
|
||||
|
||||
if __name__ == "__main__":
|
||||
c = Configuration.Config()
|
||||
if len(sys.argv) == 1:
|
||||
testfile = "regression-test-files/ongame/nlhe/ong NLH handhq_0.txt"
|
||||
else:
|
||||
testfile = sys.argv[1]
|
||||
e = Winamax(c, testfile)
|
|
@ -1,12 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Discover_Tables.py
|
||||
|
||||
Inspects the currently open windows and finds those of interest to us--that is
|
||||
poker table windows from supported sites. Returns a list
|
||||
of Table_Window objects representing the windows found.
|
||||
"""XWindows specific methods for TableWindows Class.
|
||||
"""
|
||||
# Copyright 2008-2010, Ray E. Barker
|
||||
# Copyright 2008 - 2010, Ray E. Barker
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -24,102 +20,62 @@ of Table_Window objects representing the windows found.
|
|||
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# Standard Library modules
|
||||
import re
|
||||
import os
|
||||
|
||||
# pyGTK modules
|
||||
import pygtk
|
||||
import gtk
|
||||
|
||||
# Other Library modules
|
||||
import Xlib
|
||||
import Xlib.display
|
||||
|
||||
# FreePokerTools modules
|
||||
# FPDB modules
|
||||
from TableWindow import Table_Window
|
||||
|
||||
# We might as well do this once and make them globals
|
||||
disp = Xlib.display.Display()
|
||||
root = disp.screen().root
|
||||
name_atom = disp.get_atom("WM_NAME", 1)
|
||||
|
||||
class Table(Table_Window):
|
||||
|
||||
def find_table_parameters(self, search_string):
|
||||
# self.window = None
|
||||
# done_looping = False
|
||||
# for outside in root.query_tree().children:
|
||||
# for inside in outside.query_tree().children:
|
||||
# if done_looping: break
|
||||
# prop = inside.get_property(name_atom, Xlib.Xatom.STRING, 0, 1000)
|
||||
# print prop
|
||||
# if prop is None: continue
|
||||
# if prop.value and re.search(search_string, prop.value):
|
||||
# if self.check_bad_words(prop.value): continue
|
||||
## if inside.get_wm_name() and re.search(search_string, inside.get_wm_name()):
|
||||
## if self.check_bad_words(inside.get_wm_name()):
|
||||
## print "bad word =", inside.get_wm_name()
|
||||
## continue
|
||||
# self.window = inside
|
||||
# self.parent = outside
|
||||
# done_looping = True
|
||||
# break
|
||||
def find_table_parameters(self):
|
||||
|
||||
window_number = None
|
||||
self.number = None
|
||||
for listing in os.popen('xwininfo -root -tree').readlines():
|
||||
if re.search(search_string, listing):
|
||||
# print listing
|
||||
if re.search(self.search_string, listing):
|
||||
mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z0-9\-.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', listing)
|
||||
title = re.sub('\"', '', mo.group(2))
|
||||
if self.check_bad_words(title): continue
|
||||
self.number = int( mo.group(1), 0)
|
||||
self.width = int( mo.group(4) )
|
||||
self.height = int( mo.group(5) )
|
||||
self.x = int( mo.group(6) )
|
||||
self.y = int( mo.group(7) )
|
||||
self.title = re.sub('\"', '', mo.group(2))
|
||||
self.exe = "" # not used?
|
||||
self.hud = None
|
||||
# done_looping = False
|
||||
# for outside in root.query_tree().children:
|
||||
# for inside in outside.query_tree().children:
|
||||
# if done_looping: break
|
||||
# if inside.id == window_number:
|
||||
# self.window = inside
|
||||
# self.parent = outside
|
||||
# done_looping = True
|
||||
# break
|
||||
self.title = title
|
||||
self.hud = None # specified later
|
||||
break
|
||||
|
||||
if window_number is None:
|
||||
if self.number is None:
|
||||
return None
|
||||
|
||||
# my_geo = self.window.get_geometry()
|
||||
# pa_geo = self.parent.get_geometry()
|
||||
#
|
||||
# self.x = pa_geo.x + my_geo.x
|
||||
# self.y = pa_geo.y + my_geo.y
|
||||
# self.width = my_geo.width
|
||||
# self.height = my_geo.height
|
||||
# self.exe = self.window.get_wm_class()[0]
|
||||
# self.title = self.window.get_wm_name()
|
||||
# self.site = ""
|
||||
# self.hud = None
|
||||
self.window = self.get_window_from_xid(self.number)
|
||||
self.parent = self.window.query_tree().parent
|
||||
|
||||
# window_string = str(self.window)
|
||||
mo = re.match('Xlib\.display\.Window\(([\dxabcdef]+)', window_string)
|
||||
if not mo:
|
||||
print "Not matched"
|
||||
self.gdk_handle = None
|
||||
else:
|
||||
self.number = int( mo.group(1), 0)
|
||||
print "number =", self.number
|
||||
# self.gdk_handle = gtk.gdk.window_foreign_new(int(self.number))
|
||||
def get_window_from_xid(self, id):
|
||||
for outside in root.query_tree().children:
|
||||
if outside.id == id:
|
||||
return outside
|
||||
for inside in outside.query_tree().children:
|
||||
if inside.id == id:
|
||||
return inside
|
||||
return None
|
||||
|
||||
def get_geometry(self):
|
||||
try:
|
||||
my_geo = self.window.get_geometry()
|
||||
pa_geo = self.parent.get_geometry()
|
||||
return {'x' : pa_geo.x + my_geo.x,
|
||||
'y' : pa_geo.y + my_geo.y,
|
||||
return {'x' : my_geo.x + pa_geo.x,
|
||||
'y' : my_geo.y + pa_geo.y,
|
||||
'width' : my_geo.width,
|
||||
'height' : my_geo.height
|
||||
}
|
||||
|
@ -127,7 +83,13 @@ class Table(Table_Window):
|
|||
return None
|
||||
|
||||
def get_window_title(self):
|
||||
return self.window.get_wm_name()
|
||||
s = os.popen("xwininfo -wm -id %d" % self.number).read()
|
||||
mo = re.search('"(.+)"', s)
|
||||
try:
|
||||
return mo.group(1)
|
||||
except AttributeError:
|
||||
return None
|
||||
|
||||
|
||||
def topify(self, hud):
|
||||
hud.main_window.gdkhandle = gtk.gdk.window_foreign_new(hud.main_window.window.xid)
|
||||
|
|
122
pyfpdb/fpdb.pyw
122
pyfpdb/fpdb.pyw
|
@ -15,23 +15,14 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
import Queue
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# if path is set to use an old version of python look for a new one:
|
||||
# (does this work in linux?)
|
||||
if os.name == 'nt' and sys.version[0:3] not in ('2.5', '2.6', '2.7') and '-r' not in sys.argv:
|
||||
|
@ -52,7 +43,7 @@ if os.name == 'nt' and sys.version[0:3] not in ('2.5', '2.6', '2.7') and '-r' no
|
|||
else:
|
||||
os.execvpe('python', ('python', 'fpdb.pyw', '-r'), os.environ) # first arg is ignored (name of program being run)
|
||||
else:
|
||||
print _("\npython 2.5 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n")
|
||||
print _("\npython 2.5-2.7 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n")
|
||||
raw_input(_("Press ENTER to continue."))
|
||||
exit()
|
||||
else:
|
||||
|
@ -86,7 +77,7 @@ try:
|
|||
import gtk
|
||||
import pango
|
||||
except:
|
||||
print _("Unable to load PYGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org.")
|
||||
print _("Unable to load PyGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org.")
|
||||
raw_input(_("Press ENTER to continue."))
|
||||
exit()
|
||||
|
||||
|
@ -122,6 +113,7 @@ import GuiTourneyViewer
|
|||
import GuiPositionalStats
|
||||
import GuiAutoImport
|
||||
import GuiGraphViewer
|
||||
import GuiTourneyGraphViewer
|
||||
import GuiSessionViewer
|
||||
import SQL
|
||||
import Database
|
||||
|
@ -129,7 +121,7 @@ import Configuration
|
|||
import Exceptions
|
||||
import Stats
|
||||
|
||||
VERSION = "0.20.906"
|
||||
VERSION = "0.20.906 plus git"
|
||||
|
||||
|
||||
class fpdb:
|
||||
|
@ -436,7 +428,7 @@ class fpdb:
|
|||
diaHudTable.vbox.add(label)
|
||||
label.show()
|
||||
|
||||
label=gtk.Label(_("To configure things like colouring you will still have to manually edit your HUD_config.xml."))
|
||||
label=gtk.Label(_("To configure things like colouring you will still have to use the Preferences dialogue or manually edit your HUD_config.xml."))
|
||||
diaHudTable.vbox.add(label)
|
||||
label.show()
|
||||
|
||||
|
@ -544,8 +536,9 @@ class fpdb:
|
|||
#lock_released = False
|
||||
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"))
|
||||
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.\nThis may take a while.")
|
||||
diastring = _("Please confirm that you want to (re-)create the tables.") \
|
||||
+ (_(" If there already are tables in the database %s on %s they will be deleted and you will have to re-import your histories.\n") % (self.db.database, self.db.host)) \
|
||||
+ _("This may take a while.")
|
||||
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)
|
||||
|
@ -755,24 +748,6 @@ class fpdb:
|
|||
def dia_save_profile(self, widget, data=None):
|
||||
self.warning_box(_("Unimplemented: Save Profile (try saving a HUD layout, that should do it)"))
|
||||
|
||||
def diaSetupWizard(self, path):
|
||||
diaSetupWizard = gtk.Dialog(title=_("Fatal Error - Config File Missing"), parent=None, flags=0, buttons=(gtk.STOCK_QUIT,gtk.RESPONSE_OK))
|
||||
|
||||
label = gtk.Label(_("Please copy the config file from the docs folder to:"))
|
||||
diaSetupWizard.vbox.add(label)
|
||||
label.show()
|
||||
|
||||
label = gtk.Label(path)
|
||||
diaSetupWizard.vbox.add(label)
|
||||
label.show()
|
||||
|
||||
label = gtk.Label(_("and edit it according to the install documentation at http://fpdb.sourceforge.net"))
|
||||
diaSetupWizard.vbox.add(label)
|
||||
label.show()
|
||||
|
||||
response = diaSetupWizard.run()
|
||||
sys.exit(1)
|
||||
|
||||
def get_menu(self, window):
|
||||
"""returns the menu for this program"""
|
||||
fpdbmenu = """
|
||||
|
@ -795,6 +770,7 @@ class fpdb:
|
|||
<menuitem action="autoimp"/>
|
||||
<menuitem action="hudConfigurator"/>
|
||||
<menuitem action="graphs"/>
|
||||
<menuitem action="tourneygraphs"/>
|
||||
<menuitem action="ringplayerstats"/>
|
||||
<menuitem action="tourneyplayerstats"/>
|
||||
<menuitem action="tourneyviewer"/>
|
||||
|
@ -834,6 +810,7 @@ class fpdb:
|
|||
('autoimp', None, _('_Auto Import and HUD'), _('<control>A'), 'Auto Import and HUD', self.tab_auto_import),
|
||||
('hudConfigurator', None, _('_HUD Configurator'), _('<control>H'), 'HUD Configurator', self.diaHudConfigurator),
|
||||
('graphs', None, _('_Graphs'), _('<control>G'), 'Graphs', self.tabGraphViewer),
|
||||
('tourneygraphs', None, _('Tourney Graphs'), None, 'TourneyGraphs', self.tabTourneyGraphViewer),
|
||||
('ringplayerstats', None, _('Ring _Player Stats (tabulated view, not on pgsql)'), _('<control>P'), 'Ring Player Stats (tabulated view)', self.tab_ring_player_stats),
|
||||
('tourneyplayerstats', None, _('_Tourney Player Stats (tabulated view, not on pgsql)'), _('<control>T'), 'Tourney Player Stats (tabulated view, mysql only)', self.tab_tourney_player_stats),
|
||||
('tourneyviewer', None, _('Tourney _Viewer'), None, 'Tourney Viewer)', self.tab_tourney_viewer_stats),
|
||||
|
@ -876,8 +853,7 @@ class fpdb:
|
|||
if self.config.example_copy:
|
||||
self.info_box(_("Config file")
|
||||
, _("has been created at:\n%s.\n") % self.config.file
|
||||
+ _("Edit your screen_name and hand history path in the supported_sites ")
|
||||
+ _("section of the Preferences window (Main menu) before trying to import hands."))
|
||||
+ _("Edit your screen_name and hand history path in the supported_sites section of the Preferences window (Main menu) before trying to import hands."))
|
||||
self.settings = {}
|
||||
self.settings['global_lock'] = self.lock
|
||||
if (os.sep=="/"):
|
||||
|
@ -906,10 +882,10 @@ class fpdb:
|
|||
err_msg = _("MySQL client reports: 2002 or 2003 error. Unable to connect - ") \
|
||||
+ _("Please check that the MySQL service has been started")
|
||||
except Exceptions.FpdbPostgresqlAccessDenied:
|
||||
err_msg = _("Postgres Server reports: Access denied. Are your permissions set correctly?")
|
||||
err_msg = _("PostgreSQL Server reports: Access denied. Are your permissions set correctly?")
|
||||
except Exceptions.FpdbPostgresqlNoDatabase:
|
||||
err_msg = _("Postgres client reports: Unable to connect - ") \
|
||||
+ _("Please check that the Postgres service has been started")
|
||||
err_msg = _("PostgreSQL client reports: Unable to connect - ") \
|
||||
+ _("Please check that the PostgreSQL service has been started")
|
||||
if err_msg is not None:
|
||||
self.db = None
|
||||
self.warning_box(err_msg)
|
||||
|
@ -966,10 +942,10 @@ class fpdb:
|
|||
def obtain_global_lock(self, source):
|
||||
ret = self.lock.acquire(source=source) # will return false if lock is already held
|
||||
if ret:
|
||||
print _("\nGlobal lock taken by"), source
|
||||
print (_("\nGlobal lock taken by %s") % source)
|
||||
self.lockTakenBy=source
|
||||
else:
|
||||
print _("\nFailed to get global lock, it is currently held by"), source
|
||||
print (_("\nFailed to get global lock, it is currently held by %s") % source)
|
||||
return ret
|
||||
# need to release it later:
|
||||
# self.lock.release()
|
||||
|
@ -1014,7 +990,7 @@ class fpdb:
|
|||
|
||||
def tab_bulk_import(self, widget, data=None):
|
||||
"""opens a tab for bulk importing"""
|
||||
new_import_thread = GuiBulkImport.GuiBulkImport(self.settings, self.config, self.sql)
|
||||
new_import_thread = GuiBulkImport.GuiBulkImport(self.settings, self.config, self.sql, self.window)
|
||||
self.threads.append(new_import_thread)
|
||||
bulk_tab=new_import_thread.get_vbox()
|
||||
self.add_and_display_tab(bulk_tab, _("Bulk Import"))
|
||||
|
@ -1084,6 +1060,13 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
|
|||
gv_tab = new_gv_thread.get_vbox()
|
||||
self.add_and_display_tab(gv_tab, _("Graphs"))
|
||||
|
||||
def tabTourneyGraphViewer(self, widget, data=None):
|
||||
"""opens a graph viewer tab"""
|
||||
new_gv_thread = GuiTourneyGraphViewer.GuiTourneyGraphViewer(self.sql, self.config, self.window)
|
||||
self.threads.append(new_gv_thread)
|
||||
gv_tab = new_gv_thread.get_vbox()
|
||||
self.add_and_display_tab(gv_tab, _("Tourney Graphs"))
|
||||
|
||||
def __init__(self):
|
||||
# no more than 1 process can this lock at a time:
|
||||
self.lock = interlocks.InterProcessLock(name="fpdb_global_lock")
|
||||
|
@ -1134,8 +1117,8 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
|
|||
|
||||
if not options.errorsToConsole:
|
||||
fileName = os.path.join(self.config.dir_log, 'fpdb-errors.txt')
|
||||
print _("\nNote: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n") \
|
||||
+ self.config.dir_log + _("\nAny major error will be reported there _only_.\n")
|
||||
print (_("\nNote: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in: %s") % self.config.dir_log) \
|
||||
+ _("\nAny major error will be reported there _only_.\n")
|
||||
errorFile = open(fileName, 'w', 0)
|
||||
sys.stderr = errorFile
|
||||
|
||||
|
@ -1232,6 +1215,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
|
|||
return response
|
||||
|
||||
def validate_config(self):
|
||||
# can this be removed now?
|
||||
if self.config.get_import_parameters().get('saveStarsHH'):
|
||||
hhbase = self.config.get_import_parameters().get("hhArchiveBase")
|
||||
hhbase = os.path.expanduser(hhbase)
|
||||
|
@ -1239,7 +1223,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
|
|||
hhdir = hhbase
|
||||
if not os.path.isdir(hhdir):
|
||||
diapath = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING, buttons=(gtk.BUTTONS_YES_NO), message_format="Setup hh dir")
|
||||
diastring = _("WARNING: Unable to find output hh directory %s\n\n Press YES to create this directory, or NO to select a new one.") % hhdir
|
||||
diastring = _("WARNING: Unable to find output hand history directory %s\n\n Press YES to create this directory, or NO to select a new one.") % hhdir
|
||||
diapath.format_secondary_text(diastring)
|
||||
response = diapath.run()
|
||||
diapath.destroy()
|
||||
|
@ -1251,6 +1235,50 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
|
|||
elif response == gtk.RESPONSE_NO:
|
||||
self.select_hhArchiveBase()
|
||||
|
||||
# check if sites in config file are in DB
|
||||
for site in self.config.get_supported_sites(True): # get site names from config file
|
||||
try:
|
||||
self.config.get_site_id(site) # and check against list from db
|
||||
except KeyError as exc:
|
||||
log.warning("site %s missing from db" % site)
|
||||
dia = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING, buttons=(gtk.BUTTONS_YES_NO), message_format="Unknown Site")
|
||||
diastring = _("WARNING: Unable to find site '%s'\n\nPress YES to add this site to the database.") % site
|
||||
dia.format_secondary_text(diastring)
|
||||
response = dia.run()
|
||||
dia.destroy()
|
||||
if response == gtk.RESPONSE_YES:
|
||||
self.add_site(site)
|
||||
|
||||
def add_site(self, site):
|
||||
dia = gtk.Dialog( title="Add Site", parent=self.window
|
||||
, flags=gtk.DIALOG_DESTROY_WITH_PARENT
|
||||
, buttons=(gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT
|
||||
,gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT)
|
||||
)
|
||||
|
||||
h = gtk.HBox()
|
||||
dia.vbox.pack_start(h, padding=5) # sets horizontal padding
|
||||
label = gtk.Label( _("\nEnter short code for %s\n(up to 3 characters):\n") % site )
|
||||
h.pack_start(label, padding=20) # sets horizontal padding
|
||||
#label.set_alignment(1.0, 0.5)
|
||||
|
||||
h = gtk.HBox()
|
||||
dia.vbox.add(h)
|
||||
e_code = gtk.Entry(max=3)
|
||||
e_code.set_width_chars(5)
|
||||
h.pack_start(e_code, True, False, padding=5)
|
||||
|
||||
label = gtk.Label( "" )
|
||||
dia.vbox.add(label) # create space below entry, maybe padding arg above makes this redundant?
|
||||
|
||||
dia.show_all()
|
||||
response = dia.run()
|
||||
site_code = e_code.get_text()
|
||||
if response == gtk.RESPONSE_ACCEPT and site_code is not None and site_code != "":
|
||||
self.db.add_site(site, site_code)
|
||||
self.db.commit()
|
||||
dia.destroy()
|
||||
|
||||
def main(self):
|
||||
gtk.main()
|
||||
return 0
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#In the "official" distribution you can find the license in agpl-3.0.txt.
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# Standard Library modules
|
||||
|
||||
import os # todo: remove this once import_dir is in fpdb_import
|
||||
|
@ -35,18 +38,6 @@ log = logging.getLogger("importer")
|
|||
import pygtk
|
||||
import gtk
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
# fpdb/FreePokerTools modules
|
||||
import Database
|
||||
import Configuration
|
||||
|
@ -70,12 +61,13 @@ else:
|
|||
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
|
||||
|
||||
class Importer:
|
||||
def __init__(self, caller, settings, config, sql = None):
|
||||
def __init__(self, caller, settings, config, sql = None, parent = None):
|
||||
"""Constructor"""
|
||||
self.settings = settings
|
||||
self.caller = caller
|
||||
self.config = config
|
||||
self.sql = sql
|
||||
self.parent = parent
|
||||
|
||||
#log = Configuration.get_logger("logging.conf", "importer", log_dir=self.config.dir_log)
|
||||
self.filelist = {}
|
||||
|
@ -102,6 +94,7 @@ class Importer:
|
|||
self.settings.setdefault("dropIndexes", "don't drop")
|
||||
self.settings.setdefault("dropHudCache", "don't drop")
|
||||
self.settings.setdefault("starsArchive", False)
|
||||
self.settings.setdefault("ftpArchive", False)
|
||||
self.settings.setdefault("testData", False)
|
||||
self.settings.setdefault("cacheHHC", False)
|
||||
|
||||
|
@ -148,6 +141,9 @@ class Importer:
|
|||
def setStarsArchive(self, value):
|
||||
self.settings['starsArchive'] = value
|
||||
|
||||
def setFTPArchive(self, value):
|
||||
self.settings['ftpArchive'] = value
|
||||
|
||||
def setPrintTestData(self, value):
|
||||
self.settings['testData'] = value
|
||||
|
||||
|
@ -224,7 +220,7 @@ class Importer:
|
|||
#print " adding file ", file
|
||||
self.addImportFile(os.path.join(dir, file), site, filter)
|
||||
else:
|
||||
log.warning(_("Attempted to add non-directory: '%s' as an import directory") % str(dir))
|
||||
log.warning(_("Attempted to add non-directory '%s' as an import directory") % str(dir))
|
||||
|
||||
def runImport(self):
|
||||
""""Run full import on self.filelist. This is called from GuiBulkImport.py"""
|
||||
|
@ -301,7 +297,14 @@ class Importer:
|
|||
totpartial = 0
|
||||
toterrors = 0
|
||||
tottime = 0
|
||||
|
||||
#prepare progress popup window
|
||||
ProgressDialog = ProgressBar(len(self.filelist), self.parent)
|
||||
|
||||
for file in self.filelist:
|
||||
|
||||
ProgressDialog.progress_update()
|
||||
|
||||
(stored, duplicates, partial, errors, ttime) = self.import_file_dict(db, file
|
||||
,self.filelist[file][0], self.filelist[file][1], q)
|
||||
totstored += stored
|
||||
|
@ -309,10 +312,13 @@ class Importer:
|
|||
totpartial += partial
|
||||
toterrors += errors
|
||||
|
||||
del ProgressDialog
|
||||
|
||||
for i in xrange( self.settings['threads'] ):
|
||||
print _("sending finish msg qlen ="), q.qsize()
|
||||
print _("sending finish message queue length ="), q.qsize()
|
||||
db.send_finish_msg(q)
|
||||
|
||||
|
||||
return (totstored, totdups, totpartial, toterrors)
|
||||
# end def importFiles
|
||||
|
||||
|
@ -384,7 +390,7 @@ class Importer:
|
|||
#rulog.writelines("path exists ")
|
||||
if file in self.updatedsize: # we should be able to assume that if we're in size, we're in time as well
|
||||
if stat_info.st_size > self.updatedsize[file] or stat_info.st_mtime > self.updatedtime[file]:
|
||||
# print "file",counter," updated", os.path.basename(file), stat_info.st_size, self.updatedsize[file], stat_info.st_mtime, self.updatedtime[file]
|
||||
# print "file",file," updated", os.path.basename(file), stat_info.st_size, self.updatedsize[file], stat_info.st_mtime, self.updatedtime[file]
|
||||
try:
|
||||
if not os.path.isdir(file):
|
||||
self.caller.addText("\n"+os.path.basename(file))
|
||||
|
@ -436,9 +442,9 @@ class Importer:
|
|||
|
||||
# Load filter, process file, pass returned filename to import_fpdb_file
|
||||
if self.settings['threads'] > 0 and self.writeq is not None:
|
||||
log.info(_("Converting ") + file + " (" + str(q.qsize()) + ")")
|
||||
log.info((_("Converting %s") % file) + " (" + str(q.qsize()) + ")")
|
||||
else:
|
||||
log.info(_("Converting ") + file)
|
||||
log.info(_("Converting %s") % file)
|
||||
hhbase = self.config.get_import_parameters().get("hhArchiveBase")
|
||||
hhbase = os.path.expanduser(hhbase)
|
||||
hhdir = os.path.join(hhbase,site)
|
||||
|
@ -457,7 +463,9 @@ class Importer:
|
|||
idx = self.pos_in_file[file]
|
||||
else:
|
||||
self.pos_in_file[file] = 0
|
||||
hhc = obj(self.config, in_path = file, out_path = out_path, index = idx, starsArchive = self.settings['starsArchive'])
|
||||
hhc = obj( self.config, in_path = file, out_path = out_path, index = idx
|
||||
, starsArchive = self.settings['starsArchive'], ftpArchive = self.settings['ftpArchive'],
|
||||
sitename = site )
|
||||
if hhc.getStatus():
|
||||
handlist = hhc.getProcessedHands()
|
||||
self.pos_in_file[file] = hhc.getLastCharacterRead()
|
||||
|
@ -527,5 +535,81 @@ class Importer:
|
|||
logfile.write("\n")
|
||||
logfile.close()
|
||||
|
||||
|
||||
class ProgressBar:
|
||||
|
||||
"""
|
||||
Popup window to show progress
|
||||
|
||||
Init method sets up total number of expected iterations
|
||||
If no parent is passed to init, command line
|
||||
mode assumed, and does not create a progress bar
|
||||
"""
|
||||
|
||||
def __del__(self):
|
||||
|
||||
if self.parent:
|
||||
self.progress.destroy()
|
||||
|
||||
|
||||
def progress_update(self):
|
||||
|
||||
if not self.parent:
|
||||
#nothing to do
|
||||
return
|
||||
|
||||
self.fraction += 1
|
||||
#update sum if fraction exceeds expected total number of iterations
|
||||
if self.fraction > self.sum:
|
||||
sum = self.fraction
|
||||
|
||||
#progress bar total set to 1 plus the number of items,to prevent it
|
||||
#reaching 100% prior to processing fully completing
|
||||
|
||||
progress_percent = float(self.fraction) / (float(self.sum) + 1.0)
|
||||
progress_text = (self.title + " "
|
||||
+ str(self.fraction) + " / " + str(self.sum))
|
||||
|
||||
self.pbar.set_fraction(progress_percent)
|
||||
self.pbar.set_text(progress_text)
|
||||
|
||||
|
||||
def __init__(self, sum, parent):
|
||||
|
||||
self.parent = parent
|
||||
if not self.parent:
|
||||
#no parent is passed, assume this is being run from the
|
||||
#command line, so return immediately
|
||||
return
|
||||
|
||||
self.fraction = 0
|
||||
self.sum = sum
|
||||
self.title = _("Importing")
|
||||
|
||||
self.progress = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||
|
||||
self.progress.set_resizable(False)
|
||||
self.progress.set_modal(True)
|
||||
self.progress.set_transient_for(self.parent)
|
||||
self.progress.set_decorated(True)
|
||||
self.progress.set_deletable(False)
|
||||
self.progress.set_title(self.title)
|
||||
|
||||
vbox = gtk.VBox(False, 5)
|
||||
vbox.set_border_width(10)
|
||||
self.progress.add(vbox)
|
||||
vbox.show()
|
||||
|
||||
align = gtk.Alignment(0.5, 0.5, 0, 0)
|
||||
vbox.pack_start(align, True, True, 2)
|
||||
align.show()
|
||||
|
||||
self.pbar = gtk.ProgressBar()
|
||||
align.add(self.pbar)
|
||||
self.pbar.show()
|
||||
|
||||
self.progress.show()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print _("CLI for fpdb_import is now available as CliFpdb.py")
|
||||
|
|
307
pyfpdb/iPokerToFpdb.py
Normal file
307
pyfpdb/iPokerToFpdb.py
Normal file
|
@ -0,0 +1,307 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright 2010, Carl Gherardi
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
########################################################################
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
# This code is based on CarbonToFpdb.py by Matthew Boss
|
||||
#
|
||||
# TODO:
|
||||
#
|
||||
# -- No support for tournaments (see also the last item below)
|
||||
# -- Assumes that the currency of ring games is USD
|
||||
# -- No support for a bring-in or for antes (is the latter in fact unnecessary
|
||||
# for hold 'em on Carbon?)
|
||||
# -- hand.maxseats can only be guessed at
|
||||
# -- The last hand in a history file will often be incomplete and is therefore
|
||||
# rejected
|
||||
# -- Is behaviour currently correct when someone shows an uncalled hand?
|
||||
# -- Information may be lost when the hand ID is converted from the native form
|
||||
# xxxxxxxx-yyy(y*) to xxxxxxxxyyy(y*) (in principle this should be stored as
|
||||
# a string, but the database does not support this). Is there a possibility
|
||||
# of collision between hand IDs that ought to be distinct?
|
||||
# -- Cannot parse tables that run it twice (nor is this likely ever to be
|
||||
# possible)
|
||||
# -- Cannot parse hands in which someone is all in in one of the blinds. Until
|
||||
# this is corrected tournaments will be unparseable
|
||||
|
||||
import sys
|
||||
import logging
|
||||
from HandHistoryConverter import *
|
||||
from decimal import Decimal
|
||||
|
||||
|
||||
class iPoker(HandHistoryConverter):
|
||||
|
||||
sitename = "iPoker"
|
||||
filetype = "text"
|
||||
codepage = "cp1252"
|
||||
siteID = 13
|
||||
|
||||
# Static regexes
|
||||
re_SplitHands = re.compile(r'</game>')
|
||||
re_TailSplitHands = re.compile(r'(</game>)')
|
||||
re_GameInfo = re.compile(r'<gametype>(?P<GAME>[a-zA-Z0-9 ]+) \$(?P<SB>[.0-9]+)/\$(?P<BB>[.0-9]+)</gametype>', re.MULTILINE)
|
||||
re_HandInfo = re.compile(r'gamecode="(?P<HID>[0-9]+)">\s+<general>\s+<startdate>(?P<DATETIME>[-: 0-9]+)</startdate>', re.MULTILINE)
|
||||
re_Button = re.compile(r'<players dealer="(?P<BUTTON>[0-9]+)">')
|
||||
re_PlayerInfo = re.compile(r'<player seat="(?P<SEAT>[0-9]+)" name="(?P<PNAME>[^"]+)" chips="\$(?P<CASH>[.0-9]+)" dealer="(?P<DEALTIN>(0|1))" (?P<WIN>win="\$[^"]+") (bet="\$(?P<BET>[^"]+))?', re.MULTILINE)
|
||||
re_Board = re.compile(r'<cards type="COMMUNITY" cards="(?P<CARDS>[^"]+)"', re.MULTILINE)
|
||||
re_EndOfHand = re.compile(r'<round id="END_OF_GAME"', re.MULTILINE)
|
||||
|
||||
re_PostSB = re.compile(r'<event sequence="[0-9]+" type="(SMALL_BLIND|RETURN_BLIND)" player="(?P<PSEAT>[0-9])" amount="(?P<SB>[.0-9]+)"/>', re.MULTILINE)
|
||||
re_PostBB = re.compile(r'<event sequence="[0-9]+" type="(BIG_BLIND|INITIAL_BLIND)" player="(?P<PSEAT>[0-9])" amount="(?P<BB>[.0-9]+)"/>', re.MULTILINE)
|
||||
re_PostBoth = re.compile(r'<event sequence="[0-9]+" type="(RETURN_BLIND)" player="(?P<PSEAT>[0-9])" amount="(?P<SBBB>[.0-9]+)"/>', re.MULTILINE)
|
||||
re_HeroCards = re.compile(r'<cards type="HOLE" cards="(?P<CARDS>.+)" player="(?P<PSEAT>[0-9])"', re.MULTILINE)
|
||||
re_Action = re.compile(r'<action no="[0-9]+" player="(?P<PNAME>[^"]+)" type="(?P<ATYPE>\d+)" sum="\$(?P<BET>[.0-9]+)"', re.MULTILINE)
|
||||
re_Ante = re.compile(r'<action no="[0-9]+" player="(?P<PNAME>[^"]+)" type="(?P<ATYPE>15)" sum="\$(?P<BET>[.0-9]+)" cards="', re.MULTILINE)
|
||||
re_ShowdownAction = re.compile(r'<cards type="SHOWN" cards="(?P<CARDS>..,..)" player="(?P<PSEAT>[0-9])"/>', re.MULTILINE)
|
||||
re_CollectPot = re.compile(r'<winner amount="(?P<POT>[.0-9]+)" uncalled="(true|false)" potnumber="[0-9]+" player="(?P<PSEAT>[0-9])"', re.MULTILINE)
|
||||
re_SitsOut = re.compile(r'<event sequence="[0-9]+" type="SIT_OUT" player="(?P<PSEAT>[0-9])"/>', re.MULTILINE)
|
||||
re_ShownCards = re.compile(r'<cards type="(SHOWN|MUCKED)" cards="(?P<CARDS>..,..)" player="(?P<PSEAT>[0-9])"/>', re.MULTILINE)
|
||||
|
||||
def compilePlayerRegexs(self, hand):
|
||||
pass
|
||||
|
||||
def playerNameFromSeatNo(self, seatNo, hand):
|
||||
# This special function is required because Carbon Poker records
|
||||
# actions by seat number, not by the player's name
|
||||
for p in hand.players:
|
||||
if p[0] == int(seatNo):
|
||||
return p[1]
|
||||
|
||||
def readSupportedGames(self):
|
||||
return [
|
||||
["ring", "stud", "fl"],
|
||||
#["ring", "hold", "nl"],
|
||||
#["tour", "hold", "nl"]
|
||||
]
|
||||
|
||||
def determineGameType(self, handText):
|
||||
"""return dict with keys/values:
|
||||
'type' in ('ring', 'tour')
|
||||
'limitType' in ('nl', 'cn', 'pl', 'cp', 'fl')
|
||||
'base' in ('hold', 'stud', 'draw')
|
||||
'category' in ('holdem', 'omahahi', omahahilo', 'razz', 'studhi', 'studhilo', 'fivedraw', '27_1draw', '27_3draw', 'badugi')
|
||||
'hilo' in ('h','l','s')
|
||||
'smallBlind' int?
|
||||
'bigBlind' int?
|
||||
'smallBet'
|
||||
'bigBet'
|
||||
'currency' in ('USD', 'EUR', 'T$', <countrycode>)
|
||||
or None if we fail to get the info """
|
||||
|
||||
m = self.re_GameInfo.search(handText)
|
||||
if not m:
|
||||
# Information about the game type appears only at the beginning of
|
||||
# a hand history file; hence it is not supplied with the second
|
||||
# and subsequent hands. In these cases we use the value previously
|
||||
# stored.
|
||||
try:
|
||||
self.info
|
||||
return self.info
|
||||
except AttributeError:
|
||||
tmp = handText[0:100]
|
||||
log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp)
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
|
||||
|
||||
self.info = {}
|
||||
mg = m.groupdict()
|
||||
#print "DEBUG: m.groupdict(): %s" % mg
|
||||
|
||||
limits = { 'No Limit':'nl', 'Limit':'fl' }
|
||||
games = { # base, category
|
||||
'7 Card Stud L' : ('stud','studhilo'),
|
||||
}
|
||||
|
||||
if 'LIMIT' in mg:
|
||||
self.info['limitType'] = limits[mg['LIMIT']]
|
||||
self.info['limitType'] = 'fl'
|
||||
if 'GAME' in mg:
|
||||
(self.info['base'], self.info['category']) = games[mg['GAME']]
|
||||
if 'SB' in mg:
|
||||
self.info['sb'] = mg['SB']
|
||||
if 'BB' in mg:
|
||||
self.info['bb'] = mg['BB']
|
||||
if mg['GAME'] == 'Holdem Tournament':
|
||||
self.info['type'] = 'tour'
|
||||
self.info['currency'] = 'T$'
|
||||
else:
|
||||
self.info['type'] = 'ring'
|
||||
self.info['currency'] = 'USD'
|
||||
|
||||
return self.info
|
||||
|
||||
def readHandInfo(self, hand):
|
||||
m = self.re_HandInfo.search(hand.handText)
|
||||
if m is None:
|
||||
logging.error(_("Didn't match re_HandInfo"))
|
||||
logging.info(hand.handText)
|
||||
raise FpdbParseError(_("Didn't match re_HandInfo"))
|
||||
mg = m.groupdict()
|
||||
#print "DEBUG: m.groupdict(): %s" % mg
|
||||
hand.handid = m.group('HID')
|
||||
#hand.tablename = m.group('TABLE')[:-1]
|
||||
hand.maxseats = None
|
||||
hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), '%Y-%m-%d %H:%M:%S')
|
||||
|
||||
def readPlayerStacks(self, hand):
|
||||
print "DEBUG: readPlayerStacks"
|
||||
m = self.re_PlayerInfo.finditer(hand.handText)
|
||||
for a in m:
|
||||
ag = a.groupdict()
|
||||
#print "DEBUG: re_PlayerInfo: %s" %ag
|
||||
seatno = int(a.group('SEAT'))
|
||||
# It may be necessary to adjust 'hand.maxseats', which is an
|
||||
# educated guess, starting with 2 (indicating a heads-up table) and
|
||||
# adjusted upwards in steps to 6, then 9, then 10. An adjustment is
|
||||
# made whenever a player is discovered whose seat number is
|
||||
# currently above the maximum allowable for the table.
|
||||
if seatno >= hand.maxseats:
|
||||
if seatno > 8:
|
||||
hand.maxseats = 10
|
||||
elif seatno > 5:
|
||||
hand.maxseats = 9
|
||||
else:
|
||||
hand.maxseats = 6
|
||||
|
||||
hand.addPlayer(seatno, a.group('PNAME'), a.group('CASH'))
|
||||
|
||||
def markStreets(self, hand):
|
||||
if hand.gametype['base'] in ('stud'):
|
||||
m = re.search(r'(?P<ANTES>.+(?=<round no="2">)|.+)'
|
||||
r'(<round no="2">(?P<THIRD>.+(?=<round no="3">)|.+))?'
|
||||
r'(<round no="3">(?P<FOURTH>.+(?=<round no="4">)|.+))?'
|
||||
r'(<round no="4">(?P<FIFTH>.+(?=<round no="5">)|.+))?'
|
||||
r'(<round no="5">(?P<SIXTH>.+(?=<round no="6">)|.+))?'
|
||||
r'(<round no="6">(?P<SEVENTH>.+))?', hand.handText,re.DOTALL)
|
||||
|
||||
hand.addStreets(m)
|
||||
|
||||
def readCommunityCards(self, hand, street):
|
||||
m = self.re_Board.search(hand.streets[street])
|
||||
if street == 'FLOP':
|
||||
hand.setCommunityCards(street, m.group('CARDS').split(','))
|
||||
elif street in ('TURN','RIVER'):
|
||||
hand.setCommunityCards(street, [m.group('CARDS').split(',')[-1]])
|
||||
|
||||
def readAntes(self, hand):
|
||||
m = self.re_Ante.finditer(hand.handText)
|
||||
for a in m:
|
||||
#print "DEBUG: addAnte(%s, %s)" %(a.group('PNAME'), a.group('BET'))
|
||||
hand.addAnte(a.group('PNAME'), a.group('BET'))
|
||||
|
||||
def readBringIn(self, hand):
|
||||
pass
|
||||
|
||||
def readBlinds(self, hand):
|
||||
m = self.re_PostSB.search(hand.handText)
|
||||
hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB'))
|
||||
for a in self.re_PostBB.finditer(hand.handText):
|
||||
hand.addBlind(m.group('PNAME'), 'big blind', a.group('BB'))
|
||||
#for a in self.re_PostBoth.finditer(hand.handText):
|
||||
|
||||
def readButton(self, hand):
|
||||
hand.buttonpos = int(self.re_Button.search(hand.handText).group('BUTTON'))
|
||||
|
||||
def readHeroCards(self, hand):
|
||||
m = self.re_HeroCards.search(hand.handText)
|
||||
if m:
|
||||
hand.hero = self.playerNameFromSeatNo(m.group('PSEAT'), hand)
|
||||
cards = m.group('CARDS').split(',')
|
||||
hand.addHoleCards('PREFLOP', hand.hero, closed=cards, shown=False,
|
||||
mucked=False, dealt=True)
|
||||
|
||||
def readAction(self, hand, street):
|
||||
logging.debug("readAction (%s)" % street)
|
||||
m = self.re_Action.finditer(hand.streets[street])
|
||||
for action in m:
|
||||
ag = action.groupdict()
|
||||
#print "DEBUG: action.groupdict: %s" % ag
|
||||
logging.debug("%s %s" % (action.group('ATYPE'),
|
||||
action.groupdict()))
|
||||
if action.group('ATYPE') == 'RAISE': # Still no example for raise (i think?)
|
||||
hand.addCallandRaise(street, player, action.group('BET'))
|
||||
elif action.group('ATYPE') == '3': # Believe this is 'call'
|
||||
#print "DEBUG: addCall(%s, %s, %s)" %(street, action.group('PNAME'), action.group('BET'))
|
||||
hand.addCall(street, action.group('PNAME'), action.group('BET'))
|
||||
elif action.group('ATYPE') == '5':
|
||||
#print "DEBUG: addBet(%s, %s, %s)" %(street, action.group('PNAME'), action.group('BET'))
|
||||
hand.addBet(street, action.group('PNAME'), action.group('BET'))
|
||||
elif action.group('ATYPE') == '0': # Belive this is 'fold'
|
||||
#print "DEBUG: addFold(%s, %s)" %(street, action.group('PNAME'))
|
||||
hand.addFold(street, action.group('PNAME'))
|
||||
elif action.group('ATYPE') == '4':
|
||||
#print "DEBUG: addCheck(%s, %s)" %(street, action.group('PNAME'))
|
||||
hand.addCheck(street, action.group('PNAME'))
|
||||
#elif action.group('ATYPE') == 'ALL_IN':
|
||||
# hand.addAllIn(street, player, action.group('BET'))
|
||||
elif action.group('ATYPE') == '16': #BringIn
|
||||
#print "DEBUG: addBringIn(%s, %s)" %(action.group('PNAME'), action.group('BET'))
|
||||
hand.addBringIn(action.group('PNAME'), action.group('BET'))
|
||||
else:
|
||||
logging.error(_("Unimplemented readAction: %s" % (ag)))
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
for shows in self.re_ShowdownAction.finditer(hand.handText):
|
||||
cards = shows.group('CARDS').split(',')
|
||||
hand.addShownCards(cards,
|
||||
self.playerNameFromSeatNo(shows.group('PSEAT'),
|
||||
hand))
|
||||
|
||||
def readCollectPot(self, hand):
|
||||
pots = [Decimal(0) for n in range(hand.maxseats)]
|
||||
for m in self.re_CollectPot.finditer(hand.handText):
|
||||
pots[int(m.group('PSEAT'))] += Decimal(m.group('POT'))
|
||||
# Regarding the processing logic for "committed", see Pot.end() in
|
||||
# Hand.py
|
||||
committed = sorted([(v,k) for (k,v) in hand.pot.committed.items()])
|
||||
for p in range(hand.maxseats):
|
||||
pname = self.playerNameFromSeatNo(p, hand)
|
||||
if committed[-1][1] == pname:
|
||||
pots[p] -= committed[-1][0] - committed[-2][0]
|
||||
if pots[p] > 0:
|
||||
hand.addCollectPot(player=pname, pot=pots[p])
|
||||
|
||||
def readShownCards(self, hand):
|
||||
for m in self.re_ShownCards.finditer(hand.handText):
|
||||
cards = m.group('CARDS').split(',')
|
||||
hand.addShownCards(cards=cards, player=self.playerNameFromSeatNo(m.group('PSEAT'), hand))
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="ipath", help=_("parse input hand history"), default="-")
|
||||
parser.add_option("-o", "--output", dest="opath", help=_("output translation to"), default="-")
|
||||
parser.add_option("-f", "--follow", dest="follow", help=_("follow (tail -f) the input"), action="store_true", default=False)
|
||||
parser.add_option("-q", "--quiet", action="store_const", const=logging.CRITICAL, dest="verbosity", default=logging.INFO)
|
||||
parser.add_option("-v", "--verbose", action="store_const", const=logging.INFO, dest="verbosity")
|
||||
parser.add_option("--vv", action="store_const", const=logging.DEBUG, dest="verbosity")
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
LOG_FILENAME = './logging.out'
|
||||
logging.basicConfig(filename=LOG_FILENAME, level=options.verbosity)
|
||||
|
||||
e = Carbon(in_path = options.ipath,
|
||||
out_path = options.opath,
|
||||
follow = options.follow,
|
||||
autostart = True)
|
||||
|
|
@ -3,6 +3,9 @@
|
|||
# Code from http://ender.snowburst.org:4747/~jjohns/interlocks.py
|
||||
# Thanks JJ!
|
||||
|
||||
import L10n
|
||||
_ = L10n.get_translation()
|
||||
|
||||
import sys
|
||||
import os, os.path
|
||||
import subprocess
|
||||
|
@ -10,18 +13,6 @@ import time
|
|||
import signal
|
||||
import base64
|
||||
|
||||
import locale
|
||||
lang=locale.getdefaultlocale()[0][0:2]
|
||||
if lang=="en":
|
||||
def _(string): return string
|
||||
else:
|
||||
import gettext
|
||||
try:
|
||||
trans = gettext.translation("fpdb", localedir="locale", languages=[lang])
|
||||
trans.install()
|
||||
except IOError:
|
||||
def _(string): return string
|
||||
|
||||
InterProcessLock = None
|
||||
|
||||
"""
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
cd ..
|
||||
python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po
|
||||
python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/de/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
cd ..
|
||||
python /usr/share/doc/python-2.7/examples/Tools/i18n/pygettext.py --output-dir=locale --default-domain=fpdb --output=fpdb-en_GB.po *.py*
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
16
pyfpdb/locale/localise.sh
Executable file
16
pyfpdb/locale/localise.sh
Executable file
|
@ -0,0 +1,16 @@
|
|||
cd ..
|
||||
rm *.pyc
|
||||
|
||||
echo "creating template po file"
|
||||
python /usr/share/doc/python-2.7/examples/Tools/i18n/pygettext.py --output-dir=locale --default-domain=fpdb --output=fpdb-en_GB.pot *.py*
|
||||
|
||||
echo "merging template with existing translations"
|
||||
msgmerge --update locale/fpdb-de_DE.po locale/fpdb-en_GB.pot
|
||||
msgmerge --update locale/fpdb-fr_FR.po locale/fpdb-en_GB.pot
|
||||
msgmerge --update locale/fpdb-hu_HU.po locale/fpdb-en_GB.pot
|
||||
|
||||
echo "compiling mo files"
|
||||
python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/de/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po
|
||||
python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po
|
||||
|
||||
pocount locale/*.po
|
|
@ -1,3 +0,0 @@
|
|||
msgmerge --update fpdb-hu_HU.po fpdb-en_GB.po
|
||||
msgmerge --update fpdb-de_DE.po fpdb-en_GB.po
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
Stage #1300000000: Seven Card Hi/Lo Normal $0.02/$0.04 - 2009-03-18 19:10:00 (ET)
|
||||
Seat 1 - PLAYER1 ($0.17 in chips)
|
||||
Seat 2 - PLAYER2 ($0.36 in chips)
|
||||
Seat 3 - PLAYER3 ($3.46 in chips)
|
||||
Seat 5 - PLAYER4 ($1 in chips)
|
||||
Seat 6 - PLAYER5 ($1.07 in chips)
|
||||
Seat 7 - PLAYER6 ($2.31 in chips)
|
||||
Seat 8 - PLAYER7 ($0.93 in chips)
|
||||
Player1 - Ante $0.01
|
||||
PLAYER5 - Ante $0.01
|
||||
PLAYER6 - Ante $0.01
|
||||
PLAYER3 - Ante $0.01
|
||||
PLAYER7 - Ante $0.01
|
||||
PLAYER2 - Ante $0.01
|
||||
PLAYER4 - Ante $0.01
|
||||
*** 3rd STREET ***
|
||||
Player1 - Pocket [H H Js]
|
||||
PLAYER2 - Pocket [H H 7h]
|
||||
PLAYER3 - Pocket [H H 6s]
|
||||
PLAYER4 - Pocket [10c 5c 7s]
|
||||
PLAYER5 - Pocket [H H Qh]
|
||||
PLAYER6 - Pocket [H H 9c]
|
||||
PLAYER7 - Pocket [H H 3s]
|
||||
PLAYER7 - Bring-In $0.01
|
||||
Player1 - Calls $0.01
|
||||
PLAYER2 - Folds
|
||||
PLAYER3 - Calls $0.01
|
||||
PLAYER4 - Folds
|
||||
PLAYER5 - Folds
|
||||
PLAYER6 - Calls $0.01
|
||||
*** 4TH STREET ***
|
||||
Player1 - Pocket [H H Js 10d]
|
||||
PLAYER3 - Pocket [H H 6s Ah]
|
||||
PLAYER4 - Pocket [10c 5c 7s]
|
||||
PLAYER6 - Pocket [H H 9c Ks]
|
||||
PLAYER7 - Pocket [H H 3s Qc]
|
||||
PLAYER3 - Checks
|
||||
PLAYER6 - Checks
|
||||
PLAYER7 - Checks
|
||||
Player1 - Checks
|
||||
*** 5TH STREET ***
|
||||
Player1 - Pocket [H H Js 10d Kh]
|
||||
PLAYER3 - Pocket [H H 6s Ah 8c]
|
||||
PLAYER4 - Pocket [10c 5c 7s]
|
||||
PLAYER6 - Pocket [H H 9c Ks 10s]
|
||||
PLAYER7 - Pocket [H H 3s Qc 6c]
|
||||
PLAYER3 - Bets $0.04
|
||||
PLAYER6 - Calls $0.04
|
||||
PLAYER7 - Calls $0.04
|
||||
Player1 - Calls $0.04
|
||||
*** 6TH STREET ***
|
||||
Player1 - Pocket [H H Js 10d Kh 2c]
|
||||
PLAYER3 - Pocket [H H 6s Ah 8c Jc]
|
||||
PLAYER4 - Pocket [10c 5c 7s]
|
||||
PLAYER6 - Pocket [H H 9c Ks 10s 8h]
|
||||
PLAYER7 - Pocket [H H 3s Qc 6c Qs]
|
||||
PLAYER7 - Checks
|
||||
Player1 - Checks
|
||||
PLAYER3 - Bets $0.04
|
||||
PLAYER6 - Calls $0.04
|
||||
PLAYER7 - Calls $0.04
|
||||
Player1 - Calls $0.04
|
||||
*** RIVER ***
|
||||
Player1 - Pocket [H H Js 10d Kh 2c H]
|
||||
PLAYER3 - Pocket [H H 6s Ah 8c Jc H]
|
||||
PLAYER4 - Pocket [10c 5c 7s]
|
||||
PLAYER6 - Pocket [H H 9c Ks 10s 8h H]
|
||||
PLAYER7 - Pocket [H H 3s Qc 6c Qs H]
|
||||
PLAYER7 - Checks
|
||||
Player1 - Checks
|
||||
PLAYER3 - Checks
|
||||
PLAYER6 - Checks
|
||||
*** SHOW DOWN ***
|
||||
PLAYER7 - Shows [5s 8d 3s Qc 6c Qs 9s] (One pair, queens)
|
||||
Player1 - Shows [Jh 3h Js 10d Kh 2c 2h] (Two Pair, jacks and twos)
|
||||
PLAYER3 - Shows [3d 5d 6s Ah 8c Jc As] (One pair, aces)
|
||||
PLAYER6 - Shows [Kc 10h 9c Ks 10s 8h 2s] (Two Pair, kings and tens)
|
||||
PLAYER3 Collects $0.19 from main pot
|
||||
PLAYER6 Collects $0.20 from main pot
|
||||
*** SUMMARY ***
|
||||
Total Pot($0.43) | Rake ($0.04)
|
||||
Seat 1: Player1 HI:lost with Two Pair, jacks and twos [Jh 3h Js 10d Kh 2c 2h - B:Js,P:Jh,P:2h,B:2c,B:Kh]
|
||||
Seat 2: PLAYER2 Folded on the 3rd STREET
|
||||
Seat 3: PLAYER3 won Total ($0.19) HI:with One pair, aces [3d 5d 6s Ah 8c Jc As - P:As,B:Ah,B:Jc,B:8c,B:6s] LO:($0.19) [B:Ah,P:3d,P:5d,B:6s,B:8c]
|
||||
Seat 5: PLAYER4 Folded on the 3rd STREET
|
||||
Seat 6: PLAYER5 Folded on the 3rd STREET
|
||||
Seat 7: PLAYER6 won Total ($0.20) HI:($0.20) with Two Pair, kings and tens [Kc 10h 9c Ks 10s 8h 2s - B:Ks,P:Kc,B:10s,P:10h,B:9c]
|
||||
Seat 8: PLAYER7 HI:lost with One pair, queens [5s 8d 3s Qc 6c Qs 9s - B:Qs,B:Qc,P:9s,P:8d,B:6c]
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
<description type="Holdem" stakes="No Limit ($0.25/$0.50)"/>
|
||||
<game id="15245216-1000" starttime="20081013150000" numholecards="2" gametype="2" realmoney="true" data="20081013|Niagara Falls (15245216)|15245216|15245216-1000|false">
|
||||
<players dealer="8">
|
||||
<player seat="3" nickname="Player1" balance="$34.13" dealtin="true" />
|
||||
<player seat="2" nickname="Player2" balance="$49.25" dealtin="true" />
|
||||
<player seat="1" nickname="Player3" balance="$55.64" dealtin="true" />
|
||||
<player seat="0" nickname="Player4" balance="$19.72" dealtin="true" />
|
||||
<player seat="7" nickname="Player5" balance="$25.16" dealtin="true" />
|
||||
<player seat="6" nickname="Player6" balance="$56.44" dealtin="false" />
|
||||
<player seat="5" nickname="Player7" balance="$43.52" dealtin="true" />
|
||||
<player seat="4" nickname="Player8" balance="$28.67" dealtin="true" />
|
||||
<player seat="8" nickname="Player9" balance="$9.25" dealtin="true" />
|
||||
</players>
|
||||
<round id="BLINDS" sequence="1">
|
||||
<event sequence="1" type="SMALL_BLIND" player="0" amount="0.25"/>
|
||||
<event sequence="2" type="BIG_BLIND" player="1" amount="0.50"/>
|
||||
</round>
|
||||
<round id="PREFLOP" sequence="2">
|
||||
<event sequence="3" type="FOLD" player="2"/>
|
||||
<event sequence="4" type="FOLD" player="3"/>
|
||||
<event sequence="5" type="RAISE" player="4" amount="1.00"/>
|
||||
<event sequence="6" type="FOLD" player="5"/>
|
||||
<event sequence="7" type="CALL" player="7" amount="1.00"/>
|
||||
<event sequence="8" type="FOLD" player="8"/>
|
||||
<event sequence="9" type="FOLD" player="0"/>
|
||||
<event sequence="10" type="RAISE" player="1" amount="5.00"/>
|
||||
<event sequence="11" type="CALL" player="4" amount="4.50"/>
|
||||
<event sequence="12" type="FOLD" player="7"/>
|
||||
<cards type="HOLE" cards="Ah,8s" player="2" hand="Ace High"/>
|
||||
</round>
|
||||
<round id="POSTFLOP" sequence="3">
|
||||
<event sequence="13" type="BET" player="1" amount="7.00"/>
|
||||
<event sequence="14" type="CALL" player="4" amount="7.00"/>
|
||||
<cards type="COMMUNITY" cards="5h,3c,Kd" hand="Ace High"/>
|
||||
</round>
|
||||
<round id="POSTTURN" sequence="4">
|
||||
<event sequence="15" type="BET" player="1" amount="18.00"/>
|
||||
<event sequence="16" type="ALL_IN" player="4" amount="16.17"/>
|
||||
<event sequence="17" type="SHOW" player="1"/>
|
||||
<event sequence="18" type="SHOW" player="4"/>
|
||||
<cards type="COMMUNITY" cards="5h,3c,Kd,3d" hand="Pair of Threes"/>
|
||||
<cards type="SHOWN" cards="Ad,3s" player="1"/>
|
||||
<cards type="SHOWN" cards="Qd,Qs" player="4"/>
|
||||
</round>
|
||||
<round id="POSTRIVER" sequence="5">
|
||||
<cards type="COMMUNITY" cards="5h,3c,Kd,3d,Ks" hand="Two Pair Kings and Threes"/>
|
||||
</round>
|
||||
<round id="END_OF_GAME" sequence="6">
|
||||
<winner amount="55.67" uncalled="false" potnumber="1" player="1" hand="Full House - Threes over Kings" pottype="n"/>
|
||||
<winner amount="1.83" uncalled="true" potnumber="2" player="1" hand="Full House - Threes over Kings" pottype="n"/>
|
||||
</round>
|
||||
</game>
|
||||
|
|
@ -0,0 +1,752 @@
|
|||
{ u'Player1': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 4,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 3,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 3413,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player2': { 'card1': 13,
|
||||
'card2': 46,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 5,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 2,
|
||||
'sitout': False,
|
||||
'startCards': 91,
|
||||
'startCash': 4925,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player3': { 'card1': 26,
|
||||
'card2': 41,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'B',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 292,
|
||||
'sawShowdown': True,
|
||||
'seatNo': 1,
|
||||
'sitout': False,
|
||||
'startCards': 26,
|
||||
'startCash': 5564,
|
||||
'street0Aggr': True,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': True,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': True,
|
||||
'street1Bets': 1,
|
||||
'street1CBChance': True,
|
||||
'street1CBDone': True,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': True,
|
||||
'street2Aggr': True,
|
||||
'street2Bets': 1,
|
||||
'street2CBChance': True,
|
||||
'street2CBDone': True,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': True,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 2700,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 5567,
|
||||
'wonAtSD': 1.0,
|
||||
'wonWhenSeenStreet1': 1.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player4': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'S',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 0,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 1972,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -25,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player5': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 1,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 7,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 2516,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': True,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -100,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player7': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 2,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 5,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 4352,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player8': { 'card1': 24,
|
||||
'card2': 50,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': True,
|
||||
'otherRaisedStreet2': True,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 3,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': True,
|
||||
'rake': 0,
|
||||
'sawShowdown': True,
|
||||
'seatNo': 4,
|
||||
'sitout': False,
|
||||
'startCards': 141,
|
||||
'startCash': 2867,
|
||||
'street0Aggr': True,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': True,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 1,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': True,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 1,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': True,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -2867,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player9': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 0,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 8,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 925,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0}}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,40 @@
|
|||
Everleaf Gaming Game #190070009
|
||||
***** Hand history for game #190070009 *****
|
||||
Blinds $0.01/$0.02 NL Hold'em - 2010/08/03 - 17:00:00
|
||||
Table Los Angeles XV
|
||||
Seat 2 is the button
|
||||
Total number of players: 8
|
||||
Seat 1: Player1 ( $ 0.98 USD )
|
||||
Seat 2: Player2 ( $ 1.95 USD )
|
||||
Seat 3: Player3 ( $ 0.94 USD )
|
||||
Seat 4: Player4 ( $ 1.80 USD )
|
||||
Seat 5: Player5 ( $ 0.40 USD )
|
||||
Seat 8: Player6 ( $ 1.51 USD )
|
||||
Seat 9: Player7 ( $ 0.03 USD )
|
||||
Seat 10: Player8 ( $ 4.19 USD )
|
||||
Player3: posts small blind [$ 0.01 USD]
|
||||
Player4: posts big blind [$ 0.02 USD]
|
||||
** Dealing down cards **
|
||||
Player5 calls [$ 0.02 USD]
|
||||
Player6 folds
|
||||
Player7 calls [$ 0.02 USD]
|
||||
Player8 folds
|
||||
Player1 calls [$ 0.02 USD]
|
||||
Player2 folds
|
||||
Player3 calls [$ 0.01 USD]
|
||||
Player4 raises [$ 0.18 USD]
|
||||
Player5 folds
|
||||
Player7 calls [$ 0.01 USD]
|
||||
Player1 raises [$ 0.96 USD]
|
||||
Player3 folds
|
||||
Player4 calls [$ 0.78 USD]
|
||||
** Dealing Flop ** [ 6d, Jc, Js ]
|
||||
** Dealing Turn ** [ 3d ]
|
||||
** Dealing River ** [ 9d ]
|
||||
Player1 shows [ 4c, 4d ] two pairs, jacks and fours
|
||||
Player4 shows [ 8c, 8h ] two pairs, jacks and eights
|
||||
Player7 shows [ 5s, Td ] a pair of jacks
|
||||
Player4 wins $ 0.13 USD from main pot with two pairs, jacks and
|
||||
eights [ Jc, Js, 9d, 8c, 8h ]
|
||||
Player4 wins $ 1.81 USD from side pot with two pairs, jacks and
|
||||
eights [ Jc, Js, 9d, 8c, 8h ]
|
|
@ -0,0 +1,752 @@
|
|||
{ u'Player1': { 'card1': 29,
|
||||
'card2': 16,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 1,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': True,
|
||||
'seatNo': 1,
|
||||
'sitout': False,
|
||||
'startCards': 29,
|
||||
'startCash': 98,
|
||||
'street0Aggr': True,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': True,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -98,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player2': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 0,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 2,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 195,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player3': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'S',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 3,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 94,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': True,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -2,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player4': { 'card1': 33,
|
||||
'card2': 7,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'B',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 9,
|
||||
'sawShowdown': True,
|
||||
'seatNo': 4,
|
||||
'sitout': False,
|
||||
'startCards': 85,
|
||||
'startCash': 180,
|
||||
'street0Aggr': True,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': True,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 96,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 194,
|
||||
'wonAtSD': 1.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player5': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 5,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 5,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 40,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -2,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player6': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 4,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 8,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 151,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player7': { 'card1': 43,
|
||||
'card2': 22,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 3,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': True,
|
||||
'seatNo': 9,
|
||||
'sitout': False,
|
||||
'startCards': 48,
|
||||
'startCash': 3,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 2,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -3,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player8': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 2,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 10,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 419,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0}}
|
|
@ -0,0 +1,416 @@
|
|||
Everleaf Gaming Game #196321235
|
||||
***** Hand history for game #196321235 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:15
|
||||
Table Cortland XIV
|
||||
Seat 6 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 12.40 USD )
|
||||
Seat 2: EricBlade ( $ 5 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.45 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.29 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.30 USD )
|
||||
zlodeu123: posts small blind [$ 0.05 USD]
|
||||
EricBlade: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ 9h, Qd ]
|
||||
gabitzatoade folds
|
||||
N0pr3s3n7 raises [$ 0.35 USD]
|
||||
Coolcatcool folds
|
||||
zlodeu123 folds
|
||||
EricBlade folds
|
||||
N0pr3s3n7 does not show cards
|
||||
N0pr3s3n7 wins $ 0.25 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196321319
|
||||
***** Hand history for game #196321319 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:38
|
||||
Table Cortland XIV
|
||||
Seat 1 is the button
|
||||
Total number of players: 5
|
||||
Seat 1: zlodeu123 ( $ 12.35 USD )
|
||||
Seat 2: EricBlade ( $ 4.90 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.45 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.44 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.30 USD )
|
||||
EricBlade: posts small blind [$ 0.05 USD]
|
||||
gabitzatoade: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ Qd, 9d ]
|
||||
N0pr3s3n7 folds
|
||||
Coolcatcool folds
|
||||
zlodeu123 folds
|
||||
EricBlade raises [$ 0.25 USD]
|
||||
gabitzatoade folds
|
||||
EricBlade does not show cards
|
||||
EricBlade wins $ 0.20 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196321394
|
||||
***** Hand history for game #196321394 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:57
|
||||
Table Cortland XIV
|
||||
Seat 2 is the button
|
||||
Total number of players: 5
|
||||
Seat 1: zlodeu123 ( $ 12.35 USD )
|
||||
Seat 2: EricBlade ( $ 5 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.35 USD )
|
||||
Seat 4: Miazza ( new player )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.44 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.30 USD )
|
||||
gabitzatoade: posts small blind [$ 0.05 USD]
|
||||
N0pr3s3n7: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ 9c, Ac ]
|
||||
Coolcatcool folds
|
||||
zlodeu123 folds
|
||||
EricBlade raises [$ 0.35 USD]
|
||||
gabitzatoade calls [$ 0.30 USD]
|
||||
N0pr3s3n7 folds
|
||||
** Dealing Flop ** [ 4c, Kh, 6h ]
|
||||
gabitzatoade checks
|
||||
EricBlade: bets [$ 0.40 USD]
|
||||
gabitzatoade calls [$ 0.40 USD]
|
||||
** Dealing Turn ** [ Qh ]
|
||||
gabitzatoade checks
|
||||
Miazza has joined the table
|
||||
EricBlade checks
|
||||
** Dealing River ** [ Qd ]
|
||||
gabitzatoade checks
|
||||
EricBlade checks
|
||||
EricBlade shows [ 9c, Ac ] a pair of queens
|
||||
gabitzatoade shows [ 4s, 4d ] a full house, fours full of queens
|
||||
gabitzatoade wins $ 1.52 USD from main pot with a full house, fours full of queens [ Qh, Qd, 4s, 4d, 4c ]
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196321538
|
||||
***** Hand history for game #196321538 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:35:34
|
||||
Table Cortland XIV
|
||||
Seat 3 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 12.35 USD )
|
||||
Seat 2: EricBlade ( $ 4.25 USD )
|
||||
Seat 3: gabitzatoade ( $ 6.12 USD )
|
||||
Seat 4: Miazza ( $ 5 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.34 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.30 USD )
|
||||
N0pr3s3n7: posts small blind [$ 0.05 USD]
|
||||
Coolcatcool: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ Kc, Jd ]
|
||||
zlodeu123 raises [$ 0.35 USD]
|
||||
EricBlade calls [$ 0.35 USD]
|
||||
gabitzatoade folds
|
||||
N0pr3s3n7 folds
|
||||
Coolcatcool folds
|
||||
** Dealing Flop ** [ 9s, 3c, Jc ]
|
||||
zlodeu123: bets [$ 0.60 USD]
|
||||
EricBlade raises [$ 1.80 USD]
|
||||
zlodeu123 folds
|
||||
EricBlade does not show cards
|
||||
EricBlade wins $ 1.95 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196321707
|
||||
***** Hand history for game #196321707 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:36:15
|
||||
Table Cortland XIV
|
||||
Seat 5 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 11.40 USD )
|
||||
Seat 2: EricBlade ( $ 5.25 USD )
|
||||
Seat 3: gabitzatoade ( $ 6.12 USD )
|
||||
Seat 4: Miazza ( $ 5 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.29 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.20 USD )
|
||||
Coolcatcool: posts small blind [$ 0.05 USD]
|
||||
zlodeu123: posts big blind [$ 0.10 USD]
|
||||
Miazza sits out
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ 6d, 3d ]
|
||||
EricBlade folds
|
||||
gabitzatoade calls [$ 0.10 USD]
|
||||
N0pr3s3n7 raises [$ 0.30 USD]
|
||||
Coolcatcool folds
|
||||
zlodeu123 folds
|
||||
gabitzatoade calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ 8d, 4d, Td ]
|
||||
gabitzatoade checks
|
||||
N0pr3s3n7: bets [$ 0.50 USD]
|
||||
gabitzatoade folds
|
||||
N0pr3s3n7 does not show cards
|
||||
N0pr3s3n7 wins $ 0.72 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196321850
|
||||
***** Hand history for game #196321850 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:36:52
|
||||
Table Cortland XIV
|
||||
Seat 6 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 11.30 USD )
|
||||
Seat 2: EricBlade ( $ 5.25 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.82 USD )
|
||||
Seat 4: Miazza ( $ 5 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.15 USD )
|
||||
zlodeu123: posts small blind [$ 0.05 USD]
|
||||
EricBlade: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ Qh, Qd ]
|
||||
gabitzatoade folds
|
||||
N0pr3s3n7 folds
|
||||
Coolcatcool folds
|
||||
zlodeu123 folds
|
||||
EricBlade does not show cards
|
||||
EricBlade wins $ 0.10 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196321947
|
||||
***** Hand history for game #196321947 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:37:15
|
||||
Table Cortland XIV
|
||||
Seat 1 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 11.25 USD )
|
||||
Seat 2: EricBlade ( $ 5.30 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.82 USD )
|
||||
Seat 4: Miazza ( $ 5 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.15 USD )
|
||||
EricBlade: posts small blind [$ 0.05 USD]
|
||||
gabitzatoade: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ Ts, Ks ]
|
||||
N0pr3s3n7 folds
|
||||
Coolcatcool folds
|
||||
zlodeu123 folds
|
||||
EricBlade raises [$ 0.25 USD]
|
||||
gabitzatoade folds
|
||||
EricBlade does not show cards
|
||||
EricBlade wins $ 0.20 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196322013
|
||||
***** Hand history for game #196322013 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:37:32
|
||||
Table Cortland XIV
|
||||
Seat 2 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 11.25 USD )
|
||||
Seat 2: EricBlade ( $ 5.40 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.72 USD )
|
||||
Seat 4: Miazza ( $ 5 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.15 USD )
|
||||
gabitzatoade: posts small blind [$ 0.05 USD]
|
||||
Miazza: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ 2c, 4s ]
|
||||
N0pr3s3n7 folds
|
||||
Coolcatcool folds
|
||||
zlodeu123 raises [$ 0.35 USD]
|
||||
EricBlade folds
|
||||
gabitzatoade calls [$ 0.30 USD]
|
||||
Miazza folds
|
||||
** Dealing Flop ** [ Ad, 6d, 6s ]
|
||||
gabitzatoade checks
|
||||
zlodeu123: bets [$ 0.60 USD]
|
||||
gabitzatoade calls [$ 0.60 USD]
|
||||
** Dealing Turn ** [ Jc ]
|
||||
gabitzatoade checks
|
||||
zlodeu123 checks
|
||||
** Dealing River ** [ Th ]
|
||||
gabitzatoade checks
|
||||
zlodeu123 checks
|
||||
zlodeu123 shows [ Ah, 8d ] two pairs, aces and sixes
|
||||
gabitzatoade shows [ Ac, 9c ] two pairs, aces and sixes
|
||||
gabitzatoade wins $ 0.95 USD from main pot with two pairs, aces and sixes [ Ac, Ad, Jc, 6d, 6s ]
|
||||
zlodeu123 wins $ 0.95 USD from main pot with two pairs, aces and sixes [ Ah, Ad, Jc, 6d, 6s ]
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196322188
|
||||
***** Hand history for game #196322188 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:38:16
|
||||
Table Cortland XIV
|
||||
Seat 3 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 11.25 USD )
|
||||
Seat 2: EricBlade ( $ 5.40 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.72 USD )
|
||||
Seat 4: Miazza ( $ 4.90 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.71 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.15 USD )
|
||||
Miazza: posts small blind [$ 0.05 USD]
|
||||
N0pr3s3n7: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ 7d, Kd ]
|
||||
Coolcatcool folds
|
||||
zlodeu123 folds
|
||||
EricBlade raises [$ 0.35 USD]
|
||||
gabitzatoade folds
|
||||
Miazza folds
|
||||
N0pr3s3n7 folds
|
||||
EricBlade does not show cards
|
||||
EricBlade wins $ 0.25 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196322268
|
||||
***** Hand history for game #196322268 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:38:34
|
||||
Table Cortland XIV
|
||||
Seat 4 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 11.25 USD )
|
||||
Seat 2: EricBlade ( $ 5.55 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.72 USD )
|
||||
Seat 4: Miazza ( $ 4.85 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.61 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.15 USD )
|
||||
N0pr3s3n7: posts small blind [$ 0.05 USD]
|
||||
Coolcatcool: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ 6d, Kc ]
|
||||
zlodeu123 folds
|
||||
EricBlade folds
|
||||
gabitzatoade folds
|
||||
Miazza raises [$ 0.35 USD]
|
||||
N0pr3s3n7 folds
|
||||
Coolcatcool raises [$ 0.50 USD]
|
||||
Miazza folds
|
||||
Coolcatcool does not show cards
|
||||
Coolcatcool wins $ 0.75 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196322353
|
||||
***** Hand history for game #196322353 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:38:57
|
||||
Table Cortland XIV
|
||||
Seat 5 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 11.25 USD )
|
||||
Seat 2: EricBlade ( $ 5.55 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.72 USD )
|
||||
Seat 4: Miazza ( $ 4.50 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.56 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.55 USD )
|
||||
Coolcatcool: posts small blind [$ 0.05 USD]
|
||||
zlodeu123: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ 3h, 9s ]
|
||||
EricBlade folds
|
||||
gabitzatoade folds
|
||||
Miazza folds
|
||||
N0pr3s3n7 folds
|
||||
Coolcatcool folds
|
||||
zlodeu123 does not show cards
|
||||
zlodeu123 wins $ 0.10 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196322422
|
||||
***** Hand history for game #196322422 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:39:15
|
||||
Table Cortland XIV
|
||||
Seat 6 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 11.30 USD )
|
||||
Seat 2: EricBlade ( $ 5.55 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.72 USD )
|
||||
Seat 4: Miazza ( $ 4.50 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.56 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.50 USD )
|
||||
zlodeu123: posts small blind [$ 0.05 USD]
|
||||
EricBlade: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ Kd, 4h ]
|
||||
gabitzatoade folds
|
||||
Miazza folds
|
||||
N0pr3s3n7 folds
|
||||
Coolcatcool folds
|
||||
zlodeu123 folds
|
||||
EricBlade does not show cards
|
||||
EricBlade wins $ 0.10 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196322487
|
||||
***** Hand history for game #196322487 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:39:32
|
||||
Table Cortland XIV
|
||||
Seat 1 is the button
|
||||
Total number of players: 6
|
||||
Seat 1: zlodeu123 ( $ 11.25 USD )
|
||||
Seat 2: EricBlade ( $ 5.60 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.72 USD )
|
||||
Seat 4: Miazza ( $ 4.50 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.56 USD )
|
||||
Seat 6: Coolcatcool ( $ 8.50 USD )
|
||||
EricBlade: posts small blind [$ 0.05 USD]
|
||||
gabitzatoade: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ 9h, Th ]
|
||||
Miazza folds
|
||||
N0pr3s3n7 folds
|
||||
Coolcatcool folds
|
||||
zlodeu123 folds
|
||||
EricBlade raises [$ 0.25 USD]
|
||||
gabitzatoade calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ 3d, 5d, 6c ]
|
||||
EricBlade checks
|
||||
gabitzatoade: bets [$ 0.40 USD]
|
||||
EricBlade folds
|
||||
gabitzatoade does not show cards
|
||||
gabitzatoade wins $ 0.57 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #196322581
|
||||
***** Hand history for game #196322581 *****
|
||||
Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:39:58
|
||||
Table Cortland XIV
|
||||
Seat 2 is the button
|
||||
Total number of players: 5
|
||||
Seat 1: zlodeu123 ( $ 11.25 USD )
|
||||
Seat 2: EricBlade ( $ 5.30 USD )
|
||||
Seat 3: gabitzatoade ( $ 5.99 USD )
|
||||
Seat 4: Miazza ( $ 4.50 USD )
|
||||
Seat 5: N0pr3s3n7 ( $ 10.56 USD )
|
||||
Seat 6: SAVCOMP ( new player )
|
||||
gabitzatoade: posts small blind [$ 0.05 USD]
|
||||
Miazza: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to EricBlade [ As, 4d ]
|
||||
N0pr3s3n7 folds
|
||||
zlodeu123 raises [$ 0.35 USD]
|
||||
EricBlade folds
|
||||
gabitzatoade calls [$ 0.30 USD]
|
||||
SAVCOMP has joined the table
|
||||
Miazza folds
|
||||
** Dealing Flop ** [ 3h, 7h, Tc ]
|
||||
gabitzatoade checks
|
||||
zlodeu123 checks
|
||||
** Dealing Turn ** [ Ks ]
|
||||
gabitzatoade: bets [$ 0.30 USD]
|
||||
zlodeu123 raises [$ 0.80 USD]
|
||||
gabitzatoade calls [$ 0.50 USD]
|
||||
** Dealing River ** [ Ts ]
|
||||
gabitzatoade: bets [$ 2 USD]
|
||||
zlodeu123 calls [$ 2 USD]
|
||||
gabitzatoade shows [ 8s, 7s ] two pairs, tens and sevens
|
||||
zlodeu123 shows [ Kd, Ad ] two pairs, kings and tens
|
||||
zlodeu123 wins $ 6.08 USD from main pot with two pairs, kings and tens [ Ad, Kd, Ks, Tc, Ts ]
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,588 @@
|
|||
Everleaf Gaming Game #149107406
|
||||
***** Hand history for game #149107406 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:35:19
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 10 USD )
|
||||
Seat 10: Hero ( $ 10 USD )
|
||||
Villain has disconnected and has been given a further 20 seconds to react
|
||||
Villain has disconnected and has been given a further 20 seconds to react
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Qc, Qh, 7s, Jd ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero raises [$ 0.20 USD]
|
||||
Villain calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ Tc, Kc, 3s ]
|
||||
Hero: bets [$ 0.60 USD]
|
||||
Villain calls [$ 0.60 USD]
|
||||
** Dealing Turn ** [ 6d ]
|
||||
Hero checks
|
||||
Villain: bets [$ 1.80 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 1.71 USD) from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149107627
|
||||
***** Hand history for game #149107627 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:36:09
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 10.81 USD )
|
||||
Seat 10: Hero ( $ 9.10 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Jd, 9h, 3h, 3c ]
|
||||
Hero calls [$ 0.05 USD]
|
||||
Villain checks
|
||||
** Dealing Flop ** [ 8c, 8h, Qs ]
|
||||
Villain checks
|
||||
Hero checks
|
||||
** Dealing Turn ** [ 7h ]
|
||||
Villain: bets [$ 0.10 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 0.19 USD) from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149107795
|
||||
***** Hand history for game #149107795 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:36:48
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 10.90 USD )
|
||||
Seat 10: Hero ( $ 9 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Qc, As, 4s, Qh ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero raises [$ 0.20 USD]
|
||||
Villain calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ 8d, 6h, 3c ]
|
||||
Hero: bets [$ 0.60 USD]
|
||||
Villain calls [$ 0.60 USD]
|
||||
** Dealing Turn ** [ Qd ]
|
||||
Hero: bets [$ 1.80 USD]
|
||||
Villain calls [$ 1.80 USD]
|
||||
** Dealing River ** [ 7h ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
Hero shows [ Qc, As, 4s, Qh ] three of a kind, queens
|
||||
Villain does not show cards
|
||||
Hero wins high ($ 2.57 USD) from main pot with three of a kind, queens [ Qc, Qh, Qd, 8d, 7h ]
|
||||
Hero wins low ($2.56) from main pot with 7, 6, 4, 3, A [ As, 7h, 6h, 4s, 3c ]
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149108010
|
||||
***** Hand history for game #149108010 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:37:35
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.20 USD )
|
||||
Seat 10: Hero ( $ 11.43 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 4s, Ts, 3h, 5s ]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 0.10 USD) from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149108038
|
||||
***** Hand history for game #149108038 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:37:43
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.25 USD )
|
||||
Seat 10: Hero ( $ 11.38 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 9d, Qc, 9s, Tc ]
|
||||
Villain raises [$ 0.25 USD]
|
||||
Hero calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ 3d, 4d, 2h ]
|
||||
Hero checks
|
||||
Villain: bets [$ 0.60 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 0.57 USD) from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149108121
|
||||
***** Hand history for game #149108121 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:38:02
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.52 USD )
|
||||
Seat 10: Hero ( $ 11.08 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 4d, Ks, 7h, As ]
|
||||
Hero raises [$ 0.25 USD]
|
||||
Villain calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ 7d, Qc, 6s ]
|
||||
Villain checks
|
||||
Hero checks
|
||||
** Dealing Turn ** [ Kh ]
|
||||
Villain: bets [$ 0.60 USD]
|
||||
Hero calls [$ 0.60 USD]
|
||||
** Dealing River ** [ Qh ]
|
||||
Villain: bets [$ 1.80 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 1.71 USD) from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149108259
|
||||
***** Hand history for game #149108259 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:38:32
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 9.33 USD )
|
||||
Seat 10: Hero ( $ 10.18 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 7d, 2h, Ad, Jh ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero raises [$ 0.20 USD]
|
||||
Villain has disconnected and has been given a further 20 seconds to react
|
||||
Villain has disconnected and has been given a further 20 seconds to react
|
||||
Villain folds
|
||||
Hero does not show cards
|
||||
Hero wins $ 0.20 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149108411
|
||||
***** Hand history for game #149108411 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:39:07
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 9.23 USD )
|
||||
Seat 10: Hero ( $ 10.28 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Ks, Kd, 7c, 7s ]
|
||||
Hero raises [$ 0.25 USD]
|
||||
Villain calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ 7d, Ac, 9h ]
|
||||
Villain checks
|
||||
Hero checks
|
||||
** Dealing Turn ** [ 2d ]
|
||||
Villain: bets [$ 0.60 USD]
|
||||
Hero calls [$ 0.60 USD]
|
||||
** Dealing River ** [ 9s ]
|
||||
Villain checks
|
||||
Hero: bets [$ 1.80 USD]
|
||||
Villain folds
|
||||
Hero does not show cards
|
||||
Hero wins $ 1.71 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149108717
|
||||
***** Hand history for game #149108717 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:40:22
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.33 USD )
|
||||
Seat 10: Hero ( $ 11.09 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 5s, 3s, Js, 9d ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero checks
|
||||
** Dealing Flop ** [ 6c, 4s, 4d ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
** Dealing Turn ** [ 7c ]
|
||||
Hero: bets [$ 0.20 USD]
|
||||
Villain calls [$ 0.20 USD]
|
||||
** Dealing River ** [ Qd ]
|
||||
Hero: bets [$ 0.60 USD]
|
||||
Villain folds
|
||||
Hero does not show cards
|
||||
Hero wins $ 0.29 USD from main pot
|
||||
Hero wins $ 0.28 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149108874
|
||||
***** Hand history for game #149108874 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:40:58
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.03 USD )
|
||||
Seat 10: Hero ( $ 11.36 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Qd, Jh, 2h, 5s ]
|
||||
Hero calls [$ 0.05 USD]
|
||||
Villain checks
|
||||
** Dealing Flop ** [ 7d, 2c, 9c ]
|
||||
Villain: bets [$ 0.20 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins $ 0.19 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149109021
|
||||
***** Hand history for game #149109021 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:41:31
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.12 USD )
|
||||
Seat 10: Hero ( $ 11.26 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 4c, 6h, 8s, 5c ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero checks
|
||||
** Dealing Flop ** [ 3d, 8h, Qd ]
|
||||
Hero checks
|
||||
Villain: bets [$ 0.20 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins $ 0.19 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149109123
|
||||
***** Hand history for game #149109123 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:41:54
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.21 USD )
|
||||
Seat 10: Hero ( $ 11.16 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 7s, 3d, Tc, 5s ]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins $ 0.10 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149109165
|
||||
***** Hand history for game #149109165 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:42:04
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.26 USD )
|
||||
Seat 10: Hero ( $ 11.11 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Kh, 3c, 6d, 6s ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero checks
|
||||
** Dealing Flop ** [ 2d, 6c, Th ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
** Dealing Turn ** [ 9d ]
|
||||
Hero checks
|
||||
Villain: bets [$ 0.20 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins $ 0.19 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149109398
|
||||
***** Hand history for game #149109398 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:42:55
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.35 USD )
|
||||
Seat 10: Hero ( $ 11.01 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 5c, Qd, 6d, 7d ]
|
||||
Hero calls [$ 0.05 USD]
|
||||
Villain raises [$ 0.20 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins $ 0.20 USD from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149109482
|
||||
***** Hand history for game #149109482 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:43:15
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.45 USD )
|
||||
Seat 10: Hero ( $ 10.91 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 7s, 8d, 5c, Qc ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero checks
|
||||
** Dealing Flop ** [ 5s, Js, 7h ]
|
||||
Hero: bets [$ 0.20 USD]
|
||||
Villain calls [$ 0.20 USD]
|
||||
** Dealing Turn ** [ Ac ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
** Dealing River ** [ 8h ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
Hero shows [ 7s, 8d, 5c, Qc ] two pairs, eights and sevens
|
||||
Villain does not show cards
|
||||
Hero wins high ($ 0.57 USD) from main pot with two pairs, eights and sevens [ Ac, 8d, 8h, 7s, 7h ]
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149109706
|
||||
***** Hand history for game #149109706 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:44:04
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.15 USD )
|
||||
Seat 10: Hero ( $ 11.18 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 5s, 8c, 7s, Td ]
|
||||
Hero calls [$ 0.05 USD]
|
||||
Villain raises [$ 0.20 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 0.20 USD) from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149109783
|
||||
***** Hand history for game #149109783 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:44:23
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.25 USD )
|
||||
Seat 10: Hero ( $ 11.08 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 5d, 4c, 8c, Th ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero checks
|
||||
** Dealing Flop ** [ 7h, As, 7s ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
** Dealing Turn ** [ Jc ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
** Dealing River ** [ 3h ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
Hero shows [ 5d, 4c, 8c, Th ] a pair of sevens
|
||||
Villain shows [ 2h, Kd, 8d, Ts ] a pair of sevens
|
||||
Villain wins high ($ 0.10 USD) from main pot with a pair of sevens [ As, Kd, Ts, 7h, 7s ] with kicker [ Kh ]
|
||||
Hero wins low ($0.09) from main pot with 7, 5, 4, 3, A [ As, 7h, 5d, 4c, 3h ]
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149109887
|
||||
***** Hand history for game #149109887 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:44:48
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.25 USD )
|
||||
Seat 10: Hero ( $ 11.07 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Js, Jc, 3d, 7d ]
|
||||
Hero raises [$ 0.25 USD]
|
||||
Villain calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ 9s, 5d, Qh ]
|
||||
Villain checks
|
||||
Hero checks
|
||||
** Dealing Turn ** [ 6d ]
|
||||
Villain: bets [$ 0.60 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 0.57 USD) from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149110044
|
||||
***** Hand history for game #149110044 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:45:23
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.52 USD )
|
||||
Seat 10: Hero ( $ 10.77 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Ah, 2d, 6d, Qh ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero raises [$ 0.20 USD]
|
||||
Villain calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ 5c, Td, 9h ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
** Dealing Turn ** [ Ks ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
** Dealing River ** [ 8s ]
|
||||
Hero checks
|
||||
Villain: bets [$ 0.30 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 0.57 USD) from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149110335
|
||||
***** Hand history for game #149110335 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:46:33
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.79 USD )
|
||||
Seat 10: Hero ( $ 10.47 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Th, 5d, Qd, 7s ]
|
||||
Hero calls [$ 0.05 USD]
|
||||
Villain checks
|
||||
** Dealing Flop ** [ 8s, 9c, 3s ]
|
||||
Villain checks
|
||||
Hero checks
|
||||
** Dealing Turn ** [ Tc ]
|
||||
Villain checks
|
||||
Hero checks
|
||||
** Dealing River ** [ Qc ]
|
||||
Villain checks
|
||||
Hero checks
|
||||
Villain shows [ 8d, Kc, 6c, 4s ] a flush, king high
|
||||
Hero does not show cards
|
||||
Villain wins high ($ 0.19 USD) from main pot with a flush, king high [ Kc, Qc, Tc, 9c, 6c ]
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149110588
|
||||
***** Hand history for game #149110588 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:47:30
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 8.88 USD )
|
||||
Seat 10: Hero ( $ 10.37 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 2h, 2s, Qs, Ah ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero raises [$ 0.20 USD]
|
||||
Villain calls [$ 0.20 USD]
|
||||
** Dealing Flop ** [ Td, Qh, 8h ]
|
||||
Hero: bets [$ 0.60 USD]
|
||||
Villain calls [$ 0.60 USD]
|
||||
** Dealing Turn ** [ 9s ]
|
||||
Hero checks
|
||||
Villain: bets [$ 1.80 USD]
|
||||
Hero calls [$ 1.80 USD]
|
||||
** Dealing River ** [ 8s ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
Villain shows [ Js, 5h, Tc, 7d ] a straight, queen high
|
||||
Hero does not show cards
|
||||
Villain wins high ($ 5.13 USD) from main pot with a straight, queen high [ Qh, Js, Tc, 9s, 8h ]
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149110838
|
||||
***** Hand history for game #149110838 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:48:31
|
||||
Table Old Market I
|
||||
Seat 10 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 11.31 USD )
|
||||
Seat 10: Hero ( $ 7.67 USD )
|
||||
Hero: posts small blind [$ 0.05 USD]
|
||||
Villain: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ Ts, 3d, 8s, 9h ]
|
||||
Hero calls [$ 0.05 USD]
|
||||
Villain raises [$ 0.20 USD]
|
||||
Hero folds
|
||||
Villain has disconnected and has been given a further 20 seconds to react
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 0.20 USD) from main pot
|
||||
|
||||
|
||||
|
||||
Everleaf Gaming Game #149111070
|
||||
***** Hand history for game #149111070 *****
|
||||
Blinds $0.05/$0.10 PL Omaha Hi/Lo - 2010/03/02 - 19:49:28
|
||||
Table Old Market I
|
||||
Seat 5 is the button
|
||||
Total number of players: 2
|
||||
Seat 5: Villain ( $ 11.41 USD )
|
||||
Seat 10: Hero ( $ 7.57 USD )
|
||||
Villain: posts small blind [$ 0.05 USD]
|
||||
Hero: posts big blind [$ 0.10 USD]
|
||||
** Dealing down cards **
|
||||
Dealt to Hero [ 9c, 4d, 8h, Th ]
|
||||
Villain calls [$ 0.05 USD]
|
||||
Hero checks
|
||||
** Dealing Flop ** [ Ad, Qs, 4s ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
** Dealing Turn ** [ Td ]
|
||||
Hero checks
|
||||
Villain checks
|
||||
** Dealing River ** [ 6d ]
|
||||
Hero checks
|
||||
Villain: bets [$ 0.10 USD]
|
||||
Hero folds
|
||||
Villain does not show cards
|
||||
Villain wins high ($ 0.10 USD) from main pot
|
||||
Villain wins low ($0.09) from main pot
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,564 @@
|
|||
{ u'Player1': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 2,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 1,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 129,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player2': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 1,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 2,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 170,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player3': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 0,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': True,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 3,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 163,
|
||||
'street0Aggr': True,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 3,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 5,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player4': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': True,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': True,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'S',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 4,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 227,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -1,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player5': { 'card1': 1,
|
||||
'card2': 34,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': True,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': True,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'B',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 5,
|
||||
'sitout': False,
|
||||
'startCards': 8,
|
||||
'startCash': 200,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -2,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Player6': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 3,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 6,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 330,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0}}
|
|
@ -0,0 +1,39 @@
|
|||
Full Tilt Poker Game #22488827305: Table Flash - $0.02/$0.05 - No Limit Hold'em - 15:13 ET - Wed, July 21, 2010
|
||||
Seat 1: ronaldd1969 ($2.70)
|
||||
Seat 2: stark00 ($4.41)
|
||||
Seat 3: T0r3x ($12.97)
|
||||
Seat 4: yrthligar ($15)
|
||||
Seat 5: MANUTD ($8.56)
|
||||
Seat 6: gimick ($2)
|
||||
Seat 7: vision ($2.97)
|
||||
Seat 8: shleekom ($2)
|
||||
Seat 9: proud2Bwhack ($8.77)
|
||||
MANUTD posts the small blind of $0.02
|
||||
gimick posts the big blind of $0.05
|
||||
The button is in seat #4
|
||||
*** HOLE CARDS ***
|
||||
Dealt to gimick [Qs 4d]
|
||||
vision folds
|
||||
shleekom folds
|
||||
proud2Bwhack folds
|
||||
ronaldd1969 folds
|
||||
stark00 folds
|
||||
T0r3x folds
|
||||
yrthligar has 8 seconds left to act
|
||||
yrthligar has timed out
|
||||
yrthligar folds
|
||||
MANUTD folds
|
||||
Uncalled bet of $0.03 returned to gimick
|
||||
gimick mucks
|
||||
gimick wins the pot ($0.04)
|
||||
*** SUMMARY ***
|
||||
Total pot $0.04 | Rake $0
|
||||
Seat 1: ronaldd1969 didn't bet (folded)
|
||||
Seat 2: stark00 didn't bet (folded)
|
||||
Seat 3: T0r3x didn't bet (folded)
|
||||
Seat 4: yrthligar (button) didn't bet (folded)
|
||||
Seat 5: MANUTD (small blind) folded before the Flop
|
||||
Seat 6: gimick (big blind) collected ($0.04), mucked
|
||||
Seat 7: vision didn't bet (folded)
|
||||
Seat 8: shleekom didn't bet (folded)
|
||||
Seat 9: proud2Bwhack didn't bet (folded)
|
|
@ -0,0 +1,846 @@
|
|||
{ u'MANUTD': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'S',
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 5,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 856,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -2,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'T0r3x': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 1,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 3,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 1297,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'gimick': { 'card1': 50,
|
||||
'card2': 16,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'B',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 6,
|
||||
'sitout': False,
|
||||
'startCards': 37,
|
||||
'startCash': 200,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 2,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 4,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'proud2Bwhack': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 4,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 9,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 877,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'ronaldd1969': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 3,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 1,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 270,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'shleekom': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 5,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 8,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 200,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'stark00': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 2,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 2,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 441,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'vision': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 6,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 7,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 297,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'yrthligar': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 0,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 4,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 1500,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0}}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,564 @@
|
|||
{ u'B_Isreal22': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': True,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': True,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'S',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 2,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 241,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': True,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': True,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -2,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'DrZartinger': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 1,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 6,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 155,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'ShaDiv': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': True,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': True,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': True,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'B',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 3,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 277,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 1,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': True,
|
||||
'street2Aggr': True,
|
||||
'street2Bets': 1,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': True,
|
||||
'street2CheckCallRaiseDone': True,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': True,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': True,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': True,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -16,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Sorrowful': { 'card1': 15,
|
||||
'card2': 10,
|
||||
'card3': 42,
|
||||
'card4': 25,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 0,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 1,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 209,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'Timoha777': { 'card1': 24,
|
||||
'card2': 23,
|
||||
'card3': 16,
|
||||
'card4': 50,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': True,
|
||||
'otherRaisedStreet2': True,
|
||||
'otherRaisedStreet3': True,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 2,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 6,
|
||||
'sawShowdown': True,
|
||||
'seatNo': 5,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 98,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 1,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': True,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 1,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': True,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 1,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': True,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 53,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 94,
|
||||
'wonAtSD': 1.0,
|
||||
'wonWhenSeenStreet1': 1.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'rockinalex': { 'card1': 49,
|
||||
'card2': 31,
|
||||
'card3': 19,
|
||||
'card4': 39,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': True,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 3,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': True,
|
||||
'seatNo': 4,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 200,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': True,
|
||||
'street1Bets': 1,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': True,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 1,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': True,
|
||||
'street3Aggr': True,
|
||||
'street3Bets': 1,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': True,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -41,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0}}
|
Binary file not shown.
|
@ -0,0 +1,57 @@
|
|||
Full Tilt Poker Game #21536466676: Table Hagan - $3/$6 Ante $0.50 - Limit Stud Hi - 12:18:37 ET - 2010/06/11
|
||||
Seat 1: bllodshot ($31), is sitting out
|
||||
Seat 2: kwuiyhw ($62.50)
|
||||
Seat 3: chasrigg ($297.50)
|
||||
Seat 4: goulartarm ($94.50)
|
||||
Seat 5: ExecDec ($265.50)
|
||||
Seat 6: arjun1111 ($41.50)
|
||||
Seat 7: thebear666 ($101)
|
||||
Seat 8: FILL A RACK ($128.50)
|
||||
chasrigg antes $0.50
|
||||
ExecDec antes $0.50
|
||||
kwuiyhw antes $0.50
|
||||
arjun1111 antes $0.50
|
||||
FILL A RACK antes $0.50
|
||||
thebear666 antes $0.50
|
||||
goulartarm antes $0.50
|
||||
*** 3RD STREET ***
|
||||
Dealt to kwuiyhw [9c]
|
||||
Dealt to chasrigg [Jh]
|
||||
Dealt to goulartarm [Qs]
|
||||
Dealt to ExecDec [5s 2h] [Th]
|
||||
Dealt to arjun1111 [As]
|
||||
Dealt to thebear666 [7s]
|
||||
Dealt to FILL A RACK [Ad]
|
||||
thebear666 is low with [7s]
|
||||
thebear666 brings in for $1
|
||||
FILL A RACK folds
|
||||
kwuiyhw folds
|
||||
FILL A RACK stands up
|
||||
chasrigg has 15 seconds left to act
|
||||
shasatipu adds $316
|
||||
chasrigg folds
|
||||
goulartarm folds
|
||||
ExecDec folds
|
||||
arjun1111 completes it to $3
|
||||
thebear666 calls $2
|
||||
*** 4TH STREET ***
|
||||
Dealt to arjun1111 [As] [3h]
|
||||
Dealt to thebear666 [7s] [Qh]
|
||||
arjun1111 bets $3
|
||||
thebear666 folds
|
||||
Uncalled bet of $3 returned to arjun1111
|
||||
arjun1111 mucks
|
||||
arjun1111 wins the pot ($9.50)
|
||||
*** SUMMARY ***
|
||||
Total pot $9.50 | Rake $0
|
||||
Seat 1: bllodshot is sitting out
|
||||
Seat 2: kwuiyhw folded on 3rd St.
|
||||
Seat 3: chasrigg folded on 3rd St.
|
||||
Seat 4: goulartarm folded on 3rd St.
|
||||
Seat 5: ExecDec folded on 3rd St.
|
||||
Seat 6: arjun1111 collected ($9.50), mucked
|
||||
Seat 7: thebear666 folded on 4th St.
|
||||
Seat 8: FILL A RACK folded on 3rd St.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,658 @@
|
|||
{ u'ExecDec': { 'card1': 43,
|
||||
'card2': 1,
|
||||
'card3': 9,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 1,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 5,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 26550,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -50,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'FILL A RACK': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 26,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 5,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 8,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 12850,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -50,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'arjun1111': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 52,
|
||||
'card4': 2,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 0,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': True,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 6,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 4150,
|
||||
'street0Aggr': True,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': True,
|
||||
'street1Bets': 1,
|
||||
'street1CBChance': True,
|
||||
'street1CBDone': True,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': True,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 600,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 950,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 1.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'chasrigg': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 10,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 3,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 3,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 29750,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -50,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'goulartarm': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 50,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 2,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 4,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 9450,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -50,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'kwuiyhw': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 34,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 4,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 2,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 6250,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -50,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'thebear666': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 45,
|
||||
'card4': 11,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': True,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': True,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': True,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'S',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 7,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 10100,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': True,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -350,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0}}
|
|
@ -0,0 +1,47 @@
|
|||
Full Tilt Poker Game #21536266313: Table Hagan - $3/$6 Ante $0.50 - Limit Stud Hi - 12:06:20 ET - 2010/06/11
|
||||
Seat 1: bllodshot ($52.50)
|
||||
Seat 2: kwuiyhw ($48.50)
|
||||
Seat 3: chasrigg ($284)
|
||||
Seat 4: goulartarm ($80)
|
||||
Seat 5: ExecDec ($223.50)
|
||||
Seat 7: thebear666 ($87.50)
|
||||
Seat 8: FILL A RACK ($138)
|
||||
kwuiyhw antes $0.50
|
||||
chasrigg antes $0.50
|
||||
bllodshot antes $0.50
|
||||
ExecDec antes $0.50
|
||||
FILL A RACK antes $0.50
|
||||
thebear666 antes $0.50
|
||||
goulartarm antes $0.50
|
||||
*** 3RD STREET ***
|
||||
Dealt to bllodshot [9c]
|
||||
Dealt to kwuiyhw [Kc]
|
||||
Dealt to chasrigg [2s]
|
||||
Dealt to goulartarm [2c]
|
||||
Dealt to ExecDec [5h 3c] [Td]
|
||||
Dealt to thebear666 [3h]
|
||||
Dealt to FILL A RACK [6c]
|
||||
goulartarm is low with [2c]
|
||||
goulartarm brings in for $1
|
||||
ExecDec folds
|
||||
thebear666 folds
|
||||
FILL A RACK folds
|
||||
bllodshot folds
|
||||
kwuiyhw completes it to $3
|
||||
chasrigg folds
|
||||
goulartarm folds
|
||||
Uncalled bet of $2 returned to kwuiyhw
|
||||
kwuiyhw mucks
|
||||
kwuiyhw wins the pot ($5.50)
|
||||
*** SUMMARY ***
|
||||
Total pot $5.50 | Rake $0
|
||||
Seat 1: bllodshot folded on 3rd St.
|
||||
Seat 2: kwuiyhw collected ($5.50), mucked
|
||||
Seat 3: chasrigg folded on 3rd St.
|
||||
Seat 4: goulartarm folded on 3rd St.
|
||||
Seat 5: ExecDec folded on 3rd St.
|
||||
Seat 7: thebear666 folded on 3rd St.
|
||||
Seat 8: FILL A RACK folded on 3rd St.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
Full Tilt Poker Game #21536527525: Table Hagan - $3/$6 Ante $0.50 - Limit Stud Hi - 12:22:17 ET - 2010/06/11
|
||||
Seat 1: bllodshot ($31), is sitting out
|
||||
Seat 2: kwuiyhw ($67)
|
||||
Seat 3: chasrigg ($294.50)
|
||||
Seat 4: goulartarm ($92.50)
|
||||
Seat 5: ExecDec ($306)
|
||||
Seat 6: arjun1111 ($37)
|
||||
Seat 7: thebear666 ($84.50)
|
||||
Seat 8: shasatipu ($293.50)
|
||||
chasrigg antes $0.50
|
||||
ExecDec antes $0.50
|
||||
kwuiyhw antes $0.50
|
||||
thebear666 antes $0.50
|
||||
arjun1111 antes $0.50
|
||||
shasatipu antes $0.50
|
||||
goulartarm antes $0.50
|
||||
*** 3RD STREET ***
|
||||
Dealt to kwuiyhw [Th]
|
||||
Dealt to chasrigg [8h]
|
||||
Dealt to goulartarm [5c]
|
||||
Dealt to ExecDec [Td Jd] [As]
|
||||
Dealt to arjun1111 [8c]
|
||||
Dealt to thebear666 [Kc]
|
||||
Dealt to shasatipu [3c]
|
||||
shasatipu is low with [3c]
|
||||
shasatipu brings in for $1
|
||||
kwuiyhw folds
|
||||
chasrigg folds
|
||||
kwuiyhw is sitting out
|
||||
goulartarm folds
|
||||
ExecDec completes it to $3
|
||||
arjun1111 calls $3
|
||||
thebear666 raises to $6
|
||||
shasatipu has 15 seconds left to act
|
||||
shasatipu calls $5
|
||||
ExecDec calls $3
|
||||
arjun1111 calls $3
|
||||
*** 4TH STREET ***
|
||||
Dealt to ExecDec [Td Jd As] [Jc]
|
||||
Dealt to arjun1111 [8c] [3h]
|
||||
Dealt to thebear666 [Kc] [2h]
|
||||
Dealt to shasatipu [3c] [2d]
|
||||
ExecDec checks
|
||||
arjun1111 checks
|
||||
thebear666 has 15 seconds left to act
|
||||
thebear666 bets $3
|
||||
shasatipu folds
|
||||
ExecDec raises to $6
|
||||
arjun1111 folds
|
||||
thebear666 calls $3
|
||||
*** 5TH STREET ***
|
||||
Dealt to ExecDec [Td Jd As Jc] [Js]
|
||||
Dealt to thebear666 [Kc 2h] [3s]
|
||||
ExecDec bets $6
|
||||
thebear666 calls $6
|
||||
*** 6TH STREET ***
|
||||
Dealt to ExecDec [Td Jd As Jc Js] [7h]
|
||||
Dealt to thebear666 [Kc 2h 3s] [4d]
|
||||
ExecDec bets $6
|
||||
thebear666 calls $6
|
||||
*** 7TH STREET ***
|
||||
Dealt to ExecDec [Td Jd As Jc Js 7h] [2s]
|
||||
ExecDec bets $6
|
||||
thebear666 calls $6
|
||||
*** SHOW DOWN ***
|
||||
ExecDec shows [Jd Td As Jc Js 7h 2s] three of a kind, Jacks
|
||||
thebear666 mucks
|
||||
ExecDec wins the pot ($72.50) with three of a kind, Jacks
|
||||
*** SUMMARY ***
|
||||
Total pot $75.50 | Rake $3
|
||||
Seat 1: bllodshot is sitting out
|
||||
Seat 2: kwuiyhw folded on 3rd St.
|
||||
Seat 3: chasrigg folded on 3rd St.
|
||||
Seat 4: goulartarm folded on 3rd St.
|
||||
Seat 5: ExecDec showed [Jd Td As Jc Js 7h 2s] and won ($72.50) with three of a kind, Jacks
|
||||
Seat 6: arjun1111 folded on 4th St.
|
||||
Seat 7: thebear666 mucked [Kd 7c Kc 2h 3s 4d 5h] - a pair of Kings
|
||||
Seat 8: shasatipu folded on 4th St.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
Full Tilt Poker Game #21536441684: Table Hagan - $3/$6 Ante $0.50 - Limit Stud Hi - 12:17:06 ET - 2010/06/11
|
||||
Seat 1: bllodshot ($38)
|
||||
Seat 2: kwuiyhw ($64.50)
|
||||
Seat 3: chasrigg ($298.50)
|
||||
Seat 4: goulartarm ($98.50)
|
||||
Seat 5: ExecDec ($266.50)
|
||||
Seat 6: arjun1111 ($42.50)
|
||||
Seat 7: thebear666 ($84)
|
||||
Seat 8: FILL A RACK ($129.50)
|
||||
thebear666 antes $0.50
|
||||
kwuiyhw antes $0.50
|
||||
ExecDec antes $0.50
|
||||
chasrigg antes $0.50
|
||||
arjun1111 antes $0.50
|
||||
bllodshot antes $0.50
|
||||
FILL A RACK antes $0.50
|
||||
goulartarm antes $0.50
|
||||
*** 3RD STREET ***
|
||||
Dealt to bllodshot [8h]
|
||||
Dealt to kwuiyhw [4c]
|
||||
Dealt to chasrigg [7c]
|
||||
Dealt to goulartarm [6d]
|
||||
Dealt to ExecDec [3d 4s] [4d]
|
||||
Dealt to arjun1111 [8s]
|
||||
Dealt to thebear666 [Ac]
|
||||
Dealt to FILL A RACK [Jh]
|
||||
kwuiyhw is low with [4c]
|
||||
kwuiyhw brings in for $1
|
||||
chasrigg folds
|
||||
goulartarm folds
|
||||
ExecDec has 15 seconds left to act
|
||||
ExecDec folds
|
||||
arjun1111 folds
|
||||
thebear666 completes it to $3
|
||||
FILL A RACK folds
|
||||
bllodshot calls $3
|
||||
kwuiyhw folds
|
||||
*** 4TH STREET ***
|
||||
Dealt to bllodshot [8h] [Th]
|
||||
Dealt to thebear666 [Ac] [5c]
|
||||
thebear666 bets $3
|
||||
bllodshot calls $3
|
||||
*** 5TH STREET ***
|
||||
Dealt to bllodshot [8h Th] [7d]
|
||||
Dealt to thebear666 [Ac 5c] [9c]
|
||||
thebear666 has 15 seconds left to act
|
||||
thebear666 bets $6
|
||||
bllodshot folds
|
||||
Uncalled bet of $6 returned to thebear666
|
||||
thebear666 mucks
|
||||
thebear666 wins the pot ($17)
|
||||
*** SUMMARY ***
|
||||
Total pot $17 | Rake $0
|
||||
Seat 1: bllodshot folded on 5th St.
|
||||
Seat 2: kwuiyhw folded on 3rd St.
|
||||
Seat 3: chasrigg folded on 3rd St.
|
||||
Seat 4: goulartarm folded on 3rd St.
|
||||
Seat 5: ExecDec folded on 3rd St.
|
||||
Seat 6: arjun1111 folded on 3rd St.
|
||||
Seat 7: thebear666 collected ($17), mucked
|
||||
Seat 8: FILL A RACK folded on 3rd St.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
Full Tilt Poker Game #21536412690: Table Hagan - $3/$6 Ante $0.50 - Limit Stud Hi - 12:15:21 ET - 2010/06/11
|
||||
Seat 1: bllodshot ($34)
|
||||
Seat 2: kwuiyhw ($78.50)
|
||||
Seat 3: chasrigg ($299.50)
|
||||
Seat 4: goulartarm ($100.50)
|
||||
Seat 5: ExecDec ($249.50)
|
||||
Seat 6: arjun1111 ($43.50)
|
||||
Seat 7: thebear666 ($86)
|
||||
Seat 8: FILL A RACK ($131.50)
|
||||
ExecDec antes $0.50
|
||||
chasrigg antes $0.50
|
||||
arjun1111 antes $0.50
|
||||
bllodshot antes $0.50
|
||||
FILL A RACK antes $0.50
|
||||
kwuiyhw antes $0.50
|
||||
goulartarm antes $0.50
|
||||
thebear666 antes $0.50
|
||||
*** 3RD STREET ***
|
||||
Dealt to bllodshot [Qc]
|
||||
Dealt to kwuiyhw [5d]
|
||||
Dealt to chasrigg [9h]
|
||||
Dealt to goulartarm [3s]
|
||||
Dealt to ExecDec [4s Jc] [Th]
|
||||
Dealt to arjun1111 [Qd]
|
||||
Dealt to thebear666 [8c]
|
||||
Dealt to FILL A RACK [5h]
|
||||
goulartarm is low with [3s]
|
||||
goulartarm brings in for $1
|
||||
ExecDec folds
|
||||
arjun1111 folds
|
||||
thebear666 folds
|
||||
FILL A RACK folds
|
||||
bllodshot completes it to $3
|
||||
kwuiyhw folds
|
||||
chasrigg folds
|
||||
goulartarm folds
|
||||
Uncalled bet of $2 returned to bllodshot
|
||||
bllodshot mucks
|
||||
bllodshot wins the pot ($6)
|
||||
*** SUMMARY ***
|
||||
Total pot $6 | Rake $0
|
||||
Seat 1: bllodshot collected ($6), mucked
|
||||
Seat 2: kwuiyhw folded on 3rd St.
|
||||
Seat 3: chasrigg folded on 3rd St.
|
||||
Seat 4: goulartarm folded on 3rd St.
|
||||
Seat 5: ExecDec folded on 3rd St.
|
||||
Seat 6: arjun1111 folded on 3rd St.
|
||||
Seat 7: thebear666 folded on 3rd St.
|
||||
Seat 8: FILL A RACK folded on 3rd St.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,153 @@
|
|||
***** History for hand R5-81962116-232 *****
|
||||
Start hand: Mon Sep 13 00:21:02 GMT+0100 2010
|
||||
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 3
|
||||
Players in round: 4
|
||||
Seat 8: DamonV2 ($0.07)
|
||||
Seat 10: tchazx ($1)
|
||||
Seat 1: x Diabolo666 ($11.23)
|
||||
Seat 3: velabianca ($0.51)
|
||||
DamonV2 posts small blind ($0.02)
|
||||
tchazx posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [Tc, 9h, 7c, Ah, Jh]
|
||||
x Diabolo666 raises $0.10 to $0.10
|
||||
velabianca folds
|
||||
DamonV2 folds
|
||||
tchazx calls $0.05
|
||||
---
|
||||
tchazx changed 2 cards
|
||||
New hand for tchazx: [8h, 9h, 6s, Ah, Jh]
|
||||
x Diabolo666 changed 3 cards
|
||||
tchazx checks
|
||||
x Diabolo666 checks
|
||||
---
|
||||
Summary:
|
||||
Main pot: $0.22 won by x Diabolo666 ($0.21)
|
||||
Rake taken: $0.01
|
||||
Seat 8: DamonV2 ($0.05), net: -$0.02
|
||||
Seat 10: tchazx ($0.90), net: -$0.10, [8h, 9h, 6s, Ah, Jh] (HIGH_CARD ACE)
|
||||
Seat 1: x Diabolo666 ($11.34), net: +$0.11, [2c, Ac, Td, As, Qc] (PAIR ACE)
|
||||
Seat 3: velabianca ($0.51)
|
||||
***** End of hand R5-81962116-232 *****
|
||||
***** History for hand R5-81962116-233 *****
|
||||
Start hand: Mon Sep 13 00:21:42 GMT+0100 2010
|
||||
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 8
|
||||
Players in round: 5
|
||||
Seat 10: tchazx ($0.90)
|
||||
Seat 1: x Diabolo666 ($11.34)
|
||||
Seat 3: velabianca ($0.51)
|
||||
Seat 4: grommek ($9.40)
|
||||
Seat 8: DamonV2 ($0.05)
|
||||
tchazx posts small blind ($0.02)
|
||||
x Diabolo666 posts big blind ($0.05)
|
||||
grommek posts big blind ($0.05)
|
||||
grommek posts dead blind ($0.02)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [Jd, 5s, 8h, 4h, 7d]
|
||||
velabianca calls $0.05
|
||||
grommek checks
|
||||
DamonV2 calls $0.05 [all in]
|
||||
tchazx calls $0.03
|
||||
x Diabolo666 checks
|
||||
---
|
||||
tchazx changed 1 cards
|
||||
New hand for tchazx: [Ah, 5s, 8h, 4h, 7d]
|
||||
x Diabolo666 changed 4 cards
|
||||
velabianca changed 2 cards
|
||||
grommek changed 3 cards
|
||||
DamonV2 changed 2 cards
|
||||
tchazx checks
|
||||
x Diabolo666 checks
|
||||
velabianca bets $0.10
|
||||
grommek folds
|
||||
tchazx folds
|
||||
x Diabolo666 folds
|
||||
---
|
||||
---
|
||||
Summary:
|
||||
Main pot: $0.27 won by velabianca ($0.26)
|
||||
Rake taken: $0.01
|
||||
Seat 10: tchazx ($0.85), net: -$0.05
|
||||
Seat 1: x Diabolo666 ($11.29), net: -$0.05
|
||||
Seat 3: velabianca ($0.72), net: +$0.21, [As, 9s, 6s, 6c, 9h] (TWO_PAIR NINE, SIX)
|
||||
Seat 4: grommek ($9.33), net: -$0.07
|
||||
Seat 8: DamonV2 ($0), net: -$0.05, [Jh, 2c, Kh, Td, 6h] (HIGH_CARD KING)
|
||||
***** End of hand R5-81962116-233 *****
|
||||
***** History for hand R5-81962116-234 *****
|
||||
Start hand: Mon Sep 13 00:22:36 GMT+0100 2010
|
||||
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 10
|
||||
Players in round: 4
|
||||
Seat 1: x Diabolo666 ($11.29)
|
||||
Seat 3: velabianca ($0.72)
|
||||
Seat 4: grommek ($9.33)
|
||||
Seat 10: tchazx ($0.85)
|
||||
x Diabolo666 posts small blind ($0.02)
|
||||
velabianca posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [Kh, 9d, As, 4s, 7c]
|
||||
grommek calls $0.05
|
||||
tchazx folds
|
||||
x Diabolo666 folds
|
||||
velabianca checks
|
||||
velabianca changed 3 cards
|
||||
grommek changed 3 cards
|
||||
velabianca checks
|
||||
grommek bets $0.10
|
||||
velabianca folds
|
||||
---
|
||||
Summary:
|
||||
Main pot: $0.12 won by grommek ($0.12)
|
||||
Rake taken: $0
|
||||
Seat 1: x Diabolo666 ($11.27), net: -$0.02
|
||||
Seat 3: velabianca ($0.67), net: -$0.05
|
||||
Seat 4: grommek ($9.40), net: +$0.07
|
||||
Seat 10: tchazx ($0.85)
|
||||
***** End of hand R5-81962116-234 *****
|
||||
***** History for hand R5-81962116-235 *****
|
||||
Start hand: Mon Sep 13 00:23:04 GMT+0100 2010
|
||||
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 1
|
||||
Players in round: 4
|
||||
Seat 3: velabianca ($0.67)
|
||||
Seat 4: grommek ($9.40)
|
||||
Seat 10: tchazx ($0.85)
|
||||
Seat 1: x Diabolo666 ($11.27)
|
||||
velabianca posts small blind ($0.02)
|
||||
grommek posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [8d, Td, 2s, 3d, Qd]
|
||||
tchazx calls $0.05
|
||||
x Diabolo666 raises $0.10 to $0.10
|
||||
velabianca calls $0.08
|
||||
grommek calls $0.05
|
||||
tchazx calls $0.05
|
||||
---
|
||||
velabianca changed 2 cards
|
||||
grommek changed 2 cards
|
||||
tchazx changed 1 cards
|
||||
New hand for tchazx: [8d, Td, 8h, 3d, Qd]
|
||||
x Diabolo666 changed 3 cards
|
||||
velabianca checks
|
||||
grommek checks
|
||||
tchazx checks
|
||||
x Diabolo666 checks
|
||||
---
|
||||
Summary:
|
||||
Main pot: $0.40 won by velabianca ($0.38)
|
||||
Rake taken: $0.02
|
||||
Seat 3: velabianca ($0.95), net: +$0.28
|
||||
Seat 4: grommek ($9.30), net: -$0.10
|
||||
Seat 10: tchazx ($0.75), net: -$0.10
|
||||
Seat 1: x Diabolo666 ($11.17), net: -$0.10, [6d, Qc, 4c, Th, Qs] (PAIR QUEEN)
|
||||
***** End of hand R5-81962116-235 *****
|
|
@ -0,0 +1,39 @@
|
|||
***** History for hand R5-75443872-61 *****
|
||||
Start hand: Wed Aug 18 19:32:32 GMT+0100 2010
|
||||
Table: someplace [75443872] (LIMIT TEXAS_HOLDEM 0.50/1, Real money)
|
||||
User: player3
|
||||
Button: seat 5
|
||||
Players in round: 5
|
||||
Seat 7: player4 (34.70)
|
||||
Seat 9: player5 (1.05)
|
||||
Seat 1: player3 (23.90)
|
||||
Seat 3: player2 (33.95)
|
||||
Seat 5: player1 (14.20)
|
||||
player4 posts small blind (0.25)
|
||||
player5 posts big blind (0.50)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to player3: [Kd, Ks]
|
||||
player3 raises 1 to 1
|
||||
player2 folds
|
||||
player1 calls 1
|
||||
player4 folds
|
||||
player5 raises 0.55 to 1.05 [all in]
|
||||
player3 calls 0.05
|
||||
player1 calls 0.05
|
||||
--- Dealing flop [2d, Ad, Th]
|
||||
player3 bets 0.50
|
||||
player1 folds
|
||||
--- Dealing flop [2d, Ad, Th]
|
||||
--- Dealing turn [8s]
|
||||
--- Dealing river [7d]
|
||||
---
|
||||
Summary:
|
||||
Main pot: 3.40 won by player3 (3.25)
|
||||
Rake taken: $0.15
|
||||
Seat 7: player4 (34.45), net: -0.25
|
||||
Seat 9: player5 (0), net: -1.05, [Qd, Qh] (PAIR QUEEN)
|
||||
Seat 1: player3 (26.10), net: +2.20, [Kd, Ks] (PAIR KING)
|
||||
Seat 3: player2 (33.95)
|
||||
Seat 5: player1 (13.15), net: -1.05
|
||||
***** End of hand R5-75443872-61 *****
|
|
@ -0,0 +1,470 @@
|
|||
{ u'player1': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 0,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 5,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 1315,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 2,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -105,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'player2': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 1,
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 3,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 3395,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 0,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'player3': { 'card1': 25,
|
||||
'card2': 51,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 2,
|
||||
'raiseFirstInChance': True,
|
||||
'raisedFirstIn': True,
|
||||
'rake': 215,
|
||||
'sawShowdown': True,
|
||||
'seatNo': 1,
|
||||
'sitout': False,
|
||||
'startCards': 155,
|
||||
'startCash': 2610,
|
||||
'street0Aggr': True,
|
||||
'street0Bets': 1,
|
||||
'street0Calls': 1,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': False,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': True,
|
||||
'street0_4BDone': True,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': 120,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 325,
|
||||
'wonAtSD': 1.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'player4': { 'card1': 0,
|
||||
'card2': 0,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'S',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': False,
|
||||
'seatNo': 7,
|
||||
'sitout': False,
|
||||
'startCards': 0,
|
||||
'startCash': 3445,
|
||||
'street0Aggr': False,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': False,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': False,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -25,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0},
|
||||
u'player5': { 'card1': 24,
|
||||
'card2': 11,
|
||||
'card3': 0,
|
||||
'card4': 0,
|
||||
'card5': 0,
|
||||
'card6': 0,
|
||||
'card7': 0,
|
||||
'foldBbToStealChance': False,
|
||||
'foldSbToStealChance': False,
|
||||
'foldToOtherRaisedStreet0': False,
|
||||
'foldToOtherRaisedStreet1': False,
|
||||
'foldToOtherRaisedStreet2': False,
|
||||
'foldToOtherRaisedStreet3': False,
|
||||
'foldToOtherRaisedStreet4': False,
|
||||
'foldToStreet1CBChance': False,
|
||||
'foldToStreet1CBDone': False,
|
||||
'foldToStreet2CBChance': False,
|
||||
'foldToStreet2CBDone': False,
|
||||
'foldToStreet3CBChance': False,
|
||||
'foldToStreet3CBDone': False,
|
||||
'foldToStreet4CBChance': False,
|
||||
'foldToStreet4CBDone': False,
|
||||
'foldedBbToSteal': False,
|
||||
'foldedSbToSteal': False,
|
||||
'other3BStreet0': False,
|
||||
'other4BStreet0': False,
|
||||
'otherRaisedStreet0': False,
|
||||
'otherRaisedStreet1': False,
|
||||
'otherRaisedStreet2': False,
|
||||
'otherRaisedStreet3': False,
|
||||
'otherRaisedStreet4': False,
|
||||
'position': 'B',
|
||||
'raiseFirstInChance': False,
|
||||
'raisedFirstIn': False,
|
||||
'rake': 0,
|
||||
'sawShowdown': True,
|
||||
'seatNo': 9,
|
||||
'sitout': False,
|
||||
'startCards': 141,
|
||||
'startCash': 0,
|
||||
'street0Aggr': True,
|
||||
'street0Bets': 0,
|
||||
'street0Calls': 0,
|
||||
'street0Raises': 0,
|
||||
'street0VPI': True,
|
||||
'street0_3BChance': True,
|
||||
'street0_3BDone': True,
|
||||
'street0_4BChance': False,
|
||||
'street0_4BDone': False,
|
||||
'street1Aggr': False,
|
||||
'street1Bets': 0,
|
||||
'street1CBChance': False,
|
||||
'street1CBDone': False,
|
||||
'street1Calls': 0,
|
||||
'street1CheckCallRaiseChance': False,
|
||||
'street1CheckCallRaiseDone': False,
|
||||
'street1Raises': 0,
|
||||
'street1Seen': False,
|
||||
'street2Aggr': False,
|
||||
'street2Bets': 0,
|
||||
'street2CBChance': False,
|
||||
'street2CBDone': False,
|
||||
'street2Calls': 0,
|
||||
'street2CheckCallRaiseChance': False,
|
||||
'street2CheckCallRaiseDone': False,
|
||||
'street2Raises': 0,
|
||||
'street2Seen': False,
|
||||
'street3Aggr': False,
|
||||
'street3Bets': 0,
|
||||
'street3CBChance': False,
|
||||
'street3CBDone': False,
|
||||
'street3Calls': 0,
|
||||
'street3CheckCallRaiseChance': False,
|
||||
'street3CheckCallRaiseDone': False,
|
||||
'street3Raises': 0,
|
||||
'street3Seen': False,
|
||||
'street4Aggr': False,
|
||||
'street4Bets': 0,
|
||||
'street4CBChance': False,
|
||||
'street4CBDone': False,
|
||||
'street4Calls': 0,
|
||||
'street4CheckCallRaiseChance': False,
|
||||
'street4CheckCallRaiseDone': False,
|
||||
'street4Raises': 0,
|
||||
'street4Seen': False,
|
||||
'totalProfit': -205,
|
||||
'tourneyTypeId': None,
|
||||
'tourneysPlayersIds': None,
|
||||
'winnings': 0,
|
||||
'wonAtSD': 0.0,
|
||||
'wonWhenSeenStreet1': 0.0,
|
||||
'wonWhenSeenStreet2': 0.0,
|
||||
'wonWhenSeenStreet3': 0.0,
|
||||
'wonWhenSeenStreet4': 0.0}}
|
|
@ -0,0 +1,444 @@
|
|||
***** History for hand R5-81867677-656 *****
|
||||
Start hand: Mon Sep 13 00:26:26 GMT+0100 2010
|
||||
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 8
|
||||
Players in round: 3
|
||||
Seat 3: nickgerm ($3.74)
|
||||
Seat 4: tchazx ($5)
|
||||
Seat 8: XYXY26XYXY ($1.79)
|
||||
nickgerm posts small blind ($0.02)
|
||||
tchazx posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [Ks, 4s, 6s, Th]
|
||||
XYXY26XYXY calls $0.05
|
||||
nickgerm calls $0.03
|
||||
tchazx checks
|
||||
--- Dealing flop [5h, 7d, 2s]
|
||||
nickgerm checks
|
||||
tchazx checks
|
||||
XYXY26XYXY checks
|
||||
--- Dealing turn [Qs]
|
||||
nickgerm checks
|
||||
tchazx checks
|
||||
XYXY26XYXY checks
|
||||
--- Dealing river [4d]
|
||||
nickgerm bets $0.10
|
||||
tchazx folds
|
||||
XYXY26XYXY folds
|
||||
---
|
||||
Summary:
|
||||
Main pot: $0.15 won by nickgerm ($0.15)
|
||||
Rake taken: $0
|
||||
Seat 3: nickgerm ($3.84), net: +$0.10
|
||||
Seat 4: tchazx ($4.95), net: -$0.05
|
||||
Seat 8: XYXY26XYXY ($1.74), net: -$0.05
|
||||
***** End of hand R5-81867677-656 *****
|
||||
***** History for hand R5-81867677-657 *****
|
||||
Start hand: Mon Sep 13 00:27:13 GMT+0100 2010
|
||||
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 3
|
||||
Players in round: 3
|
||||
Seat 4: tchazx ($4.95)
|
||||
Seat 8: XYXY26XYXY ($1.74)
|
||||
Seat 3: nickgerm ($3.84)
|
||||
tchazx posts small blind ($0.02)
|
||||
XYXY26XYXY posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [Jd, Td, 8h, Tc]
|
||||
nickgerm calls $0.05
|
||||
tchazx calls $0.03
|
||||
XYXY26XYXY checks
|
||||
--- Dealing flop [4h, 7c, 2c]
|
||||
tchazx checks
|
||||
XYXY26XYXY checks
|
||||
nickgerm checks
|
||||
--- Dealing turn [Kc]
|
||||
tchazx checks
|
||||
XYXY26XYXY checks
|
||||
nickgerm bets $0.10
|
||||
tchazx folds
|
||||
XYXY26XYXY calls $0.10
|
||||
--- Dealing river [3d]
|
||||
XYXY26XYXY checks
|
||||
nickgerm bets $0.10
|
||||
XYXY26XYXY calls $0.10
|
||||
---
|
||||
Summary:
|
||||
Main pot: $0.55 won by nickgerm ($0.27), XYXY26XYXY ($0.26)
|
||||
Rake taken: $0.02
|
||||
Seat 4: tchazx ($4.90), net: -$0.05
|
||||
Seat 8: XYXY26XYXY ($1.75), net: +$0.01, [7h, Qs, 9c, Kd] (TWO_PAIR KING, SEVEN)
|
||||
Seat 3: nickgerm ($3.86), net: +$0.02, [7d, 6s, Ks, Jc] (TWO_PAIR KING, SEVEN)
|
||||
***** End of hand R5-81867677-657 *****
|
||||
***** History for hand R5-81867677-658 *****
|
||||
Start hand: Mon Sep 13 00:28:06 GMT+0100 2010
|
||||
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 4
|
||||
Players in round: 5
|
||||
Seat 8: XYXY26XYXY ($1.75)
|
||||
Seat 10: Mandala14 ($3)
|
||||
Seat 1: ANOKATO ($2.33)
|
||||
Seat 3: nickgerm ($3.86)
|
||||
Seat 4: tchazx ($4.90)
|
||||
XYXY26XYXY posts small blind ($0.02)
|
||||
Mandala14 posts big blind ($0.05)
|
||||
ANOKATO posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [Ad, Js, Jc, 9h]
|
||||
ANOKATO checks
|
||||
nickgerm raises $0.10 to $0.10
|
||||
tchazx calls $0.10
|
||||
XYXY26XYXY calls $0.08
|
||||
Mandala14 calls $0.05
|
||||
ANOKATO calls $0.05
|
||||
--- Dealing flop [6h, 2s, 5c]
|
||||
XYXY26XYXY checks
|
||||
Mandala14 checks
|
||||
ANOKATO bets $0.05
|
||||
nickgerm raises $0.10 to $0.10
|
||||
tchazx calls $0.10
|
||||
XYXY26XYXY folds
|
||||
Mandala14 calls $0.10
|
||||
ANOKATO raises $0.10 to $0.15
|
||||
nickgerm calls $0.05
|
||||
tchazx calls $0.05
|
||||
Mandala14 calls $0.05
|
||||
--- Dealing turn [Kh]
|
||||
Mandala14 checks
|
||||
ANOKATO bets $0.10
|
||||
nickgerm calls $0.10
|
||||
tchazx calls $0.10
|
||||
Mandala14 calls $0.10
|
||||
--- Dealing river [Ks]
|
||||
Mandala14 bets $0.10
|
||||
ANOKATO calls $0.10
|
||||
nickgerm folds
|
||||
tchazx calls $0.10
|
||||
---
|
||||
Summary:
|
||||
Main pot: $1.80 won by Mandala14 ($1.71)
|
||||
Rake taken: $0.09
|
||||
Seat 8: XYXY26XYXY ($1.65), net: -$0.10
|
||||
Seat 10: Mandala14 ($4.26), net: +$1.26, [As, Ah, 5s, Qs] (TWO_PAIR ACE, KING)
|
||||
Seat 1: ANOKATO ($1.88), net: -$0.45
|
||||
Seat 3: nickgerm ($3.51), net: -$0.35
|
||||
Seat 4: tchazx ($4.45), net: -$0.45
|
||||
***** End of hand R5-81867677-658 *****
|
||||
***** History for hand R5-81867677-659 *****
|
||||
Start hand: Mon Sep 13 00:29:21 GMT+0100 2010
|
||||
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 8
|
||||
Players in round: 5
|
||||
Seat 10: Mandala14 ($4.26)
|
||||
Seat 1: ANOKATO ($1.88)
|
||||
Seat 3: nickgerm ($3.51)
|
||||
Seat 4: tchazx ($4.45)
|
||||
Seat 8: XYXY26XYXY ($1.65)
|
||||
Mandala14 posts small blind ($0.02)
|
||||
ANOKATO posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [5h, Tc, 9c, 3h]
|
||||
nickgerm raises $0.10 to $0.10
|
||||
tchazx calls $0.10
|
||||
XYXY26XYXY calls $0.10
|
||||
Mandala14 calls $0.08
|
||||
ANOKATO calls $0.05
|
||||
--- Dealing flop [8s, 4d, 6d]
|
||||
Mandala14 checks
|
||||
ANOKATO checks
|
||||
nickgerm bets $0.05
|
||||
tchazx calls $0.05
|
||||
XYXY26XYXY calls $0.05
|
||||
Mandala14 calls $0.05
|
||||
ANOKATO calls $0.05
|
||||
--- Dealing turn [9s]
|
||||
Mandala14 checks
|
||||
ANOKATO bets $0.10
|
||||
nickgerm raises $0.20 to $0.20
|
||||
tchazx folds
|
||||
XYXY26XYXY calls $0.20
|
||||
Mandala14 calls $0.20
|
||||
ANOKATO raises $0.20 to $0.30
|
||||
nickgerm calls $0.10
|
||||
XYXY26XYXY calls $0.10
|
||||
Mandala14 calls $0.10
|
||||
--- Dealing river [4c]
|
||||
Mandala14 checks
|
||||
ANOKATO bets $0.10
|
||||
nickgerm folds
|
||||
XYXY26XYXY folds
|
||||
Mandala14 folds
|
||||
---
|
||||
Summary:
|
||||
Main pot: $1.95 won by ANOKATO ($1.86)
|
||||
Rake taken: $0.09
|
||||
Seat 10: Mandala14 ($3.81), net: -$0.45
|
||||
Seat 1: ANOKATO ($3.29), net: +$1.41
|
||||
Seat 3: nickgerm ($3.06), net: -$0.45
|
||||
Seat 4: tchazx ($4.30), net: -$0.15
|
||||
Seat 8: XYXY26XYXY ($1.20), net: -$0.45
|
||||
***** End of hand R5-81867677-659 *****
|
||||
***** History for hand R5-81867677-660 *****
|
||||
Start hand: Mon Sep 13 00:30:43 GMT+0100 2010
|
||||
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 10
|
||||
Players in round: 5
|
||||
Seat 1: ANOKATO ($3.29)
|
||||
Seat 3: nickgerm ($3.06)
|
||||
Seat 4: tchazx ($4.30)
|
||||
Seat 8: XYXY26XYXY ($1.20)
|
||||
Seat 10: Mandala14 ($3.81)
|
||||
ANOKATO posts small blind ($0.02)
|
||||
nickgerm posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [Qh, 4d, Ts, 9d]
|
||||
tchazx calls $0.05
|
||||
XYXY26XYXY calls $0.05
|
||||
Mandala14 calls $0.05
|
||||
ANOKATO calls $0.03
|
||||
nickgerm raises $0.05 to $0.10
|
||||
tchazx calls $0.05
|
||||
XYXY26XYXY calls $0.05
|
||||
Mandala14 calls $0.05
|
||||
ANOKATO calls $0.05
|
||||
--- Dealing flop [6d, 3c, Qc]
|
||||
ANOKATO checks
|
||||
nickgerm bets $0.05
|
||||
tchazx calls $0.05
|
||||
XYXY26XYXY calls $0.05
|
||||
Mandala14 calls $0.05
|
||||
ANOKATO calls $0.05
|
||||
--- Dealing turn [7h]
|
||||
ANOKATO checks
|
||||
nickgerm checks
|
||||
tchazx checks
|
||||
XYXY26XYXY checks
|
||||
Mandala14 checks
|
||||
--- Dealing river [Jh]
|
||||
ANOKATO bets $0.10
|
||||
nickgerm folds
|
||||
tchazx calls $0.10
|
||||
XYXY26XYXY folds
|
||||
Mandala14 folds
|
||||
---
|
||||
Summary:
|
||||
Main pot: $0.95 won by ANOKATO ($0.91)
|
||||
Rake taken: $0.04
|
||||
Seat 1: ANOKATO ($3.95), net: +$0.66, [7c, Qd, Ks, 5d] (TWO_PAIR QUEEN, SEVEN)
|
||||
Seat 3: nickgerm ($2.91), net: -$0.15
|
||||
Seat 4: tchazx ($4.05), net: -$0.25
|
||||
Seat 8: XYXY26XYXY ($1.05), net: -$0.15
|
||||
Seat 10: Mandala14 ($3.66), net: -$0.15
|
||||
***** End of hand R5-81867677-660 *****
|
||||
***** History for hand R5-81867677-661 *****
|
||||
Start hand: Mon Sep 13 00:31:54 GMT+0100 2010
|
||||
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 1
|
||||
Players in round: 5
|
||||
Seat 3: nickgerm ($2.91)
|
||||
Seat 4: tchazx ($4.05)
|
||||
Seat 8: XYXY26XYXY ($1.05)
|
||||
Seat 10: Mandala14 ($3.66)
|
||||
Seat 1: ANOKATO ($3.95)
|
||||
nickgerm posts small blind ($0.02)
|
||||
tchazx posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [5d, 9h, 6h, 4h]
|
||||
XYXY26XYXY calls $0.05
|
||||
Mandala14 calls $0.05
|
||||
ANOKATO calls $0.05
|
||||
nickgerm calls $0.03
|
||||
tchazx checks
|
||||
--- Dealing flop [2d, 4d, Jh]
|
||||
nickgerm bets $0.05
|
||||
tchazx folds
|
||||
XYXY26XYXY calls $0.05
|
||||
Mandala14 folds
|
||||
ANOKATO calls $0.05
|
||||
--- Dealing turn [As]
|
||||
nickgerm bets $0.10
|
||||
XYXY26XYXY calls $0.10
|
||||
ANOKATO raises $0.20 to $0.20
|
||||
nickgerm calls $0.10
|
||||
XYXY26XYXY calls $0.10
|
||||
--- Dealing river [Jc]
|
||||
nickgerm bets $0.10
|
||||
XYXY26XYXY calls $0.10
|
||||
ANOKATO raises $0.20 to $0.20
|
||||
nickgerm raises $0.20 to $0.30
|
||||
XYXY26XYXY folds
|
||||
ANOKATO calls $0.10
|
||||
---
|
||||
Summary:
|
||||
Main pot: $1.70 won by nickgerm ($1.62)
|
||||
Rake taken: $0.08
|
||||
Seat 3: nickgerm ($3.93), net: +$1.02, [9c, 4s, Jd, 6c] (FULL_HOUSE JACK, FOUR)
|
||||
Seat 4: tchazx ($4), net: -$0.05
|
||||
Seat 8: XYXY26XYXY ($0.65), net: -$0.40
|
||||
Seat 10: Mandala14 ($3.61), net: -$0.05
|
||||
Seat 1: ANOKATO ($3.35), net: -$0.60
|
||||
***** End of hand R5-81867677-661 *****
|
||||
***** History for hand R5-81867677-662 *****
|
||||
Start hand: Mon Sep 13 00:33:20 GMT+0100 2010
|
||||
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 3
|
||||
Players in round: 5
|
||||
Seat 4: tchazx ($4)
|
||||
Seat 8: XYXY26XYXY ($0.65)
|
||||
Seat 10: Mandala14 ($3.61)
|
||||
Seat 1: ANOKATO ($3.35)
|
||||
Seat 3: nickgerm ($3.93)
|
||||
tchazx posts small blind ($0.02)
|
||||
XYXY26XYXY posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [5s, 6c, Kc, 3s]
|
||||
Mandala14 calls $0.05
|
||||
ANOKATO calls $0.05
|
||||
nickgerm raises $0.10 to $0.10
|
||||
tchazx folds
|
||||
XYXY26XYXY calls $0.05
|
||||
Mandala14 calls $0.05
|
||||
ANOKATO calls $0.05
|
||||
--- Dealing flop [3h, 2d, 2s]
|
||||
XYXY26XYXY checks
|
||||
Mandala14 checks
|
||||
ANOKATO checks
|
||||
nickgerm bets $0.05
|
||||
XYXY26XYXY calls $0.05
|
||||
Mandala14 folds
|
||||
ANOKATO raises $0.10 to $0.10
|
||||
nickgerm calls $0.05
|
||||
XYXY26XYXY folds
|
||||
--- Dealing turn [4d]
|
||||
ANOKATO checks
|
||||
nickgerm bets $0.10
|
||||
ANOKATO raises $0.20 to $0.20
|
||||
nickgerm calls $0.10
|
||||
--- Dealing river [Ts]
|
||||
ANOKATO checks
|
||||
nickgerm checks
|
||||
---
|
||||
Summary:
|
||||
Main pot: $1.07 won by ANOKATO ($1.02)
|
||||
Rake taken: $0.05
|
||||
Seat 4: tchazx ($3.98), net: -$0.02
|
||||
Seat 8: XYXY26XYXY ($0.50), net: -$0.15
|
||||
Seat 10: Mandala14 ($3.51), net: -$0.10
|
||||
Seat 1: ANOKATO ($3.97), net: +$0.62, [Js, 5c, 9c, 2h] (THREE_OF_A_KIND TWO)
|
||||
Seat 3: nickgerm ($3.53), net: -$0.40
|
||||
***** End of hand R5-81867677-662 *****
|
||||
***** History for hand R5-81867677-663 *****
|
||||
Start hand: Mon Sep 13 00:34:34 GMT+0100 2010
|
||||
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 4
|
||||
Players in round: 5
|
||||
Seat 8: XYXY26XYXY ($0.50)
|
||||
Seat 10: Mandala14 ($3.51)
|
||||
Seat 1: ANOKATO ($3.97)
|
||||
Seat 3: nickgerm ($3.53)
|
||||
Seat 4: tchazx ($3.98)
|
||||
XYXY26XYXY posts small blind ($0.02)
|
||||
Mandala14 posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [Ac, 9h, 6h, Jc]
|
||||
ANOKATO calls $0.05
|
||||
nickgerm calls $0.05
|
||||
tchazx calls $0.05
|
||||
XYXY26XYXY calls $0.03
|
||||
Mandala14 checks
|
||||
--- Dealing flop [7s, 4c, 8s]
|
||||
XYXY26XYXY checks
|
||||
Mandala14 checks
|
||||
ANOKATO bets $0.05
|
||||
nickgerm calls $0.05
|
||||
tchazx calls $0.05
|
||||
XYXY26XYXY calls $0.05
|
||||
Mandala14 calls $0.05
|
||||
--- Dealing turn [2d]
|
||||
XYXY26XYXY checks
|
||||
Mandala14 checks
|
||||
ANOKATO bets $0.10
|
||||
nickgerm raises $0.20 to $0.20
|
||||
tchazx calls $0.20
|
||||
XYXY26XYXY calls $0.20
|
||||
Mandala14 calls $0.20
|
||||
ANOKATO calls $0.10
|
||||
--- Dealing river [4h]
|
||||
XYXY26XYXY bets $0.10
|
||||
Mandala14 folds
|
||||
ANOKATO calls $0.10
|
||||
nickgerm raises $0.20 to $0.20
|
||||
tchazx folds
|
||||
XYXY26XYXY calls $0.10 [all in]
|
||||
ANOKATO folds
|
||||
---
|
||||
Summary:
|
||||
Main pot: $2 won by XYXY26XYXY ($1.90)
|
||||
Rake taken: $0.10
|
||||
Seat 8: XYXY26XYXY ($1.90), net: +$1.40, [8d, 5c, 4d, 3c] (FULL_HOUSE FOUR, EIGHT)
|
||||
Seat 10: Mandala14 ($3.21), net: -$0.30
|
||||
Seat 1: ANOKATO ($3.57), net: -$0.40
|
||||
Seat 3: nickgerm ($3.03), net: -$0.50, [6s, Th, 3d, 5d] (STRAIGHT EIGHT)
|
||||
Seat 4: tchazx ($3.68), net: -$0.30
|
||||
***** End of hand R5-81867677-663 *****
|
||||
***** History for hand R5-81867677-664 *****
|
||||
Start hand: Mon Sep 13 00:36:21 GMT+0100 2010
|
||||
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 8
|
||||
Players in round: 5
|
||||
Seat 10: Mandala14 ($3.21)
|
||||
Seat 1: ANOKATO ($3.57)
|
||||
Seat 3: nickgerm ($3.03)
|
||||
Seat 4: tchazx ($3.68)
|
||||
Seat 8: XYXY26XYXY ($1.90)
|
||||
Mandala14 posts small blind ($0.02)
|
||||
ANOKATO posts big blind ($0.05)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [7d, Kh, 4s, Jh]
|
||||
nickgerm calls $0.05
|
||||
tchazx calls $0.05
|
||||
XYXY26XYXY folds
|
||||
Mandala14 calls $0.03
|
||||
ANOKATO checks
|
||||
--- Dealing flop [4h, Js, Ac]
|
||||
Mandala14 checks
|
||||
ANOKATO folds
|
||||
nickgerm bets $0.05
|
||||
tchazx calls $0.05
|
||||
Mandala14 calls $0.05
|
||||
--- Dealing turn [8c]
|
||||
Mandala14 checks
|
||||
nickgerm checks
|
||||
tchazx checks
|
||||
--- Dealing river [3d]
|
||||
Mandala14 checks
|
||||
nickgerm checks
|
||||
tchazx checks
|
||||
---
|
||||
Summary:
|
||||
Main pot: $0.35 won by tchazx ($0.34)
|
||||
Rake taken: $0.01
|
||||
Seat 10: Mandala14 ($3.11), net: -$0.10, [7h, 4d, Qh, 6d] (PAIR FOUR)
|
||||
Seat 1: ANOKATO ($3.52), net: -$0.05
|
||||
Seat 3: nickgerm ($2.93), net: -$0.10, [7s, Qd, 6s, Ah] (PAIR ACE)
|
||||
Seat 4: tchazx ($3.92), net: +$0.24, [7d, Kh, 4s, Jh] (TWO_PAIR JACK, FOUR)
|
||||
Seat 8: XYXY26XYXY ($1.90)
|
||||
***** End of hand R5-81867677-664 *****
|
|
@ -0,0 +1,41 @@
|
|||
***** History for hand R5-70000684-006 *****
|
||||
Start hand: Wed Aug 11 03:21:00 GMT+0100 2010
|
||||
Table: Kassel [73910684] (NO_LIMIT TEXAS_HOLDEM 0.05/0.10, Real money)
|
||||
User: Player3
|
||||
Button: seat 8
|
||||
Players in round: 5
|
||||
Seat 9: Player1 (4.35)
|
||||
Seat 3: Player0 (10.90)
|
||||
Seat 5: Player2 (12.88)
|
||||
Seat 6: Player3 (14.18)
|
||||
Seat 8: Player4 (9)
|
||||
Player1 posts small blind (0.05)
|
||||
Player0 posts big blind (0.10)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to Player3: [6s, 7h]
|
||||
Player2 folds
|
||||
Player3 folds
|
||||
Player4 raises 0.30 to 0.30
|
||||
Player1 calls 0.25
|
||||
Player0 folds
|
||||
--- Dealing flop [8c, Ts, 4d]
|
||||
Player1 checks
|
||||
Player4 checks
|
||||
--- Dealing turn [Ac]
|
||||
Player1 bets 0.10
|
||||
Player4 calls 0.10
|
||||
--- Dealing river [5d]
|
||||
Player1 bets 0.10
|
||||
Player4 folds
|
||||
---
|
||||
Summary:
|
||||
Main pot: 0.90 won by Player1 (0.86)
|
||||
Rake taken: $0.04
|
||||
Seat 9: Player1 (4.81), net: +0.46
|
||||
Seat 3: Player0 (10.80), net: -0.10
|
||||
Seat 5: Player2 (12.88)
|
||||
Seat 6: Player3 (14.18)
|
||||
Seat 8: Player4 (8.60), net: -0.40
|
||||
***** End of hand R5-73910684-276 *****
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
***** History for hand R5-79836934-72 *****
|
||||
Start hand: Sat Sep 4 05:34:19 GMT+0100 2010
|
||||
Table: Bnei Brak [79836934] (NO_LIMIT TEXAS_HOLDEM $0.05/$0.10, Real money)
|
||||
User: tchazx
|
||||
Button: seat 10
|
||||
Players in round: 2
|
||||
Seat 1: feradf ($6.86)
|
||||
Seat 10: tchazx ($15.44)
|
||||
tchazx posts big blind ($0.10)
|
||||
tchazx posts dead blind ($0.05)
|
||||
feradf posts big blind ($0.10)
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to tchazx: [Qh, 4h]
|
||||
tchazx raises $0.20 to $0.30
|
||||
feradf calls $0.20
|
||||
--- Dealing flop [6c, Qs, 7h]
|
||||
feradf checks
|
||||
tchazx bets $0.45
|
||||
feradf folds
|
||||
---
|
||||
Summary:
|
||||
Main pot: $0.65 won by tchazx ($0.62)
|
||||
Rake taken: $0.03
|
||||
Seat 1: feradf ($6.56), net: -$0.30
|
||||
Seat 10: tchazx ($15.71), net: +$0.27
|
||||
***** End of hand R5-79836934-72 *****
|
|
@ -0,0 +1,270 @@
|
|||
***** History for hand R5-82086688-607 *****
|
||||
Start hand: Mon Sep 13 22:31:30 GMT+0100 2010
|
||||
Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
|
||||
User: tchazx
|
||||
Players in round: 5
|
||||
Seat 1: the bAAr ($6.53)
|
||||
Seat 2: tchazx ($2)
|
||||
Seat 6: kueto ($6.30)
|
||||
Seat 8: E6y Ko3y ($2.70)
|
||||
Seat 10: telozver123 ($6.49)
|
||||
the bAAr posts ante $0.02
|
||||
kueto posts ante $0.02
|
||||
E6y Ko3y posts ante $0.02
|
||||
telozver123 posts ante $0.02
|
||||
tchazx posts ante $0.02
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to the bAAr: [-, -, Kh]
|
||||
Dealing to tchazx: [Jh, 9d, Ac]
|
||||
Dealing to kueto: [-, -, 4h]
|
||||
Dealing to E6y Ko3y: [-, -, Ad]
|
||||
Dealing to telozver123: [-, -, 6h]
|
||||
kueto small bring in $0.05
|
||||
E6y Ko3y calls $0.05
|
||||
telozver123 calls $0.05
|
||||
the bAAr calls $0.05
|
||||
tchazx calls $0.05
|
||||
---
|
||||
Dealing 4th street
|
||||
Dealing to the bAAr: [3h]
|
||||
Dealing to tchazx: [7h]
|
||||
Dealing to kueto: [3d]
|
||||
Dealing to E6y Ko3y: [Qs]
|
||||
Dealing to telozver123: [Ts]
|
||||
E6y Ko3y bets $0.10
|
||||
telozver123 calls $0.10
|
||||
the bAAr calls $0.10
|
||||
tchazx calls $0.10
|
||||
kueto folds
|
||||
---
|
||||
Dealing 5th street
|
||||
Dealing to the bAAr: [9s]
|
||||
Dealing to tchazx: [Js]
|
||||
Dealing to E6y Ko3y: [6c]
|
||||
Dealing to telozver123: [Kd]
|
||||
E6y Ko3y checks
|
||||
telozver123 checks
|
||||
the bAAr bets $0.20
|
||||
tchazx calls $0.20
|
||||
E6y Ko3y calls $0.20
|
||||
telozver123 folds
|
||||
---
|
||||
Dealing 6th street
|
||||
Dealing to the bAAr: [8s]
|
||||
Dealing to tchazx: [5c]
|
||||
Dealing to E6y Ko3y: [5d]
|
||||
E6y Ko3y checks
|
||||
the bAAr bets $0.20
|
||||
tchazx calls $0.20
|
||||
E6y Ko3y calls $0.20
|
||||
---
|
||||
Dealing river
|
||||
Dealing to tchazx: [9h]
|
||||
E6y Ko3y checks
|
||||
the bAAr checks
|
||||
tchazx bets $0.20
|
||||
E6y Ko3y folds
|
||||
the bAAr calls $0.20
|
||||
---
|
||||
Summary:
|
||||
Main pot: $2.35 won by tchazx ($2.24)
|
||||
Rake taken: $0.11
|
||||
Seat 1: the bAAr ($5.76), net: -$0.77
|
||||
Seat 2: tchazx ($3.47), net: +$1.47, [Jh, 9d, Ac, 7h, Js, 5c, 9h] (TWO_PAIR JACK, NINE)
|
||||
Seat 6: kueto ($6.23), net: -$0.07
|
||||
Seat 8: E6y Ko3y ($2.13), net: -$0.57
|
||||
Seat 10: telozver123 ($6.32), net: -$0.17
|
||||
***** End of hand R5-82086688-607 *****
|
||||
***** History for hand R5-82086688-608 *****
|
||||
Start hand: Mon Sep 13 22:32:47 GMT+0100 2010
|
||||
Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
|
||||
User: tchazx
|
||||
Players in round: 5
|
||||
Seat 1: the bAAr ($5.76)
|
||||
Seat 2: tchazx ($3.47)
|
||||
Seat 6: kueto ($6.23)
|
||||
Seat 8: E6y Ko3y ($2.13)
|
||||
Seat 10: telozver123 ($6.32)
|
||||
the bAAr posts ante $0.02
|
||||
tchazx posts ante $0.02
|
||||
kueto posts ante $0.02
|
||||
E6y Ko3y posts ante $0.02
|
||||
telozver123 posts ante $0.02
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to the bAAr: [-, -, 4s]
|
||||
Dealing to tchazx: [8h, Ks, Qd]
|
||||
Dealing to kueto: [-, -, 5h]
|
||||
Dealing to E6y Ko3y: [-, -, 2h]
|
||||
Dealing to telozver123: [-, -, 3c]
|
||||
E6y Ko3y small bring in $0.05
|
||||
telozver123 folds
|
||||
the bAAr calls $0.05
|
||||
tchazx calls $0.05
|
||||
kueto folds
|
||||
---
|
||||
Dealing 4th street
|
||||
Dealing to the bAAr: [Ad]
|
||||
Dealing to tchazx: [8d]
|
||||
Dealing to E6y Ko3y: [Qh]
|
||||
the bAAr bets $0.10
|
||||
tchazx calls $0.10
|
||||
E6y Ko3y folds
|
||||
---
|
||||
Dealing 5th street
|
||||
Dealing to the bAAr: [4c]
|
||||
Dealing to tchazx: [Ah]
|
||||
the bAAr bets $0.20
|
||||
tchazx calls $0.20
|
||||
---
|
||||
Dealing 6th street
|
||||
Dealing to the bAAr: [3d]
|
||||
Dealing to tchazx: [Jh]
|
||||
the bAAr checks
|
||||
tchazx checks
|
||||
---
|
||||
Dealing river
|
||||
Dealing to tchazx: [Kh]
|
||||
the bAAr bets $0.20
|
||||
tchazx calls $0.20
|
||||
---
|
||||
Summary:
|
||||
Main pot: $1.25 won by tchazx ($1.19)
|
||||
Rake taken: $0.06
|
||||
Seat 1: the bAAr ($5.19), net: -$0.57, [6s, 9s, 4s, Ad, 4c, 3d, 3h] (TWO_PAIR FOUR, THREE)
|
||||
Seat 2: tchazx ($4.09), net: +$0.62, [8h, Ks, Qd, 8d, Ah, Jh, Kh] (TWO_PAIR KING, EIGHT)
|
||||
Seat 6: kueto ($6.21), net: -$0.02
|
||||
Seat 8: E6y Ko3y ($2.06), net: -$0.07
|
||||
Seat 10: telozver123 ($6.30), net: -$0.02
|
||||
***** End of hand R5-82086688-608 *****
|
||||
***** History for hand R5-82086688-609 *****
|
||||
Start hand: Mon Sep 13 22:33:42 GMT+0100 2010
|
||||
Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
|
||||
User: tchazx
|
||||
Players in round: 5
|
||||
Seat 1: the bAAr ($5.19)
|
||||
Seat 2: tchazx ($4.09)
|
||||
Seat 6: kueto ($6.21)
|
||||
Seat 8: E6y Ko3y ($2.06)
|
||||
Seat 10: telozver123 ($6.30)
|
||||
the bAAr posts ante $0.02
|
||||
tchazx posts ante $0.02
|
||||
kueto posts ante $0.02
|
||||
E6y Ko3y posts ante $0.02
|
||||
telozver123 posts ante $0.02
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to the bAAr: [-, -, 5c]
|
||||
Dealing to tchazx: [Ad, As, Kh]
|
||||
Dealing to kueto: [-, -, Qs]
|
||||
Dealing to E6y Ko3y: [-, -, 8s]
|
||||
Dealing to telozver123: [-, -, Tc]
|
||||
the bAAr small bring in $0.05
|
||||
tchazx bets $0.10
|
||||
kueto calls $0.10
|
||||
E6y Ko3y folds
|
||||
telozver123 folds
|
||||
the bAAr folds
|
||||
---
|
||||
Dealing 4th street
|
||||
Dealing to tchazx: [Ks]
|
||||
Dealing to kueto: [Qd]
|
||||
tchazx bets $0.10
|
||||
kueto calls $0.10
|
||||
---
|
||||
Dealing 5th street
|
||||
Dealing to tchazx: [8c]
|
||||
Dealing to kueto: [7s]
|
||||
tchazx bets $0.20
|
||||
kueto calls $0.20
|
||||
---
|
||||
Dealing 6th street
|
||||
Dealing to tchazx: [7d]
|
||||
Dealing to kueto: [5s]
|
||||
tchazx bets $0.20
|
||||
kueto calls $0.20
|
||||
---
|
||||
Dealing river
|
||||
Dealing to tchazx: [7h]
|
||||
tchazx bets $0.20
|
||||
kueto calls $0.20
|
||||
---
|
||||
Summary:
|
||||
Main pot: $1.75 won by kueto ($1.67)
|
||||
Rake taken: $0.08
|
||||
Seat 1: the bAAr ($5.12), net: -$0.07
|
||||
Seat 2: tchazx ($3.27), net: -$0.82, [Ad, As, Kh, Ks, 8c, 7d, 7h] (TWO_PAIR ACE, KING)
|
||||
Seat 6: kueto ($7.06), net: +$0.85, [Qc, 6c, Qs, Qd, 7s, 5s, 3c] (THREE_OF_A_KIND QUEEN)
|
||||
Seat 8: E6y Ko3y ($2.04), net: -$0.02
|
||||
Seat 10: telozver123 ($6.28), net: -$0.02
|
||||
***** End of hand R5-82086688-609 *****
|
||||
***** History for hand R5-82086688-610 *****
|
||||
Start hand: Mon Sep 13 22:34:25 GMT+0100 2010
|
||||
Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
|
||||
User: tchazx
|
||||
Players in round: 5
|
||||
Seat 1: the bAAr ($5.12)
|
||||
Seat 2: tchazx ($3.27)
|
||||
Seat 6: kueto ($7.06)
|
||||
Seat 8: E6y Ko3y ($2.04)
|
||||
Seat 10: telozver123 ($6.28)
|
||||
the bAAr posts ante $0.02
|
||||
tchazx posts ante $0.02
|
||||
kueto posts ante $0.02
|
||||
E6y Ko3y posts ante $0.02
|
||||
telozver123 posts ante $0.02
|
||||
---
|
||||
Dealing pocket cards
|
||||
Dealing to the bAAr: [-, -, Ts]
|
||||
Dealing to tchazx: [9s, 6s, 7s]
|
||||
Dealing to kueto: [-, -, Qs]
|
||||
Dealing to E6y Ko3y: [-, -, 3s]
|
||||
Dealing to telozver123: [-, -, 9d]
|
||||
E6y Ko3y small bring in $0.05
|
||||
telozver123 folds
|
||||
the bAAr calls $0.05
|
||||
tchazx calls $0.05
|
||||
kueto calls $0.05
|
||||
---
|
||||
Dealing 4th street
|
||||
Dealing to the bAAr: [Qd]
|
||||
Dealing to tchazx: [Ah]
|
||||
Dealing to kueto: [7h]
|
||||
Dealing to E6y Ko3y: [Th]
|
||||
tchazx checks
|
||||
kueto checks
|
||||
E6y Ko3y checks
|
||||
the bAAr bets $0.10
|
||||
tchazx calls $0.10
|
||||
kueto folds
|
||||
E6y Ko3y folds
|
||||
---
|
||||
Dealing 5th street
|
||||
Dealing to the bAAr: [Jh]
|
||||
Dealing to tchazx: [5c]
|
||||
tchazx checks
|
||||
the bAAr bets $0.20
|
||||
tchazx calls $0.20
|
||||
---
|
||||
Dealing 6th street
|
||||
Dealing to the bAAr: [7d]
|
||||
Dealing to tchazx: [7c]
|
||||
tchazx checks
|
||||
the bAAr bets $0.20
|
||||
tchazx calls $0.20
|
||||
---
|
||||
Dealing river
|
||||
Dealing to tchazx: [5h]
|
||||
tchazx checks
|
||||
the bAAr checks
|
||||
---
|
||||
Summary:
|
||||
Main pot: $1.30 won by the bAAr ($1.24)
|
||||
Rake taken: $0.06
|
||||
Seat 1: the bAAr ($5.79), net: +$0.67, [Tc, 9h, Ts, Qd, Jh, 7d, 9c] (TWO_PAIR TEN, NINE)
|
||||
Seat 2: tchazx ($2.70), net: -$0.57, [9s, 6s, 7s, Ah, 5c, 7c, 5h] (TWO_PAIR SEVEN, FIVE)
|
||||
Seat 6: kueto ($6.99), net: -$0.07
|
||||
Seat 8: E6y Ko3y ($1.97), net: -$0.07
|
||||
Seat 10: telozver123 ($6.26), net: -$0.02
|
||||
***** End of hand R5-82086688-610 *****
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user