From 22d9b33ce71db51bd067f8b2b41918a39d7f2a33 Mon Sep 17 00:00:00 2001 From: ducklet Date: Wed, 16 Dec 2020 15:52:05 +0100 Subject: [PATCH] urlinfo:generic: fix name retrival from jsonld things For some sites a list of persons is just a list of strings, not proper Person typed objects. --- hotdog/command/urlinfo_/generic.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/hotdog/command/urlinfo_/generic.py b/hotdog/command/urlinfo_/generic.py index e3ffaa2..8067ad0 100644 --- a/hotdog/command/urlinfo_/generic.py +++ b/hotdog/command/urlinfo_/generic.py @@ -165,6 +165,14 @@ def fromisoformat(s) -> datetime: raise e +def name_from_thing(p: Union[Mapping, str]) -> Optional[str]: + if type(p) is str: + return p + # if p["@type"] == "Person": + # return p["name"] + return p.get("name") + + @dataclass class LinkedData: title: Optional[str] @@ -181,7 +189,7 @@ class LinkedData: creators = [] for k in "director", "creator", "author", "producer", "contributor": if k in o: - creators += [p["name"] for p in aslist(o[k]) if p["@type"] == "Person"] + creators += [name for p in aslist(o[k]) if (name := name_from_thing(p))] return cls( title=o.get("headline") or o.get("name"), published=(