Skip to main content

Mailru Cloud CLI

CI Publish PyPI License

Неофициальный Python-CLI Mail.ru Облака клиент для майл ру, работающий через WebDAV

mailrucloud позволяет управлять файлами из терминала: загружать, скачивать, синхронизировать каталоги, получать информацию о файлах и многое другое. Проект вдохновлён gdrive и стремится предоставить такой же простой UX, но для Mail.ru Cloud.


📑 Содержание

  1. Возможности
  2. Установка
  3. Быстрый старт
  4. Список команд
  5. Примеры использования
  6. Синхронизация
  7. Roadmap
  8. Сборка из исходников
  9. Contributing
  10. Лицензия

🚀 Возможности

  • Авторизация с использованием паролей приложений 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 приветствуются! Перед отправкой:

  1. Создайте issue или обсудите идею в дискуссии.
  2. Убедитесь, что pytest -v проходит локально.
  3. Соблюдайте Conventional Commits на русском.
  4. Запустите flake8 / mypy при необходимости.

📝 Лицензия

Пакет распространяется под лицензией MIT. Полный текст — в файле LICENSE.

Metadata

Release files for mailru-cloud-cli 1.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mailru-cloud-cli 1.4.3
File Size Uploaded
mailru_cloud_cli-1.4.3.tar.gz 18.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mailru-cloud-cli 1.4.3
File Interpreter ABI Platform
mailru_cloud_cli-1.4.3-py3-none-any.whl Python 3 none any Details

Total release size: 35.3 kB

Release files / mailru_cloud_cli-1.4.3.tar.gz

Download URL mailru_cloud_cli-1.4.3.tar.gz
Size 18.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f091e05143f3bea06660655563f0c4b6c99b7e73cdd2eb638bf7f3e55f588ca6
BLAKE2b-256 checksum
How to use checksums
54cf312aaea86e341ed7b96053ca4a2dda75819ed5a47ea407319eb7dde37dd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / mailru_cloud_cli-1.4.3-py3-none-any.whl

Download URL mailru_cloud_cli-1.4.3-py3-none-any.whl
Size 17.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b728b1522aa2283487b030b994a2104f3d86e87db2b2483b70452be5eecf76d
BLAKE2b-256 checksum
How to use checksums
57248ed346212359885731656e3a923a58ac2a04e6c9ba2e46c53703790e7076
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

1.4.3 This release

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page