Этот проект представляет собой инструмент для работы с вакансиями на платформе hh.ru. Он позволяет получать информацию о вакансиях, сохранять её в файл, а также предоставляет возможность добавления, фильтрации и удаления записей.
- API для работы с hh.ru: Реализован абстрактный класс
API
и конкретный классHhAPI
, который подключается к API hh.ru и получает вакансии согласно заданным параметрам. - Класс Vacancy: Определяет атрибуты вакансии, включая название, ссылку, зарплату, описание и требования. Поддерживает методы сравнения вакансий по зарплате и валидацию данных.
- JSON хранилище вакансий: Абстрактный класс
VacancyStorage
определяет интерфейс для работы с вакансиями, а классJSONVacancyStorage
реализует этот интерфейс для работы с JSON файлом, обеспечивая сохранение, чтение и удаление вакансий.
Программа предоставляет функционал для взаимодействия с пользователем через консоль:
- Ввод поискового запроса для получения вакансий из hh.ru.
- Получение топ N вакансий по зарплате.
- Поучение вакансий по введенной зарплате.
- Поиск вакансий с ключевым словом в описании.
- Удаление по id вакансии
- Сохранение оторбранных вакансий в файл
- Наследование: Абстрактный класс и классы для работы с API платформ с вакансиями реализованы в соответствии с принципом наследования.
- Инкапсуляция: Класс для работы с вакансиями реализован с учетом принципа инкапсуляции и поддерживает методы сравнения вакансий.
- SOLID: Классы и сущности в проекте удовлетворяют первым двум принципам SOLID.
- json
- os.path
- dataclasses
- abc
- requests
- pytest, pytest-cov
- typing
Для использования программы необходимо установить poetry
и выполнить следующие шаги:
- Клонирование репозитория
git clone git@github.com:RomanPecheritsa/HeadHunterAPI.git
- Установление зависимостей
poetry install
- Запуск проекта
python main.py
Проект покрыт тестами (опционально, кроме user_interaction.py) для проверки корректности работы всех компонентов.
- Запуск тестирования и показ процента покрытия
pytest --cov=api --cov=models --cov=storage --cov=utils/user_funcs.py --cov-report=term-missing