Merge branch 'steffen'
This commit is contained in:
commit
af1ac8316b
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
pyfpdb/HUD_config.xml.example -crlf
|
||||
|
|
@ -17,7 +17,7 @@ SLOT="0"
|
|||
KEYWORDS="~amd64 ~x86"
|
||||
#note: this should work on other architectures too, please send me your experiences
|
||||
|
||||
IUSE="graph mysql postgres sqlite"
|
||||
IUSE="graph mysql postgres sqlite linguas_hu"
|
||||
RDEPEND="
|
||||
mysql? ( virtual/mysql
|
||||
dev-python/mysql-python )
|
||||
|
@ -37,6 +37,11 @@ src_install() {
|
|||
insinto "${GAMES_DATADIR}"/${PN}
|
||||
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
|
||||
fi
|
||||
|
||||
doins readme.txt
|
||||
|
||||
exeinto "${GAMES_DATADIR}"/${PN}
|
||||
|
|
|
@ -18,7 +18,7 @@ SLOT="0"
|
|||
KEYWORDS=""
|
||||
#note: this should work on other architectures too, please send me your experiences
|
||||
|
||||
IUSE="graph mysql postgres sqlite"
|
||||
IUSE="graph mysql postgres sqlite linguas_hu"
|
||||
RDEPEND="
|
||||
mysql? ( virtual/mysql
|
||||
dev-python/mysql-python )
|
||||
|
@ -42,6 +42,11 @@ src_install() {
|
|||
insinto "${GAMES_DATADIR}"/${PN}
|
||||
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
|
||||
fi
|
||||
|
||||
doins readme.txt
|
||||
|
||||
exeinto "${GAMES_DATADIR}"/${PN}
|
||||
|
|
|
@ -525,12 +525,12 @@ class General(dict):
|
|||
except KeyError:
|
||||
self["version"]=0
|
||||
self["ui_language"]="system"
|
||||
self["config_difficuly"]="expert"
|
||||
self["config_difficulty"]="expert"
|
||||
|
||||
def get_defaults(self):
|
||||
self["version"]=0
|
||||
self["ui_language"]="system"
|
||||
self["config_difficuly"]="expert"
|
||||
self["config_difficulty"]="expert"
|
||||
self["config_wrap_len"]="-1"
|
||||
self["day_start"]="5"
|
||||
|
||||
|
|
|
@ -261,7 +261,7 @@ class Fulltilt(HandHistoryConverter):
|
|||
if special == "KO":
|
||||
hand.isKO = True
|
||||
if special == "Head's Up" or special == "Heads Up":
|
||||
hand.maxSeats = 2
|
||||
hand.maxseats = 2
|
||||
if re.search("Matrix", special):
|
||||
hand.isMatrix = True
|
||||
if special == "Shootout":
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
config_wrap_len="-1"
|
||||
day_start="5"
|
||||
ui_language="system"
|
||||
config_difficuly="expert"
|
||||
config_difficulty="expert"
|
||||
/>
|
||||
|
||||
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True"></import>
|
||||
|
@ -667,37 +667,6 @@ Left-Drag to Move"
|
|||
<hhc site="OnGame" converter="OnGameToFpdb"/>
|
||||
</hhcs>
|
||||
|
||||
<!-- attribute names chosen to be in alphabetic order so that order can be set when retrieved -->
|
||||
<gui_cash_stats>
|
||||
<col col_name="game" col_title="Game" disp_all="True" disp_posn="True" field_format="%s" field_type="str" xalignment="0.0"/>
|
||||
<col col_name="hand" col_title="Hand" disp_all="False" disp_posn="False" field_format="%s" field_type="str" xalignment="0.0"/>
|
||||
<col col_name="plposition" col_title="Posn" disp_all="False" disp_posn="False" field_format="%s" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="pname" col_title="Name" disp_all="False" disp_posn="False" field_format="%s" field_type="str" xalignment="0.0"/>
|
||||
<col col_name="n" col_title="Hds" disp_all="True" disp_posn="True" field_format="%1.0f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="avgseats" col_title="Seats" disp_all="False" disp_posn="False" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="vpip" col_title="VPIP" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="pfr" col_title="PFR" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="pf3" col_title="PF3" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="aggfac" col_title="AggFac" disp_all="True" disp_posn="True" field_format="%2.2f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="aggfrq" col_title="AggFreq" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="conbet" col_title="ContBet" disp_all="False" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="rfi" col_title="RFI" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="steals" col_title="Steals" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="saw_f" col_title="Saw_F" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="sawsd" col_title="SawSD" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="wtsdwsf" col_title="WtSDwsF" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="wmsd" col_title="W$SD" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="flafq" col_title="FlAFq" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="tuafq" col_title="TuAFq" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="rvafq" col_title="RvAFq" disp_all="True" disp_posn="True" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="pofafq" col_title="PoFAFq" disp_all="False" disp_posn="False" field_format="%3.1f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="net" col_title="Net($)" disp_all="True" disp_posn="True" field_format="%6.2f" field_type="cash" xalignment="1.0"/>
|
||||
<col col_name="bbper100" col_title="bb/100" disp_all="True" disp_posn="True" field_format="%4.2f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="rake" col_title="Rake($)" disp_all="True" disp_posn="True" field_format="%6.2f" field_type="cash" xalignment="1.0"/>
|
||||
<col col_name="bb100xr" col_title="bbxr/100" disp_all="True" disp_posn="True" field_format="%4.2f" field_type="str" xalignment="1.0"/>
|
||||
<col col_name="variance" col_title="Variance" disp_all="True" disp_posn="True" field_format="%5.2f" field_type="str" xalignment="1.0"/>
|
||||
</gui_cash_stats>
|
||||
|
||||
<raw_hands save="none" compression="none"/>
|
||||
|
||||
<raw_tourneys save="none" compression="none"/>
|
||||
|
|
|
@ -58,7 +58,7 @@ class Hand(object):
|
|||
LCS = {'H':'h', 'D':'d', 'C':'c', 'S':'s'}
|
||||
SYMBOL = {'USD': '$', 'EUR': u'$', '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 }
|
||||
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"):
|
||||
|
@ -77,7 +77,7 @@ class Hand(object):
|
|||
self.dbid_gt = 0
|
||||
self.tablename = ""
|
||||
self.hero = ""
|
||||
self.maxseats = 0
|
||||
self.maxseats = None
|
||||
self.counted_seats = 0
|
||||
self.buttonpos = 0
|
||||
|
||||
|
|
390
pyfpdb/PkrToFpdb.py
Executable file
390
pyfpdb/PkrToFpdb.py
Executable file
|
@ -0,0 +1,390 @@
|
|||
#!/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
|
||||
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):
|
||||
|
||||
# Class Variables
|
||||
|
||||
sitename = "PKR"
|
||||
filetype = "text"
|
||||
codepage = ("utf8", "cp1252")
|
||||
siteId = 12 # Needs to match id entry in Sites database
|
||||
|
||||
mixes = { 'HORSE': 'horse', '8-Game': '8game', 'HOSE': 'hose'} # Legal mixed games
|
||||
sym = {'USD': "\$"} # ADD Euro, Sterling, etc HERE
|
||||
substitutions = {
|
||||
'LEGAL_ISO' : "USD", # legal ISO currency codes
|
||||
'LS' : "\$|" # legal currency symbols - Euro(cp1252, utf-8)
|
||||
}
|
||||
|
||||
limits = { 'NO LIMIT':'nl', 'POT LIMIT':'pl', 'LIMIT':'fl' }
|
||||
games = { # base, category
|
||||
"HOLD'EM" : ('hold','holdem'),
|
||||
'FIXMEOmaha' : ('hold','omahahi'),
|
||||
'FIXMEOmaha Hi/Lo' : ('hold','omahahilo'),
|
||||
'FIXME5 Card Draw' : ('draw','fivedraw')
|
||||
}
|
||||
currencies = { u'€':'EUR', '$':'USD', '':'T$' }
|
||||
|
||||
# Static regexes
|
||||
re_GameInfo = re.compile(u"""
|
||||
Table\s\#\d+\s\-\s(?P<TABLE>[a-zA-Z\ \d]+)\s
|
||||
Starting\sHand\s\#(?P<HID>[0-9]+)\s
|
||||
Start\stime\sof\shand:\s(?P<DATETIME>.*)\s
|
||||
Last\sHand\s\#[0-9]+\s
|
||||
Game\sType:\s(?P<GAME>HOLD'EM|5\sCard\sDraw)\s
|
||||
Limit\sType:\s(?P<LIMIT>NO\sLIMIT|LIMIT|POT\sLIMIT)\s
|
||||
Table\sType\:\sRING\s
|
||||
Money\sType:\sREAL\sMONEY\s
|
||||
Blinds\sare\snow\s(?P<CURRENCY>%(LS)s|)?
|
||||
(?P<SB>[.0-9]+)/(%(LS)s)?
|
||||
(?P<BB>[.0-9]+)
|
||||
""" % substitutions, re.MULTILINE|re.VERBOSE)
|
||||
|
||||
re_PlayerInfo = re.compile(u"""
|
||||
^Seat\s(?P<SEAT>[0-9]+):\s
|
||||
(?P<PNAME>.*)\s-\s
|
||||
(%(LS)s)?(?P<CASH>[.0-9]+)
|
||||
""" % substitutions, re.MULTILINE|re.VERBOSE)
|
||||
|
||||
re_HandInfo = re.compile("""
|
||||
^Table\s\'(?P<TABLE>[-\ a-zA-Z\d]+)\'\s
|
||||
((?P<MAX>\d+)-max\s)?
|
||||
(?P<PLAY>\(Play\sMoney\)\s)?
|
||||
(Seat\s\#(?P<BUTTON>\d+)\sis\sthe\sbutton)?""",
|
||||
re.MULTILINE|re.VERBOSE)
|
||||
|
||||
re_SplitHands = re.compile('\n\n+')
|
||||
re_TailSplitHands = re.compile('(\n\n\n+)')
|
||||
re_Button = re.compile('Seat #(?P<BUTTON>\d+) is the button', re.MULTILINE)
|
||||
re_Board = re.compile(r"\[(?P<CARDS>.+)\]")
|
||||
# self.re_setHandInfoRegex('.*#(?P<HID>[0-9]+): Table (?P<TABLE>[ a-zA-Z]+) - \$?(?P<SB>[.0-9]+)/\$?(?P<BB>[.0-9]+) - (?P<GAMETYPE>.*) - (?P<HR>[0-9]+):(?P<MIN>[0-9]+) ET - (?P<YEAR>[0-9]+)/(?P<MON>[0-9]+)/(?P<DAY>[0-9]+)Table (?P<TABLE>[ a-zA-Z]+)\nSeat (?P<BUTTON>[0-9]+)')
|
||||
|
||||
re_DateTime = re.compile("""(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})[\- ]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)""", re.MULTILINE)
|
||||
|
||||
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.
|
||||
self.compiledPlayers = players
|
||||
player_re = "(?P<PNAME>" + "|".join(map(re.escape, players)) + ")"
|
||||
subst = {'PLYR': player_re, 'CUR': self.sym[hand.gametype['currency']]}
|
||||
log.debug("player_re: " + player_re)
|
||||
self.re_PostSB = re.compile(r"^%(PLYR)s posts small blind %(CUR)s(?P<SB>[.0-9]+)" % subst, re.MULTILINE)
|
||||
# FIXME: Sionel posts $0.04 is a second big blind in a different format.
|
||||
self.re_PostBB = re.compile(r"^%(PLYR)s 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(r"^%(PLYR)s: posts small \& big blinds %(CUR)s(?P<SBBB>[.0-9]+)" % subst, re.MULTILINE)
|
||||
self.re_HeroCards = re.compile(r"^Dealing( \[(?P<OLDCARDS>.+?)\])?( \[(?P<NEWCARDS>.+?)\]) to %(PLYR)s" % subst, re.MULTILINE)
|
||||
self.re_Action = re.compile(r"""
|
||||
^%(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_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)
|
||||
|
||||
def readSupportedGames(self):
|
||||
return [["ring", "hold", "nl"],
|
||||
["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):
|
||||
info = {}
|
||||
m = self.re_GameInfo.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()
|
||||
#print "DEBUG: %s" % mg
|
||||
|
||||
if 'LIMIT' in mg:
|
||||
info['limitType'] = self.limits[mg['LIMIT']]
|
||||
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']
|
||||
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]
|
||||
info['bb'] = self.Lim_Blinds[mg['BB']][1]
|
||||
except KeyError:
|
||||
log.error(_("determineGameType: Lim_Blinds has no lookup for '%s'" % mg['BB']))
|
||||
log.error(_("determineGameType: Raising FpdbParseError"))
|
||||
raise FpdbParseError(_("Lim_Blinds has no lookup for '%s'") % mg['BB'])
|
||||
|
||||
return info
|
||||
|
||||
def readHandInfo(self, hand):
|
||||
info = {}
|
||||
m = self.re_HandInfo.search(hand.handText,re.DOTALL)
|
||||
if m:
|
||||
info.update(m.groupdict())
|
||||
# hand.maxseats = int(m2.group(1))
|
||||
else:
|
||||
pass # throw an exception here, eh?
|
||||
m = self.re_GameInfo.search(hand.handText)
|
||||
if m:
|
||||
info.update(m.groupdict())
|
||||
# m = self.re_Button.search(hand.handText)
|
||||
# if m: info.update(m.groupdict())
|
||||
# TODO : I rather like the idea of just having this dict as hand.info
|
||||
log.debug("readHandInfo: %s" % info)
|
||||
for key in info:
|
||||
if key == 'DATETIME':
|
||||
#2008/11/12 10:00:48 CET [2008/11/12 4:00:48 ET]
|
||||
#2008/08/17 - 01:14:43 (ET)
|
||||
#2008/09/07 06:23:14 ET
|
||||
m1 = self.re_DateTime.finditer(info[key])
|
||||
datetimestr = "2000/01/01 00:00:00" # default used if time not found
|
||||
for a in m1:
|
||||
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'))
|
||||
hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S")
|
||||
if key == 'HID':
|
||||
hand.handid = info[key]
|
||||
if key == 'TOURNO':
|
||||
hand.tourNo = info[key]
|
||||
if key == 'BUYIN':
|
||||
if info[key] == 'Freeroll':
|
||||
hand.buyin = '$0+$0'
|
||||
else:
|
||||
#FIXME: The key looks like: '€0.82+€0.18 EUR'
|
||||
# This should be parsed properly and used
|
||||
hand.buyin = info[key]
|
||||
if key == 'LEVEL':
|
||||
hand.level = info[key]
|
||||
|
||||
if key == 'TABLE':
|
||||
if hand.tourNo != None:
|
||||
hand.tablename = re.split(" ", info[key])[1]
|
||||
else:
|
||||
hand.tablename = info[key]
|
||||
if key == 'BUTTON':
|
||||
hand.buttonpos = info[key]
|
||||
if key == 'MAX':
|
||||
hand.maxseats = int(info[key])
|
||||
|
||||
if key == 'MIXED':
|
||||
hand.mixed = self.mixes[info[key]] if info[key] is not None else None
|
||||
if key == 'PLAY' and info['PLAY'] is not None:
|
||||
# hand.currency = 'play' # overrides previously set value
|
||||
hand.gametype['currency'] = 'play'
|
||||
|
||||
def readButton(self, hand):
|
||||
m = self.re_Button.search(hand.handText)
|
||||
if m:
|
||||
hand.buttonpos = int(m.group('BUTTON'))
|
||||
else:
|
||||
log.info('readButton: not found')
|
||||
|
||||
def readPlayerStacks(self, hand):
|
||||
log.debug("readPlayerStacks")
|
||||
m = self.re_PlayerInfo.finditer(hand.handText)
|
||||
for a in m:
|
||||
hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH'))
|
||||
|
||||
def markStreets(self, hand):
|
||||
# PREFLOP = ** Dealing down cards **
|
||||
# This re fails if, say, river is missing; then we don't get the ** that starts the river.
|
||||
if hand.gametype['base'] in ("hold"):
|
||||
m = re.search(r"Dealing Cards(?P<PREFLOP>.+(?=Dealing Flop)|.+)"
|
||||
r"(Dealing Flop(?P<FLOP> \[\S\S \S\S \S\S\].+(?=Dealing Turn)|.+))?"
|
||||
r"(Dealing Turn (?P<TURN>\[\S\S\].+(?=Dealing River)|.+))?"
|
||||
r"(Dealing River (?P<RIVER>\[\S\S\].+))?", hand.handText,re.DOTALL)
|
||||
elif hand.gametype['base'] in ("stud"):
|
||||
m = re.search(r"(?P<ANTES>.+(?=\*\*\* 3rd STREET \*\*\*)|.+)"
|
||||
r"(\*\*\* 3rd STREET \*\*\*(?P<THIRD>.+(?=\*\*\* 4th STREET \*\*\*)|.+))?"
|
||||
r"(\*\*\* 4th STREET \*\*\*(?P<FOURTH>.+(?=\*\*\* 5th STREET \*\*\*)|.+))?"
|
||||
r"(\*\*\* 5th STREET \*\*\*(?P<FIFTH>.+(?=\*\*\* 6th STREET \*\*\*)|.+))?"
|
||||
r"(\*\*\* 6th STREET \*\*\*(?P<SIXTH>.+(?=\*\*\* RIVER \*\*\*)|.+))?"
|
||||
r"(\*\*\* RIVER \*\*\*(?P<SEVENTH>.+))?", hand.handText,re.DOTALL)
|
||||
elif hand.gametype['base'] in ("draw"):
|
||||
m = re.search(r"(?P<PREDEAL>.+(?=\*\*\* DEALING HANDS \*\*\*)|.+)"
|
||||
r"(\*\*\* DEALING HANDS \*\*\*(?P<DEAL>.+(?=\*\*\* FIRST DRAW \*\*\*)|.+))?"
|
||||
r"(\*\*\* FIRST DRAW \*\*\*(?P<DRAWONE>.+(?=\*\*\* SECOND DRAW \*\*\*)|.+))?"
|
||||
r"(\*\*\* SECOND DRAW \*\*\*(?P<DRAWTWO>.+(?=\*\*\* THIRD DRAW \*\*\*)|.+))?"
|
||||
r"(\*\*\* THIRD DRAW \*\*\*(?P<DRAWTHREE>.+))?", hand.handText,re.DOTALL)
|
||||
hand.addStreets(m)
|
||||
|
||||
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 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 readBlinds(self, hand):
|
||||
try:
|
||||
m = self.re_PostSB.search(hand.handText)
|
||||
hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB'))
|
||||
except: # 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'))
|
||||
for a in self.re_PostBoth.finditer(hand.handText):
|
||||
hand.addBlind(a.group('PNAME'), 'both', a.group('SBBB'))
|
||||
|
||||
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'):
|
||||
if street in hand.streets.keys():
|
||||
m = self.re_HeroCards.finditer(hand.streets[street])
|
||||
for found in m:
|
||||
# if m == None:
|
||||
# hand.involved = False
|
||||
# else:
|
||||
hand.hero = found.group('PNAME')
|
||||
newcards = found.group('NEWCARDS').split(' ')
|
||||
hand.addHoleCards(street, hand.hero, closed=newcards, shown=False, mucked=False, dealt=True)
|
||||
|
||||
for street, text in hand.streets.iteritems():
|
||||
if not text or street in ('PREFLOP', 'DEAL'): continue # already done these
|
||||
m = self.re_HeroCards.finditer(hand.streets[street])
|
||||
for found in m:
|
||||
player = found.group('PNAME')
|
||||
if found.group('NEWCARDS') is None:
|
||||
newcards = []
|
||||
else:
|
||||
newcards = found.group('NEWCARDS').split(' ')
|
||||
if found.group('OLDCARDS') is None:
|
||||
oldcards = []
|
||||
else:
|
||||
oldcards = found.group('OLDCARDS').split(' ')
|
||||
|
||||
if street == 'THIRD' and len(newcards) == 3: # hero in stud game
|
||||
hand.hero = player
|
||||
hand.dealt.add(player) # need this for stud??
|
||||
hand.addHoleCards(street, player, closed=newcards[0:2], open=[newcards[2]], shown=False, mucked=False, dealt=False)
|
||||
else:
|
||||
hand.addHoleCards(street, player, open=newcards, closed=oldcards, shown=False, mucked=False, dealt=False)
|
||||
|
||||
|
||||
def readAction(self, hand, street):
|
||||
m = self.re_Action.finditer(hand.streets[street])
|
||||
for action in m:
|
||||
acts = action.groupdict()
|
||||
if action.group('ATYPE') == ' raises':
|
||||
hand.addRaiseTo( 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:
|
||||
print "DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),)
|
||||
|
||||
|
||||
def readShowdownActions(self, hand):
|
||||
# TODO: pick up mucks also??
|
||||
for shows in self.re_ShowdownAction.finditer(hand.handText):
|
||||
cards = shows.group('CARDS').split(' ')
|
||||
hand.addShownCards(cards, shows.group('PNAME'))
|
||||
|
||||
def readCollectPot(self,hand):
|
||||
for m in self.re_CollectPot.finditer(hand.handText):
|
||||
hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT'))
|
||||
|
||||
def readShownCards(self,hand):
|
||||
for m in self.re_ShownCards.finditer(hand.handText):
|
||||
if m.group('CARDS') is not None:
|
||||
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('SHOWED') == "showed": shown = True
|
||||
elif m.group('SHOWED') == "mucked": mucked = True
|
||||
|
||||
hand.addShownCards(cards=cards, player=m.group('PNAME'), shown=shown, mucked=mucked)
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = OptionParser()
|
||||
parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="regression-test-files/stars/horse/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", 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()
|
||||
|
||||
e = PokerStars(in_path = options.ipath, out_path = options.opath, follow = options.follow)
|
|
@ -129,7 +129,7 @@ import Configuration
|
|||
import Exceptions
|
||||
import Stats
|
||||
|
||||
VERSION = "0.20.905"
|
||||
VERSION = "0.20.905 plus git"
|
||||
|
||||
|
||||
class fpdb:
|
||||
|
@ -264,7 +264,8 @@ class fpdb:
|
|||
, ('numpy', numpy_version)
|
||||
, ('sqlite3', sqlite3_version)
|
||||
, ('sqlite', sqlite_version)
|
||||
, ('database', self.settings['db-server'] + db_version)
|
||||
, ('fpdb version', VERSION)
|
||||
, ('database used', self.settings['db-server'])
|
||||
]
|
||||
versions = gtk.TextBuffer()
|
||||
w = 20 # width used for module names and version numbers
|
||||
|
@ -786,7 +787,6 @@ class fpdb:
|
|||
<menuitem action="Quit"/>
|
||||
</menu>
|
||||
<menu action="import">
|
||||
<menuitem action="sethharchive"/>
|
||||
<menuitem action="bulkimp"/>
|
||||
<menuitem action="imapimport"/>
|
||||
<menuitem action="autoimp"/>
|
||||
|
@ -828,7 +828,6 @@ class fpdb:
|
|||
('SaveProf', None, _('_Save Profile (todo)'), _('<control>S'), 'Save your profile', self.dia_save_profile),
|
||||
('Preferences', None, _('Pre_ferences'), _('<control>F'), 'Edit your preferences', self.dia_preferences),
|
||||
('import', None, _('_Import')),
|
||||
('sethharchive', None, _('_Set HandHistory Archive Directory'), None, 'Set HandHistory Archive Directory', self.select_hhArchiveBase),
|
||||
('bulkimp', None, _('_Bulk Import'), _('<control>B'), 'Bulk Import', self.tab_bulk_import),
|
||||
('imapimport', None, _('_Import through eMail/IMAP'), _('<control>I'), 'Import through eMail/IMAP', self.tab_imap_import),
|
||||
('viewers', None, _('_Viewers')),
|
||||
|
@ -1252,16 +1251,6 @@ 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()
|
||||
|
||||
def select_hhArchiveBase(self, widget=None):
|
||||
fc = gtk.FileChooserDialog(title=_("Select HH Output Directory"), parent=None, action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons=(gtk.STOCK_OPEN,gtk.RESPONSE_OK), backend=None)
|
||||
fc.run()
|
||||
# TODO: We need to put in a Cancel button, and handle if the user presses that or the "Close" box without selecting anything as a cancel, and return to the prior setting
|
||||
#self.warning_box("You selected %s" % fc.get_filename())
|
||||
self.config.set_hhArchiveBase(fc.get_filename())
|
||||
self.config.save()
|
||||
self.load_profile() # we can't do this at the end of this func because load_profile calls this func
|
||||
fc.destroy() # TODO: loop this to make sure we get valid data back from it, because the open directory thing in GTK lets you select files and not select things and other stupid bullshit
|
||||
|
||||
def main(self):
|
||||
gtk.main()
|
||||
return 0
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
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
|
||||
|
||||
|
|
Binary file not shown.
3102
pyfpdb/locale/fpdb-de_DE.po
Normal file
3102
pyfpdb/locale/fpdb-de_DE.po
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -5,12 +5,12 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2010-08-23 05:27+CEST\n"
|
||||
"POT-Creation-Date: 2010-08-26 18:52+CEST\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: ENCODING\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
@ -23,31 +23,31 @@ msgstr ""
|
|||
msgid "Output being written to"
|
||||
msgstr ""
|
||||
|
||||
#: BetfairToFpdb.py:84
|
||||
#: BetfairToFpdb.py:83
|
||||
msgid "GameInfo regex did not match"
|
||||
msgstr ""
|
||||
|
||||
#: BetfairToFpdb.py:115
|
||||
#: BetfairToFpdb.py:114
|
||||
msgid "Didn't match re_HandInfo"
|
||||
msgstr ""
|
||||
|
||||
#: BetfairToFpdb.py:171
|
||||
#: BetfairToFpdb.py:170
|
||||
msgid "No bringin found"
|
||||
msgstr ""
|
||||
|
||||
#: BetfairToFpdb.py:207 OnGameToFpdb.py:328 PokerStarsToFpdb.py:440
|
||||
#: BetfairToFpdb.py:206 OnGameToFpdb.py:308 PokerStarsToFpdb.py:440
|
||||
msgid "DEBUG: unimplemented readAction: '%s' '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467
|
||||
#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467
|
||||
msgid "parse input hand history"
|
||||
msgstr ""
|
||||
|
||||
#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468
|
||||
#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468
|
||||
msgid "output translation to"
|
||||
msgstr ""
|
||||
|
||||
#: BetfairToFpdb.py:232 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469
|
||||
#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469
|
||||
msgid "follow (tail -f) the input"
|
||||
msgstr ""
|
||||
|
||||
|
@ -581,11 +581,11 @@ msgstr ""
|
|||
msgid " Clear Dates "
|
||||
msgstr ""
|
||||
|
||||
#: Filters.py:940 fpdb.pyw:721
|
||||
#: Filters.py:940 fpdb.pyw:722
|
||||
msgid "Pick a date"
|
||||
msgstr ""
|
||||
|
||||
#: Filters.py:946 fpdb.pyw:727
|
||||
#: Filters.py:946 fpdb.pyw:728
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
|
@ -709,7 +709,7 @@ msgstr ""
|
|||
msgid "auto"
|
||||
msgstr ""
|
||||
|
||||
#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:399
|
||||
#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:398
|
||||
msgid "don't drop"
|
||||
msgstr ""
|
||||
|
||||
|
@ -729,7 +729,7 @@ msgstr ""
|
|||
msgid "Drop HudCache:"
|
||||
msgstr ""
|
||||
|
||||
#: GuiBulkImport.py:297 fpdb.pyw:832
|
||||
#: GuiBulkImport.py:297 fpdb.pyw:831
|
||||
msgid "_Bulk Import"
|
||||
msgstr ""
|
||||
|
||||
|
@ -793,11 +793,11 @@ msgstr ""
|
|||
msgid "PartyPoker converter: ./GuiBulkImport.py -c PartyPoker -f filename"
|
||||
msgstr ""
|
||||
|
||||
#: GuiBulkImport.py:386
|
||||
#: GuiBulkImport.py:385
|
||||
msgid "-q is deprecated. Just use \"-f filename\" instead"
|
||||
msgstr ""
|
||||
|
||||
#: GuiBulkImport.py:410
|
||||
#: GuiBulkImport.py:409
|
||||
msgid "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec"
|
||||
msgstr ""
|
||||
|
||||
|
@ -853,7 +853,7 @@ msgstr ""
|
|||
msgid " not connected but no exception"
|
||||
msgstr ""
|
||||
|
||||
#: GuiDatabase.py:293 fpdb.pyw:905
|
||||
#: GuiDatabase.py:293 fpdb.pyw:904
|
||||
msgid "MySQL Server reports: Access denied. Are your permissions set correctly?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -861,7 +861,7 @@ msgstr ""
|
|||
msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started"
|
||||
msgstr ""
|
||||
|
||||
#: GuiDatabase.py:301 fpdb.pyw:910
|
||||
#: GuiDatabase.py:301 fpdb.pyw:909
|
||||
msgid "Postgres Server reports: Access denied. Are your permissions set correctly?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -905,22 +905,22 @@ msgid ""
|
|||
" and HUD are NOT affected by this problem."
|
||||
msgstr ""
|
||||
|
||||
#: GuiGraphViewer.py:141 GuiGraphViewer.py:255 GuiSessionViewer.py:355
|
||||
#: GuiGraphViewer.py:141 GuiGraphViewer.py:255 GuiSessionViewer.py:354
|
||||
msgid "***Error: "
|
||||
msgstr ""
|
||||
|
||||
#: GuiGraphViewer.py:171 GuiPositionalStats.py:178 GuiRingPlayerStats.py:252
|
||||
#: GuiSessionViewer.py:204 GuiTourneyPlayerStats.py:277
|
||||
#: GuiGraphViewer.py:171 GuiPositionalStats.py:177 GuiRingPlayerStats.py:251
|
||||
#: GuiSessionViewer.py:203 GuiTourneyPlayerStats.py:277
|
||||
msgid "No sites selected - defaulting to PokerStars"
|
||||
msgstr ""
|
||||
|
||||
#: GuiGraphViewer.py:176 GuiPositionalStats.py:181 GuiRingPlayerStats.py:255
|
||||
#: GuiSessionViewer.py:207 GuiTourneyPlayerStats.py:280
|
||||
#: GuiGraphViewer.py:176 GuiPositionalStats.py:180 GuiRingPlayerStats.py:254
|
||||
#: GuiSessionViewer.py:206 GuiTourneyPlayerStats.py:280
|
||||
msgid "No player ids found"
|
||||
msgstr ""
|
||||
|
||||
#: GuiGraphViewer.py:181 GuiPositionalStats.py:184 GuiRingPlayerStats.py:258
|
||||
#: GuiSessionViewer.py:210
|
||||
#: GuiGraphViewer.py:181 GuiPositionalStats.py:183 GuiRingPlayerStats.py:257
|
||||
#: GuiSessionViewer.py:209
|
||||
msgid "No limits found"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1030,11 +1030,11 @@ msgstr ""
|
|||
msgid "Log Messages"
|
||||
msgstr ""
|
||||
|
||||
#: GuiPositionalStats.py:147
|
||||
#: GuiPositionalStats.py:146
|
||||
msgid "DEBUG: activesite set to %s"
|
||||
msgstr ""
|
||||
|
||||
#: GuiPositionalStats.py:333
|
||||
#: GuiPositionalStats.py:332
|
||||
msgid "Positional Stats page displayed in %4.2f seconds"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1050,36 +1050,36 @@ msgstr ""
|
|||
msgid "Test Preferences Dialog"
|
||||
msgstr ""
|
||||
|
||||
#: GuiPrefs.py:192 fpdb.pyw:296
|
||||
#: GuiPrefs.py:192 fpdb.pyw:297
|
||||
msgid "Preferences"
|
||||
msgstr ""
|
||||
|
||||
#: GuiRingPlayerStats.py:323 GuiSessionViewer.py:249
|
||||
#: GuiRingPlayerStats.py:322 GuiSessionViewer.py:248
|
||||
#: GuiTourneyPlayerStats.py:252
|
||||
msgid "Stats page displayed in %4.2f seconds"
|
||||
msgstr ""
|
||||
|
||||
#: GuiRingPlayerStats.py:370
|
||||
#: GuiRingPlayerStats.py:369
|
||||
msgid "***sortnums error: "
|
||||
msgstr ""
|
||||
|
||||
#: GuiRingPlayerStats.py:392
|
||||
#: GuiRingPlayerStats.py:391
|
||||
msgid "***sortcols error: "
|
||||
msgstr ""
|
||||
|
||||
#: GuiRingPlayerStats.py:683
|
||||
#: GuiRingPlayerStats.py:682
|
||||
msgid "Detailed Filters"
|
||||
msgstr ""
|
||||
|
||||
#: GuiRingPlayerStats.py:692
|
||||
#: GuiRingPlayerStats.py:691
|
||||
msgid "Hand Filters:"
|
||||
msgstr ""
|
||||
|
||||
#: GuiRingPlayerStats.py:705
|
||||
#: GuiRingPlayerStats.py:704
|
||||
msgid "between"
|
||||
msgstr ""
|
||||
|
||||
#: GuiRingPlayerStats.py:706
|
||||
#: GuiRingPlayerStats.py:705
|
||||
msgid "and"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1091,15 +1091,15 @@ msgstr ""
|
|||
msgid "ImportError: %s"
|
||||
msgstr ""
|
||||
|
||||
#: GuiSessionViewer.py:90
|
||||
#: GuiSessionViewer.py:89
|
||||
msgid "Hand Breakdown for all levels listed above"
|
||||
msgstr ""
|
||||
|
||||
#: GuiSessionViewer.py:376
|
||||
#: GuiSessionViewer.py:375
|
||||
msgid "Session candlestick graph"
|
||||
msgstr ""
|
||||
|
||||
#: GuiSessionViewer.py:379
|
||||
#: GuiSessionViewer.py:378
|
||||
msgid "Sessions"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1154,7 +1154,7 @@ msgid ""
|
|||
"Note: error output is being diverted to:\n"
|
||||
msgstr ""
|
||||
|
||||
#: HUD_main.pyw:96 fpdb.pyw:1139
|
||||
#: HUD_main.pyw:96 fpdb.pyw:1138
|
||||
msgid ""
|
||||
"\n"
|
||||
"Any major error will be reported there _only_.\n"
|
||||
|
@ -1837,15 +1837,16 @@ msgstr ""
|
|||
msgid "No Name"
|
||||
msgstr ""
|
||||
|
||||
#: OnGameToFpdb.py:153 PokerStarsToFpdb.py:189
|
||||
#: OnGameToFpdb.py:153 PkrToFpdb.py:144 PokerStarsToFpdb.py:189
|
||||
msgid "determineGameType: Unable to recognise gametype from: '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: OnGameToFpdb.py:154 PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220
|
||||
#: OnGameToFpdb.py:154 PkrToFpdb.py:145 PkrToFpdb.py:173
|
||||
#: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220
|
||||
msgid "determineGameType: Raising FpdbParseError"
|
||||
msgstr ""
|
||||
|
||||
#: OnGameToFpdb.py:155 PokerStarsToFpdb.py:191
|
||||
#: OnGameToFpdb.py:155 PkrToFpdb.py:146 PokerStarsToFpdb.py:191
|
||||
msgid "Unable to recognise gametype from: '%s'"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1937,6 +1938,10 @@ msgstr ""
|
|||
msgid "Unimplemented readAction: '%s' '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: PkrToFpdb.py:174 PokerStarsToFpdb.py:221
|
||||
msgid "Lim_Blinds has no lookup for '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: PokerStarsSummary.py:72
|
||||
msgid "didn't recognise buyin currency in:"
|
||||
msgstr ""
|
||||
|
@ -1945,10 +1950,6 @@ msgstr ""
|
|||
msgid "in not result starttime"
|
||||
msgstr ""
|
||||
|
||||
#: PokerStarsToFpdb.py:221
|
||||
msgid "Lim_Blinds has no lookup for '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: PokerStarsToFpdb.py:273
|
||||
msgid "failed to detect currency"
|
||||
msgstr ""
|
||||
|
@ -2428,161 +2429,161 @@ msgstr ""
|
|||
msgid "Operating System"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:279
|
||||
#: fpdb.pyw:280
|
||||
msgid "Your config file is: "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:284
|
||||
#: fpdb.pyw:285
|
||||
msgid "Version Information:"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:291
|
||||
#: fpdb.pyw:292
|
||||
msgid "Threads: "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:314
|
||||
#: fpdb.pyw:315
|
||||
msgid "Updated preferences have not been loaded because windows are open. Re-start fpdb to load them."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:324
|
||||
#: fpdb.pyw:325
|
||||
msgid "Maintain Databases"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:334
|
||||
#: fpdb.pyw:335
|
||||
msgid "saving updated db data"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:341
|
||||
#: fpdb.pyw:342
|
||||
msgid "guidb response was "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:347
|
||||
#: fpdb.pyw:348
|
||||
msgid "Cannot open Database Maintenance window because other windows have been opened. Re-start fpdb to use this option."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:350
|
||||
msgid "Number of Hands: "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:351
|
||||
msgid ""
|
||||
"\n"
|
||||
"Number of Tourneys: "
|
||||
msgid "Number of Hands: "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:352
|
||||
msgid ""
|
||||
"\n"
|
||||
"Number of TourneyTypes: "
|
||||
"Number of Tourneys: "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:353
|
||||
msgid ""
|
||||
"\n"
|
||||
"Number of TourneyTypes: "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:354
|
||||
msgid "Database Statistics"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:362
|
||||
#: fpdb.pyw:363
|
||||
msgid "HUD Configurator - choose category"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:368
|
||||
#: fpdb.pyw:369
|
||||
msgid "Please select the game category for which you want to configure HUD stats:"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:420
|
||||
#: fpdb.pyw:421
|
||||
msgid "HUD Configurator - please choose your stats"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:426
|
||||
#: fpdb.pyw:427
|
||||
msgid "Please choose the stats you wish to use in the below table."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:430
|
||||
#: fpdb.pyw:431
|
||||
msgid "Note that you may not select any stat more than once or it will crash."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:434
|
||||
#: fpdb.pyw:435
|
||||
msgid "It is not currently possible to select \"empty\" or anything else to that end."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:438
|
||||
#: fpdb.pyw:439
|
||||
msgid "To configure things like colouring you will still have to manually edit your HUD_config.xml."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:545
|
||||
#: fpdb.pyw:546
|
||||
msgid "Confirm deleting and recreating tables"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:546
|
||||
#: fpdb.pyw:547
|
||||
msgid "Please confirm that you want to (re-)create the tables. If there already are tables in the database "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:547
|
||||
#: fpdb.pyw:548
|
||||
msgid ""
|
||||
" they will be deleted.\n"
|
||||
"This may take a while."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:572
|
||||
#: fpdb.pyw:573
|
||||
msgid "User cancelled recreating tables"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:579
|
||||
#: fpdb.pyw:580
|
||||
msgid "Please confirm that you want to re-create the HUD cache."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:587
|
||||
#: fpdb.pyw:588
|
||||
msgid " Hero's cache starts: "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:601
|
||||
#: fpdb.pyw:602
|
||||
msgid " Villains' cache starts: "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:614
|
||||
#: fpdb.pyw:615
|
||||
msgid " Rebuilding HUD Cache ... "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:622
|
||||
#: fpdb.pyw:623
|
||||
msgid "User cancelled rebuilding hud cache"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:634
|
||||
#: fpdb.pyw:635
|
||||
msgid "Confirm rebuilding database indexes"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:635
|
||||
#: fpdb.pyw:636
|
||||
msgid "Please confirm that you want to rebuild the database indexes."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:643
|
||||
#: fpdb.pyw:644
|
||||
msgid " Rebuilding Indexes ... "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:650
|
||||
#: fpdb.pyw:651
|
||||
msgid " Cleaning Database ... "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:655
|
||||
#: fpdb.pyw:656
|
||||
msgid " Analyzing Database ... "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:660
|
||||
#: fpdb.pyw:661
|
||||
msgid "User cancelled rebuilding db indexes"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:755
|
||||
#: fpdb.pyw:756
|
||||
msgid "Unimplemented: Save Profile (try saving a HUD layout, that should do it)"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:758
|
||||
#: fpdb.pyw:759
|
||||
msgid "Fatal Error - Config File Missing"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:760
|
||||
#: fpdb.pyw:761
|
||||
msgid "Please copy the config file from the docs folder to:"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:768
|
||||
#: fpdb.pyw:769
|
||||
msgid "and edit it according to the install documentation at http://fpdb.sourceforge.net"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2590,7 +2591,7 @@ msgstr ""
|
|||
msgid "_Main"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:826 fpdb.pyw:854
|
||||
#: fpdb.pyw:826 fpdb.pyw:853
|
||||
msgid "_Quit"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2623,250 +2624,246 @@ msgid "_Import"
|
|||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:831
|
||||
msgid "_Set HandHistory Archive Directory"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:832
|
||||
msgid "<control>B"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:833
|
||||
#: fpdb.pyw:832
|
||||
msgid "<control>I"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:833
|
||||
#: fpdb.pyw:832
|
||||
msgid "_Import through eMail/IMAP"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:834
|
||||
#: fpdb.pyw:833
|
||||
msgid "_Viewers"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:835
|
||||
#: fpdb.pyw:834
|
||||
msgid "<control>A"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:835
|
||||
#: fpdb.pyw:834
|
||||
msgid "_Auto Import and HUD"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:836
|
||||
#: fpdb.pyw:835
|
||||
msgid "<control>H"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:836
|
||||
#: fpdb.pyw:835
|
||||
msgid "_HUD Configurator"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:837
|
||||
#: fpdb.pyw:836
|
||||
msgid "<control>G"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:837
|
||||
#: fpdb.pyw:836
|
||||
msgid "_Graphs"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:838
|
||||
#: fpdb.pyw:837
|
||||
msgid "<control>P"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:838
|
||||
msgid "Ring _Player Stats (tabulated view)"
|
||||
#: fpdb.pyw:837
|
||||
msgid "Ring _Player Stats (tabulated view, not on pgsql)"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:839
|
||||
#: fpdb.pyw:838
|
||||
msgid "<control>T"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:839
|
||||
msgid "_Tourney Player Stats (tabulated view)"
|
||||
#: fpdb.pyw:838
|
||||
msgid "_Tourney Player Stats (tabulated view, not on pgsql)"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:840
|
||||
#: fpdb.pyw:839
|
||||
msgid "Tourney _Viewer"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:841
|
||||
#: fpdb.pyw:840
|
||||
msgid "<control>O"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:841
|
||||
#: fpdb.pyw:840
|
||||
msgid "P_ositional Stats (tabulated view, not on sqlite)"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:842 fpdb.pyw:1058
|
||||
#: fpdb.pyw:841 fpdb.pyw:1057
|
||||
msgid "Session Stats"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:843
|
||||
#: fpdb.pyw:842
|
||||
msgid "_Database"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:844
|
||||
#: fpdb.pyw:843
|
||||
msgid "_Maintain Databases"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:845
|
||||
#: fpdb.pyw:844
|
||||
msgid "Create or Recreate _Tables"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:846
|
||||
#: fpdb.pyw:845
|
||||
msgid "Rebuild HUD Cache"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:847
|
||||
#: fpdb.pyw:846
|
||||
msgid "Rebuild DB Indexes"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:848
|
||||
#: fpdb.pyw:847
|
||||
msgid "_Statistics"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:849
|
||||
#: fpdb.pyw:848
|
||||
msgid "Dump Database to Textfile (takes ALOT of time)"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:850
|
||||
#: fpdb.pyw:849
|
||||
msgid "_Help"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:851
|
||||
#: fpdb.pyw:850
|
||||
msgid "_Log Messages"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:852
|
||||
#: fpdb.pyw:851
|
||||
msgid "A_bout, License, Copying"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:870
|
||||
#: fpdb.pyw:869
|
||||
msgid ""
|
||||
"There is an error in your config file\n"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:871
|
||||
#: fpdb.pyw:870
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Error is: "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:872
|
||||
#: fpdb.pyw:871
|
||||
msgid "CONFIG FILE ERROR"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:876
|
||||
#: fpdb.pyw:875
|
||||
msgid ""
|
||||
"Logfile is %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:878
|
||||
#: fpdb.pyw:877
|
||||
msgid "Config file"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:879
|
||||
#: fpdb.pyw:878
|
||||
msgid ""
|
||||
"has been created at:\n"
|
||||
"%s.\n"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:880
|
||||
#: fpdb.pyw:879
|
||||
msgid "Edit your screen_name and hand history path in the supported_sites "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:881
|
||||
#: fpdb.pyw:880
|
||||
msgid "section of the Preferences window (Main menu) before trying to import hands."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:903
|
||||
#: fpdb.pyw:902
|
||||
msgid "Connected to SQLite: %s"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:907
|
||||
#: fpdb.pyw:906
|
||||
msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:908
|
||||
#: fpdb.pyw:907
|
||||
msgid "Please check that the MySQL service has been started"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:912
|
||||
#: fpdb.pyw:911
|
||||
msgid "Postgres client reports: Unable to connect - "
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:913
|
||||
#: fpdb.pyw:912
|
||||
msgid "Please check that the Postgres service has been started"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:937
|
||||
#: fpdb.pyw:936
|
||||
msgid "Strong Warning - Invalid database version"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:939
|
||||
#: fpdb.pyw:938
|
||||
msgid "An invalid DB version or missing tables have been detected."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:943
|
||||
#: fpdb.pyw:942
|
||||
msgid "This error is not necessarily fatal but it is strongly recommended that you recreate the tables by using the Database menu."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:947
|
||||
#: fpdb.pyw:946
|
||||
msgid "Not doing this will likely lead to misbehaviour including fpdb crashes, corrupt data etc."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:960
|
||||
#: fpdb.pyw:959
|
||||
msgid "Status: Connected to %s database named %s on host %s"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:970
|
||||
#: fpdb.pyw:969
|
||||
msgid ""
|
||||
"\n"
|
||||
"Global lock taken by"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:973
|
||||
#: fpdb.pyw:972
|
||||
msgid ""
|
||||
"\n"
|
||||
"Failed to get global lock, it is currently held by"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:983
|
||||
#: fpdb.pyw:982
|
||||
msgid "Quitting normally"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1007
|
||||
#: fpdb.pyw:1006
|
||||
msgid ""
|
||||
"Global lock released.\n"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1014
|
||||
#: fpdb.pyw:1013
|
||||
msgid "Auto Import"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1021
|
||||
#: fpdb.pyw:1020
|
||||
msgid "Bulk Import"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1027
|
||||
#: fpdb.pyw:1026
|
||||
msgid "eMail Import"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1034
|
||||
#: fpdb.pyw:1033
|
||||
msgid "Ring Player Stats"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1040
|
||||
#: fpdb.pyw:1039
|
||||
msgid "Tourney Player Stats"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1046
|
||||
#: fpdb.pyw:1045
|
||||
msgid "Tourney Viewer"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1052
|
||||
#: fpdb.pyw:1051
|
||||
msgid "Positional Stats"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1062
|
||||
#: fpdb.pyw:1061
|
||||
msgid ""
|
||||
"Fpdb needs translators!\n"
|
||||
"If you speak another language and have a few minutes or more to spare get in touch by emailing steffen@schaumburger.info\n"
|
||||
|
@ -2887,43 +2884,39 @@ msgid ""
|
|||
"You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt and mit.txt in the fpdb installation directory."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1079
|
||||
#: fpdb.pyw:1078
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1086
|
||||
#: fpdb.pyw:1085
|
||||
msgid "Graphs"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1138
|
||||
#: fpdb.pyw:1137
|
||||
msgid ""
|
||||
"\n"
|
||||
"Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1167
|
||||
#: fpdb.pyw:1166
|
||||
msgid "fpdb starting ..."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1224
|
||||
#: fpdb.pyw:1223
|
||||
msgid "FPDB WARNING"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1243
|
||||
#: fpdb.pyw:1242
|
||||
msgid ""
|
||||
"WARNING: Unable to find output hh directory %s\n"
|
||||
"\n"
|
||||
" Press YES to create this directory, or NO to select a new one."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1251
|
||||
#: fpdb.pyw:1250
|
||||
msgid "WARNING: Unable to create hand output directory. Importing is not likely to work until this is fixed."
|
||||
msgstr ""
|
||||
|
||||
#: fpdb.pyw:1256
|
||||
msgid "Select HH Output Directory"
|
||||
msgstr ""
|
||||
|
||||
#: fpdb_import.py:60
|
||||
msgid "Import database module: MySQLdb not found"
|
||||
msgstr ""
|
||||
|
@ -3016,7 +3009,7 @@ msgstr ""
|
|||
msgid "CLI for fpdb_import is now available as CliFpdb.py"
|
||||
msgstr ""
|
||||
|
||||
#: interlocks.py:49
|
||||
#: interlocks.py:61
|
||||
msgid "lock already held by:"
|
||||
msgstr ""
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -1,2 +1,3 @@
|
|||
msgmerge --update fpdb-hu_HU.po fpdb-en_GB.po
|
||||
msgmerge --update fpdb-de_DE.po fpdb-en_GB.po
|
||||
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
Game #9485557849 starts.
|
||||
|
||||
#Game No : 9485557849
|
||||
***** Hand History for Game 9485557849 *****
|
||||
$0.80 USD NL Texas Hold'em - Saturday, July 31, 13:52:16 EDT 2010
|
||||
Table 20BB Min Speed #1770998 (Real Money)
|
||||
Seat 1 is the button
|
||||
Total number of players : 4/9
|
||||
Seat 3: Player1 ( $1.64 USD )
|
||||
Seat 5: Player2 ( $0.01 USD )
|
||||
Seat 9: Player3 ( $1.02 USD )
|
||||
Seat 1: Player4 ( $1.20 USD )
|
||||
Player1 posts small blind [$0.01 USD].
|
||||
Player2 posts big blind [$0.01 USD].
|
||||
** Dealing down cards **
|
||||
Dealt to Player1 [ 8h Kc ]
|
||||
Player3 folds
|
||||
Player4 calls [$0.02 USD]
|
||||
Player1 calls [$0.01 USD]
|
||||
** Dealing Flop ** [ Td, 7c, 9h ]
|
||||
Player1 checks
|
||||
Player4 checks
|
||||
** Dealing Turn ** [ 3h ]
|
||||
Player1 checks
|
||||
Player4 checks
|
||||
** Dealing River ** [ Jc ]
|
||||
Player1 bets [$0.04 USD]
|
||||
Player4 folds
|
||||
Player1 shows [ 8h, Kc ]a straight, Seven to Jack.
|
||||
Player2 doesn't show [ Ts, Jd ]two pairs, Jacks and Tens.
|
||||
Player1 wins $0.06 USD from the side pot 1 with a straight, Seven to Jack.
|
||||
Player1 wins $0.03 USD from the main pot with a straight, Seven to Jack.
|
||||
Player2 has left the table.
|
|
@ -1,63 +0,0 @@
|
|||
Game #9485557849 starts.
|
||||
|
||||
#Game No : 9485557849
|
||||
***** Hand History for Game 9485557849 *****
|
||||
$0.80 USD NL Texas Hold'em - Saturday, July 31, 13:52:16 EDT 2010
|
||||
Table 20BB Min Speed #1770998 (Real Money)
|
||||
Seat 1 is the button
|
||||
Total number of players : 4/9
|
||||
Seat 3: FErki84 ( $1.64 USD )
|
||||
Seat 5: Vandercasses ( $0.01 USD )
|
||||
Seat 9: jeremyho888 ( $1.02 USD )
|
||||
Seat 1: sergeodem ( $1.20 USD )
|
||||
FErki84 posts small blind [$0.01 USD].
|
||||
Vandercasses posts big blind [$0.01 USD].
|
||||
** Dealing down cards **
|
||||
Dealt to FErki84 [ 8h Kc ]
|
||||
jeremyho888 folds
|
||||
sergeodem calls [$0.02 USD]
|
||||
FErki84 calls [$0.01 USD]
|
||||
** Dealing Flop ** [ Td, 7c, 9h ]
|
||||
FErki84 checks
|
||||
sergeodem checks
|
||||
** Dealing Turn ** [ 3h ]
|
||||
FErki84 checks
|
||||
sergeodem checks
|
||||
** Dealing River ** [ Jc ]
|
||||
FErki84 bets [$0.04 USD]
|
||||
sergeodem folds
|
||||
FErki84 shows [ 8h, Kc ]a straight, Seven to Jack.
|
||||
Vandercasses doesn't show [ Ts, Jd ]two pairs, Jacks and Tens.
|
||||
FErki84 wins $0.06 USD from the side pot 1 with a straight, Seven to Jack.
|
||||
FErki84 wins $0.03 USD from the main pot with a straight, Seven to Jack.
|
||||
Vandercasses has left the table.
|
||||
|
||||
Game #9498788316 starts.
|
||||
|
||||
#Game No : 9498788316
|
||||
***** Hand History for Game 9498788316 *****
|
||||
$1.60 USD NL Texas Hold'em - Wednesday, August 04, 15:02:33 EDT 2010
|
||||
Table 20BB Min #1847547 (No DP) (Real Money)
|
||||
Seat 2 is the button
|
||||
Total number of players : 5/6
|
||||
Seat 5: CepguTbIu999 ( $1.60 USD )
|
||||
Seat 1: Daytona_955 ( $2.45 USD )
|
||||
Seat 4: FErki84 ( $2.18 USD )
|
||||
Seat 2: anjl2009 ( $2.80 USD )
|
||||
Seat 3: lukeman2 ( $0.01 USD )
|
||||
lukeman2 posts small blind [$0.01 USD].
|
||||
FErki84 posts big blind [$0.04 USD].
|
||||
** Dealing down cards **
|
||||
Dealt to FErki84 [ 6s 2c ]
|
||||
CepguTbIu999 folds
|
||||
Daytona_955 folds
|
||||
anjl2009 folds
|
||||
** Dealing Flop ** [ 9d, Ah, 3h ]
|
||||
** Dealing Turn ** [ Js ]
|
||||
** Dealing River ** [ Kc ]
|
||||
lukeman2 shows [ 5h, 5s ]a pair of Fives.
|
||||
FErki84 shows [ 6s, 2c ]high card Ace.
|
||||
FErki84 wins $0.03 USD from the side pot 1 with high card, Ace.
|
||||
lukeman2 wins $0.02 USD from the main pot with a pair of Fives.
|
||||
lukeman2 has left the table.
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
Game #9498788316 starts.
|
||||
|
||||
#Game No : 9498788316
|
||||
***** Hand History for Game 9498788316 *****
|
||||
$1.60 USD NL Texas Hold'em - Wednesday, August 04, 15:02:33 EDT 2010
|
||||
Table 20BB Min #1847547 (No DP) (Real Money)
|
||||
Seat 2 is the button
|
||||
Total number of players : 5/6
|
||||
Seat 5: Player1 ( $1.60 USD )
|
||||
Seat 1: Player2 ( $2.45 USD )
|
||||
Seat 4: Player3 ( $2.18 USD )
|
||||
Seat 2: Player4 ( $2.80 USD )
|
||||
Seat 3: Player5 ( $0.01 USD )
|
||||
Player5 posts small blind [$0.01 USD].
|
||||
Player3 posts big blind [$0.04 USD].
|
||||
** Dealing down cards **
|
||||
Dealt to Player3 [ 6s 2c ]
|
||||
Player1 folds
|
||||
Player2 folds
|
||||
Player4 folds
|
||||
** Dealing Flop ** [ 9d, Ah, 3h ]
|
||||
** Dealing Turn ** [ Js ]
|
||||
** Dealing River ** [ Kc ]
|
||||
Player5 shows [ 5h, 5s ]a pair of Fives.
|
||||
Player3 shows [ 6s, 2c ]high card Ace.
|
||||
Player3 wins $0.03 USD from the side pot 1 with high card, Ace.
|
||||
Player5 wins $0.02 USD from the main pot with a pair of Fives.
|
||||
Player5 has left the table.
|
Loading…
Reference in New Issue
Block a user