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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
969816b75492f6c1dedda4a69bb53e1200c81b76726622a2401ca076064a3b41
|
|
| MD5 |
6ace2de41ad8c06a9ea6ab621e7ce5b3
|
|
| BLAKE2b-256 |
33d298ae65b8519b1a0dde10f9eb03590808a0219fcdccbaf6219037a5c75547
|