From b66a4e8a91662e36de35263a7f81f80767ae131d Mon Sep 17 00:00:00 2001 From: David Stap Date: Fri, 28 Jun 2024 18:31:03 +0200 Subject: [PATCH] store talks in EventIndex class when available --- bin/anthology/events.py | 15 ++++++++++++++- bin/anthology/utils.py | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/bin/anthology/events.py b/bin/anthology/events.py index 4e8f128f73..19fa1cc67d 100644 --- a/bin/anthology/events.py +++ b/bin/anthology/events.py @@ -54,6 +54,7 @@ def _create_event(self, event_id): "year": year, "title": f"{venue_name} ({year})", "links": [], + "talks": [], "volumes": [], } @@ -70,6 +71,8 @@ def register_event(self, event_xml): list_elements=["url", "volume-id"], dont_parse_elements=["meta", "links", "colocated"], ) + # parse_element does not play nicely with "talk" so add here + event_data["talk"] = event_xml.findall("talk") # copy over on top of default values for key, value in event_data.items(): @@ -107,11 +110,21 @@ def register_event(self, event_xml): ): self.register_volume(volume_id, event_id) + elif key == "talk": + for talk in value: + parsed_talk = parse_element(talk, list_elements=["speaker"]) + self.events[event_id]["talks"].append( + { + "title": parsed_talk["xml_title"].text, + "speaker": parsed_talk["speaker"], + "video": parsed_talk["video"], + } + ) + else: # all other keys self.events[event_id][key] = value - # print(event_id, self.events[event_id]) def register_volume(self, volume: str, event_id: str): """ diff --git a/bin/anthology/utils.py b/bin/anthology/utils.py index bbafe270b1..d0c08fefa0 100644 --- a/bin/anthology/utils.py +++ b/bin/anthology/utils.py @@ -461,7 +461,7 @@ def parse_element( "type": element.get("type", "attachment"), "url": element.text, } - elif tag in ("author", "editor"): + elif tag in ("author", "editor", "speaker"): id_ = element.attrib.get("id", None) value = (PersonName.from_element(element), id_) elif tag == "erratum":