Work on plugin initialisation, add Carbon poker plugin
This commit is contained in:
		
							parent
							
								
									4f64464df3
								
							
						
					
					
						commit
						7df572895b
					
				
							
								
								
									
										75
									
								
								pyfpdb/CarbonToFpdb.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								pyfpdb/CarbonToFpdb.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,75 @@ | |||
| #!/usr/bin/env python | ||||
| #    Copyright 2008, 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 | ||||
| 
 | ||||
| ######################################################################## | ||||
| 
 | ||||
| #    Standard Library modules | ||||
| import Configuration | ||||
| import traceback | ||||
| import xml.dom.minidom | ||||
| from xml.dom.minidom import Node | ||||
| from HandHistoryConverter import HandHistoryConverter | ||||
| 
 | ||||
| # Carbon format looks like: | ||||
| 
 | ||||
| # 1) <description type="Holdem" stakes="No Limit ($0.25/$0.50)"/> | ||||
| # 2) <game id="14902583-5578" starttime="20081006145401" numholecards="2" gametype="2" realmoney="true" data="20081006|Niagara Falls (14902583)|14902583|14902583-5578|false"> | ||||
| # 3)  <players dealer="8"> | ||||
| #                <player seat="3" nickname="PlayerInSeat3" balance="$43.29" dealtin="true" /> | ||||
| #                ... | ||||
| # 4) <round id="BLINDS" sequence="1"> | ||||
| #                <event sequence="1" type="SMALL_BLIND" player="0" amount="0.25"/> | ||||
| #                <event sequence="2" type="BIG_BLIND" player="1" amount="0.50"/> | ||||
| # 5) <round id="PREFLOP" sequence="2"> | ||||
| #                <event sequence="3" type="CALL" player="2" amount="0.50"/> | ||||
| # 6) <round id="POSTFLOP" sequence="3"> | ||||
| #           <event sequence="16" type="BET" player="3" amount="1.00"/> | ||||
| #           .... | ||||
| #	    <cards type="COMMUNITY" cards="7d,Jd,Jh"/> | ||||
| 
 | ||||
| # The full sequence for a NHLE cash game is: | ||||
| # BLINDS, PREFLOP, POSTFLOP, POSTTURN, POSTRIVER, SHOWDOWN, END_OF_GAME | ||||
| # This sequence can be terminated after BLINDS at any time by END_OF_FOLDED_GAME | ||||
| 
 | ||||
| 
 | ||||
| class CarbonPoker(HandHistoryConverter):  | ||||
| 	def __init__(self, config, filename): | ||||
| 		print "Initialising Carbon Poker converter class" | ||||
| 		HandHistoryConverter.__init__(self, config, filename) # Call super class init | ||||
| 		self.sitename = "Carbon" | ||||
| 		self.setFileType("xml") | ||||
| 
 | ||||
| 	def readSupportedGames(self):  | ||||
| 		pass | ||||
| 	def determineGameType(self):  | ||||
| 		desc_node = doc.getElementsByTagName("description") | ||||
| 		type = desc_node.getAttribute("type") | ||||
| 		stakes = desc_node.getAttribute("stakes") | ||||
| 		 | ||||
| 	def readPlayerStacks(self): | ||||
| 		pass | ||||
| 	def readBlinds(self): | ||||
| 		pass | ||||
| 	def readAction(self): | ||||
| 		pass | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
| 	c = Configuration.Config() | ||||
| 	e = CarbonPoker(c, "regression-test-files/carbon-poker/Niagara Falls (15245216).xml")  | ||||
| 	print str(e) | ||||
|  | @ -16,11 +16,16 @@ | |||
| #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
| ######################################################################## | ||||
| 
 | ||||
| import Configuration | ||||
| from HandHistoryConverter import HandHistoryConverter | ||||
| 
 | ||||
| class Everleaf(HandHistoryConverter): | ||||
| 	def __init__(self): | ||||
| 	def __init__(self, config, file): | ||||
| 		print "Initialising Everleaf converter class" | ||||
| 		HandHistoryConverter.__init__(self, config, file) # Call super class init. | ||||
| 		self.sitename = "Everleaf" | ||||
| 		self.setFileType("text") | ||||
| 
 | ||||
