Skip to content

vldanilovsky/mailrucloud

 
 

Repository files navigation

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

📦 Установка

Требования: Python ≥ 3.10

PyPI (стабильная версия)

pip install --upgrade mailru-cloud-cli

TestPyPI (текущие бета-релизы)

python -m pip install --upgrade \
  -i https://test.pypi.org/simple \
  --extra-index-url https://pypi.org/simple \
  mailru-cloud-cli==1.3.2

Из исходников

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> del Удаление файла/папки
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

🛣 Roadmap

  • Публикация стабильной версии в основное PyPI ✅
  • Поддержка удаления при двусторонней синхронизации
  • Проверка целостности (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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%