Skip to main content

A client library for pCloud

Project description

https://travis-ci.org/tomgross/pycloud.svg?branch=master

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

Features

  • Can be used as a library

  • Comes with a command line script

  • Provides a PyFileSystem implementation

Examples

Usage of API

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

Use alternate endpoint (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)

Uploading files

  1. from filenames:

>>> pc.uploadfile(files=['/full/path/to/image1.jpg', '/Users/tom/another/image.png'],
...     path='/path-to-pcloud-dir')
  1. 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')

Usage of PyFilesystem with opener

>>> from fs import opener
>>> opener.open_fs('pcloud://email%40example.com:SecretPassword@/')
<pCloudFS>

Copying files from Linux to pCloud using PyFilesystem

>>> from fs import opener, copy
>>> with opener.open_fs('pcloud://email%40example.com:SecretPassword@/') as pcloud_fs:
>>>    with opener.open_fs('/opt/data_to_copy') as linux_fs:
>>>        copy.copy_file(src_fs=linux_fs,
>>>                       src_path='database.sqlite3',
>>>                       dst_fs=pcloud_fs,
>>>                       dst_path='/backup/server/database.sqlite3')

Copy directory from Linux to pCloud using PyFilesystem

>>> from fs import opener, copy
>>> with opener.open_fs('pcloud://email%40example.com:SecretPassword@/') as pcloud_fs:
>>>    with opener.open_fs('/opt/data_to_copy') as linux_fs:
>>>        copy.copy_dir(src_fs=linux_fs,
>>>                      src_path='database/',
>>>                      dst_fs=pcloud_fs,
>>>                      dst_path='/backup/database/')

Further Documentation

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

Installation

$ pip install pcloud

Installation with PyFilesystem support

$ bin/pip install pcloud[pyfs]

on zsh (Mac):

$ bin/pip install “pcloud[pyfs]”

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 docs/LICENSE.rst).

Contributors

  • Tom Gross, itconsense@gmail.com

  • Massimo Vannucci (blasterspike)

  • Yennick Schepers (yennicks)

  • olokelo

  • qo4on

Changelog

1.0a9 (2021-01-22)

  • Missing variable in output in case a directory already exists

  • Changed errors raised for makedirs

  • Do not raise an errors.DirectoryExists when recreate = True

  • Added examples to README [blasterspike]

  • Fix parameter of downloadlink method [tomgross]

  • Add more details on authentication error [yennicks]

  • Add new stats endpoint [AgusRumayor]

  • Add methods for archiving [olokelo]

  • Add token expire parameter [olekelo]

  • Start implementing trash methods [qo4on, tomgross]

  • Add support for alternate endpoints [tomgross]

  • Add Contributors and fix README ReST Syntax

1.0a8 (2020-02-21)

  • Fix upload of multiple files from paths [tomgross]

  • Document uploading of files [tomgross]

1.0a7 (2020-02-20)

  • Add new API method createfolderifnotexists #19 [Arkoniak, tomgross]

  • Fix duplication of data transfer on file upload #17 [blasterspike, tomgross]

  • Consistently use MIT licences [tomgross]

1.0a6 (2019-01-18)

  • Fix error while using makedirs from PyFilesystem with recreate=True [blasterspike]

1.0a5 (2018-10-22)

1.0a4 (2017-10-29)

  • Fix error with duplicate files parameter #3 [tomgross]

  • Fix upload of data [tomgross]

  • Do flake8 checks [tomgross]

1.0a3 (2017-10-07)

  • Test API with py.test [tomgross]

  • Support for PyFileSystem [tomgross]

  • Support for file operations [tomgross]

1.0a2 (2017-05-21)

  • Rename to pcloud [tomgross]

1.0a1 (2017-05-21)

  • Initial release. [tomgross]

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-1.0a9.tar.gz (14.7 kB view hashes)

Uploaded Source

Supported by

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