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:
+1
-1
@@ -343,7 +343,7 @@ blabla""")
|
||||
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||
self.window.connect("delete_event", self.delete_event)
|
||||
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_size_request(950,400)
|
||||
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)
|
||||
|
||||
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
|
||||
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")
|
||||
siteTourneyNo=fpdb_simple.parseTourneyNo(hand[0])
|
||||
buyin=fpdb_simple.parseBuyin(hand[0])
|
||||
#print "Buyin:", buyin
|
||||
fee=fpdb_simple.parseFee(hand[0])
|
||||
#print "Fee:", fee
|
||||
entries=-1 #todo: parse this
|
||||
prizepool=-1 #todo: parse this
|
||||
tourneyStartTime=handStartTime #todo: read tourney start time
|
||||
#print "gametypeID:",gametypeID
|
||||
fpdb_simple.isAlreadyInDB(cursor, gametypeID, siteHandNo)
|
||||
|
||||
#part 2: classify lines by type (e.g. cards, action, win, sectionchange) and street
|
||||
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
|
||||
#3a read player names, startcashes
|
||||
for i in range (len(hand)): #todo: use maxseats+1 here.
|
||||
if (lineTypes[i]=="name"):
|
||||
seatLines.append(hand[i])
|
||||
#print "seatLines:",seatLines
|
||||
#print "hand:",hand
|
||||
names=fpdb_simple.parseNames(seatLines)
|
||||
#print "names:",names
|
||||
playerIDs = fpdb_simple.recognisePlayerIDs(cursor, names, siteID)
|
||||
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)
|
||||
#PS doesnt have a nameline for sitouts so for PS this can be skipped. havent tried FTP yet
|
||||
|
||||
#3c read positions
|
||||
#3b read positions
|
||||
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
||||
positions = fpdb_simple.parsePositions (hand, names)
|
||||
|
||||
#part 4: take appropriate action for each line based on linetype
|
||||
for i in range(len(hand)):
|
||||
if (lineTypes[i]=="cards"):
|
||||
#print "hand[i]:",hand[i]
|
||||
fpdb_simple.parseCardLine (site, category, lineStreets[i], hand[i], names, cardValues, cardSuits, boardValues, boardSuits)
|
||||
#print "cardValues:",cardValues
|
||||
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"):
|
||||
fpdb_simple.parseWinLine (hand[i], site, names, winnings, isTourney)
|
||||
elif (lineTypes[i]=="rake"):
|
||||
@@ -99,7 +86,6 @@ def mainParser(db, cursor, site, category, hand):
|
||||
fpdb_simple.parseAnteLine(hand[i], site, names, antes)
|
||||
else:
|
||||
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
|
||||
# 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)
|
||||
|
||||
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)
|
||||
|
||||
totalWinnings=0
|
||||
@@ -119,6 +105,7 @@ def mainParser(db, cursor, site, category, hand):
|
||||
hudImportData=fpdb_simple.calculateHudImport(playerIDs, category, actionTypes, winnings, totalWinnings)
|
||||
|
||||
if isTourney:
|
||||
raise fpdb_simple.FpdbError ("tourneys are currently broken")
|
||||
payin_amounts=fpdb_simple.calcPayin(len(names), buyin, fee)
|
||||
ranks=[]
|
||||
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"):
|
||||
result = fpdb_save_to_db.ring_holdem_omaha(cursor, category, siteHandNo, gametypeID,
|
||||
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"):
|
||||
raise fpdb_simple.FpdbError ("stud/razz are currently broken")
|
||||
result = fpdb_save_to_db.ring_stud(cursor, category, siteHandNo, gametypeID,
|
||||
handStartTime, names, playerIDs, startCashes, antes, cardValues,
|
||||
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
|
||||
def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_time,
|
||||
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
|
||||
if (category=="holdem"):
|
||||
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.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
|
||||
#end def ring_holdem_omaha
|
||||
|
||||
|
||||
+24
-9
@@ -199,7 +199,7 @@ def convertCardValuesBoard(arr):
|
||||
#end def convertCardValuesBoard
|
||||
|
||||
#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
|
||||
tmp=[]
|
||||
card_values.append(tmp)
|
||||
@@ -208,19 +208,26 @@ def createArrays(category, seats, card_values, card_suits, antes, winnings, rake
|
||||
antes.append(0)
|
||||
winnings.append(0)
|
||||
rakes.append(0)
|
||||
|
||||
for i in range (8):
|
||||
#build the first dimension array, for streets
|
||||
#todo: 0-2 will of course be left empty, get rid of this nicely using consts
|
||||
|
||||
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
||||
streetCount=4
|
||||
else:
|
||||
streetCount=8
|
||||
|
||||
for i in range(streetCount): #build the first dimension array, for streets
|
||||
tmp=[]
|
||||
action_types.append(tmp)
|
||||
tmp=[]
|
||||
action_amounts.append(tmp)
|
||||
tmp=[]
|
||||
actionNos.append(tmp)
|
||||
for j in range (seats): #second dimension arrays: players
|
||||
tmp=[]
|
||||
action_types[i].append(tmp)
|
||||
tmp=[]
|
||||
action_amounts[i].append(tmp)
|
||||
tmp=[]
|
||||
actionNos[i].append(tmp)
|
||||
if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
||||
pass
|
||||
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
|
||||
# action_amounts. For stud this expects numeric streets (3-7), for
|
||||
# holdem/omaha it expects predeal, preflop, flop, turn or river
|
||||
def parseActionLine(line, street, names, action_types, action_amounts, site):
|
||||
#print "parseActionLine, line:",line
|
||||
def parseActionLine(site, line, street, names, action_types, action_amounts, actionNos):
|
||||
#this only applies to stud
|
||||
if (street<3):
|
||||
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"):
|
||||
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)
|
||||
playerno=recognisePlayerNo(line, names, atype)
|
||||
amount=parseActionAmount(line, atype, site)
|
||||
|
||||
action_types[street][playerno].append(atype)
|
||||
action_amounts[street][playerno].append(amount)
|
||||
actionNos[street][playerno].append(nextActionNo)
|
||||
#end def parseActionLine
|
||||
|
||||
#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
|
||||
#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
|
||||
#print "start of storeActions, actionNos:",actionNos
|
||||
#print " action_amounts:",action_amounts
|
||||
for i in range (len(action_types)): #iterate through streets
|
||||
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
|
||||
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
|
||||
|
||||
def store_board_cards(cursor, hands_id, board_values, board_suits):
|
||||
|
||||
Reference in New Issue
Block a user