Merge branch 'nuto'

This commit is contained in:
Steffen Schaumburg 2010-11-11 15:56:03 +01:00
commit 43a32ebd8f
17 changed files with 1550 additions and 194 deletions

View File

@ -51,7 +51,7 @@ class Absolute(HandHistoryConverter):
^Stage\s+\#C?(?P<HID>[0-9]+):?\s+ ^Stage\s+\#C?(?P<HID>[0-9]+):?\s+
(?:Tourney\ ID\ (?P<TRNY_ID>\d+)\s+)? (?:Tourney\ ID\ (?P<TRNY_ID>\d+)\s+)?
(?P<GAME>Holdem|Seven\ Card\ Hi\/L|HORSE)\s+ (?P<GAME>Holdem|Seven\ Card\ Hi\/L|HORSE)\s+
(?P<TRNY_TYPE>\(1\son\s1\)|Single\ Tournament|)\s* (?P<TRNY_TYPE>\(1\son\s1\)|Single\ Tournament|Multi\ Normal\ Tournament|)\s*
(?P<LIMIT>No\ Limit|Pot\ Limit|Normal|)\s? (?P<LIMIT>No\ Limit|Pot\ Limit|Normal|)\s?
(?P<CURRENCY>\$|\s|) (?P<CURRENCY>\$|\s|)
(?P<SB>[.0-9]+)/?(?:\$|\s|)(?P<BB>[.0-9]+)? (?P<SB>[.0-9]+)/?(?:\$|\s|)(?P<BB>[.0-9]+)?
@ -71,8 +71,8 @@ class Absolute(HandHistoryConverter):
# on HORSE STUD games, the table name isn't in the hand info! # on HORSE STUD games, the table name isn't in the hand info!
re_RingInfoFromFilename = re.compile(ur".*IHH([0-9]+) (?P<TABLE>.*) -") re_RingInfoFromFilename = re.compile(ur".*IHH([0-9]+) (?P<TABLE>.*) -")
re_TrnyInfoFromFilename = re.compile( re_TrnyInfoFromFilename = re.compile(
ur".*IHH ([0-9]+) (?P<TRNY_NAME>.*) "\ ur"IHH\s?([0-9]+) (?P<TRNY_NAME>.*) "\
ur"ID (?P<TRNY_ID>\d+) \((?P<TABLE>\d+)\) .* "\ ur"ID (?P<TRNY_ID>\d+)\s?(\((?P<TABLE>\d+)\))? .* "\
ur"(?:\$|\s€|)(?P<BUYIN>[0-9.]+)\s*\+\s*(?:\$|\s€|)(?P<FEE>[0-9.]+)" ur"(?:\$|\s€|)(?P<BUYIN>[0-9.]+)\s*\+\s*(?:\$|\s€|)(?P<FEE>[0-9.]+)"
) )
@ -142,6 +142,7 @@ class Absolute(HandHistoryConverter):
mg = m.groupdict() mg = m.groupdict()
#print "DEBUG: mg: %s" % mg
# translations from captured groups to our info strings # translations from captured groups to our info strings
limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Normal':'fl', 'Limit':'fl'} limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Normal':'fl', 'Limit':'fl'}
@ -193,13 +194,18 @@ class Absolute(HandHistoryConverter):
else self.re_RingInfoFromFilename else self.re_RingInfoFromFilename
fname_info = fname_re.search(self.in_path) fname_info = fname_re.search(self.in_path)
#print "DEBUG: fname_info.groupdict(): %s" %(fname_info.groupdict())
if m is None or fname_info is None: if m is None or fname_info is None:
if m is None: if m is None:
logging.error(_("Didn't match re_HandInfo")) tmp = hand.handText[0:100]
logging.error(hand.handText) logging.error(_("readHandInfo: Didn't match: '%s'") % tmp)
raise FpdbParseError(_("Absolute: Didn't match re_HandInfo: '%s'") % tmp)
elif fname_info is None: elif fname_info is None:
logging.info(_("File name didn't match re_*InfoFromFilename")) logging.error(_("readHandInfo: File name didn't match re_*InfoFromFilename"))
logging.info(_("File name: %s") % self.in_path) logging.error(_("File name: %s") % self.in_path)
raise FpdbParseError(_("Absolute: Didn't match re_*InfoFromFilename: '%s'") % self.in_path)
logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE'))) logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE')))
hand.handid = m.group('HID') hand.handid = m.group('HID')
if m.group('TABLE'): if m.group('TABLE'):
@ -221,7 +227,7 @@ class Absolute(HandHistoryConverter):
hand.maxseats = 6 hand.maxseats = 6
if self.HORSEHand: if self.HORSEHand:
hand.maxseats = 9 hand.maxseats = 8 # todo : unless it's heads up!!?
return return
def readPlayerStacks(self, hand): def readPlayerStacks(self, hand):

View File

@ -452,9 +452,10 @@ class HHC:
def __init__(self, node): def __init__(self, node):
self.site = node.getAttribute("site") self.site = node.getAttribute("site")
self.converter = node.getAttribute("converter") self.converter = node.getAttribute("converter")
self.summaryImporter = node.getAttribute("summaryImporter")
def __str__(self): def __str__(self):
return "%s:\t%s" % (self.site, self.converter) return "%s:\tconverter: '%s' summaryImporter: '%s'" % (self.site, self.converter, self.summaryImporter)
class Popup: class Popup:

View File

