equal
deleted
inserted
replaced
43 |
43 |
44 |
44 |
45 def datetime_parse(s): |
45 def datetime_parse(s): |
46 for known_format in KNOWN_FORMATS: |
46 for known_format in KNOWN_FORMATS: |
47 try: |
47 try: |
48 s = datetime.strptime(s.strip(), known_format) |
48 s = datetime.strptime(s, known_format) |
49 break |
49 break |
50 except ValueError as e: |
50 except ValueError as e: |
51 pass # Wrong format, keep trying |
51 pass # Wrong format, keep trying |
52 return s |
52 return s |
53 |
53 |
55 """Convert any date string found in WHOIS to a datetime object. |
55 """Convert any date string found in WHOIS to a datetime object. |
56 """ |
56 """ |
57 if DATEUTIL: |
57 if DATEUTIL: |
58 try: |
58 try: |
59 return dp.parse( |
59 return dp.parse( |
60 s.strip(), |
60 s, |
61 tzinfos=tz_data, |
61 tzinfos=tz_data, |
62 dayfirst=dayfirst, |
62 dayfirst=dayfirst, |
63 yearfirst=yearfirst |
63 yearfirst=yearfirst |
64 ).replace(tzinfo=None) |
64 ).replace(tzinfo=None) |
65 except Exception: |
65 except Exception: |
112 """ |
112 """ |
113 for attr, regex in self._regex.items(): |
113 for attr, regex in self._regex.items(): |
114 if regex: |
114 if regex: |
115 values = [] |
115 values = [] |
116 for value in re.findall(regex, self.text, re.IGNORECASE): |
116 for value in re.findall(regex, self.text, re.IGNORECASE): |
117 if isinstance(value, basestring): |
117 value = value.strip() |
|
118 if value and isinstance(value, basestring): |
118 # try casting to date format |
119 # try casting to date format |
119 value = cast_date(value.strip(), |
120 value = cast_date( |
120 dayfirst=self.dayfirst, |
121 value, |
121 yearfirst=self.yearfirst) |
122 dayfirst=self.dayfirst, |
|
123 yearfirst=self.yearfirst) |
122 if value and value not in values: |
124 if value and value not in values: |
123 # avoid duplicates |
125 # avoid duplicates |
124 values.append(value) |
126 values.append(value) |
125 if len(values) == 1: |
127 if len(values) == 1: |
126 values = values[0] |
128 values = values[0] |