From 124ed1cf2525bed4ff8c3ed45743649b5ae3f893 Mon Sep 17 00:00:00 2001 From: ducklet Date: Sun, 15 Nov 2020 18:51:31 +0100 Subject: [PATCH] urlinfo:generic: be more relaxed with datetime isoformat --- hotdog/command/urlinfo_/generic.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/hotdog/command/urlinfo_/generic.py b/hotdog/command/urlinfo_/generic.py index 358ff36..2a94321 100644 --- a/hotdog/command/urlinfo_/generic.py +++ b/hotdog/command/urlinfo_/generic.py @@ -1,7 +1,7 @@ import json import logging from dataclasses import dataclass -from datetime import datetime +from datetime import datetime, timezone from typing import * from ...functions import ( @@ -148,6 +148,15 @@ def aslist(o: Any): return o if type(o) is list else [o] +def fromisoformat(s) -> datetime: + try: + datetime.fromisoformat(s) + except ValueError: + pass + # '2003-08-15T13:18:27Z' + return datetime.strptime(s, r"%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc) + + @dataclass class LinkedData: title: Optional[str] @@ -168,9 +177,7 @@ class LinkedData: return cls( title=o.get("headline") or o.get("name"), published=( - datetime.fromisoformat(o["datePublished"]) - if "datePublished" in o - else None + fromisoformat(o["datePublished"]) if "datePublished" in o else None ), image=o.get("image") or o.get("logo"), description=o.get("description"),