Generate the index from Keywords in each file.#
import glob, json
from IPython.display import display, Markdown
def generate_index():
all_keywords = set()
index = {}
for ipynb in glob.glob('**/*.ipynb'):
with open(ipynb) as f:
j = json.loads(f.read())
for cell in j['cells']:
if cell['cell_type'] == 'markdown':
for line in cell['source']:
if 'KEYWORDS' in line:
keywords = [x.strip() for x in line.replace('- KEYWORDS:', '').strip().split(',')]
else:
keywords = []
index[ipynb] = keywords
all_keywords = all_keywords.union(keywords)
all_keywords = sorted(list(all_keywords))
for key in all_keywords:
display(Markdown(f'## {key}'))
for ipynb in index:
if key in index[ipynb]:
display(Markdown(f'- [{ipynb}]({ipynb})'))
Generate tag index#
import re
def generate_tags():
all_keywords = set()
index = {}
for ipynb in glob.glob('*/*.ipynb'):
with open(ipynb) as f:
j = json.loads(f.read())
for cell in j['cells']:
if cell['cell_type'] == 'markdown':
for line in cell['source']:
m = re.findall(' #[a-zA-Z]+', line)
if m:
for tag in m:
all_keywords.add(tag)
index[ipynb] = m
all_keywords = sorted(list(all_keywords))
for key in all_keywords:
display(Markdown(f'## {key}'))
for ipynb in index:
if key in index[ipynb]:
display(Markdown(f'- [{ipynb}]({ipynb})'))