Metadata-Version: 2.1
Name: nbmediasplit
Version: 0.2.0
Summary: 
Home-page: https://github.com/wrist/nbmediasplit
License: MIT
Author: wrist
Author-email: stoicheia1986@gmail.com
Requires-Python: >=3.5,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Dist: beautifulsoup4 (>=4.9,<5.0)
Requires-Dist: click (>=7.1,<8.0)
Requires-Dist: lxml (>=4.5,<5.0)
Project-URL: Repository, https://github.com/wrist/nbmediasplit
Description-Content-Type: text/markdown

![pytest](https://github.com/wrist/nbmediasplit/workflows/pytest/badge.svg)

# nbmediasplit

`nbmediasplit` is a script to extract base64 encoded image and audio PCM embedded in .ipynb file and save them into specified directories.
`nbmediasplit` also converts ipynb file to a new one which refers to stored image and audio files.

## install

`pip install nbmediasplit`

## usage

### extract image files from ipynb

`nbmediasplit input.ipynb -i image_out_dir`

or

`nbmediasplit input.ipynb --imgdir image_out_dir`

The above command extract image files from `input.ipynb` and store them to `image_out_dir`.
`-i` or `--imgdir` specifies a directory to store image files.
Filenames of the stored image are numbered in sequential order(`0.png`, ...).

### extract audio files from ipynb

`nbmediasplit input.ipynb -w wav_out_dir`

or

`nbmediasplit input.ipynb --wavdir wav_out_dir`

The above command extract audio files from `input.ipynb` and store them to `wav_out_dir`.
`-w` or `--wavdir` specifies a directory to store audio files.
Filenames of the stored audio are numbered in sequential order(`0.wav`, ...).

### extract image and audio files from ipynb

`nbmediasplit input.ipynb -i image_out_dir -w wav_out_dir`

or

`nbmediasplit input.ipynb --imgdir image_out_dir --wavdir wav_out_dir`

The above command does below things.

* extract image files from `input.ipynb` and store them to `image_out_dir`
* extract audio files from `input.ipynb` and store them to `wav_out_dir`.

`-i` or `--imgdir` specifies a directory to store image files.
`-w` or `--wavdir` specifies a directory to store audio files.
Filenames of the stored image are numbered in sequential order(`0.png`, ...).
Filenames of the stored audio are numbered in sequential order(`0.wav`, ...).

### extract image and audio files from ipynb and convert ipynb

If you use `-o` or `--output` option like below command,
you can convert `input.ipynb` to new ipynb file which refers to stored image files and audio files directly.

`nbmediasplit input.ipynb -i image_out_dir -w wav_out_dir -o converted.ipynb`

or

`nbmediasplit input.ipynb --imgdir image_out_dir --wavdir wav_out_dir --output converted.ipynb`

The above command extract image files and audio files, and store them to specified directories, and generate new ipynb file `converted.ipynb`.
`converted.ipynb` includes same content as `input.ipynb`, but base64 encoded image and audio data are replaced to HTML tag refers to stored files directly like below.

* image tag
    * `<img src="${image_out_dir}/${n}.png" />`
* audio tag
    * `<audio controls preload="none"><source  src="${wav_out_dir}/${n}.wav" type="audio/wav" /></audio>`

Also, you can use `--img-prefix` and `--wav-prefix` options.
These options can change the path embeded in src attribute of output html like below(actual files are stored `image_out_dir` and `wav_out_dir`).

* image tag
    * `<img src="${img-prefix}/${n}.png" />`
* audio tag
    * `<audio controls preload="none"><source  src="${wav-prefix}/${n}.wav" type="audio/wav" /></audio>`

### show help

`nbmediasplit --help`

## note ##

Unless you trust the notebook converted by nbmediasplit in jupyter, you can't load audio source because of html sanitization.
To trust notebook in jupyterlab, go to command pallet in the left sidebar(on osx, type `shift+cmd+c`) and execute `trust notebook`,
then you'll load audio source if the source path is correct.

