2017-08-05 36 views
3

我需要在终端下载.ipynb文件并运行它(使用nbconvert或类似的东西)。使用CLI从外部URL下载Jupyter笔记本

  1. 我试图使用wgetcurl这一点,但我得到的网页(有标记和Javascript代码),而不是可运行的笔记本电脑。

  2. 然后我用Jupyter REST API。为了得到笔记本的内容,我使用了/api/contents/<path>/<file>即,我只是在URL中将notebooks更改为api/contents。我得到了一些附加文本的笔记本内容(我将不得不稍后过滤它),并且...以一行的形式。所以,我有很多工作要将这一行转换为工作笔记本。

是否有可能通过终端下载Jupyter笔记本电脑,并获得工作.ipynb文件(同文件可以通过download as .ipynb在Jupyter的Web UI下载)。

回答

1

我并不是jupyter的专家,但如果你可以做download as .ipynb并使用浏览器获取文件,那么只需在Chrome开发者工具打开的情况下重复该步骤,然后查找浏览器在网络标签中点击的URL 。您可以在开发人员工具中将curl命令复制并粘贴到终端中以获得相同的效果。 (对不起,我没有正在运行的笔记本电脑,以确保我的建议有效,希望它有帮助)

1

您必须使用Authorization标头和Content-Type application/json,然后笔记本将位于“内容”返回的字典的一部分。您可以使用jq来获取字典的内容部分。如果在Mac OS X只是brew install jq

curl -H "Authorization: Token {YOUR_TOKEN}" -H "Content-Type: application/json" -XGET https://{YOUR_JUPYTER_DOMAIN}/user/{USERNAME}/api/contents/{PATH_TO_IPYNB} | jq ".content" 

您也可以在JQ部分之后添加输出重定向> my_downloaded.ipynb

然后只是jupyter笔记本打开

对于/用户请确认您个人服务器已启动,因此您必须登录到您的用户帐户或进入控制面板,如果它没有打开或被剔除。 对于/服务,服务器通常是代理服务器,所以它应该始终处于打开状态。

URL中使用了/服务

https://{YOUR_JUPYTER_DOMAIN}/services/{SERVICENAME}/api/contents/{PATH_TO_IPYNB} 
0

我还发现,简单的解决方案。但它只适用于笔记本未通过令牌加以保护。笔记本电脑可以通过wget下载。

假设我们的笔记本电脑是由以下网址位于:

http://<DOMAIN>:<PORT>/notebooks/my_notebook.ipynb 

我们可以简单地取代“笔记本电脑”到“文件”,并通过以下命令下载源ipynb文件:

wget http://<DOMAIN>:<PORT>/files/my_notebook.ipynb