Jupyter server proxy for OpenRefine
Based on the original https://github.com/psychemedia/jupyterserverproxy-openrefine which has some docs, although the reponame/install instructions will need updating for this repo. I will pop the package on PyPi at some point.
Jupyter-server-proxy config for running OpenRefine.
Install as:
pip install nb-serverproxy-openrefine
To install directly from this repo:
pip install git+https://github.com/innovationOUtside/nb_serverproxy_openrefine.git
OpenRefine can now be started and launched from the notebook homepage New menu:
Or from the JupyterLab launcher:
The OpenRefine client can be found on the openrefine
path (the port number is allocated dynamically).
Calling the path directly (eg starting MyBinder with the path openrefine
, or adding ?urlpath=openrefine
to the Binder URL) will launch the Binder container directly into the OpenRefine GUI application.
The directory path into which the OpenRefine project files are saved is $HOME/openrefine
by default, although you can trump it via the $REFINE_DIR
global variable:
openrefine_path = os.getenv("REFINE_DIR") if "REFINE_DIR" in os.environ else str(Path.home() / 'openrefine')
The host openrefine will use is 127.0.0.1
by default. This can be overriden with the $REFINE_DOMAIN
global variable
Early original work on getting OpenRefine running in MyBinder was done by @betatim (betatim/openrefineder) and @yuvipanda helped me get my head round various bits of jupyterhub/jupyter-server-proxy/ which is key to proxying web services via Jupyter. @manics PR for handling predefined, rather than allocated, port mappings also made life much easier...
A Python client is also available for working with OpenRefine:
opencultureconsulting/openrefine-client
looks to be the best supported but seems to rely on Python 2.7; there is a currently failing PR to add Python3 support.dbutlerdb /refine-client-py
works with Python3 but lagsopencultureconsulting /openrefine-client
Using the client requires Open Refine to be running. TO DO: should we hardwire the port? Else how do we know where to connect?
:
When the client works with Python3 I will add it as an optional dependency to this package.