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":