46def response(resp) -> EngineResults:
47 results = EngineResults()
48
49 item_list = []
50
51 if not resp.ok:
52 return results
53
54 dom = html.fromstring(resp.text)
55
56 for result in eval_xpath(dom, ".//table[@id='r']//tr"):
57
58
59
60 td_list = result.xpath("./td")
61 if len(td_list) != 2:
62
63 continue
64
65 col_from, col_to = td_list
66 _clean_up_node(col_from)
67
68 text = f"{extract_text(col_from)}"
69
70 synonyms = []
71 p_list = col_to.xpath(".//p")
72
73 for i, p_item in enumerate(p_list):
74
75 smpl: str = extract_text(p_list[i].xpath("./i[@class='smpl']"))
76 _clean_up_node(p_item)
77 p_text: str = extract_text(p_item)
78
79 if smpl:
80 p_text += " // " + smpl
81
82 if i == 0:
83 text += f" : {p_text}"
84 continue
85
86 synonyms.append(p_text)
87
88 item = results.types.Translations.Item(text=text, synonyms=synonyms)
89 item_list.append(item)
90
91
92
93
94 from_lang = resp.search_params["from_lang"][1]
95 to_lang = resp.search_params["to_lang"][1]
96 query = resp.search_params["query"]
97
98
99 autotranslate = http_get(f"{base_url}/trans/{query}/{from_lang}_{to_lang}", timeout=1.0)
100 if autotranslate.ok and autotranslate.text:
101 item_list.insert(0, results.types.Translations.Item(text=autotranslate.text))
102
103 if item_list:
104 results.add(results.types.Translations(translations=item_list, url=resp.search_params["url"]))
105 return results