mirror of
https://github.com/NotXia/unibo-ai-notes.git
synced 2025-12-15 02:52:22 +01:00
57 lines
2.5 KiB
Python
57 lines
2.5 KiB
Python
import argparse
|
|
import os
|
|
import pathlib
|
|
import json
|
|
|
|
METADATA_FILENAME = "metadata.json"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(prog="README updater")
|
|
parser.add_argument("--src-path", type=str, required=True, help="Path to the .tex sources")
|
|
parser.add_argument("--readme-path", type=str, required=True, help="Path to the readme")
|
|
parser.add_argument("--gh-link", type=str, required=True, help="Link to the GitHub repo")
|
|
args = parser.parse_args()
|
|
|
|
notes_metadata = {}
|
|
|
|
# Reads courses metadata
|
|
for root, dirs, files in os.walk(args.src_path):
|
|
if METADATA_FILENAME in files:
|
|
with open(os.path.join(root, METADATA_FILENAME)) as f:
|
|
metadata = json.load(f)
|
|
dir_name = pathlib.PurePath(root).name
|
|
gh_path = os.path.join(args.gh_link, dir_name)
|
|
|
|
if metadata["year"] not in notes_metadata: notes_metadata[metadata["year"]] = {}
|
|
if metadata["semester"] not in notes_metadata[metadata["year"]]: notes_metadata[metadata["year"]][metadata["semester"]] = {}
|
|
|
|
notes_metadata[metadata["year"]][metadata["semester"]][metadata["name"]] = {
|
|
"name": metadata["name"],
|
|
"content": [
|
|
{
|
|
"name": pdf["name"],
|
|
"url": os.path.join(gh_path, pdf["path"])
|
|
}
|
|
for pdf in metadata["pdfs"]
|
|
]
|
|
}
|
|
|
|
# Appends links to README
|
|
with open(args.readme_path, "a") as readme_f:
|
|
readme_f.write(f"\n\n## Table of contents\n")
|
|
for year in sorted(notes_metadata.keys()):
|
|
readme_f.write(f"\n### Year {year}\n")
|
|
|
|
for semester in sorted(notes_metadata[year].keys()):
|
|
for course in sorted(notes_metadata[year][semester]):
|
|
course_name = notes_metadata[year][semester][course]["name"]
|
|
course_content = notes_metadata[year][semester][course]["content"]
|
|
|
|
if (len(course_content) == 1) and (course_content[0]["name"] is None):
|
|
readme_f.write(f"- [**{course_name}**]({course_content[0]['url']})\n")
|
|
else:
|
|
readme_f.write(f"- **{course_name}**\n")
|
|
for content in course_content:
|
|
readme_f.write(f" - [{content['name']}]({content['url']})\n")
|