从colab笔记本Url下载ipynb



给定一个colab笔记本的列表,我如何使用wget或curl下载其中每个笔记本的ipynb?

  • https://colab.research.google.com/notebooks/gpu.ipynb
  • https://colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/tf2_arbitrary_image_stylization.ipynb
  • https://colab.research.google.com/drive/1sVsoBd9AjckIXThgtZhGrHRfFI6UUYOo

这个问题解释了如何下载存储在gdrive上的笔记本电脑,但存储在github或colab目录(colab.research.google.com/notebooks/(或其他来源的笔记本电脑呢?

假设所有目标url都在一个文本文件中,我建议有两个选项。将代码保存到.sh文件(例如dlnb.sh(中,并将所有URL保存在类似的文本文件(例如,list.txt(中

https://colab.research.google.com/notebooks/gpu.ipynb
https://colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/tf2_arbitrary_image_stylization.ipynb
https://colab.research.google.com/drive/1sVsoBd9AjckIXThgtZhGrHRfFI6UUYOo

tl;dr:我建议使用使用gdown的解决方案2(只需运行pip install gdown(。由于wget无法保存url没有其名称的笔记本。然后在终端中运行bash dlnb.sh list.txt

1.wgetcat。这一个有一个原始链接,我们只使用wget,所以没有名称的链接将保存为random_id_here.ipynb

dlnb.sh

grabid() { fileid=$( echo "$1" | egrep -o '(w|-){26,}' ); echo $fileid; }
cat $1 | while read line || [[ -n $line ]]; 
do 
if [[ $line != *.ipynb ]]; then
id=$(grabid "$line")
wget -O $id.ipynb 'https://docs.google.com/uc?export=download&id='$id;
else
wget $line;
fi;
done

我取这个reg ex,它是egrep -o '(w|-){26,}',并将其插入我的函数中,它将从链接中提取并返回id

grabid() { fileid=$( echo "$1" | egrep -o '(w|-){26,}' ); echo $fileid; }

通过调用grabid()分配id,line是url

id=$(grabid "$line")

然后使用while read line || [[ -n $line ]];循环通过每个line并使用wget下载,您可以在这里的代码中看到while循环的解释

wget -O $id.ipynb 'https://docs.google.com/uc?export=download&id='$id;

2.通过安装gdown获得更好的解决方案。这与解决方案1类似,但使用gdown而不是wget

dlnb.sh

grabid() { fileid=$( echo "$1" | egrep -o '(w|-){26,}' ); echo $fileid; }
cat $1 | while read line || [[ -n $line ]]; 
do 
if [[ $line != *.ipynb ]]; then
gdown $(grabid "$line");
else
gdown $line;
fi;
done

如果url不是以.ipynb-if [[ $line != *.ipynb ]];结尾,那么gdown将获取id$(grabid "$line");并下载它,而解决方案1将把笔记本保存为id_of_notebook。ipynb.gdown将保存为其名称。

最新更新