{"id":22316540,"url":"https://github.com/dilozy/library_manager","last_synced_at":"2025-03-26T03:25:08.897Z","repository":{"id":264836699,"uuid":"894427051","full_name":"Dilozy/library_manager","owner":"Dilozy","description":"Система для управления библиотекой, позволяющая добавлять, удалять книги, менять их статус, а также искать книги по различным критериям.","archived":false,"fork":false,"pushed_at":"2024-11-26T10:49:07.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T01:53:55.768Z","etag":null,"topics":["python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dilozy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-26T10:39:44.000Z","updated_at":"2024-11-26T10:49:11.000Z","dependencies_parsed_at":"2024-11-26T11:42:42.754Z","dependency_job_id":"f3492083-20f1-49c2-b7d2-19058737ea4a","html_url":"https://github.com/Dilozy/library_manager","commit_stats":null,"previous_names":["dilozy/library_manager"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dilozy%2Flibrary_manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dilozy%2Flibrary_manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dilozy%2Flibrary_manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dilozy%2Flibrary_manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dilozy","download_url":"https://codeload.github.com/Dilozy/library_manager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245581626,"owners_count":20639010,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python"],"created_at":"2024-12-03T23:07:05.912Z","updated_at":"2025-03-26T03:25:08.880Z","avatar_url":"https://github.com/Dilozy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Система управления библиотекой\n\nДанный проект представляет собой систему для управления библиотекой, реализованную с использованием Python. Система позволяет добавлять, удалять книги, менять их статус, а также искать книги по различным критериям.\n\n## Структура проекта\n\nПроект включает в себя следующие ключевые компоненты:\n\n1. **Классы и исключения**:\n   - `Book`: Класс для хранения информации о книге.\n   - `Library`: Класс для работы с коллекцией книг.\n   - `LibraryManager`: Менеджер, обрабатывающий запросы на добавление, удаление и изменение статуса книг.\n   - Исключения: `NotFoundInTheLibrary`, `IncorrectSearchFields`, `AlreadyInTheLibrary` - для обработки ошибок, связанных с библиотечными операциями.\n\n2. **Работа с консолью**:\n   Взаимодействие с пользователем происходит через консоль. Пользователю предлагается выбрать одну из команд для выполнения. Все действия с книгами выполняются в цикле, до тех пор, пока не будет выбрана команда выхода.\n\n3. **Меню**:\n   После запуска программы вы увидите следующее меню:\n\n    ```\n    1. Добавить книгу\n    2. Удалить книгу\n    3. Изменить статус книги\n    4. Показать все книги\n    5. Искать книги\n    0. Выход\n    ```\n4. **Тесты**:\n    Тесты запускаются командой \n    `python -m unittest discover`\n\n## Как запустить\n\nДля запуска приложения необходимо:\n\n1. Клонировать репозиторий или скачать файл с кодом.\n2. Убедитесь, что у вас установлен Python (желательно версии 3.8 и выше).\n3. Для работы с данными используется файл `library.json`. Если он отсутствует, будет создан пустой файл.\n4. Запустите приложение с помощью команды:\n   ```bash\n   python -m app.main\n   ```\n\n## Работа с программой\n\n### 1. **Добавить книгу**\n\nПри выборе этого пункта программа попросит ввести название, автора и год издания книги в формате `\u003cназвание\u003e, \u003cавтор\u003e, \u003cгод\u003e`. После ввода этих данных программа выполнит валидацию. Если книга успешно добавлена, она будет сохранена в файл `library.json`. В случае ошибок, например, если книга с таким названием, автором и годом уже существует, программа выведет соответствующее сообщение об ошибке и предложит попробовать снова.\n\n### 2. **Удалить книгу**\n\nВыбор этого пункта предложит ввести ID книги, которую нужно удалить. Программа проверит, существует ли книга с таким ID в библиотеке. Если книга найдена, она будет удалена, и изменения сохранятся в файл. Если книга не найдена, программа выведет сообщение об ошибке.\n\n### 3. **Изменить статус книги**\n\nПри выборе этой опции программа предложит ввести ID книги для изменения её статуса. Статус может быть изменен на \"Выдана\", если книга была \"В наличии\", или на \"В наличии\", если она была \"Выдана\". Если книга с таким ID не найдена, программа выведет ошибку.\n\n### 4. **Показать все книги**\n\nПри выборе этого пункта программа выведет список всех книг в библиотеке, включая информацию о каждом экземпляре: ID, название, автор, год издания и статус. Это позволит вам получить полный обзор всех книг, находящихся в библиотеке.\n\n### 5. **Искать книги**\n\nЭтот пункт меню позволяет искать книги по различным полям: `title` (название), `author` (автор) и `year` (год издания). Вам нужно будет ввести запрос в формате: `\u003cполе\u003e = \u003cзначение\u003e`, например, `title = Война и мир` или `author = Толстой`. Программа выполнит поиск по указанному полю и выведет все соответствующие книги. Если книги не найдены, программа сообщит об этом.\n\n### 0. **Выход**\n\nПри выборе этой опции программа завершит свою работу.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdilozy%2Flibrary_manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdilozy%2Flibrary_manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdilozy%2Flibrary_manager/lists"}