diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-10-09 15:44:13 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-10-09 15:44:13 +0300 |
| commit | 80940c46bbdc6c1e5cf8e4ab13e2bae0683db8b1 (patch) | |
| tree | 57174fcfba7b71b194defb9e4441d7a32c4bc08a /plugins | |
| parent | e9547637ddb6b4fde18ed487d4730182afb6d92a (diff) | |
Support 'Yesterday at xx:yy AM/PM' datetime syntax in FB scraper
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/FacebookSourcePlugin.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/plugins/FacebookSourcePlugin.py b/plugins/FacebookSourcePlugin.py index 4af54d7..27df127 100644 --- a/plugins/FacebookSourcePlugin.py +++ b/plugins/FacebookSourcePlugin.py @@ -39,7 +39,7 @@ def parse_custom_date(date_str: str) -> datetime: except ValueError: pass - # Parse relative times like "14 hrs" and "20 mins" + # Try parsing relative times like "14 hrs" and "20 mins" now = datetime.now() match = re.match(r"(\d+)\s*(hr|hrs|min|mins)\s*", date_str, re.IGNORECASE) if match: @@ -54,6 +54,22 @@ def parse_custom_date(date_str: str) -> datetime: return now - delta + # Try parsing relative times like "Yesterday at 12:19 PM" + match = re.match(r"Yesterday at (\d+):(\d+)\s(\w+)", date_str, re.IGNORECASE) + if match: + hour, minute, am_pm = match.groups() + hour = int(hour) + minute = int(minute) + am_pm = am_pm.lower() + # Convert to 24-hour format + if am_pm == "pm" and hour != 12: + hour += 12 + if am_pm == "am" and hour == 12: + hour = 0 + + yesterday = datetime.now() - timedelta(days=1) + return datetime(yesterday.year, yesterday.month, yesterday.day, hour, minute, 0) + raise ValueError("Unparseable date: " + date_str) |
