概述 下载文件的顺序
我可以使用getfolderpublink 链接通过浏览器下载文件。
curl可以下载文件。但它没有记录在 pCloud 网站上。我通过浏览器调试窗口(F12)找到了它。
我意识到 download API 也不是真正的下载。它只是获取文件的文件元数据。
https://api.pcloud.com/getfilelink?fileid={my-file-id}&auth={my-auth}'
通过 Curl 下载文件
curl -o {download-file-name} -L -X GET 'https://p-def7.pcloud.com/{full path of my file}'
-H "Content-Type: application/json; charset=utf-8"
-H "Authorization: Bearer $token"
演示
1 获取授权 ID
https://my.pcloud.com/oauth2/authorize?client_id={my_client_id}&response_type=code
2 获取访问令牌和授权码
https://u.pcloud.com/oauth2/authorize?client_id=9xxxxxx7&response_type=code&auth={auth_id}
Auth代码很重要Access Token
auth=wt9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgX
使用代码获取访问令牌。
curl -L -X POST 'https://api.pcloud.com/oauth2_token'
-H 'Content-Type: application/json; charset=utf-8'
--form 'client_id="9xxxxxxx7"'
--form 'client_secret="4xxxxxxxxxxxxxxxxX"'
--form 'code="lKxxxxxxxxxxxxxxxxxxX"'
回复
{
"result": 0,
"userid": 18905223,
"locationid": 1,
"token_type": "bearer",
"access_token": "lKxxxxxxxxxxxxxx-My-Token-xxxxxxxxxxxxxxxxxG7"
}
3 在终端分配带有令牌名称的环境变量
$ token="lKxxxxxxxxxxxxxx-My-Token-xxxxxxxxxxxxxxxxxG7"
我将下载其中一个文件Getting started with pCloud.pdf
我需要从 JSON 响应中获取 fileid。
“文件 ID”是 43338896472
curl -L -X GET 'https://api.pcloud.com/listfolder?path=/'
-H "Content-Type: application/json; charset=utf-8"
-H "Authorization: Bearer $token" | jq
{
"result": 0,
"metadata": {
"path": "/",
"name": "/",
"created": "Sat, 17 Sep 2022 23:58:07 +0000",
"ismine": true,
"thumb": false,
"modified": "Sat, 17 Sep 2022 23:58:07 +0000",
"id": "d0",
"isshared": false,
"icon": "folder",
"isfolder": true,
"folderid": 0,
"contents": [
.... other three default directories
{
"name": "Getting started with pCloud.pdf",
"created": "Sat, 17 Sep 2022 23:58:07 +0000",
"videocodec": "",
"thumb": false,
"modified": "Sat, 17 Sep 2022 23:58:07 +0000",
"size": 16371465,
"audiobitrate": 0,
"fps": "0.00",
"comments": 0,
"isfolder": false,
"height": 0,
"rotate": 0,
"fileid": 43338896472,
"videobitrate": 0,
"width": 0,
"hash": 3096725505949383000,
"duration": "0.00",
"path": "/Getting started with pCloud.pdf",
"category": 4,
"audiosamplerate": 0,
"id": "f43338896472",
"isshared": false,
"ismine": true,
"audiocodec": "mp3",
"parentfolderid": 0,
"contenttype": "application/pdf",
"icon": "document"
}
]
5 通过stat API获取文件信息(包括文件大小)
curl -L -X GET 'https://api.pcloud.com/stat?fileid=43338896472'
-H "Content-Type: application/json; charset=utf-8"
-H "Authorization: Bearer $token" | jq
{
"result": 0,
"metadata": {
"name": "Getting started with pCloud.pdf",
"created": "Sat, 17 Sep 2022 23:58:07 +0000",
"videocodec": "",
"thumb": false,
"modified": "Sat, 17 Sep 2022 23:58:07 +0000",
"size": 16371465,
"audiobitrate": 0,
"fps": "0.00",
"comments": 0,
"isfolder": false,
"height": 0,
"rotate": 0,
"fileid": 43338896472,
"videobitrate": 0,
"width": 0,
"hash": 3096725505949383000,
"duration": "0.00",
"category": 4,
"audiosamplerate": 0,
"id": "f43338896472",
"isshared": false,
"ismine": true,
"audiocodec": "mp3",
"parentfolderid": 0,
"contenttype": "application/pdf",
"icon": "document"
}
}
"link": "https://u.pcloud.link/publink/show?code=XZ9xxxxxxxxxxsss6Sk"
curl -L -X GET 'https://api.pcloud.com/getfilepublink?fileid=43338896472'
-H "Content-Type: application/json; charset=utf-8"
-H "Authorization: Bearer $token" | jq
{
"code": "XZ9bBhVZ0lSVBSVb4jJKDXJAJBBJ0FIOs6Sk",
"created": "Sun, 18 Sep 2022 01:15:38 +0000",
"downloadenabled": true,
"type": 1,
"modified": "Sun, 18 Sep 2022 01:15:38 +0000",
"downloads": 1,
"link": "https://u.pcloud.link/publink/show?code=XZ9xxxxxxxxxxsss6Sk", <- I modified the code
"result": 0,
"linkid": 60017201,
"haspassword": false,
"traffic": 16371465,
"views": 20,
"metadata": {
"name": "Getting started with pCloud.pdf",
"created": "Sat, 17 Sep 2022 23:58:07 +0000",
"videocodec": "",
"thumb": false,
"modified": "Sat, 17 Sep 2022 23:58:07 +0000",
"size": 16371465,
"audiobitrate": 0,
"fps": "0.00",
"comments": 0,
"isfolder": false,
"height": 0,
"rotate": 0,
"fileid": 43338896472,
"videobitrate": 0,
"width": 0,
"hash": 3096725505949383000,
"duration": "0.00",
"category": 4,
"audiosamplerate": 0,
"id": "f43338896472",
"isshared": false,
"ismine": true,
"audiocodec": "mp3",
"parentfolderid": 0,
"contenttype": "application/pdf",
"icon": "document"
}
}
8 获取文件路径和主机URL
Host name array 会根据文件的属性(官方默认文件或个人文件)而有所不同
curl -L -X GET 'https://api.pcloud.com/getfilelink?fileid=43338896472&auth=wt9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgX'
-H "Content-Type: application/json; charset=utf-8"
-H "Authorization: Bearer $token"
{
"result": 0,
"dwltag": "GYYEgtilNwytpYulbsh1UB",
"hash": 3096725505949383041,
"size": 16371465,
"expires": "Sun, 18 Sep 2022 10:53:50 +0000",
"path": "/cfZRj4OT2Zwk45bAZlKxxxxxxxxxxxxxxxxxxZbRZlJZ0JZKXZmpZSHZY7ZsFZzpZS5ZLa6pViVfwjfcge2gksnF08W9Qwi7/Getting%20started%20with%20pCloud.pdf",
"hosts": [
"p-def7.pcloud.com",
"c432.pcloud.com"
]
}
9 最后我可以使用步骤 8 主机名和路径下载
full URL = Host[0] name + path(删除前两个字符/)
curl -o guide.pdf -L -X GET 'https://p-def7.pcloud.com/cfZRj4OT2Zwk45bAZlKxxxxxxxxxxxxxxxxxxZbRZlJZ0JZKXZmpZSHZY7ZsFZzpZS5ZLa6pViVfwjfcge2gksnF08W9Qwi7/Getting%20started%20with%20pCloud.pdf'
-H "Content-Type: application/json; charset=utf-8"
-H "Authorization: Bearer $token"
我可以用浏览器二下载。