使用HTTP条件获取数据的命令行工具
项目描述
条件获取
使用HTTP条件获取数据的命令行工具。
安装
pip install conditional-get
使用
第一次运行此命令时,它将下载文件并将ETag(如果返回)存储在名为etags.json
的文件中。
第二次运行此命令针对相同的URL时,它将使用该ETag,可能产生一个304 Not Modified
响应,从而通过不重新下载文件来节省带宽。
# First run - will fetch the file
conditional-get https://static.simonwillison.net/static/2020/Simon_Willison__TIL.png
# Second run - will only fetch the file if it has changed
conditional-get https://static.simonwillison.net/static/2020/Simon_Willison__TIL.png
文件名将根据URL派生。您可以使用-o
选项自定义文件名
conditional-get https://static.simonwillison.net/static/2020/Simon_Willison__TIL.png -o til.png
默认情况下,检索到的URL的ETags将存储在当前目录中的etags.json
文件中。您可以使用--etags otherfile.json
将文件存储在其他位置
conditional-get https://static.simonwillison.net/static/2020/Simon_Willison__TIL.png --etags my-etags.json
使用-v
选项获取显示正在发生什么的调试输出
$ conditional-get https://static.simonwillison.net/static/2020/Simon_Willison__TIL.png -v
Response status code: 200
[####################################] 100%
$ ls
Simon_Willison__TIL.png etags.json
$ cat etags.json
{
"https://static.simonwillison.net/static/2020/Simon_Willison__TIL.png": "\"d65b78782dfa93213c99099e0e2181d8\""
}
$ conditional-get https://static.simonwillison.net/static/2020/Simon_Willison__TIL.png -v
Existing ETag: "d65b78782dfa93213c99099e0e2181d8"
Response status code: 304
存储在etags.json
中的ETag使用的键默认为URL。您可以使用--key
选项指定自定义键
conditional-get --key til https://static.simonwillison.net/static/2020/Simon_Willison__TIL.png
cat etags.json
{
"til": "\"d65b78782dfa93213c99099e0e2181d8\""
}
如果文件的URL发生变化,即使文件内容保持不变,这也很有用 - 例如,如果您正在从包含过期签名的URL下载文件。