2017-08-05 108 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