- date = filename[:8]
- start = '%s:%s' % (filename[9:11], filename[12:14])
- seconds = 0
- if filename[14] == 'm': # support for seconds
- seconds += 3
- start += ':' + filename[15:17]
- else:
- start += ':00'
- end = '%s:%s' % (filename[15+seconds:17+seconds], filename[18+seconds:20+seconds])
- if seconds:
- end += ':' + filename[24:26]
- else:
- end += ':00'
- ext = filename.rsplit('.')[-1]
-
- start = datetime.datetime.strptime('%s %s' % (date, start),
- '%Y%m%d %H:%M:%S')
- end = datetime.datetime.strptime('%s %s' % (date, end),
- '%Y%m%d %H:%M:%S')
+ basename, ext = filename.rsplit('.', 1)
+ date_str, start_str, end_str = basename.split('-')
+
+ date = datetime.datetime.strptime(date_str, '%Y%m%d')
+
+ start_time = None
+ end_time = None
+ for time_format in ('%Hh%Mm%S.%f', '%Hh%Mm%S', '%Hh%Mm', '%Hh%M'):
+ if start_time is None:
+ try:
+ start_time = datetime.datetime.strptime(start_str, time_format)
+ except ValueError:
+ pass
+ if end_time is None:
+ try:
+ end_time = datetime.datetime.strptime(end_str, time_format)
+ except ValueError:
+ pass
+ start = datetime.datetime(date.year, date.month, date.day,
+ start_time.hour, start_time.minute, start_time.second,
+ start_time.microsecond)
+ end = datetime.datetime(date.year, date.month, date.day,
+ end_time.hour, end_time.minute, end_time.second,
+ end_time.microsecond)