Неофициальный CLI-клиент для Mail.ru Cloud (WebDAV)
Project description
Mailru Cloud CLI
Неофициальный Python-CLI Mail.ru Облака клиент для майл ру, работающий через WebDAV
mailrucloud позволяет управлять файлами из терминала: загружать, скачивать, синхронизировать каталоги, получать информацию о файлах и многое другое. Проект вдохновлён gdrive и стремится предоставить такой же простой UX, но для Mail.ru Cloud.
📑 Содержание
- Возможности
- Установка
- Быстрый старт
- Список команд
- Примеры использования
- Синхронизация
- Roadmap
- Сборка из исходников
- Contributing
- Лицензия
🚀 Возможности
- Авторизация с использованием паролей приложений Mail.ru (2FA friendly)
- Просмотр содержимого облака (
ls) - Загрузка и скачивание файлов (
upload,download) - Одно/двухсторонняя синхронизация каталогов (
sync push / pull / both) - Удаление, перемещение, переименование файлов / папок (
rm,mv) - Получение подробной информации о файле (
info) - Чистый вывод в CLI и дружелюбные emoji-индикаторы
- 100 % тестовое покрытие fast-unit сценариев, CI на GitHub Actions
- Рекурсивная загрузка директорий с автоматическим созданием всех вложенных папок в облаке (sync push)
📦 Установка
Требования: Python ≥ 3.10
Вариант 1: PyPI (стабильная версия)
pip install mailru-cloud-cli
Если видите ошибку "externally-managed-environment", используйте виртуальное окружение:
python3 -m venv .venv --upgrade-deps
source .venv/bin/activate
Список команд
mailrucloud --help
Вариант 2: TestPyPI (текущие бета-релизы)
python -m pip install --upgrade \
-i https://test.pypi.org/simple \
--extra-index-url https://pypi.org/simple \
mailru-cloud-cli==1.4.0
Вариант 3: Из исходников (рекомендуется для разработки)
git clone https://github.com/mueqee/mailrucloud.git
cd mailrucloud
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python main.py --help
⚡️ Быстрый старт
# 1. Авторизация (email + пароль приложения Mail.ru)
mailrucloud login
# 2. Посмотреть содержимое корня
mailrucloud ls
# 3. Загрузить файл
mailrucloud upload ./photo.jpg /Photos/2024/
# 4. Скачать файл
mailrucloud download /Photos/2024/photo.jpg ./
При первой авторизации токен сохраняется в ~/.mailru_token.json.
📚 Список команд
| Команда | Описание |
|---|---|
login |
Войти в облако Mail.ru |
ls [REMOTE_DIR] |
Список файлов/папок (default /) |
upload <LOCAL_PATH> [--remote-path PATH] |
Загрузка файла |
download <REMOTE_PATH> [LOCAL_PATH] |
Скачивание файла |
sync [OPTIONS] <LOCAL_DIR> <REMOTE_DIR> |
Синхронизация каталогов |
rm <REMOTE_PATH> |
Удаление файла/папки |
mv <SRC> <DST> |
Переименование/перемещение |
info <REMOTE_PATH> |
Подробная информация о файле |
Все команды поддерживают флаг --help для подробной справки.
🔍 Примеры использования
# Рекурсивный вывод содержимого каталога
mailrucloud ls /Documents
# Односторонний бэкап (push)
mailrucloud sync ~/Projects /Backup --direction push
# Отобразить размер и дату изменения файла
mailrucloud info /Backup/report.pdf
# Удалить файл
mailrucloud rm /Backup/old.zip
🔄 Синхронизация каталогов
sync сопоставляет структуры директорий, копируя недостающие или изменённые файлы.
Удаление в режиме both пока не отражается (безопасный режим). Алгоритм основан на сравнении хэшей и временных меток.
# Двусторонняя синхронизация (значение по умолчанию)
mailrucloud sync ~/Notes /CloudNotes
# Только из облака → локально
mailrucloud sync ~/Notes /CloudNotes -d pull
# Только локально → облако
mailrucloud sync ~/Notes /CloudNotes --direction push
# Быстрая многопоточная загрузка (8 потоков)
mailrucloud sync ~/Notes /CloudNotes --direction push --threads 8
# Загрузка только новых файлов (без проверки размера)
mailrucloud sync ~/Notes /CloudNotes --direction push --only-new
# Комбинированный режим для максимальной скорости
mailrucloud sync ~/Notes /CloudNotes --direction push --threads 8 --only-new
🛣 Roadmap
- Публикация стабильной версии в основное PyPI
- Рекурсивное создание директорий при загрузке (sync push)
- Многопоточная загрузка файлов для ускорения синхронизации
- Улучшенный прогресс-бар с процентами, счётчиком файлов и оставшимся временем
- Поддержка удаления при двусторонней синхронизации
- Проверка целостности (md5) после загрузки/скачивания
- Параллельная (мультитред) загрузка/скачивание больших файлов
- Интерактивный TUI-режим (rich-console)
- Trusted Publishing для TestPyPI и PyPI (без API-токенов)
- Кроссплатформенная сборка и тестирование (Windows/macOS)
- Вывод прогресса операций через
rich.progress - Docker-образ
mailrucloudдля быстрого использования - Генератор автокомплита Bash/Zsh/Fish для CLI
- Поддержка шифрования токена учётных данных
🛠 Сборка из исходников
Проект использует PEP 517 (setuptools). Локальная сборка:
python -m pip install --upgrade build
python -m build
Исходники пакуются в dist/.
🤝 Contributing
Pull requests приветствуются! Перед отправкой:
- Создайте issue или обсудите идею в дискуссии.
- Убедитесь, что
pytest -vпроходит локально. - Соблюдайте Conventional Commits на русском.
- Запустите
flake8/mypyпри необходимости.
📝 Лицензия
Пакет распространяется под лицензией MIT. Полный текст — в файле LICENSE.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mailru_cloud_cli-1.4.3.tar.gz.
File metadata
- Download URL: mailru_cloud_cli-1.4.3.tar.gz
- Upload date:
- Size: 18.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f091e05143f3bea06660655563f0c4b6c99b7e73cdd2eb638bf7f3e55f588ca6
|
|
| MD5 |
39c2babd86d8a1512e5812993050647a
|
|
| BLAKE2b-256 |
54cf312aaea86e341ed7b96053ca4a2dda75819ed5a47ea407319eb7dde37dd4
|
File details
Details for the file mailru_cloud_cli-1.4.3-py3-none-any.whl.
File metadata
- Download URL: mailru_cloud_cli-1.4.3-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b728b1522aa2283487b030b994a2104f3d86e87db2b2483b70452be5eecf76d
|
|
| MD5 |
5af64f29562fbbced632094c5700b089
|
|
| BLAKE2b-256 |
57248ed346212359885731656e3a923a58ac2a04e6c9ba2e46c53703790e7076
|