A client library for pCloud
Project description
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
from filenames:
>>> pc.uploadfile(files=['/full/path/to/image1.jpg', '/Users/tom/another/image.png'], ... path='/path-to-pcloud-dir')
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
Issue Tracker: https://github.com/tomgross/pycloud/issues
Source Code: https://github.com/tomgross/pycloud
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)
Fix error while using makedirs from PyFilesystem https://github.com/tomgross/pycloud/issues/10 [blasterspike]
Test and claim Python 3.7 compatibility [tomgross]
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.