Skip to main content

Неофициальный CLI-клиент для Mail.ru Cloud (WebDAV)

Project description

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
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

🛣 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.

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

mailru_cloud_cli-1.4.2.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mailru_cloud_cli-1.4.2-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file mailru_cloud_cli-1.4.2.tar.gz.

File metadata

  • Download URL: mailru_cloud_cli-1.4.2.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for mailru_cloud_cli-1.4.2.tar.gz
Algorithm Hash digest
SHA256 df2e619b23c18390a331fdb3dcd3809788df8f2aadb2325deb18783f20fe13ef
MD5 7755506d30cb514bed35b794a1d74783
BLAKE2b-256 9e50febc2014e36c39e6801d39cced8243651693277ab37b734638fb54610d25

See more details on using hashes here.

File details

Details for the file mailru_cloud_cli-1.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for mailru_cloud_cli-1.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c6d8bb9a971a8e3784ef4f618275b1e49ec714e4ed905892fd62ffeda9835c87
MD5 99483f11021aa346d7453e22f89bbf1e
BLAKE2b-256 bc95d5ee1fb8ad452474552ec45c00041713466ae308b54b6439bf4b98fa953f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page