@ -145,7 +145,7 @@ or None if we fail to get the info """
logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE'))) logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE')))
hand.handid = m.group('HID') hand.handid = m.group('HID')
hand.tablename = m.group('TABLE') hand.tablename = m.group('TABLE')
hand.maxseats = 6 # assume 6-max unless we have proof it's a larger/smaller game, since everleaf doesn't give seat max info hand.maxseats = 4 # assume 4-max unless we have proof it's a larger/smaller game, since everleaf doesn't give seat max info
currencies = { u'':'EUR', '$':'USD', '':'T$', None:'T$' } currencies = { u'':'EUR', '$':'USD', '':'T$', None:'T$' }
mg = m.groupdict() mg = m.groupdict()
@ -179,6 +179,8 @@ or None if we fail to get the info """
elif seatnum > 6: elif seatnum > 6:
hand.maxseats = 8 # everleaf currently does 2/6/10 games, so if seats > 6 are in use, it must be 10-max. hand.maxseats = 8 # everleaf currently does 2/6/10 games, so if seats > 6 are in use, it must be 10-max.
# TODO: implement lookup list by table-name to determine maxes, then fall back to 6 default/10 here, if there's no entry in the list? # TODO: implement lookup list by table-name to determine maxes, then fall back to 6 default/10 here, if there's no entry in the list?
elif seatnum > 4:
hand.maxseats = 6 # they added 4-seat games too!
def markStreets(self, hand): def markStreets(self, hand):

View File

@ -1014,25 +1014,6 @@ class Filters(threading.Thread):
vb = gtk.VBox() vb = gtk.VBox()
cal = gtk.Calendar() cal = gtk.Calendar()
if entry == self.start_date:
cal_date = self.start_date.get_text()
if cal_date == '':
self.cursor.execute(self.sql.query['get_first_date'])
result = self.db.cursor.fetchall()
cal_date = result[0][0].split()[0]
self.start_date.set_text(cal_date)
elif entry == self.end_date:
cal_date = self.end_date.get_text()
if cal_date == '':
self.cursor.execute(self.sql.query['get_last_date'])
result = self.db.cursor.fetchall()
cal_date = result[0][0].split()[0]
self.end_date.set_text(cal_date)
(year,month,day)=cal_date.split('-')
cal.select_month(int(month)-1, int(year))
cal.select_day(int(day))
vb.pack_start(cal, expand=False, padding=0) vb.pack_start(cal, expand=False, padding=0)
btn = gtk.Button(_('Done')) btn = gtk.Button(_('Done'))
@ -1058,16 +1039,9 @@ class Filters(threading.Thread):
t2 = self.end_date.get_text() t2 = self.end_date.get_text()
if t1 == '': if t1 == '':
self.cursor.execute(self.sql.query['get_first_date']) t1 = '1970-01-02'
result = self.db.cursor.fetchall()
t1 = result[0][0].split()[0]
self.start_date.set_text(t1)
if t2 == '': if t2 == '':
self.cursor.execute(self.sql.query['get_last_date']) t2 = '2020-12-12'
result = self.db.cursor.fetchall()
t2 = result[0][0].split()[0]
self.end_date.set_text(t2)
s1 = strptime(t1, "%Y-%m-%d") # make time_struct s1 = strptime(t1, "%Y-%m-%d") # make time_struct
s2 = strptime(t2, "%Y-%m-%d") s2 = strptime(t2, "%Y-%m-%d")

291
pyfpdb/GuiTourneyImport.py Executable file
View File

