FTP and Timezone fix.
Error reported with the following hand hostory from FTP France: Full Tilt Poker.fr Game #22632637058: Daily Euro (174599326), Table 3 - 10/20 - No Limit Hold'em - 20:15:39 CET - 2010/07/27 The existing FTP parser crashed on CET times. 1) Fixed parser to accept CET 2) Added timezone offset into HHC Not happy with TZ1/TZ2 solution.
This commit is contained in:
		
							parent
							
								
									0cd5b50b2f
								
							
						
					
					
						commit
						ac728fffb2
					
				| 
						 | 
				
			
			@ -54,7 +54,7 @@ class Fulltilt(HandHistoryConverter):
 | 
			
		|||
                                    \$?(?P<SB>[.0-9]+)/\$?(?P<BB>[.0-9]+)\s(Ante\s\$?(?P<ANTE>[.0-9]+)\s)?-\s
 | 
			
		||||
                                    \$?(?P<CAP>[.0-9]+\sCap\s)?
 | 
			
		||||
                                    (?P<GAMETYPE>[a-zA-Z\/\'\s]+)\s-\s
 | 
			
		||||
                                    (?P<DATETIME>\d+:\d+:\d+\s\w+\s-\s\d+/\d+/\d+|\d+:\d+\s\w+\s-\s\w+\,\s\w+\s\d+\,\s\d+)
 | 
			
		||||
                                    (?P<DATETIME>\d+:\d+:\d+\s(?P<TZ1>\w+)\s-\s\d+/\d+/\d+|\d+:\d+\s(?P<TZ2>\w+)\s-\s\w+\,\s\w+\s\d+\,\s\d+)
 | 
			
		||||
                                    (?P<PARTIAL>\(partial\))?\n
 | 
			
		||||
                                    (?:.*?\n(?P<CANCELLED>Hand\s\#(?P=HID)\shas\sbeen\scanceled))?
 | 
			
		||||
                                 ''', re.VERBOSE|re.DOTALL)
 | 
			
		||||
| 
						 | 
				
			
			@ -201,13 +201,18 @@ class Fulltilt(HandHistoryConverter):
 | 
			
		|||
            return None
 | 
			
		||||
        hand.handid = m.group('HID')
 | 
			
		||||
        hand.tablename = m.group('TABLE')
 | 
			
		||||
        
 | 
			
		||||
        try:
 | 
			
		||||
            hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), "%H:%M:%S ET - %Y/%m/%d")
 | 
			
		||||
        except:
 | 
			
		||||
            hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), "%H:%M ET - %a, %B %d, %Y")
 | 
			
		||||
 | 
			
		||||
        hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, "ET", "UTC")
 | 
			
		||||
        timezone = "ET"
 | 
			
		||||
        if m.group('TZ1') == "CET" or m.group('TZ2') == "CET":
 | 
			
		||||
            timezone = "CET"
 | 
			
		||||
        try:
 | 
			
		||||
            stringformat = "%H:%M:%S " + m.group('TZ1') + " - %Y/%m/%d"
 | 
			
		||||
            hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), stringformat)
 | 
			
		||||
        except:
 | 
			
		||||
            stringformat = "%H:%M " + m.group('TZ2') + " - %a, %B %d, %Y"
 | 
			
		||||
            hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), stringformat)
 | 
			
		||||
 | 
			
		||||
        hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, timezone, "UTC")
 | 
			
		||||
        
 | 
			
		||||
        if m.group("CANCELLED") or m.group("PARTIAL"):
 | 
			
		||||
            raise FpdbParseError(hid=m.group('HID'))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -497,19 +497,23 @@ or None if we fail to get the info """
 | 
			
		|||
        
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def changeTimezone(time, givenTimezone, wantedTimezone):
 | 
			
		||||
        offest = datetime.timedelta(hours=0)
 | 
			
		||||
        if givenTimezone=="ET" and wantedTimezone=="UTC":
 | 
			
		||||
            # approximate rules for ET daylight savings time:
 | 
			
		||||
            if (   time.month == 12                                  # all of Dec
 | 
			
		||||
                or (time.month == 11 and time.day > 4)     #    and most of November
 | 
			
		||||
                or time.month < 3                                    #    and all of Jan/Feb
 | 
			
		||||
                or (time.month == 3 and time.day < 11) ):  #    and 1st 10 days of March
 | 
			
		||||
                offset = datetime.timedelta(hours=5)                           # are EST: assume 5 hour offset (ET without daylight saving)
 | 
			
		||||
                offset = datetime.timedelta(hours=5)       # are EST: assume 5 hour offset (ET without daylight saving)
 | 
			
		||||
            else:
 | 
			
		||||
                offset = datetime.timedelta(hours=4)                           # rest is EDT: assume 4 hour offset (ET with daylight saving)
 | 
			
		||||
            # adjust time into UTC:
 | 
			
		||||
            time = time + offset
 | 
			
		||||
                offset = datetime.timedelta(hours=4)       # rest is EDT: assume 4 hour offset (ET with daylight saving)
 | 
			
		||||
            #print "   tz = %s  start = %s" % (tz, str(hand.starttime))
 | 
			
		||||
            return time
 | 
			
		||||
        elif givenTimezone=="CET" and wantedTimezone=="UTC":
 | 
			
		||||
            offset = datetime.timedelta(hours=1)
 | 
			
		||||
 | 
			
		||||
        # adjust time into UTC:
 | 
			
		||||
        time = time + offset
 | 
			
		||||
        return time
 | 
			
		||||
    #end @staticmethod def changeTimezone
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user