Skip to content

About

Консольное приложение для получения данных о маршрутах наземного общественного транспорта Санкт-Петерубрга с data.gov.spb.ru

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

spbTransportRoutesCLI

Консольное приложение на Kotlin для получения и просмотра данных о маршрутах наземного общественного транспорта Санкт-Петербурга.

Приложение загружает данные из API портала data.gov.spb.ru, сохраняет их в PostgreSQL и предоставляет интерактивный CLI для поиска маршрутов, остановок и связей между ними.

Возможности

  • Загрузка и обновление данных о маршрутах из API.
  • Хранение данных в PostgreSQL.
  • Поиск маршрута по номеру или названию.
  • Поиск остановки по названию.
  • Просмотр остановок маршрута по направлениям.
  • Просмотр маршрутов, проходящих через остановку.
  • Просмотр подробной информации о маршруте.
  • Автоматический подсчёт количества остановок маршрута с помощью PostgreSQL-триггера.
  • Очистка локальной базы данных через консольную команду.

Технологии

  • Kotlin
  • JDK 17
  • Spring Boot
  • Spring Data JPA
  • EclipseLink
  • PostgreSQL
  • Gradle
  • kotlinx.coroutines
  • Jackson и Gson
  • API data.gov.spb.ru

Требования

Перед запуском убедитесь, что установлены:

  • JDK 17 или новее;
  • PostgreSQL;
  • Git.

Также потребуется токен доступа к API data.gov.spb.ru.

Установка

Клонируйте репозиторий:

git clone https://github.com/scriptyyy13/spbTransportRoutesCLI.git
cd spbTransportRoutesCLI

Создайте базу данных PostgreSQL. Например:

CREATE DATABASE spb_transport;

Создайте в корне проекта файл .env на основе .env_example:

DB_URL=jdbc:postgresql://localhost:5432/spb_transport
DB_USER=postgres
DB_PASSWORD=admin
API_TOKEN=YOUR_API_TOKEN
API_URL=https://data.gov.spb.ru/api/v2/datasets/159/versions/latest/data/643/

Замените следующие значения на свои:

Переменная Назначение
DB_URL JDBC-адрес базы данных PostgreSQL
DB_USER имя пользователя PostgreSQL
DB_PASSWORD пароль пользователя PostgreSQL
API_TOKEN токен доступа к API
API_URL адрес набора данных API

Получение токена API

  1. Откройте data.gov.spb.ru.
  2. Зарегистрируйтесь или войдите в существующий аккаунт.
  3. Найдите токен в профиле пользователя.
  4. Укажите его в переменной API_TOKEN файла .env.

Сборка

Для сборки проекта используйте Gradle.

Linux/macOS:

./gradlew build

Windows:

.\gradlew.bat build

После успешной сборки JAR-файл будет находиться в каталоге build/libs.

Запуск

Запуск из Gradle:

./gradlew run

Если задача run недоступна в вашей конфигурации Gradle, запустите собранный JAR-файл:

java -jar build/libs/<имя-файла>.jar

После запуска приложение предложит использовать интерактивную консоль:

Введите help для списка команд
>

Работа с приложением

Список команд

Введите:

help

Доступные команды:

Команда Описание
help показать список доступных команд
update_info загрузить или обновить данные из API
get_route_info <маршрут> показать подробную информацию о маршруте
get_stops <маршрут> показать список остановок маршрута
get_routes <остановка> показать маршруты, проходящие через остановку
clear полностью очистить базу данных
exit завершить работу приложения

Первичная загрузка данных

После первого запуска загрузите данные из API:

update_info

Приложение загрузит страницы API и сохранит новые записи в PostgreSQL. Уже существующие записи будут пропущены.

Информация о маршруте

Поиск маршрута можно выполнить по номеру или названию:

get_route_info 24

Команда выводит:

  • Краткое и полное название маршрута.
  • Тип транспорта.
  • Идентификатор маршрута.
  • Расстояние по направлениям.
  • Общее количество остановок.

Список остановок маршрута

get_stops 24

Команда выводит остановки маршрута, сгруппированные по направлениям.

Маршруты на остановке

get_routes Невский проспект

Команда выводит все маршруты, которые проходят через указанную остановку.

Поиск по идентификатору

Если найдено несколько маршрутов или остановок с одинаковым названием, приложение выведет их идентификаторы.

Для точного поиска по идентификатору используйте префикс i:

get_route_info i12345
get_stops i12345
get_routes i67890

Очистка базы данных

Команда полностью удаляет маршруты, остановки и связи между ними:

clear

Для подтверждения операции введите:

y

Чтобы отменить очистку, введите любое другое значение:

n

Команда clear удаляет все загруженные данные из локальной базы данных. После очистки потребуется снова выполнить update_info.

Структура проекта

src/
└── main/
    └── kotlin/
        ├── command/       # Команды консольного интерфейса
        ├── entity/        # JPA-сущности
        ├── repository/    # Репозитории для работы с БД
        ├── service/       # Бизнес-логика и загрузка данных из API
        ├── ConsoleCli.kt  # Интерактивная консоль
        └── Main.kt        # Точка входа приложения

Обновление данных

Команда update_info обращается к API и загружает данные постранично. Полученные сведения сохраняются в базу данных, а дубликаты пропускаются.

При добавлении связей между маршрутами и остановками PostgreSQL-триггер обновляет количество остановок соответствующего маршрута.

Возможные проблемы

Не удаётся подключиться к PostgreSQL

Проверьте:

  • Запущен ли сервер PostgreSQL.
  • Существует ли база данных.
  • Правильно ли указаны DB_URL, DB_USER и DB_PASSWORD.
  • Доступен ли порт PostgreSQL, обычно 5432.

Не загружаются данные из API

Проверьте:

  • Указан ли API_TOKEN.
  • Не истёк ли токен.
  • Правильно ли указан API_URL.
  • Есть ли подключение к интернету.

Приложение сообщает, что токен не установлен

Убедитесь, что:

  • Файл называется именно .env.
  • Файл находится в корне проекта.
  • Переменная называется API_TOKEN.
  • Значение токена указано без лишних пробелов и кавычек.

Лицензия

Не тырить.

About

Консольное приложение для получения данных о маршрутах наземного общественного транспорта Санкт-Петерубрга с data.gov.spb.ru

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages