78def response(resp: "SXNG_Response") -> EngineResults:
79
80 res = EngineResults()
81
82 dom = etree.fromstring(resp.content)
83 for entry in eval_xpath_list(dom, xpath_entry):
84
85 title: str = eval_xpath_getindex(entry, xpath_title, 0).text
86
87 url: str = eval_xpath_getindex(entry, xpath_id, 0).text
88 abstract: str = eval_xpath_getindex(entry, xpath_summary, 0).text
89
90 authors: list[str] = [author.text for author in eval_xpath_list(entry, xpath_author_name)]
91
92
93 doi_element = eval_xpath_getindex(entry, xpath_doi, 0, default=None)
94 doi: str = "" if doi_element is None else doi_element.text
95
96
97 pdf_element = eval_xpath_getindex(entry, xpath_pdf, 0, default=None)
98 pdf_url: str = "" if pdf_element is None else pdf_element.attrib.get("href")
99
100
101 journal_element = eval_xpath_getindex(entry, xpath_journal, 0, default=None)
102 journal: str = "" if journal_element is None else journal_element.text
103
104
105 tag_elements = eval_xpath(entry, xpath_category)
106 tags: list[str] = [str(tag) for tag in tag_elements]
107
108
109 comments_elements = eval_xpath_getindex(entry, xpath_comment, 0, default=None)
110 comments: str = "" if comments_elements is None else comments_elements.text
111
112 publishedDate = datetime.strptime(eval_xpath_getindex(entry, xpath_published, 0).text, "%Y-%m-%dT%H:%M:%SZ")
113
114 res.add(
115 res.types.Paper(
116 url=url,
117 title=title,
118 publishedDate=publishedDate,
119 content=abstract,
120 doi=doi,
121 authors=authors,
122 journal=journal,
123 tags=tags,
124 comments=comments,
125 pdf_url=pdf_url,
126 )
127 )
128
129 return res