SerGeRybakov / Cloud-Zipper

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Задание на дипломный проект первого блока «Основы языка программирования Python»:

«Резервное копирование фотографий пользователей ВКонтакте + Облачный архиватор Яндекс.Диск»


!Nota Bene:

При релизации задания использованы внешние библиотеки Selenium, tqdm и проч. Запускной файл chromedriver.exe для работы Selenium размещён вместе с программой в репозитории. Все необходимые библиотеки указаны в requirement.txt. При развёртывании программы на новой машине рекомендуется запустить автоматическую установку библиотек из requirement.txt.

Для авторизации в ВК требуется логин и пароль пользователя. Программа не сохраняет логин и пароль пользователя. Учётные данные передаются только в сервис авторизации ВКонтакте для получения ключа доступа. Авторизация проводится при первом запуске программы, а также в случае истечения срока действия ключа. По умолчанию ключ доступа выдаётся на срок 24 часа. Ключ записыватся в отдельный файл и считывается оттуда в течение работы программы.

Описание:

Облачные хранилища стали для человека уже нормой. Загрузить в облако альбом с фотографиями или поделиться какими-либо документами не составляет большой сложности. Возможна такая ситуация, что мы хотим показать друзьям фотографии из социальных сетей, но соцсети могут быть недоступны по каким-либо причинам. Давайте защитимся от такого.

Нужно написать программу для резервного копирования фотографий с профиля(аватарок) пользователя vk в облачное хранилище Яндекс.Диск. Для названий фотографий использовать количество лайков и дату загрузки.

Но есть одна проблема — на Яндекс.Диске может закончиться место.
Было бы неплохо уметь архивировать самый большой и тяжёлый файл или папку и загружать обратно в облако - так можно сохранить больше свободного места.

Задание:

Нужно написать программу, которая будет:

  1. Получать фотографии с профиля. Для этого нужно использовать метод photos.get.
  2. Сохранять фотографии максимального размера(ширина/высота в пикселях) на Я.Диске.
  3. Для имени фотографий использовать количество лайков и дату загрузки.
  4. Сохранять информацию по фотографиям в json-файл с результатами.
  5. Получать информацию по всем папкам в Я.Диске.
  6. Искать среди них самый тяжёлый.
  7. Скачивать файл на компьютер, где запущена программа.
  8. Архивировать файл.
  9. Загружать его обратно в ту же папку, откуда он был скачан.
  10. Записывать информацию по измененному файлу в json-файл.

Входные данные:

Пользователь вводит:

  1. id пользователя vk;
  2. токен с Полигона Яндекс.Диска. Важно: Токен публиковать в github не нужно!

Выходные данные:

  1. json-файл с информацией по файлу с фото:
    [{
    "file_name": "34.jpg",
    "size": "z"
    }]
    
  2. json-файл с информацией по файлу архива:
        {
        “file_name”: “diplom.docx”,
        “size”: “исходный размер файла”,
        “path”: “disk:/Netology/diplom.docx”
        }
    
  3. Измененный Я.Диск, куда добавился новый архив и фотографии.​​

Обязательные требования к программе:

  1. Использовать REST API Я.Диска и ключ, полученный с полигона.
  2. Для загруженных фотографий нужно создать свою папку.
  3. Сохранять указанное количество фотографий(по умолчанию 5) наибольшего размера (ширина/высота в пикселях) на Я.Диске
  4. Для архивации файлов или папки использовать библиотеку zipfile.
  5. Опционально предлагать пользователю удалить с Диска файл/папку вместо загружаемого файла.
  6. Сделать прогресс-бар для отслеживания процесса программы.
  7. Код программы должен удовлетворять PEP8.​

Дополнительные требования к программе:

  1. Сохранять фотографии и из других альбомов.
  2. [ ] Сохранять фотографии на Google.Drive.
  3. Выдача топ-10 файлов по размеру.
  4. [ ] Запись в гугл-таблицу список файлов в табличном виде - название, каталог хранения, размер.

About


Languages

Language:Python 100.0%