rst/index_tiles.py (51 lines of code) (raw):

import xml.etree.ElementTree as ET def index_tiles(data: str): # print(s) # with open ('tiles.xml', 'w') as f: # f.write(s) data_root = ET.fromstring(data.encode('utf-8')) res_items = [] for elem in data_root: if True: # This block is never True on dev and AWS env #if 'class' in elem.attrib and elem.attrib['class'] == 'section': label_name = '' for section in elem: if section.tag == 'h2': label_name = section.text if section.tag == 'ul': for product in section: title = '' path = '' descr = '' image = '' text = '' product_p = product.find('p') if product_p is not None: for p in product_p: if p.tail is not None: text = p.tail product_a = product_p.find('a') if product_a is not None: path = product_a.attrib['href'] title = product_a.text product_img = product_p.find('img') if product_img is not None: image = product_img.attrib['src'] product_ul = product.find('ul') if product_ul is not None: descr = ET.tostring(product_ul, encoding="UTF-8", method="html").decode('utf-8') res_items.append({ 'path': path, 'image': image, 'label': label_name, 'title': title, 'text': text, 'description': descr }) return res_items def add_filters(app): app.builder.templates.environment.filters['index_tiles'] = index_tiles def setup(app): app.connect("builder-inited", add_filters) def local_test(): with open('tiles.xml', 'r') as f: s = index_tiles(f.read()) print(s) if __name__ == '__main__': local_test()