https://github.com/romanpecheritsa/headhunterapi
This project is a tool for working with vacancies on the platform hh.ru .
https://github.com/romanpecheritsa/headhunterapi
dataclasses json pytest requests
Last synced: 2 months ago
JSON representation
This project is a tool for working with vacancies on the platform hh.ru .
- Host: GitHub
- URL: https://github.com/romanpecheritsa/headhunterapi
- Owner: RomanPecheritsa
- Created: 2024-07-12T16:55:47.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-07T16:38:44.000Z (almost 2 years ago)
- Last Synced: 2025-06-04T21:50:39.634Z (about 1 year ago)
- Topics: dataclasses, json, pytest, requests
- Language: Python
- Homepage:
- Size: 74.2 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Проект по работе с API hh.ru
## Описание проекта
Этот проект представляет собой инструмент для работы с вакансиями на платформе 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` и выполнить следующие шаги:
1. Клонирование репозитория
```bash
git clone git@github.com:RomanPecheritsa/HeadHunterAPI.git
```
2. Установление зависимостей
```bash
poetry install
```
3. Запуск проекта
```text
python main.py
```
## Тестирование
Проект покрыт тестами (опционально, кроме user_interaction.py) для проверки корректности работы всех компонентов.
1. Запуск тестирования и показ процента покрытия
```bash
pytest --cov=api --cov=models --cov=storage --cov=utils/user_funcs.py --cov-report=term-missing
```