alKoGolik's picture
Upload 169 files
c87c295 verified
import nbformat
from nbformat import v4 as nbf
import ansi2html
import os
import argparse
# main code
parser = argparse.ArgumentParser()
parser.add_argument("-n", "--notebook", help="Path to the output notebook", default=None, type=str)
args = parser.parse_args()
if args.notebook:
notebook_path = os.path.join(os.getcwd(), args.notebook)
base, ext = os.path.splitext(notebook_path)
if ext.lower() != '.ipynb':
notebook_path += '.ipynb'
if os.path.exists(notebook_path):
print(f'File at {notebook_path} already exists. Please choose a different file name.')
exit()
# Global variable for code cells
nb = nbf.new_notebook()
def ansi_to_html(ansi_text):
converter = ansi2html.Ansi2HTMLConverter()
html_text = converter.convert(ansi_text)
return html_text
def write_to_notebook():
if args.notebook:
with open(notebook_path, 'w', encoding='utf-8') as f:
nbformat.write(nb, f)
def add_code_cell_to_notebook(code):
code_cell = nbf.new_code_cell(source=code)
nb['cells'].append(code_cell)
write_to_notebook()
def add_code_cell_output_to_notebook(output):
html_content = ansi_to_html(output)
cell_output = nbf.new_output(output_type='display_data', data={'text/html': html_content})
nb['cells'][-1]['outputs'].append(cell_output)
write_to_notebook()
def add_code_cell_error_to_notebook(error):
nbf_error_output = nbf.new_output(
output_type='error',
ename='Error',
evalue='Error message',
traceback=[error]
)
nb['cells'][-1]['outputs'].append(nbf_error_output)
write_to_notebook()
def add_image_to_notebook(image, mime_type):
image_output = nbf.new_output(output_type='display_data', data={mime_type: image})
nb['cells'][-1]['outputs'].append(image_output)
write_to_notebook()
def add_markdown_to_notebook(content, title=None):
if title:
content = "##### " + title + ":\n" + content
markdown_cell = nbf.new_markdown_cell(content)
nb['cells'].append(markdown_cell)
write_to_notebook()