Files
NoteNextra-origin/pages/Math3200/public_html_ifram_gen.py
2025-01-19 20:30:45 -06:00

53 lines
2.1 KiB
Python

"""
This file is used to wrap the html files in the local directory into md files.
Make them renderable in the website.
"""
import os
import re
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
def wrap_html_files(file_name):
with open(os.path.join(BASE_DIR, file_name), "r", encoding="utf-8") as f:
content = f.read()
with open(os.path.join(BASE_DIR, file_name.replace(".html", ".md")), "w", encoding="utf-8") as f:
f.write(content)
os.remove(os.path.join(BASE_DIR, file_name))
def parse_html_file(file_name):
if not file_name.endswith(".md"):
raise ValueError("File name should end with .md")
with open(os.path.join(BASE_DIR, file_name), "r", encoding="utf-8") as f:
content = f.read()
with open(os.path.join(BASE_DIR, file_name), "w", encoding="utf-8") as f:
# remove doctype
content = re.sub(r"<!DOCTYPE html>", "", content, flags=re.DOTALL)
# remove meta tags
content = re.sub(r"<meta.*?>", "", content, flags=re.DOTALL)
# remove title
content = re.sub(r"<title>.*?</title>", "", content, flags=re.DOTALL)
# remove the <script> tags
content = re.sub(r"<script>.*?</script>", "", content, flags=re.DOTALL)
# remove the <style> tags
content = re.sub(r"<style>.*?</style>", "", content, flags=re.DOTALL)
# parse math-in-line
content = re.sub(r'<span class="math inline">\\\((.*?)\\\)</span>', r'$\1$', content)
# parse math display
content = re.sub(r'<span class="math display">\\\[(.*?)\\\]</span>', r'$$\1$$', content)
f.write(content)
# for file in os.listdir(BASE_DIR):
# if file.endswith(".html"):
# wrap_html_files(file)
# elif file.endswith(".md"):
# parse_html_file(file)
# wrap_html_files("Lecture_1.html")
for i in range(1, 41):
with open(os.path.join(BASE_DIR, f"Lecture_{i}.mdx"), "w", encoding="utf-8") as f:
f.write("<div style={{ width: '100%', height: '25px'}}></div><iframe src=\"https://static.notenextra.trance-0.com/Math3200/Lecture_"+str(i)+".html\" title=\"Math 3200 Lecture "+str(i)+"\" style={{ width: '100%', height: '100vh', border: 'none' }}/>")