|         def readSupportedGames(self): | ||||
| 		pass | ||||
| 
 | ||||
|  | @ -37,4 +42,7 @@ class Everleaf(HandHistoryConverter): | |||
| 		pass | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
| 	e = Everleaf() | ||||
| 	c = Configuration.Config() | ||||
| 	e = Everleaf(c, "regression-test-files/everleaf/Speed_Kuala.txt") | ||||
| 	print str(e) | ||||
| 	 | ||||
|  |  | |||
|  | @ -16,8 +16,22 @@ | |||
| #agpl-3.0.txt in the docs folder of the package. | ||||
| 
 | ||||
| class HandHistoryConverter: | ||||
| 	def __init__(self): | ||||
| 		pass | ||||
| 	def __init__(self, config, file): | ||||
| 		print "HandHistory init called" | ||||
| 		self.c         = config | ||||
| 		self.sitename  = "" | ||||
| 		self.obs       = ""             # One big string | ||||
| 		self.filetype  = "text" | ||||
| 		self.doc       = None     # For XML based HH files | ||||
| 		self.file      = file | ||||
| 		self.hhbase    = self.c.get_import_parameters().get("hhArchiveBase") | ||||
| 
 | ||||
| 	def __str__(self): | ||||
| 		tmp = "HandHistoryConverter: '%s'\n" % (self.sitename) | ||||
| 		tmp = tmp + "\thhbase:     %s\n" % (self.hhbase) | ||||
| 		tmp = tmp + "\tfiletype:   %s\n" % (self.filetype) | ||||
| 		return tmp | ||||
| 
 | ||||
| 	# Functions to be implemented in the inheriting class | ||||
| 	def readSupportedGames(self): abstract | ||||
| 	def determineGameType(self): abstract | ||||
|  | @ -25,11 +39,47 @@ class HandHistoryConverter: | |||
| 	def readBlinds(self): abstract | ||||
| 	def readAction(self): abstract | ||||
| 
 | ||||
| 
 | ||||
| 	# Functions not necessary to implement in sub class | ||||
| 	def setFileType(self, filetype = "text"): | ||||
| 		self.filetype = filetype | ||||
| 
 | ||||
| 	def processFile(self): | ||||
| 		self.readFile() | ||||
| 
 | ||||
| 	def readFile(self, filename): | ||||
| 		"""Read file""" | ||||
| 		if(self.filetype == "text"): | ||||
| 			infile=open(filename, "rU") | ||||
| 			self.obs = readfile(inputFile) | ||||
| 			inputFile.close() | ||||
| 		elif(self.filetype == "xml"): | ||||
| 			try: | ||||
| 				doc = xml.dom.minidom.parse(filename) | ||||
| 				self.doc = doc | ||||
| 			except: | ||||
| 				traceback.print_exc(file=sys.stderr) | ||||
| 
 | ||||
| 	def writeStars(self): | ||||
| 		"""Write out parsed data""" | ||||
| 
 | ||||
| #		print sitename + " Game #" + handid + ":  " + gametype + " (" + sb + "/" + bb + " - " + starttime | ||||
| #		print "Table '" + tablename + "' " + maxseats + "-max Seat #" + buttonpos + " is the button" | ||||
| # | ||||
| #		counter = 1 | ||||
| #		for player in seating: | ||||
| #			print "Seat " + counter + ": " + playername + "($" + playermoney + " in chips" | ||||
| # | ||||
| #		print playername + ": posts small blind " + sb | ||||
| #		print playername + ": posts big blind " + bb | ||||
| # | ||||
| #		print "*** HOLE CARDS ***" | ||||
| #		print "Dealt to " + hero + " [" + holecards + "]" | ||||
| # | ||||
| ##		ACTION STUFF | ||||
| # | ||||
| #		print "*** SUMMARY ***" | ||||
| #		print "Total pot $" + totalpot + " | Rake $" + rake | ||||
| #		print "Board [" + boardcards + "]" | ||||
| # | ||||
| ##		SUMMARY STUFF | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user