31 lines
989 B
Python
31 lines
989 B
Python
import os
|
|
import codecs
|
|
import json
|
|
|
|
def add_toc(ipynb_file):
|
|
f = codecs.open(ipynb_file, 'r')
|
|
source = f.read()
|
|
y = json.loads(source)
|
|
toc = ["\n"]
|
|
for item in y["cells"]:
|
|
if item["cell_type"]=='markdown' and len(item['source'])>0:
|
|
item_start = item['source'][0].strip("\n")
|
|
if item_start.startswith("#"):
|
|
l = len(item_start.split()[0])
|
|
if l<=3 and l>1:
|
|
name = " ".join(item_start.split(" ")[1:])
|
|
tag = "-".join(item_start.split(" ")[1:])
|
|
tab = " "*(l-2)
|
|
toc.append(f' {tab}- [{name}](#{tag})\n')
|
|
|
|
y["cells"][0]['source']= y["cells"][0]['source'][0:1]
|
|
y["cells"][0]['source'].extend(toc)
|
|
f = codecs.open(ipynb_file, 'w')
|
|
f.write(json.dumps(y))
|
|
f.close()
|
|
|
|
for file in os.listdir("."):
|
|
print(file)
|
|
if file.endswith("ipynb") and file[0].isdigit():
|
|
print(file)
|
|
add_toc(file) |