git19 (REIMPORT needed) - updated everything to use new action counting method -> it half works, but fails to store (or print) a substantial proportion of the action_nos
removed bunch of commented prints from fpdb_parse
This commit is contained in:
parent
bf691fe9e7
commit
0e84dceb1f
|
@ -9,14 +9,14 @@ add instructions how to reimport
|
||||||
split python requirements, get deep links for windows DL for everything
|
split python requirements, get deep links for windows DL for everything
|
||||||
GUI license info
|
GUI license info
|
||||||
|
|
||||||
change action_no to be total for this street rather than just for one player. change .expected.txt files accordingly.
|
calculate 3B/4B percentage
|
||||||
calculate 3B/4B percentage (depends on above, currently its useless)
|
add fpdb version string into db to detect outdated db format and importer bugs
|
||||||
update regression testing to take into account everything new
|
update regression testing to take into account everything new, make sure it passes all tests
|
||||||
add fpdb version string into db to detect outdated db format.
|
|
||||||
|
|
||||||
before beta
|
before beta
|
||||||
===========
|
===========
|
||||||
optionally show single postflop agg/fold rate
|
optionally show single postflop agg/fold rate
|
||||||
|
change definition of bet to exclude bring in?
|
||||||
auto-import
|
auto-import
|
||||||
implement error file in importer
|
implement error file in importer
|
||||||
change to use different colours according to classification.
|
change to use different colours according to classification.
|
||||||
|
@ -30,7 +30,7 @@ fix load profile
|
||||||
HUD
|
HUD
|
||||||
config wizard
|
config wizard
|
||||||
file permission script, use games group
|
file permission script, use games group
|
||||||
change stud street storage from 3-7 to 0-4 throughout
|
change stud street storage from 3-7 to 0-4 throughout (possibly best way is to just shrink the holding array in fpdb_simple.createArrays
|
||||||
make bulk importer display a grand total in the GUI
|
make bulk importer display a grand total in the GUI
|
||||||
change save_to_db into one method and probably move into parse_logic
|
change save_to_db into one method and probably move into parse_logic
|
||||||
Any comment or print with "todo" in it in the sourcecode except what is marked todo in the menu
|
Any comment or print with "todo" in it in the sourcecode except what is marked todo in the menu
|
||||||
|
@ -47,6 +47,7 @@ verify at least 2 or 3 sng hands
|
||||||
|
|
||||||
no rush but before 1.0RC
|
no rush but before 1.0RC
|
||||||
========================
|
========================
|
||||||
|
In many places there are unnecessary database accesses or it regenerates information it already had before or just generally does things in obscenely inefficient ways. It's great to have a total of 3 CPUs with a combined 5.6GHz working for you isn't it... ;) In any case, these should be optimised to leave more power for other things, such as dropping to lower power states
|
||||||
move version into seperate file
|
move version into seperate file
|
||||||
make option to use "traditional" labels, e.g. WtSD instead of SD/F
|
make option to use "traditional" labels, e.g. WtSD instead of SD/F
|
||||||
HTMLify docs and validate them
|
HTMLify docs and validate them
|
||||||
|
|
|
@ -840,131 +840,61 @@ far less relevant.</P>
|
||||||
</TABLE>
|
</TABLE>
|
||||||
<P></P>
|
<P></P>
|
||||||
<P><B>Table hands_actions</B></P>
|
<P><B>Table hands_actions</B></P>
|
||||||
<p>Did
|
<p>Did separate this into an extra table because it makes SELECTing across different streets so much easier. Also the space saving will be very large.</P>
|
||||||
separate this into an extra table because it makes SELECTing across
|
|
||||||
different streets so much easier. Also the space saving will be very
|
|
||||||
large.</P>
|
|
||||||
<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0>
|
<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0>
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD><P>Field Name</P></TD>
|
<TD><P>Field Name</P></TD>
|
||||||
<TD>
|
<TD><P>Type</P></TD>
|
||||||
<P>Type</P>
|
<TD><P>Comment</P></TD>
|
||||||
</TD>
|
|
||||||
<TD>
|
|
||||||
<P>Comment</P>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
</TR>
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD>
|
<TD><P>id</P></TD>
|
||||||
<P>id</P>
|
<TD><P>bigint</P></TD>
|
||||||
</TD>
|
<TD><P><BR></P></TD>
|
||||||
<TD>
|
|
||||||
<P>bigint</P>
|
|
||||||
</TD>
|
|
||||||
<TD>
|
|
||||||
<P><BR>
|
|
||||||
</P>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
</TR>
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD>
|
<TD><P>hand_player_id</P></TD>
|
||||||
<P>hand_player_id</P>
|
<TD><P>bigint</P></TD>
|
||||||
</TD>
|
<TD><P>references hands_players.id</P></TD>
|
||||||
<TD>
|
|
||||||
<P>bigint</P>
|
|
||||||
</TD>
|
|
||||||
<TD>
|
|
||||||
<P>references
|
|
||||||
hands_players.id</P>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
</TR>
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD>
|
<TD><P>street</P></TD>
|
||||||
<P>street</P>
|
<TD><P>smallint</P></TD>
|
||||||
</TD>
|
<TD><p>street number, 0-3 (preflop, flop, turn, river) for holdem/omaha or 0-4 for razz/stud</P><P>-1 for seen showdown</P></TD>
|
||||||
<TD>
|
|
||||||
<P>smallint</P>
|
|
||||||
</TD>
|
|
||||||
<TD>
|
|
||||||
<p>street
|
|
||||||
number, 0-3 (preflop, flop, turn, river) for holdem/omaha or 0-4
|
|
||||||
for razz/stud</P>
|
|
||||||
<P>-1 for seen showdown</P>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
</TR>
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD>
|
<TD><P>action_no</P></TD>
|
||||||
<P>action_no</P>
|
<TD><P>smallint</P></TD>
|
||||||
</TD>
|
<TD><P>action number, this is counted from zero for each street but across all players (e.g. in a heads up where the SB calls and the BB raises and the SB calls again would have numbers 0 and 1 for blinds, 2 and 4 for call and 3 for bet)<br>
|
||||||
<TD>
|
Note that the blinds are counted as an action, so if the SB stays in the hand it'll always be action #0</P></TD>
|
||||||
<P>smallint</P>
|
|
||||||
</TD>
|
|
||||||
<TD>
|
|
||||||
<P>action number, 1-4</P>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
</TR>
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD>
|
<TD><P>action</P></TD>
|
||||||
<P>action</P>
|
<TD><P>char(5)</P></TD>
|
||||||
</TD>
|
<TD><P>Bet stands for bring in, complete, bet, double bet, raise and double raise, since they all - technically - do the same thing. Unbet is used for when an uncalled bet is returned.</P>
|
||||||
<TD>
|
<P>Other valid values: blind call check fold</P></TD>
|
||||||
<P>char(5)</P>
|
|
||||||
</TD>
|
|
||||||
<TD>
|
|
||||||
<p>bet
|
|
||||||
stands for bring in, complete, bet, double bet, raise and double
|
|
||||||
raise, since they all - technically - do the same thing. unbet is
|
|
||||||
used for when an uncalled bet is returned.</P>
|
|
||||||
<P>Other valid values: blind
|
|
||||||
call check fold</P>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
</TR>
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD>
|
<TD><P>amount</P></TD>
|
||||||
<P>amount</P>
|
<TD><P>int</P></TD>
|
||||||
</TD>
|
<TD><P>amount put into the middle for this action</P></TD>
|
||||||
<TD>
|
|
||||||
<P>int</P>
|
|
||||||
</TD>
|
|
||||||
<TD>
|
|
||||||
<P>amount put into the middle
|
|
||||||
for this action</P>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
</TR>
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD>
|
<TD><P>comment</P></TD>
|
||||||
<P>comment</P>
|
<TD><P>text</P></TD>
|
||||||
</TD>
|
<TD><P><BR></P></TD>
|
||||||
<TD>
|
|
||||||
<P>text</P>
|
|
||||||
</TD>
|
|
||||||
<TD>
|
|
||||||
<P><BR>
|
|
||||||
</P>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
</TR>
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD>
|
<TD><P>comment_ts</P></TD>
|
||||||
<P>comment_ts</P>
|
<TD><P>datetime (in UTC)</P></TD>
|
||||||
</TD>
|
<TD><P><BR></P></TD>
|
||||||
<TD>
|
|
||||||
<P>datetime (in UTC)</P>
|
|
||||||
</TD>
|
|
||||||
<TD>
|
|
||||||
<P><BR>
|
|
||||||
</P>
|
|
||||||
</TD>
|
|
||||||
</TR>
|
</TR>
|
||||||
</TABLE>
|
</TABLE>
|
||||||
<p><BR>
|
<p><BR></P>
|
||||||
</P>
|
|
||||||
<p><B>Tournament Tables</B></P>
|
<p><B>Tournament Tables</B></P>
|
||||||
<p><BR></P>
|
<p><BR></P>
|
||||||
<p><B>Table tourneys</B></P>
|
<p><B>Table tourneys</B></P>
|
||||||
<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0>
|
<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<TR VALIGN=TOP>
|
<TR VALIGN=TOP>
|
||||||
<TD>
|
<TD>
|
||||||
<P>Field name</P>
|
<P>Field name</P>
|
||||||
|
|
|
@ -18,4 +18,5 @@
|
||||||
rm regression-test/*.found.txt
|
rm regression-test/*.found.txt
|
||||||
rm regression-test/*.pyc
|
rm regression-test/*.pyc
|
||||||
rm pyfpdb/*.pyc
|
rm pyfpdb/*.pyc
|
||||||
|
|
||||||
git-add--interactive
|
git-add--interactive
|
||||||
|
|
|
@ -343,7 +343,7 @@ blabla""")
|
||||||
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||||
self.window.connect("delete_event", self.delete_event)
|
self.window.connect("delete_event", self.delete_event)
|
||||||
self.window.connect("destroy", self.destroy)
|
self.window.connect("destroy", self.destroy)
|
||||||
self.window.set_title("Free Poker DB - version: pre-alpha, git18")
|
self.window.set_title("Free Poker DB - version: pre-alpha, git19")
|
||||||
self.window.set_border_width(1)
|
self.window.set_border_width(1)
|
||||||
self.window.set_size_request(950,400)
|
self.window.set_size_request(950,400)
|
||||||
self.window.set_resizable(True)
|
self.window.set_resizable(True)
|
||||||
|
|
|
@ -28,7 +28,7 @@ def mainParser(db, cursor, site, category, hand):
|
||||||
lineStreets=[] #char, valid values: (predeal, preflop, flop, turn, river)
|
lineStreets=[] #char, valid values: (predeal, preflop, flop, turn, river)
|
||||||
|
|
||||||
cardValues, cardSuits, boardValues, boardSuits=[],[],[],[]
|
cardValues, cardSuits, boardValues, boardSuits=[],[],[],[]
|
||||||
antes, actionTypes, actionAmounts, seatLines, winnings, rakes=[],[],[],[],[],[]
|
antes, actionTypes, actionAmounts, actionNos, seatLines, winnings, rakes=[], [],[],[],[],[],[]
|
||||||
|
|
||||||
#part 1: read hand no and check for duplicate
|
#part 1: read hand no and check for duplicate
|
||||||
siteHandNo=fpdb_simple.parseSiteHandNo(hand[0])
|
siteHandNo=fpdb_simple.parseSiteHandNo(hand[0])
|
||||||
|
@ -42,49 +42,36 @@ def mainParser(db, cursor, site, category, hand):
|
||||||
raise fpdb_simple.FpdbError("tourneys are only supported on PS right now")
|
raise fpdb_simple.FpdbError("tourneys are only supported on PS right now")
|
||||||
siteTourneyNo=fpdb_simple.parseTourneyNo(hand[0])
|
siteTourneyNo=fpdb_simple.parseTourneyNo(hand[0])
|
||||||
buyin=fpdb_simple.parseBuyin(hand[0])
|
buyin=fpdb_simple.parseBuyin(hand[0])
|
||||||
#print "Buyin:", buyin
|
|
||||||
fee=fpdb_simple.parseFee(hand[0])
|
fee=fpdb_simple.parseFee(hand[0])
|
||||||
#print "Fee:", fee
|
|
||||||
entries=-1 #todo: parse this
|
entries=-1 #todo: parse this
|
||||||
prizepool=-1 #todo: parse this
|
prizepool=-1 #todo: parse this
|
||||||
tourneyStartTime=handStartTime #todo: read tourney start time
|
tourneyStartTime=handStartTime #todo: read tourney start time
|
||||||
#print "gametypeID:",gametypeID
|
|
||||||
fpdb_simple.isAlreadyInDB(cursor, gametypeID, siteHandNo)
|
fpdb_simple.isAlreadyInDB(cursor, gametypeID, siteHandNo)
|
||||||
|
|
||||||
#part 2: classify lines by type (e.g. cards, action, win, sectionchange) and street
|
#part 2: classify lines by type (e.g. cards, action, win, sectionchange) and street
|
||||||
fpdb_simple.classifyLines(hand, category, lineTypes, lineStreets)
|
fpdb_simple.classifyLines(hand, category, lineTypes, lineStreets)
|
||||||
#for i in range (len(hand)):
|
|
||||||
# print "i:",i,"lineTypes[i]:",lineTypes[i],"hand[i]:",hand[i]
|
|
||||||
|
|
||||||
#part 3: read basic player info
|
#part 3: read basic player info
|
||||||
#3a read player names, startcashes
|
#3a read player names, startcashes
|
||||||
for i in range (len(hand)): #todo: use maxseats+1 here.
|
for i in range (len(hand)): #todo: use maxseats+1 here.
|
||||||
if (lineTypes[i]=="name"):
|
if (lineTypes[i]=="name"):
|
||||||
seatLines.append(hand[i])
|
seatLines.append(hand[i])
|
||||||
#print "seatLines:",seatLines
|
|
||||||
#print "hand:",hand
|
|
||||||
names=fpdb_simple.parseNames(seatLines)
|
names=fpdb_simple.parseNames(seatLines)
|
||||||
#print "names:",names
|
|
||||||
playerIDs = fpdb_simple.recognisePlayerIDs(cursor, names, siteID)
|
playerIDs = fpdb_simple.recognisePlayerIDs(cursor, names, siteID)
|
||||||
startCashes=fpdb_simple.parseCashes(seatLines, site)
|
startCashes=fpdb_simple.parseCashes(seatLines, site)
|
||||||
|
|
||||||
fpdb_simple.createArrays(category, len(names), cardValues, cardSuits, antes, winnings, rakes, actionTypes, actionAmounts)
|
fpdb_simple.createArrays(category, len(names), cardValues, cardSuits, antes, winnings, rakes, actionTypes, actionAmounts, actionNos)
|
||||||
|
|
||||||
#3b remove people who sitout before cards are dealt (e.g. sitout instead of paying blinds)
|
#3b read positions
|
||||||
#PS doesnt have a nameline for sitouts so for PS this can be skipped. havent tried FTP yet
|
|
||||||
|
|
||||||
#3c read positions
|
|
||||||
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
||||||
positions = fpdb_simple.parsePositions (hand, names)
|
positions = fpdb_simple.parsePositions (hand, names)
|
||||||
|
|
||||||
#part 4: take appropriate action for each line based on linetype
|
#part 4: take appropriate action for each line based on linetype
|
||||||
for i in range(len(hand)):
|
for i in range(len(hand)):
|
||||||
if (lineTypes[i]=="cards"):
|
if (lineTypes[i]=="cards"):
|
||||||
#print "hand[i]:",hand[i]
|
|
||||||
fpdb_simple.parseCardLine (site, category, lineStreets[i], hand[i], names, cardValues, cardSuits, boardValues, boardSuits)
|
fpdb_simple.parseCardLine (site, category, lineStreets[i], hand[i], names, cardValues, cardSuits, boardValues, boardSuits)
|
||||||
#print "cardValues:",cardValues
|
|
||||||
elif (lineTypes[i]=="action"):
|
elif (lineTypes[i]=="action"):
|
||||||
fpdb_simple.parseActionLine (hand[i], lineStreets[i], names, actionTypes, actionAmounts, site)
|
fpdb_simple.parseActionLine (site, hand[i], lineStreets[i], names, actionTypes, actionAmounts, actionNos)
|
||||||
elif (lineTypes[i]=="win"):
|
elif (lineTypes[i]=="win"):
|
||||||
fpdb_simple.parseWinLine (hand[i], site, names, winnings, isTourney)
|
fpdb_simple.parseWinLine (hand[i], site, names, winnings, isTourney)
|
||||||
elif (lineTypes[i]=="rake"):
|
elif (lineTypes[i]=="rake"):
|
||||||
|
@ -99,7 +86,6 @@ def mainParser(db, cursor, site, category, hand):
|
||||||
fpdb_simple.parseAnteLine(hand[i], site, names, antes)
|
fpdb_simple.parseAnteLine(hand[i], site, names, antes)
|
||||||
else:
|
else:
|
||||||
raise fpdb_simple.FpdbError("unrecognised lineType:"+lineTypes[i])
|
raise fpdb_simple.FpdbError("unrecognised lineType:"+lineTypes[i])
|
||||||
#print "end of part4 cardValues:",cardValues,"cardSuits:",cardSuits
|
|
||||||
|
|
||||||
#part 5: final preparations, then call fpdb_save_to_db.saveHoldem with
|
#part 5: final preparations, then call fpdb_save_to_db.saveHoldem with
|
||||||
# the arrays as they are - that file will fill them.
|
# the arrays as they are - that file will fill them.
|
||||||
|
@ -110,7 +96,7 @@ def mainParser(db, cursor, site, category, hand):
|
||||||
fpdb_simple.checkPositions(positions)
|
fpdb_simple.checkPositions(positions)
|
||||||
|
|
||||||
cursor.execute("SELECT limit_type FROM gametypes WHERE id=%s",(gametypeID, ))
|
cursor.execute("SELECT limit_type FROM gametypes WHERE id=%s",(gametypeID, ))
|
||||||
limit_type=cursor.fetchone()[0] #todo: remove this unnecessary database access
|
limit_type=cursor.fetchone()[0]
|
||||||
fpdb_simple.convert3B4B(site, category, limit_type, actionTypes, actionAmounts)
|
fpdb_simple.convert3B4B(site, category, limit_type, actionTypes, actionAmounts)
|
||||||
|
|
||||||
totalWinnings=0
|
totalWinnings=0
|
||||||
|
@ -119,6 +105,7 @@ def mainParser(db, cursor, site, category, hand):
|
||||||
hudImportData=fpdb_simple.calculateHudImport(playerIDs, category, actionTypes, winnings, totalWinnings)
|
hudImportData=fpdb_simple.calculateHudImport(playerIDs, category, actionTypes, winnings, totalWinnings)
|
||||||
|
|
||||||
if isTourney:
|
if isTourney:
|
||||||
|
raise fpdb_simple.FpdbError ("tourneys are currently broken")
|
||||||
payin_amounts=fpdb_simple.calcPayin(len(names), buyin, fee)
|
payin_amounts=fpdb_simple.calcPayin(len(names), buyin, fee)
|
||||||
ranks=[]
|
ranks=[]
|
||||||
for i in range (len(names)):
|
for i in range (len(names)):
|
||||||
|
@ -142,8 +129,9 @@ def mainParser(db, cursor, site, category, hand):
|
||||||
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
||||||
result = fpdb_save_to_db.ring_holdem_omaha(cursor, category, siteHandNo, gametypeID,
|
result = fpdb_save_to_db.ring_holdem_omaha(cursor, category, siteHandNo, gametypeID,
|
||||||
handStartTime, names, playerIDs, startCashes, positions, cardValues,
|
handStartTime, names, playerIDs, startCashes, positions, cardValues,
|
||||||
cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, hudImportData)
|
cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, actionNos, hudImportData)
|
||||||
elif (category=="razz" or category=="studhi" or category=="studhilo"):
|
elif (category=="razz" or category=="studhi" or category=="studhilo"):
|
||||||
|
raise fpdb_simple.FpdbError ("stud/razz are currently broken")
|
||||||
result = fpdb_save_to_db.ring_stud(cursor, category, siteHandNo, gametypeID,
|
result = fpdb_save_to_db.ring_stud(cursor, category, siteHandNo, gametypeID,
|
||||||
handStartTime, names, playerIDs, startCashes, antes, cardValues,
|
handStartTime, names, playerIDs, startCashes, antes, cardValues,
|
||||||
cardSuits, winnings, rakes, actionTypes, actionAmounts, hudImportData)
|
cardSuits, winnings, rakes, actionTypes, actionAmounts, hudImportData)
|
||||||
|
|
|
@ -40,7 +40,7 @@ def ring_stud(cursor, category, site_hand_no, gametype_id, hand_start_time,
|
||||||
#stores a holdem/omaha hand into the database
|
#stores a holdem/omaha hand into the database
|
||||||
def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_time,
|
def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_time,
|
||||||
names, player_ids, start_cashes, positions, card_values, card_suits,
|
names, player_ids, start_cashes, positions, card_values, card_suits,
|
||||||
board_values, board_suits, winnings, rakes, action_types, action_amounts, hudImportData):
|
board_values, board_suits, winnings, rakes, action_types, action_amounts, actionNos, hudImportData):
|
||||||
#fill up the two player card arrays
|
#fill up the two player card arrays
|
||||||
if (category=="holdem"):
|
if (category=="holdem"):
|
||||||
fpdb_simple.fillCardArrays(len(names), 2, card_values, card_suits)
|
fpdb_simple.fillCardArrays(len(names), 2, card_values, card_suits)
|
||||||
|
@ -60,7 +60,7 @@ def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_ti
|
||||||
|
|
||||||
fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits)
|
fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits)
|
||||||
|
|
||||||
fpdb_simple.storeActions(cursor, hands_players_ids, action_types, action_amounts)
|
fpdb_simple.storeActions(cursor, hands_players_ids, action_types, action_amounts, actionNos)
|
||||||
return site_hand_no
|
return site_hand_no
|
||||||
#end def ring_holdem_omaha
|
#end def ring_holdem_omaha
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@ def convertCardValuesBoard(arr):
|
||||||
#end def convertCardValuesBoard
|
#end def convertCardValuesBoard
|
||||||
|
|
||||||
#this creates the 2D/3D arrays. manipulates the passed arrays instead of returning.
|
#this creates the 2D/3D arrays. manipulates the passed arrays instead of returning.
|
||||||
def createArrays(category, seats, card_values, card_suits, antes, winnings, rakes, action_types, action_amounts):
|
def createArrays(category, seats, card_values, card_suits, antes, winnings, rakes, action_types, action_amounts, actionNos):
|
||||||
for i in range(seats):#create second dimension arrays
|
for i in range(seats):#create second dimension arrays
|
||||||
tmp=[]
|
tmp=[]
|
||||||
card_values.append(tmp)
|
card_values.append(tmp)
|
||||||
|
@ -209,18 +209,25 @@ def createArrays(category, seats, card_values, card_suits, antes, winnings, rake
|
||||||
winnings.append(0)
|
winnings.append(0)
|
||||||
rakes.append(0)
|
rakes.append(0)
|
||||||
|
|
||||||
for i in range (8):
|
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
||||||
#build the first dimension array, for streets
|
streetCount=4
|
||||||
#todo: 0-2 will of course be left empty, get rid of this nicely using consts
|
else:
|
||||||
|
streetCount=8
|
||||||
|
|
||||||
|
for i in range(streetCount): #build the first dimension array, for streets
|
||||||
tmp=[]
|
tmp=[]
|
||||||
action_types.append(tmp)
|
action_types.append(tmp)
|
||||||
tmp=[]
|
tmp=[]
|
||||||
action_amounts.append(tmp)
|
action_amounts.append(tmp)
|
||||||
|
tmp=[]
|
||||||
|
actionNos.append(tmp)
|
||||||
for j in range (seats): #second dimension arrays: players
|
for j in range (seats): #second dimension arrays: players
|
||||||
tmp=[]
|
tmp=[]
|
||||||
action_types[i].append(tmp)
|
action_types[i].append(tmp)
|
||||||
tmp=[]
|
tmp=[]
|
||||||
action_amounts[i].append(tmp)
|
action_amounts[i].append(tmp)
|
||||||
|
tmp=[]
|
||||||
|
actionNos[i].append(tmp)
|
||||||
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
||||||
pass
|
pass
|
||||||
elif (category=="razz" or category=="studhi" or category=="studhilo"):#need to fill card arrays.
|
elif (category=="razz" or category=="studhi" or category=="studhilo"):#need to fill card arrays.
|
||||||
|
@ -555,8 +562,7 @@ def parseActionAmount(line, atype, site):
|
||||||
#doesnt return anything, simply changes the passed arrays action_types and
|
#doesnt return anything, simply changes the passed arrays action_types and
|
||||||
# action_amounts. For stud this expects numeric streets (3-7), for
|
# action_amounts. For stud this expects numeric streets (3-7), for
|
||||||
# holdem/omaha it expects predeal, preflop, flop, turn or river
|
# holdem/omaha it expects predeal, preflop, flop, turn or river
|
||||||
def parseActionLine(line, street, names, action_types, action_amounts, site):
|
def parseActionLine(site, line, street, names, action_types, action_amounts, actionNos):
|
||||||
#print "parseActionLine, line:",line
|
|
||||||
#this only applies to stud
|
#this only applies to stud
|
||||||
if (street<3):
|
if (street<3):
|
||||||
text="invalid street ("+str(street)+") for line: "+line
|
text="invalid street ("+str(street)+") for line: "+line
|
||||||
|
@ -571,12 +577,19 @@ def parseActionLine(line, street, names, action_types, action_amounts, site):
|
||||||
elif (street=="river"):
|
elif (street=="river"):
|
||||||
street=3
|
street=3
|
||||||
|
|
||||||
|
nextActionNo=0
|
||||||
|
for player in range(len(actionNos[street])):
|
||||||
|
for count in range(len(actionNos[street][player])):
|
||||||
|
if actionNos[street][player][count]>=nextActionNo:
|
||||||
|
nextActionNo=actionNos[street][player][count]+1
|
||||||
|
|
||||||
atype=parseActionType(line)
|
atype=parseActionType(line)
|
||||||
playerno=recognisePlayerNo(line, names, atype)
|
playerno=recognisePlayerNo(line, names, atype)
|
||||||
amount=parseActionAmount(line, atype, site)
|
amount=parseActionAmount(line, atype, site)
|
||||||
|
|
||||||
action_types[street][playerno].append(atype)
|
action_types[street][playerno].append(atype)
|
||||||
action_amounts[street][playerno].append(amount)
|
action_amounts[street][playerno].append(amount)
|
||||||
|
actionNos[street][playerno].append(nextActionNo)
|
||||||
#end def parseActionLine
|
#end def parseActionLine
|
||||||
|
|
||||||
#returns the action type code (see table design) of the given action line
|
#returns the action type code (see table design) of the given action line
|
||||||
|
@ -1066,12 +1079,14 @@ def splitRake(winnings, rakes, totalRake):
|
||||||
rakes[i]=totalRake*winPortion
|
rakes[i]=totalRake*winPortion
|
||||||
#end def splitRake
|
#end def splitRake
|
||||||
|
|
||||||
def storeActions(cursor, hands_players_ids, action_types, action_amounts):
|
def storeActions(cursor, hands_players_ids, action_types, action_amounts, actionNos):
|
||||||
#stores into table hands_actions
|
#stores into table hands_actions
|
||||||
|
#print "start of storeActions, actionNos:",actionNos
|
||||||
|
#print " action_amounts:",action_amounts
|
||||||
for i in range (len(action_types)): #iterate through streets
|
for i in range (len(action_types)): #iterate through streets
|
||||||
for j in range (len(action_types[i])): #iterate through names
|
for j in range (len(action_types[i])): #iterate through names
|
||||||
for k in range (len(action_types[i][j])): #iterate through individual actions of that player on that street
|
for k in range (len(action_types[i][j])): #iterate through individual actions of that player on that street
|
||||||
cursor.execute ("INSERT INTO hands_actions (hand_player_id, street, action_no, action, amount) VALUES (%s, %s, %s, %s, %s)", (hands_players_ids[j], i, k, action_types[i][j][k], action_amounts[i][j][k]))
|
cursor.execute ("INSERT INTO hands_actions (hand_player_id, street, action_no, action, amount) VALUES (%s, %s, %s, %s, %s)", (hands_players_ids[j], i, actionNos[i][j][k], action_types[i][j][k], action_amounts[i][j][k]))
|
||||||
#end def storeActions
|
#end def storeActions
|
||||||
|
|
||||||
def store_board_cards(cursor, hands_id, board_values, board_suits):
|
def store_board_cards(cursor, hands_id, board_values, board_suits):
|
||||||
|
|
|
@ -23,24 +23,24 @@ player_name:Player_7 player_startcash:139 position:1 off Btn cards:Ts Jh winning
|
||||||
|
|
||||||
From Table hands_actions
|
From Table hands_actions
|
||||||
========================
|
========================
|
||||||
player_name:Player_1 actionCount:0 street:Preflop streetActionNo:0 action:call amount:4
|
player_name:Player_1 street:Preflop streetActionNo:6 action:call amount:4
|
||||||
player_name:Player_1 actionCount:1 street:Flop streetActionNo:0 action:call amount:2
|
player_name:Player_1 street:Flop streetActionNo:2 action:call amount:2
|
||||||
player_name:Player_1 actionCount:2 street:Turn streetActionNo:0 action:call amount:4
|
player_name:Player_1 street:Turn streetActionNo:2 action:call amount:4
|
||||||
player_name:Player_1 actionCount:3 street:River streetActionNo:0 action:fold amount:0
|
player_name:Player_1 street:River streetActionNo:2 action:fold amount:0
|
||||||
player_name:Player_2 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:1
|
player_name:Player_2 street:Preflop streetActionNo:0 action:blind amount:1
|
||||||
player_name:Player_2 actionCount:1 street:Preflop streetActionNo:1 action:call amount:3
|
player_name:Player_2 street:Preflop streetActionNo:7 action:call amount:3
|
||||||
player_name:Player_2 actionCount:2 street:Flop streetActionNo:0 action:check amount:0
|
player_name:Player_2 street:Flop streetActionNo:0 action:check amount:0
|
||||||
player_name:Player_2 actionCount:3 street:Flop streetActionNo:1 action:call amount:2
|
player_name:Player_2 street:Flop streetActionNo:3 action:call amount:2
|
||||||
player_name:Player_2 actionCount:4 street:Turn streetActionNo:0 action:check amount:0
|
player_name:Player_2 street:Turn streetActionNo:0 action:check amount:0
|
||||||
player_name:Player_2 actionCount:5 street:Turn streetActionNo:1 action:call amount:4
|
player_name:Player_2 street:Turn streetActionNo:3 action:call amount:4
|
||||||
player_name:Player_2 actionCount:6 street:River streetActionNo:0 action:check amount:0
|
player_name:Player_2 street:River streetActionNo:0 action:check amount:0
|
||||||
player_name:Player_2 actionCount:7 street:River streetActionNo:1 action:fold amount:0
|
player_name:Player_2 street:River streetActionNo:3 action:fold amount:0
|
||||||
player_name:Player_3 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:2
|
player_name:Player_3 street:Preflop streetActionNo:1 action:blind amount:2
|
||||||
player_name:Player_3 actionCount:1 street:Preflop streetActionNo:1 action:fold amount:0
|
player_name:Player_3 street:Preflop streetActionNo:8 action:fold amount:0
|
||||||
player_name:Player_4 actionCount:0 street:Preflop streetActionNo:0 action:bet amount:4
|
player_name:Player_4 street:Preflop streetActionNo:2 action:bet amount:4
|
||||||
player_name:Player_4 actionCount:1 street:Flop streetActionNo:0 action:bet amount:2
|
player_name:Player_4 street:Flop streetActionNo:1 action:bet amount:2
|
||||||
player_name:Player_4 actionCount:2 street:Turn streetActionNo:0 action:bet amount:4
|
player_name:Player_4 street:Turn streetActionNo:1 action:bet amount:4
|
||||||
player_name:Player_4 actionCount:3 street:River streetActionNo:0 action:bet amount:4
|
player_name:Player_4 street:River streetActionNo:1 action:bet amount:4
|
||||||
player_name:Player_5 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_5 street:Preflop streetActionNo:3 action:fold amount:0
|
||||||
player_name:Player_6 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_6 street:Preflop streetActionNo:4 action:fold amount:0
|
||||||
player_name:Player_7 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_7 street:Preflop streetActionNo:5 action:fold amount:0
|
||||||
|
|
|
@ -23,24 +23,24 @@ player_name:Player_7 player_startcash:135 position:3 off Btn cards:8d 5d winning
|
||||||
|
|
||||||
From Table hands_actions
|
From Table hands_actions
|
||||||
========================
|
========================
|
||||||
player_name:Player_1 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_1 street:Preflop streetActionNo:4 action:fold amount:0
|
||||||
player_name:Player_2 actionCount:0 street:Preflop streetActionNo:0 action:call amount:2
|
player_name:Player_2 street:Preflop streetActionNo:5 action:call amount:2
|
||||||
player_name:Player_2 actionCount:1 street:Flop streetActionNo:0 action:call amount:2
|
player_name:Player_2 street:Flop streetActionNo:2 action:call amount:2
|
||||||
player_name:Player_2 actionCount:2 street:Turn streetActionNo:0 action:bet amount:8
|
player_name:Player_2 street:Turn streetActionNo:2 action:bet amount:8
|
||||||
player_name:Player_2 actionCount:3 street:River streetActionNo:0 action:bet amount:4
|
player_name:Player_2 street:River streetActionNo:1 action:bet amount:4
|
||||||
player_name:Player_3 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_3 street:Preflop streetActionNo:6 action:fold amount:0
|
||||||
player_name:Player_4 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:1
|
player_name:Player_4 street:Preflop streetActionNo:0 action:blind amount:1
|
||||||
player_name:Player_4 actionCount:1 street:Preflop streetActionNo:1 action:call amount:1
|
player_name:Player_4 street:Preflop streetActionNo:7 action:call amount:1
|
||||||
player_name:Player_4 actionCount:2 street:Flop streetActionNo:0 action:check amount:0
|
player_name:Player_4 street:Flop streetActionNo:0 action:check amount:0
|
||||||
player_name:Player_4 actionCount:3 street:Flop streetActionNo:1 action:call amount:2
|
player_name:Player_4 street:Flop streetActionNo:3 action:call amount:2
|
||||||
player_name:Player_4 actionCount:4 street:Turn streetActionNo:0 action:check amount:0
|
player_name:Player_4 street:Turn streetActionNo:0 action:check amount:0
|
||||||
player_name:Player_4 actionCount:5 street:Turn streetActionNo:1 action:fold amount:0
|
player_name:Player_4 street:Turn streetActionNo:3 action:fold amount:0
|
||||||
player_name:Player_5 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:2
|
player_name:Player_5 street:Preflop streetActionNo:1 action:blind amount:2
|
||||||
player_name:Player_5 actionCount:1 street:Preflop streetActionNo:1 action:check amount:0
|
player_name:Player_5 street:Preflop streetActionNo:8 action:check amount:0
|
||||||
player_name:Player_5 actionCount:2 street:Flop streetActionNo:0 action:bet amount:2
|
player_name:Player_5 street:Flop streetActionNo:1 action:bet amount:2
|
||||||
player_name:Player_5 actionCount:3 street:Turn streetActionNo:0 action:bet amount:4
|
player_name:Player_5 street:Turn streetActionNo:1 action:bet amount:4
|
||||||
player_name:Player_5 actionCount:4 street:Turn streetActionNo:1 action:call amount:4
|
player_name:Player_5 street:Turn streetActionNo:4 action:call amount:4
|
||||||
player_name:Player_5 actionCount:5 street:River streetActionNo:0 action:check amount:0
|
player_name:Player_5 street:River streetActionNo:0 action:check amount:0
|
||||||
player_name:Player_5 actionCount:6 street:River streetActionNo:1 action:call amount:4
|
player_name:Player_5 street:River streetActionNo:2 action:call amount:4
|
||||||
player_name:Player_6 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_6 street:Preflop streetActionNo:2 action:fold amount:0
|
||||||
player_name:Player_7 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_7 street:Preflop streetActionNo:3 action:fold amount:0
|
||||||
|
|
|
@ -23,33 +23,33 @@ player_name:Player_7 player_startcash:135 position:4 off Btn cards:7c Jh winning
|
||||||
|
|
||||||
From Table hands_actions
|
From Table hands_actions
|
||||||
========================
|
========================
|
||||||
player_name:Player_1 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_1 street:Preflop streetActionNo:3 action:fold amount:0
|
||||||
player_name:Player_2 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_2 street:Preflop streetActionNo:4 action:fold amount:0
|
||||||
player_name:Player_3 actionCount:0 street:Preflop streetActionNo:0 action:call amount:2
|
player_name:Player_3 street:Preflop streetActionNo:5 action:call amount:2
|
||||||
player_name:Player_3 actionCount:1 street:Preflop streetActionNo:1 action:call amount:2
|
player_name:Player_3 street:Preflop streetActionNo:9 action:call amount:2
|
||||||
player_name:Player_3 actionCount:2 street:Flop streetActionNo:0 action:bet amount:2
|
player_name:Player_3 street:Flop streetActionNo:2 action:bet amount:2
|
||||||
player_name:Player_3 actionCount:3 street:Flop streetActionNo:1 action:bet amount:4
|
player_name:Player_3 street:Flop streetActionNo:6 action:bet amount:4
|
||||||
player_name:Player_3 actionCount:4 street:Flop streetActionNo:2 action:call amount:2
|
player_name:Player_3 street:Flop streetActionNo:8 action:call amount:2
|
||||||
player_name:Player_3 actionCount:5 street:Turn streetActionNo:0 action:bet amount:4
|
player_name:Player_3 street:Turn streetActionNo:0 action:bet amount:4
|
||||||
player_name:Player_3 actionCount:6 street:Turn streetActionNo:1 action:bet amount:8
|
player_name:Player_3 street:Turn streetActionNo:2 action:bet amount:8
|
||||||
player_name:Player_3 actionCount:7 street:Turn streetActionNo:2 action:call amount:4
|
player_name:Player_3 street:Turn streetActionNo:4 action:call amount:4
|
||||||
player_name:Player_3 actionCount:8 street:River streetActionNo:0 action:bet amount:4
|
player_name:Player_3 street:River streetActionNo:0 action:bet amount:4
|
||||||
player_name:Player_3 actionCount:9 street:River streetActionNo:1 action:bet amount:8
|
player_name:Player_3 street:River streetActionNo:2 action:bet amount:8
|
||||||
player_name:Player_3 actionCount:10 street:River streetActionNo:2 action:call amount:4
|
player_name:Player_3 street:River streetActionNo:4 action:call amount:4
|
||||||
player_name:Player_4 actionCount:0 street:Preflop streetActionNo:0 action:call amount:2
|
player_name:Player_4 street:Preflop streetActionNo:6 action:call amount:2
|
||||||
player_name:Player_4 actionCount:1 street:Preflop streetActionNo:1 action:call amount:2
|
player_name:Player_4 street:Preflop streetActionNo:10 action:call amount:2
|
||||||
player_name:Player_4 actionCount:2 street:Flop streetActionNo:0 action:bet amount:4
|
player_name:Player_4 street:Flop streetActionNo:3 action:bet amount:4
|
||||||
player_name:Player_4 actionCount:3 street:Flop streetActionNo:1 action:bet amount:4
|
player_name:Player_4 street:Flop streetActionNo:7 action:bet amount:4
|
||||||
player_name:Player_4 actionCount:4 street:Turn streetActionNo:0 action:bet amount:8
|
player_name:Player_4 street:Turn streetActionNo:1 action:bet amount:8
|
||||||
player_name:Player_4 actionCount:5 street:Turn streetActionNo:1 action:bet amount:8
|
player_name:Player_4 street:Turn streetActionNo:3 action:bet amount:8
|
||||||
player_name:Player_4 actionCount:6 street:River streetActionNo:0 action:bet amount:8
|
player_name:Player_4 street:River streetActionNo:1 action:bet amount:8
|
||||||
player_name:Player_4 actionCount:7 street:River streetActionNo:1 action:bet amount:8
|
player_name:Player_4 street:River streetActionNo:3 action:bet amount:8
|
||||||
player_name:Player_5 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:1
|
player_name:Player_5 street:Preflop streetActionNo:0 action:blind amount:1
|
||||||
player_name:Player_5 actionCount:1 street:Preflop streetActionNo:1 action:bet amount:3
|
player_name:Player_5 street:Preflop streetActionNo:7 action:bet amount:3
|
||||||
player_name:Player_5 actionCount:2 street:Flop streetActionNo:0 action:check amount:0
|
player_name:Player_5 street:Flop streetActionNo:0 action:check amount:0
|
||||||
player_name:Player_5 actionCount:3 street:Flop streetActionNo:1 action:fold amount:0
|
player_name:Player_5 street:Flop streetActionNo:4 action:fold amount:0
|
||||||
player_name:Player_6 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:2
|
player_name:Player_6 street:Preflop streetActionNo:1 action:blind amount:2
|
||||||
player_name:Player_6 actionCount:1 street:Preflop streetActionNo:1 action:call amount:2
|
player_name:Player_6 street:Preflop streetActionNo:8 action:call amount:2
|
||||||
player_name:Player_6 actionCount:2 street:Flop streetActionNo:0 action:check amount:0
|
player_name:Player_6 street:Flop streetActionNo:1 action:check amount:0
|
||||||
player_name:Player_6 actionCount:3 street:Flop streetActionNo:1 action:fold amount:0
|
player_name:Player_6 street:Flop streetActionNo:5 action:fold amount:0
|
||||||
player_name:Player_7 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0
|
player_name:Player_7 street:Preflop streetActionNo:2 action:fold amount:0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user