@ -0,0 +1,291 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Copyright 2008-2010 Carl Gherardi
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU Affero General Public License as published by
#the Free Software Foundation, version 3 of the License.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU Affero General Public License
#along with this program. If not, see <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
from time import time
import traceback
import datetime
import codecs
import re
# pyGTK modules
import pygtk
pygtk.require('2.0')
import gtk
import gobject
# fpdb/FreePokerTools modules
import Configuration
import Options
from Exceptions import FpdbParseError
import logging
# logging has been set up in fpdb.py or HUD_main.py, use their settings:
log = logging.getLogger("importer")
class GuiTourneyImport():
def load_clicked(self, widget, data=None):
print "DEBUG: load_clicked"
stored = None
dups = None
partial = None
errs = None
ttime = None
if self.settings['global_lock'].acquire(wait=False, source="GuiTourneyImport"):
print "DEBUG: got global lock"
# get the dir to import from the chooser
selected = self.chooser.get_filenames()
print "DEBUG: Files selected: %s" % selected
sitename = self.cbfilter.get_model()[self.cbfilter.get_active()][0]
for selection in selected:
self.importer.addImportFileOrDir(selection, site = sitename)
starttime = time()
(stored, errs) = self.importer.runImport()
ttime = time() - starttime
if ttime == 0:
ttime = 1
print _('GuiTourneyImport.load done: Stored: %d\tErrors: %d in %s seconds - %.0f/sec')\
% (stored, errs, ttime, (stored+0.0) / ttime)
self.importer.clearFileList()
self.settings['global_lock'].release()
else:
print _("bulk import aborted - global lock not available")
def get_vbox(self):
"""returns the vbox of this thread"""
return self.vbox
def __init__(self, settings, config, sql = None, parent = None):
self.settings = settings
self.config = config
self.parent = parent
self.importer = SummaryImporter(config, sql, parent)
self.vbox = gtk.VBox(False, 0)
self.vbox.show()
self.chooser = gtk.FileChooserWidget()
self.chooser.set_filename(self.settings['bulkImport-defaultPath'])
self.chooser.set_select_multiple(True)
self.vbox.add(self.chooser)
self.chooser.show()
# Table widget to hold the settings
self.table = gtk.Table(rows=5, columns=5, homogeneous=False)
self.vbox.add(self.table)
self.table.show()
# label - tsc
self.lab_filter = gtk.Label(_("Site filter:"))
self.table.attach(self.lab_filter, 1, 2, 2, 3, xpadding=0, ypadding=0,
yoptions=gtk.SHRINK)
self.lab_filter.show()
self.lab_filter.set_justify(gtk.JUSTIFY_RIGHT)
self.lab_filter.set_alignment(1.0, 0.5)
# ComboBox - filter
self.cbfilter = gtk.combo_box_new_text()
disabled_sites = [] # move disabled sites to bottom of list
for w in self.config.hhcs:
print "%s = '%s'" %(w, self.config.hhcs[w].summaryImporter)
try:
# Include sites with a tourney summary importer, and enabled
if self.config.supported_sites[w].enabled and self.config.hhcs[w].summaryImporter != '':
self.cbfilter.append_text(w)
else:
disabled_sites.append(w)
except: # self.supported_sites[w] may not exist if hud_config is bad
disabled_sites.append(w)
for w in disabled_sites:
if self.config.hhcs[w].summaryImporter != '':
self.cbfilter.append_text(w)
self.cbfilter.set_active(0)
self.table.attach(self.cbfilter, 2, 3, 2, 3, xpadding=10, ypadding=1,
yoptions=gtk.SHRINK)
self.cbfilter.show()
# button - Import
self.load_button = gtk.Button(_('_Bulk Import')) # todo: rename variables to import too
self.load_button.connect('clicked', self.load_clicked,
_('Import clicked'))
self.table.attach(self.load_button, 2, 3, 4, 5, xpadding=0, ypadding=0,
yoptions=gtk.SHRINK)
self.load_button.show()
# label - spacer (keeps rows 3 & 5 apart)
self.lab_spacer = gtk.Label()
self.table.attach(self.lab_spacer, 3, 5, 3, 4, xpadding=0, ypadding=0,
yoptions=gtk.SHRINK)
self.lab_spacer.show()
class SummaryImporter:
def __init__(self, config, sql = None, parent = None):
self.config = config
self.sql = sql
self.parent = parent
self.filelist = {}
self.dirlist = {}
self.updatedsize = {}
self.updatedtime = {}
def addImportFile(self, filename, site = "default", tsc = "passthrough"):
print "DEBUG: addImportFile"
if filename in self.filelist or not os.path.exists(filename):
print "DEBUG: addImportFile: File exists, or path non-existent"
return
self.filelist[filename] = [site] + [tsc]
print "DEBUG: addImportFile: self.filelist[%s]: %s" %(filename, self.filelist[filename])
def addImportDirectory(self,dir,monitor=False, site="default", tsc="passthrough"):
print "DEBUG: addImportDirectory"
if os.path.isdir(dir):
if monitor == True:
self.monitor = True
self.dirlist[site] = [dir] + [tsc]
for file in os.listdir(dir):
self.addImportFile(os.path.join(dir, file), site, tsc)
else:
log.warning(_("Attempted to add non-directory '%s' as an import directory") % str(dir))
def addImportFileOrDir(self, inputPath, site = "PokerStars"):
print "DEBUG: addImportFileOrDir"
tsc = self.config.hhcs[site].summaryImporter
if os.path.isdir(inputPath):
for subdir in os.walk(inputPath):
for file in subdir[2]:
self.addImportFile(unicode(os.path.join(subdir[0], file),'utf-8'),
site=site, tsc=tsc)
else:
self.addImportFile(unicode(inputPath,'utf-8'), site=site, tsc=tsc)
pass
def runImport(self):
start = datetime.datetime.now()
starttime = time()
log.info(_("Tourney Summary Import started at %s - %d files to import.") % (start, len(self.filelist)))
total_errors = 0
total_imported = 0
for f in self.filelist:
(site, tsc) = self.filelist[f]
imported, errs = self.importFile(f, tsc, site)
total_errors += errs
total_imported += imported
return (total_imported, total_errors)
def runUpdated(self):
pass
def importFile(self, filename, tsc = "PokerStarsSummary", site = "PokerStars"):
mod = __import__(tsc)
obj = getattr(mod, tsc, None)
if callable(obj):
foabs = self.readFile(obj, filename)
summaryTexts = re.split(obj.re_SplitTourneys, foabs)
print "Found %s summaries" %(len(summaryTexts))
errors = 0
imported = 0
for j, summaryText in enumerate(summaryTexts, start=1):
try:
conv = obj(db=None, config=self.config, siteName=site, summaryText=summaryText, builtFrom = "IMAP")
except FpdbParseError, e:
errors += 1
print _("Finished importing %s/%s tournament summaries") %(j, len(summaryTexts))
imported = j
return (imported - errors, errors)
def clearFileList(self):
self.updatedsize = {}
self.updatetime = {}
self.filelist = {}
def readFile(self, tsc, filename):
codepage = ["utf8"]
whole_file = None
tsc.codepage
for kodec in codepage:
print "DEBUG: TSC.readFile: trying codepage '%s'" % kodec
try:
in_fh = codecs.open(filename, 'r', kodec)
whole_file = in_fh.read()
in_fh.close()
break
except:
pass
return whole_file
def main(argv=None):
"""main can also be called in the python interpreter, by supplying the command line as the argument."""
import SQL
if argv is None:
argv = sys.argv[1:]
(options, argv) = Options.fpdb_options()
if options.usage == True:
#Print usage examples and exit
print _("USAGE:")
sys.exit(0)
if options.hhc == "PokerStarsToFpdb":
print _("Need to define a converter")
exit(0)
config = Configuration.Config("HUD_config.test.xml")
sql = SQL.Sql(db_server = 'sqlite')
if options.filename == None:
print _("Need a filename to import")
exit(0)
importer = SummaryImporter(config, sql, None)
importer.addImportFileOrDir(options.filename, site = options.hhc)
starttime = time()
(stored, errs) = importer.runImport()
ttime = time() - starttime
if ttime == 0:
ttime = 1
print _('GuiTourneyImport.load done: Stored: %d\tErrors: %d in %s seconds - %.0f/sec')\
% (stored, errs, ttime, (stored+0.0) / ttime)
importer.clearFileList()
if __name__ == '__main__':
sys.exit(main())

View File

@ -566,7 +566,7 @@ Left-Drag to Move"
</aux_windows> </aux_windows>
<hhcs> <hhcs>
<hhc site="PokerStars" converter="PokerStarsToFpdb"/> <hhc site="PokerStars" converter="PokerStarsToFpdb" summaryImporter="PokerStarsSummary"/>
<hhc site="Full Tilt Poker" converter="FulltiltToFpdb"/> <hhc site="Full Tilt Poker" converter="FulltiltToFpdb"/>
<hhc site="Everleaf" converter="EverleafToFpdb"/> <hhc site="Everleaf" converter="EverleafToFpdb"/>
<hhc site="Win2day" converter="Win2dayToFpdb"/> <hhc site="Win2day" converter="Win2dayToFpdb"/>

View File

