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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e05f90de6d1e7334f896d38009347aa8661c1344034a9cc369295db8eda872e2 |
|
MD5 | ef1705307483a31fdc9c69a600bfaca1 |
|
BLAKE2b-256 | ad99fdb6273507fd6d60c0174f67f403359d4de84bac1d24d3d5b4f7ae93df30 |