Skip to main content

Cli tool for managing cloud mail.ru storage

Project description

Karma

Cli tool for managing cloud mail.ru storage

Usage

The main feature is file upload. For example, to upload all files from local folder ~/foo/bar to remote folder /qux/quux/bar use the following command:

python -m karma sync ~/foo/bar qux/quux

Installation

To isntall from pip:

pip install carma

Original docs

The tool is based on cloud_mail_ru package which is unofficial cloud.mail.ru's python API.

All existing methods in cloud.mail.ru's API

Implemented? Method Path Additional Info
(POST) batch
(POST) clone
(POST) stock/save
X (GET) dispatcher
(POST) docs/token
X (GET) file
X (POST) file/add
X (POST) file/move
X (POST) file/remove
X (POST) file/rename
X (POST) file/copy
X (POST) file/publish
X (POST) file/unpublish
X (GET) file/history
X (GET) folder
X (POST) folder/add
X (POST) folder/move Alias for file/move
X (POST) folder/remove Alias for file/remove
X (POST) folder/rename Alias for file/rename
X (POST) folder/copy Alias for file/copy
X (POST) folder/publish Alias for file/publish
X (POST) folder/unpublish Alias for file/unpublish
X (GET) folder/find
X (GET) folder/invites
(GET) folder/shared/links
(GET) folder/invites/info
(POST) folder/invites/reject
(POST) folder/mount
(GET) folder/shared/incomi
(GET) folder/shared/info
(POST) folder/share
X (GET) folder/tree
(POST) folder/unmount
(POST) folder/unshare
X (POST) folder/viruscan
(GET) mail/ab/contacts
(POST) mail/ab/contacts/add
(GET) status
X (POST) tokens/csrf
X (POST) tokens/download
(GET) weblinks
0 (GET) weblinks/subscribe Server said me 'internal'
X (GET) user
X (POST) user/agree-la Seper-Mega-Ultra-Alfa-Giga useless
0 (POST) user/edit Method just for redrawing frontend
(POST) user/unfreeze
(POST) user/promo/active
(POST) user/promo/ignore
(POST) user/promo/invite
(POST) user/promo/join
X (GET) user/space
X (POST) zip
X (GET) mail/ab/contacts
(POST) mail/ab/contacts/add
X (GET) billing/rates
(POST) billing/change
(POST) billing/prolong
(POST) billing/cancel
(POST) billing/history
X (GET) trashbin
X (POST) trashbin/restore
X (POST) trashbin/empty
X (GET) domain/folders
(POST) promo/validate
X (POST) notify/applink

Examples of usage

I decided implement the structure of the original API so for the file/add request you must call the method MailCloud_instance.api.file.add(...). All realized methods are described in the table above.

Basic usage

>>> import cloud_mail_api
>>> cm = cloud_mail_api.CloudMail("email@email.com", "password")
>>> cm.auth() # This method can ask AuthCode by input() if df auth enabled, run in inputable env
True
>>> cm.print(cm.api.file.add("/Some/Local/Dir/file.txt", "/Some/Cloud/Dir/file_qwe.txt"))
{'email': 'email@email.com', 'body': '/Some/Cloud/Dir/file_qwe.txt', 'time': 1530208363765, 'status': 200}

Cookies saving/loading

For identification mail.ru use cookies. It would be a shame if every session you would have to authenticate again, so I implemented methods to load/save cookies to a json file.

>>> import cloud_mail_api
>>> cm_temp = cloud_mail_api.CloudMail("email@email.com", "password")
>>> cm_temp.auth()
True
>>> cm.save_cookies_to_file("/Some/Local/Dir/cookies.json")
<RequestsCookieJar[<Cookie GarageID=7d1958e70...>]
>>> del cm_temp
>>> cm = cloud_mail_api.CloudMail("email@email.com", "password")
>>> cm.load_cookies_from_file("/Some/Local/Dir/cookies.json")
<RequestsCookieJar[<Cookie GarageID=7d1958e70...>]
>>> cm.print(cm.api.file.add("/Some/Local/Dir/file.txt", "/Some/Cloud/Dir/file_qwe.txt"))
{'email': 'email@email.com', 'body': '/Some/Cloud/Dir/file_qwe.txt', 'time': 1530208363765, 'status': 200}

Also there is a method def update_cookies_from_dict(self, dict_={}, **kwargs) -> RequestsCookieJar that has a same effect as load_cookies_from_file

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

carma-0.0.3.tar.gz (9.5 kB view details)

Uploaded Source

File details

Details for the file carma-0.0.3.tar.gz.

File metadata

  • Download URL: carma-0.0.3.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.7

File hashes

Hashes for carma-0.0.3.tar.gz
Algorithm Hash digest
SHA256 e05f90de6d1e7334f896d38009347aa8661c1344034a9cc369295db8eda872e2
MD5 ef1705307483a31fdc9c69a600bfaca1
BLAKE2b-256 ad99fdb6273507fd6d60c0174f67f403359d4de84bac1d24d3d5b4f7ae93df30

See more details on using hashes here.

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