This commit is contained in:
Puppet
2023-07-20 14:11:37 +08:00
2 changed files with 34 additions and 1238 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,33 @@
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':
if len(item["source"]) == 0:
continue
# print(item["source"])
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("."):
if file.endswith("ipynb") and file[0].isdigit():
add_toc(file)