首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用bash从共享链接下载iCloud文件

使用bash从共享链接下载iCloud文件
EN

Stack Overflow用户
提问于 2022-04-25 17:26:10
回答 2查看 352关注 0票数 0

我想从iCloud下载一个文件。我可以分享到一个文件的链接。但是,该文件没有在url中直接链接,但是可以检索“真实”下载url:

代码语言:javascript
运行
复制
#!/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

Sorce:https://gist.github.com/jpillora/702ded79330043e38e8202b5c73835e5

代码语言:javascript
运行
复制
        "fileContent" : {
          "value" : {
...
            "downloadURL" : "https://cvws.icloud-content.com/B/CYo..."
          },

然而,这是行不通的:

代码语言:javascript
运行
复制
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"
  } ]
}

有什么想法,我能做些什么来让这件事成功吗?

EN

Stack Overflow用户

回答已采纳

发布于 2022-04-29 06:20:55

我通过安装jq和直接添加ID来解决这个问题,而不是使用$id。仅仅安装jq是不够的。

代码语言:javascript
运行
复制
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
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72003428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档