import urllib.parse import re import unicodedata html_path = '/home/x79/sisvietnamvn_01/BV_DHYD_HCM/Các chuyên khoa tại Bệnh viện Đại học Y Dược TP. Hồ Chí Minh.html' with open(html_path, 'r', encoding='utf-8') as f: text = f.read() def slugify(value): value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore').decode('utf-8') value = re.sub(r'[^\w\s-]', '', value).strip().lower() return re.sub(r'[-\s]+', '-', value) db_slugs = [ "chuyen-khoa-tai-mui-hong", "khoa-chan-doan-hinh-anh", "khoa-cap-cuu", "khoa-dinh-duong-tiet-che", "khoa-duoc", "khoa-kham-benh", "don-vi-kiem-soat-nhiem-khuan", "khoa-ngoai-tong-hop", "tim-mach", "phau-thuat-gay-me-hoi-suc", "khoa-than-kinh-dot-quy", "khoa-vat-ly-tri-lieu-phuc-hoi-chuc-nang", "khoa-xet-nghiem", "phong-quan-ly-van-hanh", "don-vi-can-thiep-mach-dsa", "don-vi-cap-cuu-ngoai-vien", "don-vi-kham-suc-khoe-ngoai-vien" ] manual_mapping = { "noi tong hop": "tim-mach", "phau thuat gay me hoi suc phong mo": "phau-thuat-gay-me-hoi-suc", "dsa": "don-vi-can-thiep-mach-dsa", "tai mui hong": "chuyen-khoa-tai-mui-hong", "kiem soat nhiem khuan": "don-vi-kiem-soat-nhiem-khuan", "kham suc khoe ngoai vien": "don-vi-kham-suc-khoe-ngoai-vien", "cap cuu ngoai vien": "don-vi-cap-cuu-ngoai-vien", "chan doan hinh anh": "khoa-chan-doan-hinh-anh", "vat ly tri lieu phuc hoi chuc nang": "khoa-vat-ly-tri-lieu-phuc-hoi-chuc-nang", "phuc hoi chuc nang": "khoa-vat-ly-tri-lieu-phuc-hoi-chuc-nang", "kham benh": "khoa-kham-benh", "cap cuu": "khoa-cap-cuu", "than kinh": "khoa-than-kinh-dot-quy", "ngoai tong hop": "khoa-ngoai-tong-hop", "xet nghiem": "khoa-xet-nghiem", "dinh duong tiet che": "khoa-dinh-duong-tiet-che" } chunks = text.split('href="https://bvdaihoc.com.vn/chuyen-khoa/') icons = {} for chunk in chunks[1:]: slug_in_href = chunk.split('"')[0] if '?' in slug_in_href: continue # Try to find absolute img src in srcset src = None srcset_m = re.search(r'srcset=\"([^\"]+)\"', chunk) if srcset_m: # get the first url from srcset srcsets = srcset_m.group(1).split(', ') first = srcsets[0].split(' ')[0] if first.startswith('/_next/image?url='): src = urllib.parse.unquote(first.replace('/_next/image?url=', '').split('&')[0]) if not src: # look for absolute console.bvdaihoc url anywhere in chunk abs_m = re.search(r'https%3A%2F%2Fconsole.bvdaihoc.com.vn%2Fuploads%2Fchuyen-khoa%2F[^&\s\"\'\\]+', chunk) if abs_m: src = urllib.parse.unquote(abs_m.group(0)) if src: title = slug_in_href text_match = re.findall(r'>([^<]+)<', chunk[:1000]) texts = [t.strip() for t in text_match if len(t.strip()) > 3 and not t.strip().startswith('&')] if texts: title = texts[0] s_text = slugify(title) matched = None for key, val in manual_mapping.items(): if slugify(key) in s_text: matched = val break if not matched: for s in db_slugs: if s_text in s or s in s_text or s_text.replace("khoa-", "") in s: matched = s break if matched: icons[matched] = src else: s_slug = slugify(slug_in_href) for s in db_slugs: if s_slug in s or s in s_slug: icons[s] = src break switch_code = ' \n' for slug, src in sorted(icons.items()): switch_code += f' \n' switch_code += f' \n' switch_code += f' Icon\n' switch_code += f' \n' switch_code += ' \n' switch_code += ' \n' switch_code += '
\n' switch_code += ' \n' switch_code += ' \n' switch_code += ' \n' switch_code += '
\n' switch_code += '
\n' switch_code += '
' with open('/tmp/icons_block_img.txt', 'w', encoding='utf-8') as f: f.write(switch_code) print("Wrote block to /tmp/icons_block_img.txt")