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

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

Original docs

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.4.tar.gz (9.6 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: carma-0.0.4.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for carma-0.0.4.tar.gz
Algorithm Hash digest
SHA256 969816b75492f6c1dedda4a69bb53e1200c81b76726622a2401ca076064a3b41
MD5 6ace2de41ad8c06a9ea6ab621e7ce5b3
BLAKE2b-256 33d298ae65b8519b1a0dde10f9eb03590808a0219fcdccbaf6219037a5c75547

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