Skip to main content

A client library for pCloud

Project description

pcloud - A Python API client for pCloud

image

This Python (Version >= 3.6 only!) library provides a Python API to the pCloud storage.

Features

  • Can be used as a library for accessing pCloud Features exposed by the officiall pCloud API

Examples

Usage of API

>>> from pcloud import PyCloud >>> pc = PyCloud('email@example.com', 'SecretPassword') >>> pc.listfolder(folderid=0)

Use alternate endpoints (API calls have to be made to the correct API host name depending were the user has been registered -- api.pcloud.com for United States and eapi.pcloud.com for Europe.)

>>> from pcloud import PyCloud >>> pc = PyCloud('email@example.com', 'SecretPassword', endpoint="eapi") >>> pc.listfolder(folderid=0)

PyCloud also provides an API method to retrieve the nearest API server, which gives you a speed gain for some API operations. To use PyCloud with this feature create the PyCloud-object with the nearest endpoint parameter:

>>> from pcloud import PyCloud >>> pc = PyCloud('email@example.com', 'SecretPassword', endpoint="nearest") >>> pc.listfolder(folderid=0)

Binary protocol

pCloud supports JSON and binary format to access its API. By default the Python pCloud API uses the JSON protocol. To make use of the binary protocol you need to specify the according endpoints.

For United States server location:

>>> pc = PyCloud('email@example.com', 'SecretPassword', endpoint="binapi")

For Europe server location:

>>> pc = PyCloud('email@example.com', 'SecretPassword', endpoint="bineapi")

The API methods and parameters are identical for both protocols.

OAuth 2.0 authentication

To use OAuth 2.0 authentication you need to create an App in pCloud (https://docs.pcloud.com/my_apps/).

Add the following redirect URI http://localhost:65432/ (Make sure port 65432 is available on your machine. Otherwise you need to adjust the [PORT]{.title-ref} in oauth2.py)

Note! To see the redirect URI in the settings of pCloud you have to log out and log in again.

Once you finished adding the app and setting the redirect URI you are ready to use OAuth 2.0 with PyCloud on your machine. For the communication with pCloud PyCloud uses the builtin [webserver]{.title-ref}-module. This means you need a real browser on your system available.

>>> from pcloud import PyCloud >>> pc = PyCloud.oauth2_authorize(client_id="XYZ", client_secret="abc123") >>> pc.listfolder(folderid=0)

Headless mode

OAuth 2.0 is designed to use a browser for the authentication flow. Nevertheless Selenium can be used to automate this process. For an example see the [pycloud_oauth2]{.title-ref}-fixture in [test_oauth2.py]{.title-ref}. This method will not integrated as main functionality, since there are too many dependencies. You can use it as example for your usecase.

Uploading files

a) from filenames:

>>> pc.uploadfile(files=['/full/path/to/image1.jpg', '/Users/tom/another/image.png'], ... path='/path-to-pcloud-dir')

b) from data:

>>> import io >>> from PIL import Image >>> img = Image.open('image.jpg', 'r') >>> bio = io.BytesIO() >>> img.save(bio, format='jpeg') >>> pc.uploadfile(data=bio.getvalue(), filename="image.jpg", path='/path-to-pcloud-dir')

Downloading files

Since the removal of the file API from pCloud downloading file content only via the [getzip]{.title-ref}- method. There was a convenience method added here to download files:

>>> pc.file_download(fileid=1234567890) b'xxxx .... zzzz'

Searching files

The pCloud-API allows searching files, even this is not documented in the official pCloud documentation.

>>> pcapi.search(query="foo", offset=20, limit=10)

Known issues

  • Some methods (like [listtokens]{.title-ref}, [getzip]{.title-ref}) are not usable when authenticated via OAuth2 (see https://github.com/tomgross/pcloud/issues/61)
  • Since the removal of file system operations from the pCloud API downloading files is no longer supported when authenticated via OAuth2

Further Documentation

Implements the pCloud API found at https://docs.pcloud.com/

Installation

$ pip install pcloud

Development

For testing purposes a mock server is provided. To use this mock server you need to add a file with the same name as the method + the .json suffix in the tests/data directory (like getdigest.json). The file contains the expected JSON result.

Contribute

License

The project is licensed under MIT (see LICENSE).

Contributors

  • Tom Gross, itconsense@gmail.com
  • Massimo Vannucci (blasterspike)
  • Yennick Schepers (yennicks)
  • olokelo
  • qo4on

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pcloud-2.0.1.tar.gz (26.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pcloud-2.0.1-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file pcloud-2.0.1.tar.gz.

File metadata

  • Download URL: pcloud-2.0.1.tar.gz
  • Upload date:
  • Size: 26.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for pcloud-2.0.1.tar.gz
Algorithm Hash digest
SHA256 cb1aa050826f295e2c0f538ce95e8727bdb5d413981af9b18a1e016a6b35de34
MD5 d5db6a19f49cfb9856feba7ebfb44be0
BLAKE2b-256 2280b0263b6e96c0844e99327079847e73ef741e39c68aac47d0e9cc9cb18f70

See more details on using hashes here.

File details

Details for the file pcloud-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: pcloud-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for pcloud-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7f5e2a4e91679fa073e1edc508a40a0cdd44eacb56add7952d5d447679d2966a
MD5 164ba18751298707d83af633e22fd123
BLAKE2b-256 3dbefc965d940fcb0daf484d15bf4e2ece913567f003d812496cb2b759ad4bd3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page