#!/usr/bin/env python3 """Inject lightbox CSS and JS into all Guanghan wiki pages.""" import os import re LIGHTBOX_CSS = """ .wiki-article img[data-wiki-asset] { cursor: zoom-in; } .wiki-image-lightbox { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; padding: 24px; background: rgba(32,33,34,0.84); z-index: 10000; box-sizing: border-box; } .wiki-image-lightbox[hidden] { display: none; } .wiki-image-lightbox-panel { position: relative; width: min(1120px, 96vw); max-height: 92vh; overflow: auto; margin: 0; padding: 10px; border: 1px solid #a2a9b1; background: #fff; box-shadow: 0 12px 38px rgba(0,0,0,0.35); box-sizing: border-box; } .wiki-image-lightbox-panel img { display: block; width: 100%; height: auto; max-height: 82vh; object-fit: contain; background: #000; } .wiki-image-lightbox-close { position: sticky; top: 0; float: right; width: 30px; height: 30px; margin: -2px -2px 8px 10px; border: 1px solid #a2a9b1; background: #eaecf0; color: #202122; font-weight: bold; line-height: 26px; cursor: pointer; } .wiki-image-lightbox-close:hover, .wiki-image-lightbox-close:focus { background: #fff; } body.wiki-image-lightbox-open { overflow: hidden; } @media (max-width: 820px) { .wiki-image-lightbox { padding: 12px; } .wiki-image-lightbox-panel { width: 98vw; max-height: 94vh; } }""" LIGHTBOX_JS = """""" BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) WIKI_DIR = os.path.join(BASE_DIR, 'data', 'wiki') files = [ 'guanghan_bl01_zh.html', 'guanghan_bl02_zh.html', 'guanghan_bl03_zh.html', 'guanghan_ghc01_zh.html', 'guanghan_ghc02_zh.html', 'guanghan_ghc03_zh.html', 'guanghan_ghc04_zh.html', 'guanghan_jc01_zh.html', 'guanghan_bl01_gallery_zh.html', 'guanghan_bl02_gallery_zh.html', 'guanghan_bl03_gallery_zh.html', 'guanghan_ghc01_gallery_zh.html', 'guanghan_ghc02_gallery_zh.html', 'guanghan_ghc03_gallery_zh.html', 'guanghan_ghc04_gallery_zh.html', 'guanghan_jc01_gallery_zh.html', ] for fname in files: fpath = os.path.join(WIKI_DIR, fname) with open(fpath, 'r', encoding='utf-8') as f: content = f.read() if 'wiki-image-lightbox' in content: print(f'SKIP (already done): {fname}') continue # Inject CSS before content = content.replace('', LIGHTBOX_CSS + '\n') # Inject JS before content = content.replace('', LIGHTBOX_JS + '\n') with open(fpath, 'w', encoding='utf-8') as f: f.write(content) print(f'DONE: {fname}') print('=== Injection complete ===')