我想從 iCloud 下載檔案。我可以分享一個檔案的鏈接。但是,該檔案并未直接鏈接在 url 中,但可以檢索“真實”下載 url:
#!/bin/bash
# given "https://www.icloud.com/iclouddrive/<ID>#<Filename>
ID="...."
URL=$(curl 'https://ckdatabasews.icloud.com/database/1/com.apple.cloudkit/production/public/records/resolve' \
--data-raw '{"shortGUIDs":[{"value":"$ID"}]}' --compressed \
jq -r '.results[0].rootRecord.fields.fileContent.value.downloadURL')
curl "$URL" -o myfile.ext
來源:https ://gist.github.com/jpillara/702ded79330043e38e8202b5c73835e5
"fileContent" : {
"value" : {
...
"downloadURL" : "https://cvws.icloud-content.com/B/CYo..."
},
但是,這是行不通的:
rl: (6) Could not resolve host: jq
curl: (3) nested brace in URL position 17:
{
"results" : [ {
"shortGUID" : {
"value" : "$ID",
"shouldFetchRootRecord" : true
},
"reason" : "shortGUID cannot be null or empty",
"serverErrorCode" : "BAD_REQUEST"
} ]
}
有什么想法,我能做些什么來完成這項作業?
uj5u.com熱心網友回復:
正如@dan 提到的,jq
它不是一個 curl 引數,它是一個單獨的命令。因此你需要用|
管道代替\
.
所以命令看起來像這樣:
URL=$(curl 'https://ckdatabasews.icloud.com/database/1/com.apple.cloudkit/production/public/records/resolve' \ --data-raw '{"shortGUIDs":[{"value":"$ID"}]}' --compressed | jq -r '.results[0].rootRecord.fields.fileContent.value.downloadURL')
uj5u.com熱心網友回復:
我通過安裝 jq 并直接添加 ID 而不是使用$id
. 僅僅安裝 jq 是不夠的。
brew install jq
#!/bin/bash
# given "https://www.icloud.com/iclouddrive/<ID>#<Filename>
URL=$(curl 'https://ckdatabasews.icloud.com/database/1/com.apple.cloudkit/production/public/records/resolve' \
--data-raw '{"shortGUIDs":[{"value":"ID"}]}' --compressed | jq -r '.results[0].rootRecord.fields.fileContent.value.downloadURL')
Echo $url
curl "$URL" -o myfile.ext
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/468019.html
上一篇:初識python
下一篇:如何僅在適當時顯示會話變數?