Last active
May 16, 2022 01:20
-
-
Save rhee/f42aa18c8e3dcb7b6c03c23e750124f7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# coding: utf-8 | |
# // update: 2022-04-15 - single-cell python version | |
# // gist: https://gist.github.com/rhee/f42aa18c8e3dcb7b6c03c23e750124f7 | |
with open('__nb-convert__.bash', 'w') as fout: | |
fout.write('''#!/bin/bash | |
try_nbconvert() { | |
local prefix="$1"; shift; | |
if test ! -z "$prefix" | |
then | |
if test -x "$prefix/bin/jupyter-nbconvert" | |
then | |
exec "$prefix/bin/jupyter" "nbconvert" "$@" | |
fi | |
if test -x "$prefix/Scripts/jupyter-nbconvert.exe" | |
then | |
exec "$prefix/Scripts/jupyter.exe" "nbconvert" "$@" | |
fi | |
fi | |
} | |
for prefix in "$CONDA_PREFIX" "$CONDA_PREFIX_1" "$CONDA_PREFIX_2" \ | |
"$CONDA_PREFIX_3" "$CONDA_PREFIX_4" "$CONDA_PREFIX_5" \ | |
"$CONDA_PREFIX_6" "$CONDA_PREFIX_7" "$CONDA_PREFIX_8" \ | |
"$CONDA_PREFIX_9" | |
do | |
test -z "$prefix" && break | |
try_nbconvert "$prefix" "$@" | |
done | |
for prefix in "/opt/conda" "/opt/conda/envs/jupyter" | |
do | |
try_nbconvert "$prefix" "$@" | |
done | |
for prefix in "$(dirname "$CONDA_PYTHON_EXE")" "$(dirname $(dirname "$CONDA_PYTHON_EXE"))" | |
do | |
try_nbconvert "$prefix" "$@" | |
done | |
echo "nbconvert command not found. abort." 1>&2 | |
exit 1 | |
''') | |
from IPython.display import display, update_display, clear_output, Javascript | |
# add flag | |
display(Javascript(''' | |
window.nb_export_html_flag = true | |
console.log('nb_export_html_flag set:', window.nb_export_html_flag) | |
'''),display_id='flag_display') | |
from os.path import realpath | |
from socket import gethostname | |
report_dir = realpath('report/{:s}'.format(gethostname()))+'/' | |
print('report_dir:',report_dir) | |
import os | |
os.makedirs(report_dir,exist_ok=True) | |
from datetime import datetime | |
exp_datetime = datetime.now().strftime('%Y%m%d_%H%M%S') | |
print('exp_datetime:',exp_datetime) | |
script = ''' | |
require(["base/js/namespace"], function(IPython) { | |
if (window.nb_export_html_flag) { | |
const nb_name = IPython.notebook.notebook_name.replace( /\.ipynb$/, ''); | |
console.log('nb_name defined:',nb_name) | |
//const exp_datetime = new Date().toISOString().replaceAll(':','-') | |
const save_cmd = '!' + | |
'bash __nb-convert__.bash --to html --stdout "' + nb_name + '.ipynb"' + | |
' > "'''+report_dir+'''' + nb_name + '--'''+exp_datetime+'''.html"' | |
console.log('save_cmd defined:',save_cmd) | |
IPython.notebook.save_checkpoint().then(function(){ | |
if (window.nb_export_html_flag) { | |
IPython.notebook.kernel.execute(save_cmd,{ | |
iopub: { | |
output: function(response) { | |
console.log(response.content) | |
//IPython.notebook.kernel.execute('import os; os._exit(0)') | |
window.nb_export_html_flag = false /// remove flag 1차 | |
const remove_flag_cmd = 'update_display(None, display_id="flag_display") ### /// remove flag 2차' | |
IPython.notebook.kernel.execute(remove_flag_cmd) | |
}}}) | |
console.log('save_cmd executed:',save_cmd) | |
} | |
}) | |
} | |
}) | |
''' | |
# execute nb-convert.bash | |
display(Javascript(script)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment