batch update from _meta.js
This commit is contained in:
2
content/CSE5519/CSE5519_A1.md
Normal file
2
content/CSE5519/CSE5519_A1.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic A: 2021 and before: Semantic Segmentation)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_A2.md
Normal file
2
content/CSE5519/CSE5519_A2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic A: 2022: Semantic Segmentation)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_A3.md
Normal file
2
content/CSE5519/CSE5519_A3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic A: 2023 - 2024: Semantic Segmentation)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_A4.md
Normal file
2
content/CSE5519/CSE5519_A4.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic A: 2025: Semantic Segmentation)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_B1.md
Normal file
2
content/CSE5519/CSE5519_B1.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic B: 2021 and before: Vision-Language Models)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_B2.md
Normal file
2
content/CSE5519/CSE5519_B2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic B: 2022: Vision-Language Models)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_B3.md
Normal file
2
content/CSE5519/CSE5519_B3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic B: 2023: Vision-Language Models)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_B4.md
Normal file
2
content/CSE5519/CSE5519_B4.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic B: 2024: Vision-Language Models)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_B5.md
Normal file
2
content/CSE5519/CSE5519_B5.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic B: 2025: Vision-Language Models)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_C1.md
Normal file
2
content/CSE5519/CSE5519_C1.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic C: 2021 and before: Neural Rendering)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_C2.md
Normal file
2
content/CSE5519/CSE5519_C2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic C: 2022: Neural Rendering)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_C3.md
Normal file
2
content/CSE5519/CSE5519_C3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic C: 2023: Neural Rendering)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_C4.md
Normal file
2
content/CSE5519/CSE5519_C4.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic C: 2024 - 2025: Neural Rendering)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_D1.md
Normal file
2
content/CSE5519/CSE5519_D1.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic D: 2021 and before: Image and Video Generation)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_D2.md
Normal file
2
content/CSE5519/CSE5519_D2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic D: 2022: Image and Video Generation)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_D3.md
Normal file
2
content/CSE5519/CSE5519_D3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic D: 2023: Image and Video Generation)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_D4.md
Normal file
2
content/CSE5519/CSE5519_D4.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic D: 2024: Image and Video Generation)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_D5.md
Normal file
2
content/CSE5519/CSE5519_D5.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic D: 2025: Image and Video Generation)
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# CSE5519 Topic E.1 2021 and before: Deep Learning for Geometric Computer Vision
|
# CSE5519 Advances in Computer Vision (Topic E: 2021 and before: Deep Learning for Geometric Computer Vision)
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
>
|
>
|
||||||
|
|||||||
2
content/CSE5519/CSE5519_E2.md
Normal file
2
content/CSE5519/CSE5519_E2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic E: 2022: Deep Learning for Geometric Computer Vision)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_E3.md
Normal file
2
content/CSE5519/CSE5519_E3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic E: 2023: Deep Learning for Geometric Computer Vision)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_E4.md
Normal file
2
content/CSE5519/CSE5519_E4.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic E: 2024: Deep Learning for Geometric Computer Vision)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_E5.md
Normal file
2
content/CSE5519/CSE5519_E5.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic E: 2025: Deep Learning for Geometric Computer Vision)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_F1.md
Normal file
2
content/CSE5519/CSE5519_F1.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic F: 2021 and before: Representation Learning)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_F2.md
Normal file
2
content/CSE5519/CSE5519_F2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic F: 2022: Representation Learning)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_F3.md
Normal file
2
content/CSE5519/CSE5519_F3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic F: 2023: Representation Learning)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_F4.md
Normal file
2
content/CSE5519/CSE5519_F4.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic F: 2024: Representation Learning)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_F5.md
Normal file
2
content/CSE5519/CSE5519_F5.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic F: 2025: Representation Learning)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_G2.md
Normal file
2
content/CSE5519/CSE5519_G2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic G: 2022 and before: Correspondence Estimation and Structure from Motion)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_G3.md
Normal file
2
content/CSE5519/CSE5519_G3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic G: 2023: Correspondence Estimation and Structure from Motion)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_G4.md
Normal file
2
content/CSE5519/CSE5519_G4.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic G: 2024: Correspondence Estimation and Structure from Motion)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_G5.md
Normal file
2
content/CSE5519/CSE5519_G5.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic G: 2025: Correspondence Estimation and Structure from Motion)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_H2.md
Normal file
2
content/CSE5519/CSE5519_H2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic H: 2022 and before: Safety, Robustness, and Evaluation of CV Models)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_H3.md
Normal file
2
content/CSE5519/CSE5519_H3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic H: 2023: Safety, Robustness, and Evaluation of CV Models)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_H4.md
Normal file
2
content/CSE5519/CSE5519_H4.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic H: 2024: Safety, Robustness, and Evaluation of CV Models)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_H5.md
Normal file
2
content/CSE5519/CSE5519_H5.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic H: 2025: Safety, Robustness, and Evaluation of CV Models)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_I1.md
Normal file
2
content/CSE5519/CSE5519_I1.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic I: 2021 and before: Embodied Computer Vision and Robotics)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_I2.md
Normal file
2
content/CSE5519/CSE5519_I2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic I: 2022: Embodied Computer Vision and Robotics)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_I3.md
Normal file
2
content/CSE5519/CSE5519_I3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic I: 2023 - 2024: Embodied Computer Vision and Robotics)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_I4.md
Normal file
2
content/CSE5519/CSE5519_I4.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic I: 2025: Embodied Computer Vision and Robotics)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_J1.md
Normal file
2
content/CSE5519/CSE5519_J1.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic J: 2021 and before: Open-Vocabulary Object Detection)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_J2.md
Normal file
2
content/CSE5519/CSE5519_J2.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic J: 2022: Open-Vocabulary Object Detection)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_J3.md
Normal file
2
content/CSE5519/CSE5519_J3.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic J: 2023 - 2024: Open-Vocabulary Object Detection)
|
||||||
|
|
||||||
2
content/CSE5519/CSE5519_J5.md
Normal file
2
content/CSE5519/CSE5519_J5.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# CSE5519 Advances in Computer Vision (Topic J: 2025: Open-Vocabulary Object Detection)
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# CSE5519 Lecture 1
|
# CSE5519 Advances in Computer Vision (Lecture 1)
|
||||||
|
|
||||||
## What is the class about?
|
## What is the class about?
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# CSE5519 Lecture 2
|
# CSE5519 Advances in Computer Vision (Lecture 2)
|
||||||
|
|
||||||
## A brief history (time) of computer vision
|
## A brief history (time) of computer vision
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# CSE5519 Lecture 3
|
# CSE5519 Advances in Computer Vision (Lecture 3)
|
||||||
|
|
||||||
## Reminders
|
## Reminders
|
||||||
|
|
||||||
|
|||||||
@@ -9,4 +9,60 @@ export default {
|
|||||||
"---":{
|
"---":{
|
||||||
type: 'separator'
|
type: 'separator'
|
||||||
},
|
},
|
||||||
|
CSE5519_C1: "CSE5519 Advances in Computer Vision (Topic C: 2021 and before: Neural Rendering)",
|
||||||
|
CSE5519_F1: "CSE5519 Advances in Computer Vision (Topic F: 2021 and before: Representation Learning)",
|
||||||
|
CSE5519_B1: "CSE5519 Advances in Computer Vision (Topic B: 2021 and before: Vision-Language Models)",
|
||||||
|
CSE5519_D1: "CSE5519 Advances in Computer Vision (Topic D: 2021 and before: Image and Video Generation)",
|
||||||
|
CSE5519_A1: "CSE5519 Advances in Computer Vision (Topic A: 2021 and before: Semantic Segmentation)",
|
||||||
|
CSE5519_E1: "CSE5519 Advances in Computer Vision (Topic E: 2021 and before: Deep Learning for Geometric Computer Vision)",
|
||||||
|
CSE5519_I1: "CSE5519 Advances in Computer Vision (Topic I: 2021 and before: Embodied Computer Vision and Robotics)",
|
||||||
|
CSE5519_J1: "CSE5519 Advances in Computer Vision (Topic J: 2021 and before: Open-Vocabulary Object Detection)",
|
||||||
|
"---":{
|
||||||
|
type: 'separator'
|
||||||
|
},
|
||||||
|
CSE5519_H2: "CSE5519 Advances in Computer Vision (Topic H: 2022 and before: Safety, Robustness, and Evaluation of CV Models)",
|
||||||
|
CSE5519_G2: "CSE5519 Advances in Computer Vision (Topic G: 2022 and before: Correspondence Estimation and Structure from Motion)",
|
||||||
|
CSE5519_A2: "CSE5519 Advances in Computer Vision (Topic A: 2022: Semantic Segmentation)",
|
||||||
|
CSE5519_E2: "CSE5519 Advances in Computer Vision (Topic E: 2022: Deep Learning for Geometric Computer Vision)",
|
||||||
|
CSE5519_C2: "CSE5519 Advances in Computer Vision (Topic C: 2022: Neural Rendering)",
|
||||||
|
CSE5519_F2: "CSE5519 Advances in Computer Vision (Topic F: 2022: Representation Learning)",
|
||||||
|
CSE5519_B2: "CSE5519 Advances in Computer Vision (Topic B: 2022: Vision-Language Models)",
|
||||||
|
CSE5519_D2: "CSE5519 Advances in Computer Vision (Topic D: 2022: Image and Video Generation)",
|
||||||
|
CSE5519_I2: "CSE5519 Advances in Computer Vision (Topic I: 2022: Embodied Computer Vision and Robotics)",
|
||||||
|
CSE5519_J2: "CSE5519 Advances in Computer Vision (Topic J: 2022: Open-Vocabulary Object Detection)",
|
||||||
|
"---":{
|
||||||
|
type: 'separator'
|
||||||
|
},
|
||||||
|
CSE5519_H3: "CSE5519 Advances in Computer Vision (Topic H: 2023: Safety, Robustness, and Evaluation of CV Models)",
|
||||||
|
CSE5519_B3: "CSE5519 Advances in Computer Vision (Topic B: 2023: Vision-Language Models)",
|
||||||
|
CSE5519_G3: "CSE5519 Advances in Computer Vision (Topic G: 2023: Correspondence Estimation and Structure from Motion)",
|
||||||
|
CSE5519_C3: "CSE5519 Advances in Computer Vision (Topic C: 2023: Neural Rendering)",
|
||||||
|
CSE5519_D3: "CSE5519 Advances in Computer Vision (Topic D: 2023: Image and Video Generation)",
|
||||||
|
CSE5519_E3: "CSE5519 Advances in Computer Vision (Topic E: 2023: Deep Learning for Geometric Computer Vision)",
|
||||||
|
CSE5519_F3: "CSE5519 Advances in Computer Vision (Topic F: 2023: Representation Learning)",
|
||||||
|
CSE5519_I3: "CSE5519 Advances in Computer Vision (Topic I: 2023 - 2024: Embodied Computer Vision and Robotics)",
|
||||||
|
CSE5519_J3: "CSE5519 Advances in Computer Vision (Topic J: 2023 - 2024: Open-Vocabulary Object Detection)",
|
||||||
|
CSE5519_A3: "CSE5519 Advances in Computer Vision (Topic A: 2023 - 2024: Semantic Segmentation)",
|
||||||
|
"---":{
|
||||||
|
type: 'separator'
|
||||||
|
},
|
||||||
|
CSE5519_G4: "CSE5519 Advances in Computer Vision (Topic G: 2024: Correspondence Estimation and Structure from Motion)",
|
||||||
|
CSE5519_F4: "CSE5519 Advances in Computer Vision (Topic F: 2024: Representation Learning)",
|
||||||
|
CSE5519_D4: "CSE5519 Advances in Computer Vision (Topic D: 2024: Image and Video Generation)",
|
||||||
|
CSE5519_E4: "CSE5519 Advances in Computer Vision (Topic E: 2024: Deep Learning for Geometric Computer Vision)",
|
||||||
|
CSE5519_B4: "CSE5519 Advances in Computer Vision (Topic B: 2024: Vision-Language Models)",
|
||||||
|
CSE5519_H4: "CSE5519 Advances in Computer Vision (Topic H: 2024: Safety, Robustness, and Evaluation of CV Models)",
|
||||||
|
CSE5519_C4: "CSE5519 Advances in Computer Vision (Topic C: 2024 - 2025: Neural Rendering)",
|
||||||
|
"---":{
|
||||||
|
type: 'separator'
|
||||||
|
},
|
||||||
|
CSE5519_F5: "CSE5519 Advances in Computer Vision (Topic F: 2025: Representation Learning)",
|
||||||
|
CSE5519_B5: "CSE5519 Advances in Computer Vision (Topic B: 2025: Vision-Language Models)",
|
||||||
|
CSE5519_D5: "CSE5519 Advances in Computer Vision (Topic D: 2025: Image and Video Generation)",
|
||||||
|
CSE5519_E5: "CSE5519 Advances in Computer Vision (Topic E: 2025: Deep Learning for Geometric Computer Vision)",
|
||||||
|
CSE5519_A4: "CSE5519 Advances in Computer Vision (Topic A: 2025: Semantic Segmentation)",
|
||||||
|
CSE5519_G5: "CSE5519 Advances in Computer Vision (Topic G: 2025: Correspondence Estimation and Structure from Motion)",
|
||||||
|
CSE5519_I4: "CSE5519 Advances in Computer Vision (Topic I: 2025: Embodied Computer Vision and Robotics)",
|
||||||
|
CSE5519_H5: "CSE5519 Advances in Computer Vision (Topic H: 2025: Safety, Robustness, and Evaluation of CV Models)",
|
||||||
|
CSE5519_J5: "CSE5519 Advances in Computer Vision (Topic J: 2025: Open-Vocabulary Object Detection)",
|
||||||
}
|
}
|
||||||
191
toolboxes/generate_markdown_from_meta.py
Normal file
191
toolboxes/generate_markdown_from_meta.py
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Script to generate markdown files from _meta.js entries.
|
||||||
|
For each entry in _meta.js, creates a markdown file with the key as filename and value as H1.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
def parse_meta_js(file_path):
|
||||||
|
"""Parse the _meta.js file and extract entries."""
|
||||||
|
with open(file_path, 'r', encoding='utf-8') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
# Remove export default and clean up
|
||||||
|
content = content.replace('export default', '').strip()
|
||||||
|
content = content.replace('{', '').replace('}', '').strip()
|
||||||
|
|
||||||
|
entries = {}
|
||||||
|
lines = content.split('\n')
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
line = line.strip()
|
||||||
|
if not line or line.startswith('//') or line.startswith('"---"'):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Match key: "value" pattern
|
||||||
|
match = re.match(r'(\w+):\s*"([^"]+)"', line)
|
||||||
|
if match:
|
||||||
|
key = match.group(1)
|
||||||
|
value = match.group(2)
|
||||||
|
entries[key] = value
|
||||||
|
|
||||||
|
return entries
|
||||||
|
|
||||||
|
def get_user_confirmation(action, file_path, title):
|
||||||
|
"""Get user confirmation for file operations."""
|
||||||
|
print(f"\n{action}: {file_path}")
|
||||||
|
print(f"Title: {title}")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
response = input("Proceed? (y/n/a for all/q to quit): ").lower().strip()
|
||||||
|
if response in ['y', 'yes']:
|
||||||
|
return True
|
||||||
|
elif response in ['n', 'no']:
|
||||||
|
return False
|
||||||
|
elif response in ['a', 'all']:
|
||||||
|
return 'all'
|
||||||
|
elif response in ['q', 'quit']:
|
||||||
|
return 'quit'
|
||||||
|
else:
|
||||||
|
print("Please enter 'y' (yes), 'n' (no), 'a' (all), or 'q' (quit)")
|
||||||
|
|
||||||
|
def create_or_update_markdown_file(file_path, title, auto_confirm=False):
|
||||||
|
"""Create a new markdown file or update existing one with correct H1."""
|
||||||
|
file_path = Path(file_path)
|
||||||
|
|
||||||
|
# Create directory if it doesn't exist
|
||||||
|
file_path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
if file_path.exists():
|
||||||
|
# Read existing file to check current H1
|
||||||
|
with open(file_path, 'r', encoding='utf-8') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
lines = content.split('\n')
|
||||||
|
current_h1 = None
|
||||||
|
for line in lines:
|
||||||
|
if line.startswith('# '):
|
||||||
|
current_h1 = line[2:].strip()
|
||||||
|
break
|
||||||
|
|
||||||
|
# Check if H1 needs updating
|
||||||
|
if current_h1 == title:
|
||||||
|
print(f"Skipped: {file_path} (H1 already correct)")
|
||||||
|
return True
|
||||||
|
|
||||||
|
if not auto_confirm:
|
||||||
|
action = f"Update existing file"
|
||||||
|
if current_h1:
|
||||||
|
action += f" (current H1: '{current_h1}')"
|
||||||
|
else:
|
||||||
|
action += " (no H1 found)"
|
||||||
|
|
||||||
|
confirmation = get_user_confirmation(action, file_path, title)
|
||||||
|
if confirmation == 'quit':
|
||||||
|
return 'quit'
|
||||||
|
elif confirmation == 'all':
|
||||||
|
auto_confirm = True
|
||||||
|
elif not confirmation:
|
||||||
|
print(f"Skipped: {file_path}")
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Update the file
|
||||||
|
updated_lines = []
|
||||||
|
h1_updated = False
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
# Check if this is an H1 line (starts with #)
|
||||||
|
if line.startswith('# ') and not h1_updated:
|
||||||
|
updated_lines.append(f"# {title}")
|
||||||
|
h1_updated = True
|
||||||
|
else:
|
||||||
|
updated_lines.append(line)
|
||||||
|
|
||||||
|
# If no H1 was found, add it at the beginning
|
||||||
|
if not h1_updated:
|
||||||
|
updated_lines.insert(0, f"# {title}")
|
||||||
|
updated_lines.insert(1, "") # Add empty line after H1
|
||||||
|
|
||||||
|
# Write updated content
|
||||||
|
with open(file_path, 'w', encoding='utf-8') as f:
|
||||||
|
f.write('\n'.join(updated_lines))
|
||||||
|
|
||||||
|
print(f"Updated: {file_path}")
|
||||||
|
else:
|
||||||
|
if not auto_confirm:
|
||||||
|
confirmation = get_user_confirmation("Create new file", file_path, title)
|
||||||
|
if confirmation == 'quit':
|
||||||
|
return 'quit'
|
||||||
|
elif confirmation == 'all':
|
||||||
|
auto_confirm = True
|
||||||
|
elif not confirmation:
|
||||||
|
print(f"Skipped: {file_path}")
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Create new file
|
||||||
|
content = f"# {title}\n\n"
|
||||||
|
with open(file_path, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
print(f"Created: {file_path}")
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Get current working directory
|
||||||
|
cwd = Path.cwd()
|
||||||
|
print(f"Current working directory: {cwd}")
|
||||||
|
|
||||||
|
# Path to the _meta.js file (relative to current working directory)
|
||||||
|
meta_file = cwd / "content/CSE5519/_meta.js"
|
||||||
|
|
||||||
|
if not meta_file.exists():
|
||||||
|
print(f"Error: {meta_file} not found!")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Parse the _meta.js file
|
||||||
|
entries = parse_meta_js(meta_file)
|
||||||
|
|
||||||
|
if not entries:
|
||||||
|
print("No entries found in _meta.js")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Output directory for markdown files (relative to current working directory)
|
||||||
|
output_dir = cwd / "content/CSE5519"
|
||||||
|
|
||||||
|
# Filter out separators and special entries
|
||||||
|
valid_entries = {k: v for k, v in entries.items() if k != "index" and not k.startswith("---")}
|
||||||
|
|
||||||
|
print(f"Found {len(valid_entries)} entries to process from {meta_file}")
|
||||||
|
print("Options: y=yes, n=no, a=all (auto-confirm remaining), q=quit")
|
||||||
|
print("-" * 50)
|
||||||
|
|
||||||
|
auto_confirm = False
|
||||||
|
processed = 0
|
||||||
|
skipped = 0
|
||||||
|
|
||||||
|
# Generate markdown files
|
||||||
|
for key, title in valid_entries.items():
|
||||||
|
# Create markdown file path (relative to current working directory)
|
||||||
|
md_file = output_dir / f"{key}.md"
|
||||||
|
|
||||||
|
# Create or update the markdown file
|
||||||
|
result = create_or_update_markdown_file(md_file, title, auto_confirm)
|
||||||
|
|
||||||
|
if result == 'quit':
|
||||||
|
print("\nOperation cancelled by user.")
|
||||||
|
break
|
||||||
|
elif result:
|
||||||
|
processed += 1
|
||||||
|
else:
|
||||||
|
skipped += 1
|
||||||
|
|
||||||
|
print("-" * 50)
|
||||||
|
print(f"Completed: {processed} files processed, {skipped} files skipped")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user