@ -777,7 +777,7 @@ Left-Drag to Move"
</aux_windows> </aux_windows>
<hhcs> <hhcs>
<hhc site="PokerStars" converter="PokerStarsToFpdb"/> <hhc site="PokerStars" converter="PokerStarsToFpdb" summaryImporter="PokerStarsSummary"/>
<hhc site="Full Tilt Poker" converter="FulltiltToFpdb"/> <hhc site="Full Tilt Poker" converter="FulltiltToFpdb"/>
<hhc site="Everleaf" converter="EverleafToFpdb"/> <hhc site="Everleaf" converter="EverleafToFpdb"/>
<hhc site="Win2day" converter="Win2dayToFpdb"/> <hhc site="Win2day" converter="Win2dayToFpdb"/>

View File

@ -358,9 +358,9 @@ class HUD_main(object):
log.info(_("HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%4.3f)") 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)) % (t6 - t0,t1 - t0,t2 - t0,t3 - t0,t4 - t0,t5 - t0,t6 - t0))
self.db_connection.connection.rollback() self.db_connection.connection.rollback()
if type == "tour": # if type == "tour":
tablewindow.check_table_no(None) # tablewindow.check_table_no(None)
# Ray!! tablewindow::check_table_no expects a HUD as an argument! # # Ray!! tablewindow::check_table_no expects a HUD as an argument!
if __name__== "__main__": if __name__== "__main__":
# start the HUD_main object # start the HUD_main object

View File

