如何使用共享 url 和命令行从 Google Colab 获取 "raw" ipynb 文件?

How to get "raw" ipynb file from Google Colab using sharing url & command line?

为 Google Colab 获得的“共享 url”链接到一个包含大量额外 HTML 的文件,因此当您尝试使用 wget 或 c[=34 下载它时=],您没有获得有效的 Jupyter .ipynb 文件。

如何使用命令行工具(例如 wget 或 curl 获取文件本身? (注意:我说的是“public”共享 URL,其中“拥有 URL 的任何人都可以查看”。而且我宁愿不必使用专门的 google-驱动命令行 API 可能需要身份验证的工具等)

你可以按这会给你一个有效的 URL 来下载 Jupyter notebook 文件,但我在 Colab 中没有看到任何这样的东西。也许有某种“?form=raw”的东西可以添加到 URL?

或者,是否有推荐的脚本用于删除所有额外的 HTML,只为 .ipynb 文件保留 JSON?

澄清:我不是在谈论在 Colab 中手动移动鼠标并单击“文件 > 下载 > 下载 ipynb”;这很简单!我说的是使用“共享 URL”以编程方式获取文件。

已解决,通过 this post:您只需要从 url!

中提取“文件 ID”

如果分享url是 https://colab.research.google.com/drive/1SxJJc6LsKrjWAM-HhwPrLJBpUzImO5oX?usp=sharing

那么文件 ID 就是“驱动器/”和问号之间的所有内容。

一点bash例子...

$ export fileid=1SxJJc6LsKrjWAM-HhwPrLJBpUzImO5oX
$ wget -O downloaded_file.ipynb 'https://docs.google.com/uc?export=download&id='$fileid

...结果是 downloaded_file.ipynb 处的有效 Jupyter 文件。 :-)

将所有这些放在一个方便的 bash 函数中,然后看起来像这样:

grabcolab() { fileid=$( echo "" | sed -E 's/.*drive\/(.*)\?.*//' ); wget -O colab.ipynb 'https://docs.google.com/uc?export=download&id='$fileid; }

然后我们 运行 grabcolab <sharing url> 如:

grabcolab https://colab.research.google.com/drive/1SxJJc6LsKrjWAM-HhwPrLJBpUzImO5oX?usp=sharing

PS- 题外话但是如果你想从命令行 运行 notebook ,jupytext(可通过 pip install jupytext 安装)对我来说比 jupyter notebook --to-script 好一点,所以我在 运行 笔记本上使用的是

nbrun() { jupyter nbconvert --to script "";  mv  "${1%.*}".py run_this.ipy; ipython run_this.ipy;}

$ grabcolab https://colab.research.google.com/drive/1SxJJc6LsKrjWAM-HhwPrLJBpUzImO5oX?usp=sharing
$ nbrun colab.ipynb