FTP: Change date format handling
The new FTP date format contains local and ET time information, in almost the same way as Stars. Tested against a new file, an old file, a EUR file and the weird date format that existed for about 3 days
This commit is contained in:
		
							parent
							
								
									d922984b91
								
							
						
					
					
						commit
						3cd7eb881b
					
				|  | @ -63,10 +63,10 @@ class Fulltilt(HandHistoryConverter): | |||
|                                     [%(LS)s]?(?P<SB>[.0-9]+)/[%(LS)s]?(?P<BB>[.0-9]+)\s(Ante\s[%(LS)s]?(?P<ANTE>[.0-9]+)\s)?-\s | ||||
|                                     [%(LS)s]?(?P<CAP>[.0-9]+\sCap\s)? | ||||
|                                     (?P<GAMETYPE>[-\da-zA-Z\/\'\s]+)\s-\s | ||||
|                                     (?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<DATETIME>.*$) | ||||
|                                     (?P<PARTIAL>\(partial\))?\n | ||||
|                                     (?:.*?\n(?P<CANCELLED>Hand\s\#(?P=HID)\shas\sbeen\scanceled))? | ||||
|                                  ''' % substitutions, re.VERBOSE|re.DOTALL) | ||||
|                                  ''' % substitutions, re.MULTILINE|re.VERBOSE) | ||||
|     re_TourneyExtraInfo  = re.compile('''(((?P<TOURNEY_NAME>[^$]+)? | ||||
|                                          (?P<CURRENCY>[%(LS)s])?(?P<BUYIN>[.0-9]+)?\s*\+\s*[%(LS)s]?(?P<FEE>[.0-9]+)? | ||||
|                                          (\s(?P<SPECIAL>(KO|Heads\sUp|Matrix\s\dx|Rebuy|Madness)))? | ||||
|  | @ -123,6 +123,7 @@ class Fulltilt(HandHistoryConverter): | |||
|     re_Mixed        = re.compile(r'\s\-\s(?P<MIXED>HA|HORSE|HOSE)\s\-\s', re.VERBOSE) | ||||
|     re_Max          = re.compile("(?P<MAX>\d+)( max)?", re.MULTILINE) | ||||
|     # NB: if we ever match "Full Tilt Poker" we should also match "FullTiltPoker", which PT Stud erroneously exports. | ||||
|     re_DateTime     = re.compile("""((?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)\s(?P<TZ>\w+)\s-\s(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})|(?P<H2>[0-9]+):(?P<MIN2>[0-9]+)\s(?P<TZ2>\w+)\s-\s\w+\,\s(?P<M2>\w+)\s(?P<D2>\d+)\,\s(?P<Y2>[0-9]{4}))""", re.MULTILINE) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -225,18 +226,24 @@ class Fulltilt(HandHistoryConverter): | |||
|         hand.handid = m.group('HID') | ||||
|         hand.tablename = m.group('TABLE') | ||||
| 
 | ||||
|         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) | ||||
|         if m.group('DATETIME'): | ||||
|             # This section of code should match either a single date (which is ET) or | ||||
|             # the last date in the header, which is also recorded in ET. | ||||
|             timezone = "ET" | ||||
|             m1 = self.re_DateTime.finditer(m.group('DATETIME')) | ||||
|             datetimestr = "2000/01/01 00:00:00" | ||||
|             for a in m1: | ||||
|                 if a.group('TZ2') == None: | ||||
|                     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')) | ||||
|                     timezone = a.group('TZ') | ||||
|                     hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S") | ||||
|                 else: # Short-lived date format | ||||
|                     datetimestr = "%s/%s/%s %s:%s" % (a.group('Y2'), a.group('M2'),a.group('D2'),a.group('H2'),a.group('MIN2')) | ||||
|                     timezone = a.group('TZ2') | ||||
|                     hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%B/%d %H:%M") | ||||
| 
 | ||||
|             hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, timezone, "UTC") | ||||
| 
 | ||||
|         hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, timezone, "UTC") | ||||
|          | ||||
|         if m.group("CANCELLED") or m.group("PARTIAL"): | ||||
|             raise FpdbParseError(hid=m.group('HID')) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user