@ -37,6 +37,7 @@ from Exceptions import *
import pprint import pprint
import DerivedStats import DerivedStats
import Card import Card
import Database
log = logging.getLogger("parser") log = logging.getLogger("parser")
@ -118,6 +119,8 @@ class TourneySummary(object):
if builtFrom=="IMAP": if builtFrom=="IMAP":
# Fix line endings? # Fix line endings?
pass pass
if self.db == None:
self.db = Database.Database(config)
self.parseSummary() self.parseSummary()
self.insertOrUpdate() self.insertOrUpdate()
@ -291,148 +294,3 @@ winnings (decimal) the money the player ended the tourney with (can be 0, or
def printSummary(self): def printSummary(self):
self.writeSummary(sys.stdout) self.writeSummary(sys.stdout)
def assemble(cnxn, tourneyId): #TODO: move this method to Hand or Database
# TODO !!
c = cnxn.cursor()
# We need at least siteName, gametype, handid
# for the Hand.__init__
c.execute("""
select
s.name,
g.category,
g.base,
g.type,
g.limitType,
g.hilo,
round(g.smallBlind / 100.0,2),
round(g.bigBlind / 100.0,2),
round(g.smallBet / 100.0,2),
round(g.bigBet / 100.0,2),
s.currency,
h.boardcard1,
h.boardcard2,
h.boardcard3,
h.boardcard4,
h.boardcard5
from
hands as h,
sites as s,
gametypes as g,
handsplayers as hp,
players as p
where
h.id = %(handid)s
and g.id = h.gametypeid
and hp.handid = h.id
and p.id = hp.playerid
and s.id = p.siteid
limit 1""", {'handid':handid})
#TODO: siteid should be in hands table - we took the scenic route through players here.
res = c.fetchone()
gametype = {'category':res[1],'base':res[2],'type':res[3],'limitType':res[4],'hilo':res[5],'sb':res[6],'bb':res[7], 'currency':res[10]}
h = HoldemOmahaHand(hhc = None, siteName=res[0], gametype = gametype, handText=None, builtFrom = "DB", handid=handid)
cards = map(Card.valueSuitFromCard, res[11:16] )
if cards[0]:
h.setCommunityCards('FLOP', cards[0:3])
if cards[3]:
h.setCommunityCards('TURN', [cards[3]])
if cards[4]:
h.setCommunityCards('RIVER', [cards[4]])
#[Card.valueSuitFromCard(x) for x in cards]
# HandInfo : HID, TABLE
# BUTTON - why is this treated specially in Hand?
# answer: it is written out in hand histories
# still, I think we should record all the active seat positions in a seat_order array
c.execute("""
SELECT
h.sitehandno as hid,
h.tablename as table,
h.startTime as startTime
FROM
Hands as h
WHERE h.id = %(handid)s
""", {'handid':handid})
res = c.fetchone()
h.handid = res[0]
h.tablename = res[1]
h.startTime = res[2] # automatically a datetime
# PlayerStacks
c.execute("""
SELECT
hp.seatno,
round(hp.winnings / 100.0,2) as winnings,
p.name,
round(hp.startcash / 100.0,2) as chips,
hp.card1,hp.card2,
hp.position
FROM
handsplayers as hp,
players as p
WHERE
hp.handid = %(handid)s
and p.id = hp.playerid
""", {'handid':handid})
for (seat, winnings, name, chips, card1,card2, position) in c.fetchall():
h.addPlayer(seat,name,chips)
if card1 and card2:
h.addHoleCards(map(Card.valueSuitFromCard, (card1,card2)), name, dealt=True)
if winnings > 0:
h.addCollectPot(name, winnings)
if position == 'B':
h.buttonpos = seat
# actions
c.execute("""
SELECT
(ha.street,ha.actionno) as actnum,
p.name,
ha.street,
ha.action,
ha.allin,
round(ha.amount / 100.0,2)
FROM
handsplayers as hp,
handsactions as ha,
players as p
WHERE
hp.handid = %(handid)s
and ha.handsplayerid = hp.id
and p.id = hp.playerid
ORDER BY
ha.street,ha.actionno
""", {'handid':handid})
res = c.fetchall()
for (actnum,player, streetnum, act, allin, amount) in res:
act=act.strip()
street = h.allStreets[streetnum+1]
if act==u'blind':
h.addBlind(player, 'big blind', amount)
# TODO: The type of blind is not recorded in the DB.
# TODO: preflop street name anomalies in Hand
elif act==u'fold':
h.addFold(street,player)
elif act==u'call':
h.addCall(street,player,amount)
elif act==u'bet':
h.addBet(street,player,amount)
elif act==u'check':
h.addCheck(street,player)
elif act==u'unbet':
pass
else:
print act, player, streetnum, allin, amount
# TODO : other actions
#hhc.readShowdownActions(self)
#hc.readShownCards(self)
h.totalPot()
h.rake = h.totalpot - h.totalcollected
return h

View File

@ -44,13 +44,19 @@ class Table(Table_Window):
def find_table_parameters(self): def find_table_parameters(self):
reg = '''
\s+(?P<XID>[\dxabcdef]+) # XID in hex
\s(?P<TITLE>.+): # window title
'''
self.number = None self.number = None
for listing in os.popen('xwininfo -root -tree').readlines(): for listing in os.popen('xwininfo -root -tree').readlines():
if re.search(self.search_string, listing): if re.search(self.search_string, listing, re.I):
mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z0-9\-.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', listing) mo = re.match(reg, listing, re.VERBOSE)
title = re.sub('\"', '', mo.group(2)) # mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z0-9\-.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', listing)
title = re.sub('\"', '', mo.groupdict()["TITLE"])
if self.check_bad_words(title): continue if self.check_bad_words(title): continue
self.number = int( mo.group(1), 0) self.number = int( mo.groupdict()["XID"], 0 )
self.title = title self.title = title
self.hud = None # specified later self.hud = None # specified later
break break

View File

@ -106,6 +106,7 @@ import GuiPrefs
import GuiLogView import GuiLogView
import GuiDatabase import GuiDatabase
import GuiBulkImport import GuiBulkImport
import GuiTourneyImport
import GuiImapFetcher import GuiImapFetcher
import GuiRingPlayerStats import GuiRingPlayerStats
import GuiTourneyPlayerStats import GuiTourneyPlayerStats
@ -763,6 +764,7 @@ class fpdb:
</menu> </menu>
<menu action="import"> <menu action="import">
<menuitem action="bulkimp"/> <menuitem action="bulkimp"/>
<menuitem action="tourneyimp"/>
<menuitem action="imapimport"/> <menuitem action="imapimport"/>
<menuitem action="autoimp"/> <menuitem action="autoimp"/>
</menu> </menu>
@ -805,6 +807,7 @@ class fpdb:
('Preferences', None, _('Pre_ferences'), _('<control>F'), 'Edit your preferences', self.dia_preferences), ('Preferences', None, _('Pre_ferences'), _('<control>F'), 'Edit your preferences', self.dia_preferences),
('import', None, _('_Import')), ('import', None, _('_Import')),
('bulkimp', None, _('_Bulk Import'), _('<control>B'), 'Bulk Import', self.tab_bulk_import), ('bulkimp', None, _('_Bulk Import'), _('<control>B'), 'Bulk Import', self.tab_bulk_import),
('tourneyimp', None, _('Tournament _Results Import'), _('<control>R'), 'Tournament Results Import', self.tab_tourney_import),
('imapimport', None, _('_Import through eMail/IMAP'), _('<control>I'), 'Import through eMail/IMAP', self.tab_imap_import), ('imapimport', None, _('_Import through eMail/IMAP'), _('<control>I'), 'Import through eMail/IMAP', self.tab_imap_import),
('viewers', None, _('_Viewers')), ('viewers', None, _('_Viewers')),
('autoimp', None, _('_Auto Import and HUD'), _('<control>A'), 'Auto Import and HUD', self.tab_auto_import), ('autoimp', None, _('_Auto Import and HUD'), _('<control>A'), 'Auto Import and HUD', self.tab_auto_import),
@ -996,6 +999,13 @@ class fpdb:
bulk_tab=new_import_thread.get_vbox() bulk_tab=new_import_thread.get_vbox()
self.add_and_display_tab(bulk_tab, _("Bulk Import")) self.add_and_display_tab(bulk_tab, _("Bulk Import"))
def tab_tourney_import(self, widget, data=None):
"""opens a tab for bulk importing"""
new_import_thread = GuiTourneyImport.GuiTourneyImport(self.settings, self.config, self.sql, self.window)
self.threads.append(new_import_thread)
bulk_tab=new_import_thread.get_vbox()
self.add_and_display_tab(bulk_tab, _("Tournament Results Import"))
def tab_imap_import(self, widget, data=None): def tab_imap_import(self, widget, data=None):
new_thread = GuiImapFetcher.GuiImapFetcher(self.config, self.db, self.sql, self.window) new_thread = GuiImapFetcher.GuiImapFetcher(self.config, self.db, self.sql, self.window)
self.threads.append(new_thread) self.threads.append(new_thread)

View File

@ -0,0 +1,58 @@
Stage #C241220000: Holdem No Limit $0.02 - 2010-11-06 15:00:00 (ET)
Table: BASELINE RD (Real Money) Seat #8 is the dealer
Seat 8 - PLAYER8 ($2.05 in chips)
Seat 9 - PLAYER9 ($2.01 in chips)
Seat 1 - PLAYER1 ($2.90 in chips)
Seat 2 - VILLAIN1 ($1.52 in chips)
Seat 3 - PLAYER3 ($2 in chips)
Seat 4 - VILLAIN2 ($3.58 in chips)
Seat 5 - PLAYER5 ($2 in chips)
Seat 6 - PLAYER6 ($1.07 in chips)
Seat 7 - Hero ($1 in chips)
PLAYER9 - Posts small blind $0.01
PLAYER1 - Posts big blind $0.02
Hero - Posts $0.02
*** POCKET CARDS ***
Dealt to Hero [10s 3s]
VILLAIN1 - Calls $0.02
PLAYER3 - Folds
VILLAIN2 - Calls $0.02
PLAYER5 - Folds
PLAYER6 - Folds
Hero - Checks
PLAYER8 - Folds
PLAYER9 - Folds
PLAYER1 - Folds
*** FLOP *** [Kc Qh 8h]
VILLAIN1 - Checks
VILLAIN2 - Checks
Hero - Checks
*** TURN *** [Kc Qh 8h] [6d]
VILLAIN1 - Checks
VILLAIN2 - Checks
Hero - Checks
*** RIVER *** [Kc Qh 8h 6d] [8c]
VILLAIN1 - Checks
VILLAIN2 - Checks
Hero - Checks
*** SHOW DOWN ***
VILLAIN1 - Shows [5c Ac] (One pair, eights)
VILLAIN2 - Shows [7s 6c] (Two Pair, eights and sixes)
Hero - Mucks
VILLAIN2 Collects $0.09 from main pot
*** SUMMARY ***
Total Pot($0.09)
Board [Kc Qh 8h 6d 8c]
Seat 1: PLAYER1 (big blind) Folded on the POCKET CARDS
Seat 2: VILLAIN1 HI:lost with One pair, eights [5c Ac - B:8h,B:8c,P:Ac,B:Kc,B:Qh]
Seat 3: PLAYER3 Folded on the POCKET CARDS
Seat 4: VILLAIN2 won Total ($0.09) HI:($0.09) with Two Pair, eights and sixes [7s 6c - B:8h,B:8c,B:6d,P:6c,B:Kc]
Seat 5: PLAYER5 Folded on the POCKET CARDS
Seat 6: PLAYER6 Folded on the POCKET CARDS
Seat 7: Hero HI: [Mucked] [10s 3s]
Seat 8: PLAYER8 (dealer) Folded on the POCKET CARDS
Seat 9: PLAYER9 (small blind) Folded on the POCKET CARDS

View File

@ -0,0 +1,846 @@
{ u'Hero': { 'card1': 48,
'card2': 41,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 1,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': True,
'seatNo': 7,
'sitout': False,
'startCards': 106,
'startCash': 100,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': True,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': 0,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'PLAYER1': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 'B',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 1,
'sitout': False,
'startCards': 0,
'startCash': 290,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'PLAYER3': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 5,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 3,
'sitout': False,
'startCards': 0,
'startCash': 200,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': 0,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'PLAYER5': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 3,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 5,
'sitout': False,
'startCards': 0,
'startCash': 200,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': 0,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'PLAYER6': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 2,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 6,
'sitout': False,
'startCards': 0,
'startCash': 107,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': 0,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'PLAYER8': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 0,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 8,
'sitout': False,
'startCards': 0,
'startCash': 205,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': 0,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'PLAYER9': { 'card1': 0,
'card2': 0,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 'S',
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': False,
'seatNo': 9,
'sitout': False,
'startCards': 0,
'startCash': 201,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 0,
'street0Raises': 0,
'street0VPI': False,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': False,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': False,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': False,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -1,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'VILLAIN1': { 'card1': 30,
'card2': 39,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 6,
'raiseFirstInChance': True,
'raisedFirstIn': False,
'rake': 0,
'sawShowdown': True,
'seatNo': 2,
'sitout': False,
'startCards': 160,
'startCash': 152,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': True,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': -2,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 0,
'wonAtSD': 0.0,
'wonWhenSeenStreet1': 0.0,
'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0},
u'VILLAIN2': { 'card1': 45,
'card2': 31,
'card3': 0,
'card4': 0,
'card5': 0,
'card6': 0,
'card7': 0,
'foldBbToStealChance': False,
'foldSbToStealChance': False,
'foldToOtherRaisedStreet0': False,
'foldToOtherRaisedStreet1': False,
'foldToOtherRaisedStreet2': False,
'foldToOtherRaisedStreet3': False,
'foldToOtherRaisedStreet4': False,
'foldToStreet1CBChance': False,
'foldToStreet1CBDone': False,
'foldToStreet2CBChance': False,
'foldToStreet2CBDone': False,
'foldToStreet3CBChance': False,
'foldToStreet3CBDone': False,
'foldToStreet4CBChance': False,
'foldToStreet4CBDone': False,
'foldedBbToSteal': False,
'foldedSbToSteal': False,
'other3BStreet0': False,
'other4BStreet0': False,
'otherRaisedStreet0': False,
'otherRaisedStreet1': False,
'otherRaisedStreet2': False,
'otherRaisedStreet3': False,
'otherRaisedStreet4': False,
'position': 4,
'raiseFirstInChance': False,
'raisedFirstIn': False,
'rake': -2,
'sawShowdown': True,
'seatNo': 4,
'sitout': False,
'startCards': 58,
'startCash': 358,
'street0Aggr': False,
'street0Bets': 0,
'street0Calls': 1,
'street0Raises': 0,
'street0VPI': True,
'street0_3BChance': False,
'street0_3BDone': False,
'street0_4BChance': False,
'street0_4BDone': False,
'street1Aggr': False,
'street1Bets': 0,
'street1CBChance': False,
'street1CBDone': False,
'street1Calls': 0,
'street1CheckCallRaiseChance': False,
'street1CheckCallRaiseDone': False,
'street1Raises': 0,
'street1Seen': True,
'street2Aggr': False,
'street2Bets': 0,
'street2CBChance': False,
'street2CBDone': False,
'street2Calls': 0,
'street2CheckCallRaiseChance': False,
'street2CheckCallRaiseDone': False,
'street2Raises': 0,
'street2Seen': True,
'street3Aggr': False,
'street3Bets': 0,
'street3CBChance': False,
'street3CBDone': False,
'street3Calls': 0,
'street3CheckCallRaiseChance': False,
'street3CheckCallRaiseDone': False,
'street3Raises': 0,
'street3Seen': True,
'street4Aggr': False,
'street4Bets': 0,
'street4CBChance': False,
'street4CBDone': False,
'street4Calls': 0,
'street4CheckCallRaiseChance': False,
'street4CheckCallRaiseDone': False,
'street4Raises': 0,
'street4Seen': False,
'totalProfit': 7,
'tourneyTypeId': None,
'tourneysPlayersIds': None,
'winnings': 9,
'wonAtSD': 1.0,
'wonWhenSeenStreet1': 1.0,
'wonWhenSeenStreet2': 1.0,
'wonWhenSeenStreet3': 1.0,
'wonWhenSeenStreet4': 0.0}}

View File

@ -0,0 +1,17 @@
Tournament History for your last 1 tournament requested by s0rrow (carl.gherardi@gmail.com)
PokerStars Tournament #329052872, No Limit Hold'em
Buy-In: $10.00/$0.50 USD
2 players
Total Prize Pool: $20.00 USD
Tournament started 2010/11/07 8:03:52 ET
Tournament finished 2010/11/07 8:21:44 ET
1: s0rrow (Perth), $20.00 (100%)
2: v.v.75 (Грязи),
You finished in 1st place.
If you have any questions, please contact "PokerStars Support" <support@pokerstars.com>

View File

@ -0,0 +1,287 @@
PokerStars Tournament #57897693, No Limit Hold'em
Buy-In: $20.00/$2.00
276 players
Total Prize Pool: $5520.00
Tournament started - 2007/08/13 - 08:15:00 (ET)
Tournament finished - 2007/08/13 - 17:19:17 (ET)
1: pzampa1 (Framingham), $1518.00 (27.50%)
2: s0rrow (Perth), $966.00 (17.50%)
3: aufgehts007 (ochtendung), $640.32 (11.60%)
4: Monkey_Poo27 (Johnston), $441.60 (8%)
5: seb54200 (toul), $331.20 (6%)
6: CUNZIO (North White Plains), $248.40 (4.50%)
7: idefix73 (Weil), $193.20 (3.50%)
8: zedimbi (adelaide), $143.52 (2.60%)
9: ELVIS GA1 (Anchorage), $93.84 (1.70%)
10: EdgarWho? (Framingham), $66.24 (1.20%)
11: jimeny999 (noble park), $66.24 (1.20%)
12: imajewty (spotswood), $66.24 (1.20%)
13: AshB1983 (Ashford), $66.24 (1.20%)
14: NoOl3Ru (Morgins), $66.24 (1.20%)
15: drspel (Borlaenge), $66.24 (1.20%)
16: @ntonius (Väsby), $66.24 (1.20%)
17: Canippa (Alba), $66.24 (1.20%)
18: zico46 (Surrey), $66.24 (1.20%)
19: Leuchtturm (Neunkirchen), $38.64 (0.70%)
20: kameleon34 (Montpeyroux), $38.64 (0.70%)
21: ProfPolo (Orlando), $38.64 (0.70%)
22: Gala76 (ancona), $38.64 (0.70%)
23: hardaway4480 (bristol), $38.64 (0.70%)
24: Xijz (Berg en Dal), $38.64 (0.70%)
25: Tilts78 (Sydney), $38.64 (0.70%)
26: S_ciw86 (Southampton), $38.64 (0.70%)
27: Mr. Redline (Woodbridge), $38.64 (0.70%)
28: bananamoon (antwerp),
29: jems25 (bristol),
30: mik_corleone (Warrington),
31: AALGAA (Amsterdam),
32: MrBriggs99 (Würzburg),
33: CATHY G1 (Blackpool),
34: whosamuppet (Middle Of No Where),
35: badkarmatom (Horn (HOLLAND)),
36: gyx708 (SYDNEY NSW),
37: schennie (barneveld),
38: GRangers (Glasgow),
39: Skiller77 (Prague),
40: Talerric (Brisbane),
41: CHRONIKCHAOS (lynnhood),
42: lasker (Almere),
43: Tinwer (Freilassing),
44: coeckie (Leuven),
45: Silverback9 (Gothenburg),
46: pine857 (sand coulee),
47: TPAT.N.FL (Sebring),
48: JonLeeWalker (Land of the Free...),
49: Bandit55688 (Sande),
50: peruviano (roma),
51: Crazy Carl (Owings Mills),
52: nempancser (Budapest),
53: talje10 (Södertälje),
54: geba9901 (st. cloud),
55: Feryac (Bruges),
56: RiverMonkey (oklahoma city),
57: sukibobo (albuquerque),
58: TW_egg (Anchorage),
59: Ivydrive (Cardiff),
60: kakasjancsi (london),
61: fibbe37 (fyn),
62: + to the EV! (Tampa),
63: aussie64 (sydney),
64: MisterBlack1 (Gelsenkirchen),
65: vegasking888 (NO CHAT),
66: Sottywin (Sheffield),
67: wiz66 (summerfield),
68: hekat09 (støvring),
69: buddha_64o (brookland),
70: jaams (bergen),
71: ThaSmuggla (Crossing Borders),
72: Botaniker (Heidelberg),
73: Feeeeez (NEUILLY SUR SEINE),
74: milooser (le passage),
75: Injunn (Sharpsville),
76: Kpride (New York),
77: The_Thug07 (Budapest),
78: T.O.2005 (Moncton),
79: longminh (Bulleen),
80: 54 TDs (Bowie),
81: Pitstop1099 (Richardson),
82: SammeLee (Wellington),
83: XxWULFFxX (Kastrup),
84: RBS11 (Melbourne),
85: NineOne0ne (Bayreuth),
86: ZMLO (Winnipeg),
87: Fluke2004 (Oakland),
88: 77cercasi (scandicci),
89: dragonjo (Sebring),
90: Ralef (Golf),
91: ids222 (Hamburg),
92: kilmarta (Dublin),
93: sratuain (Bergen),
94: Bocarooster (Chicken Coop),
95: $MrGio84$ (San Severino Marche),
96: leplusbeau (I_HAS_NO_CHAT),
97: leslieace (Amsterdam),
98: LJ4000 (Roskilde),
99: chiphunt dk (birkerod),
100: dirty raskil (Mount Roskill),
101: martymcflyjr (Florstadt),
102: farim (Goettingen),
103: Possy 2006 (Berlin),
104: tansDK (copenhagen),
105: BigFella1 (Watford),
106: bdbd38 (Melvindale),
107: yallan (Røros),
108: rvdh51 (den haag),
109: GREEK_ACES1 (WHAT ME WORRY),
110: DgrBJ (Reykjavík),
111: pisquiccio (caserta),
112: txdave (Hewitt),
113: 1aroma1 (toronto),
114: dondolino (aiello del friuli),
115: jier67 (Schiltigheim),
116: IggyPlop (Plainville),
117: BK0407 (Panama City Beach),
118: bigfishforyo (Florida),
119: Bravo,Jonny (Glasgow),
120: angeleyes415 (East Lansing),
121: PBaek (Aalborg SOE),
122: Mackerell (Southampton),
123: mr poovy (bogart),
124: cashhog123 (Jacksonville),
125: fava11 (Tolmezzo),
126: natedog502 (Greenville),
127: steven AK (felixstowe),
128: VaLeBo (Damp),
129: hovienko (Saint Louis),
130: rockanroll (Jackson),
131: turkpower244 (utrecht),
132: BeaBaer (Passau),
133: kurtkatt9 (angered),
134: Zentrum81 (Geiselhöring),
135: GT888 (SYDNEY),
136: Bobs Bet56 (Acworth),
137: IDLER87 (staranzano),
138: texasdali (Fort Collins),
139: Havana03 (Schwerin),
140: draw2aflush (Burke),
141: kypt (gravdal),
142: ilovetherip (portstewart),
143: claf37 (nsw),
144: Jayse51 (Baraboo),
145: www43 (Rishon Letzion),
146: shakyRobin (Oslo),
147: AKJ-10 (berlin),
148: iou nutn (Fernvale),
149: snokende (Berlin),
150: MikaRau (Oulu),
151: RayWSM (Weston Super Mare),
152: RivaKila (Auckland),
153: stickydeck (Las Vegas),
154: nevagetit (bexleyheath),
155: ripley2310 (Armidale),
156: pasan1 (ROMA),
157: HomeGuard99 (Kongsvinger),
158: Spraggs (Northants),
159: Hummer 96 (Vienna),
160: RMulder1 (Maarssen),
161: Scarletknigh (levittown),
162: MasterJ71 (Landsmeer),
163: geer_44 (Anchorage),
164: nazdarovie (Paris),
165: Giginho1 (LAS VEGAS),
166: swifterjet (Aurora),
167: Crass1968 (Stourbridge),
168: KEUSS (Paris),
169: clumber (norwich),
170: fmmxx (London),
171: maartenned (Delft),
172: mrwibbles (victoria),
173: DatDfrunchen (Rhodesia),
174: Lock Stock (Oslo),
175: pinfishtom (wilmington),
176: JUANCINI (Melbourne, Victoria),
177: Daddycool2 (Geelong),
178: Fouruvakind (salmon arm),
179: danclau (madrid),
180: jw23ck11 (Las Vegas),
181: mannicup (Wolfschlugen),
182: Flames31 (Calgary),
183: Damonsweat (Toronto),
184: morrik32 (flin flon),
185: starzz113 (Halmstad),
186: GoTH1A (Vanlose),
187: WFO 2005 (LONDON),
188: Ineedarest (Deer Park),
189: bugeatered1 (huntington),
190: Cabrinha10 (Sandnes),
191: danconnell3 (Bridlington),
192: mel57222 (Lawrence),
193: bubu14 (munich),
194: merhej (Paris),
195: Arnorinho (Gardabaer),
196: vandave80 (st.gallen),
197: IRIFACE (Kassel),
198: Locke75 (Käshofen),
199: phillymcnabb (Philadelphia),
200: iGobbleChips (Los Gatos),
201: buzzy721 (pgh),
202: Mett Lyfe7 (Herne),
203: JurijMN (Buttrio),
204: suited35 (broken arrow),
205: jamsy17 (las vegas),
206: zacl (PERTH),
207: pokermatic (gardner),
208: deio12 (cagliari),
209: St@r-K (L'Aquila),
210: Obups (marseille),
211: ds_007 (Wembley),
212: rodeofritz (Antwerp),
213: snoweed (Grenoble),
214: cp83700 (saint raphael),
215: pokerchampn (melbourne),
216: Cafeblue (Nürnberg),
217: snuffmigruff (Newark),
218: Ditech27 (Aurora),
219: Ose9 (Espoo),
220: Bootsysucks (South London),
221: joepke1988 (oisterwijk),
222: smooty (french lick),
223: RedBull214 (Tamarac),
224: pookface (oisterwijk),
225: Feuervogel1 (Hassendorf),
226: bartje82 (Eindhoven),
227: Valdizar (North Dandenong),
228: jerome147 (Sydney),
229: Evilduke11 (Oudenaarde),
230: hambone200 (Yigo),
231: yiamas (London),
232: NotVerySmart (Everett),
233: Blom21 (Mariehamn, Finland),
234: rinoo (adelaide),
235: Mares37 (East Brunswick),
236: JAMAJESTY (NOTHAMPTONSHIRE),
237: EngaUnited7 (Jaren),
238: Fito6161 (Chelsea),
239: dongernumps (loughborough),
240: smattering (Amberg),
241: gaaambler22 (kalmar),
242: mick69b (sydney),
243: bobleragout (aix en provence),
244: pokski1000 (copenhagen),
245: Diamond Si (Crafers),
246: ballaperdida (Punta del Este),
247: Racin19 (Grimsby),
248: DUBBLE1 (waterloo),
249: MORRISWEED (Longsdon),
250: benj hamza (rabat),
251: zAmzAngzAm (kassel),
252: ravn jahn (askim),
253: warren82 (lagny sur marne),
254: Mallaca51 (Sydney),
255: terry111 (hale),
256: murf1950 (Sth Yarra),
257: DEVILSOCK (LIMASSOL),
258: tollamus (London),
259: Kratzbaum666 (Bochum),
260: nobluff63 (aventura),
261: Russ Abbot (Durham),
262: ROLLERSDICE (Halifax),
263: AMYLEE80 (adelaide),
264: udream (N.S.W),
265: Herojunk (Herten),
266: mekonium (Heinsberg),
267: Hermann76 (Berlin),
268: zizu72 (melito porto salvo),
269: shizzi (Gold Coast),
270: bjh800 (Buckhurst hill),
271: amotz1 (tel-aviv),
272: Sander G (Elst),
273: jon041981 (renteria),
274: CrazyFish01 (Uzhno-Sakhalinsk),
275: JackAS71 (berlin ),
276: GarrySmutts (Colchester),
You finished in 2nd place.
If you have any questions, please contact us at support@pokerstars.com