Парсинг расписания
Парсинг расписания автоматически импортирует доступность вашего объекта из внешних платформ бронирования. Подключитесь один раз, и система будет синхронизировать ваши слоты автоматически.
Что такое парсинг расписания?
Парсинг расписания связывает ваш спортивный объект с внешней платформой бронирования (например, PickleHub или Rezerv), чтобы доступность объекта синхронизировалась автоматически. Вместо того чтобы вручную вводить каждый временной слот в портал, свободное время объекта импортируется напрямую с платформы, на которой вы уже управляете бронированиями.
Это экономит время и исключает двойной ввод: вы ведёте расписание в одном месте, а в портале всегда актуальная доступность.
| Понятие | Значение |
|---|---|
| Парсер | Сервис, который читает доступность вашего объекта с внешней платформы |
| Источник | Внешняя платформа бронирования, на которой размещён ваш объект |
| Синхронизация | Автоматическое периодическое обновление слотов из источника |
Парсинг необязателен. Вы можете управлять расписанием объекта полностью внутри портала, если предпочитаете.
Когда использовать парсинг
Используйте парсинг расписания, если:
- Ваш объект размещён на внешней платформе — У вас есть аккаунт и активная страница объекта на одной из поддерживаемых платформ (PickleHub, Rezerv, Playtomic, XBook, Courtly, Skedna, CourtGrid, Dulaco, Kortos, SuperSaaS, Courtogo)
- Вы предпочитаете единый источник истины — Вы управляете бронированиями только (или в основном) на внешней платформе и хотите, чтобы портал отражал её расписание
- Вы хотите сократить ручную работу — Позвольте системе импортировать слоты вместо ручного ввода
Не используйте парсинг, если:
- Расписание вашего объекта ведётся только в портале
- У вас нет аккаунта ни на одной из поддерживаемых платформ
- Вы управляете бронированиями на нескольких платформах и вам нужна особая консолидация
Поддерживаемые источники
| Источник | URL | Статус | Примечания |
|---|---|---|---|
| PickleHub | https://picklehub.ph | ✅ Готов | Полная поддержка |
| Sports360 | https://app.sports360.ph | ⚠️ Ограничено | Площадки на этой платформе не передают цену, поэтому слоты в портале не отображаются |
| Rezerv | https://<clubname>.rezerv.co | ✅ Готов | Полная поддержка |
| Playtomic | https://playtomic.com/clubs/example | ⚠️ Ограничено | Цена есть только у свободных часов; занятые часы в сетке не показываются |
| XBook | https://<tenant-host>/<slug> | ✅ Готов | Мультитенантная платформа; логин и пароль входят в URL (см. примечание для XBook ниже) |
| Courtly | https://www.courtly.cc/book/example | ✅ Готов | Полная поддержка |
| Skedna | https://skedna.com/courts/example | ✅ Готов | Полная поддержка |
| CourtGrid | https://courtgrid.ph | ✅ Готов | Полная поддержка |
| Dulaco | https://<slug>.dulaco.net | ✅ Готов | Мультитенантная платформа; у каждого объекта свой поддомен |
| Kortos | https://<tenant>.kortos.app/book | ✅ Готов | Мультитенантная платформа бронирования; замените <tenant> на название вашего тенанта |
| SuperSaaS | https://www.supersaas.com/schedule/<account>[/<schedule>] | ⚠️ Ограничено | Источник не передаёт цены, поэтому его слоты в портале не создаются. Для закрытых расписаний нужен параметр ?email= |
| Courtogo | https://www.courtogo.com/venues/<venue> | ✅ Готов | Полная поддержка |
Настройка парсинга
Выполните эти шаги, чтобы включить парсинг расписания для объекта:
Откройте редактор объекта
Перейдите на страницу управления объектами и нажмите значок редактирования на карточке объекта. Справа откроется панель с формой редактирования.
Раскройте раздел «Парсинг»
Найдите в панели аккордеон «Парсинг». Нажмите на него, чтобы развернуть.
Включите парсинг
Переведите переключатель «Включить парсинг» в положение «вкл». Ниже появятся дополнительные поля.
Выберите источник
В выпадающем списке выберите внешнюю платформу, на которой размещён ваш объект. Под полем появится пример URL для ориентира.
Введите URL объекта
Вставьте полный URL страницы вашего объекта на внешней платформе. Например:
- PickleHub:
https://picklehub.ph/club-name - Sports360:
https://app.sports360.ph/facility/xyz - Rezerv:
https://clubname.rezerv.co - Playtomic:
https://playtomic.com/clubs/example - XBook:
https://<host>/<path>?username=<login>&password=<password> - Courtly:
https://www.courtly.cc/book/example - Skedna:
https://skedna.com/courts/example - CourtGrid:
https://courtgrid.ph/explore/019f058e-8025-707c-91db-ad2fcdb8cb2b - Dulaco:
https://<your-club-slug>.dulaco.net - Kortos:
https://<tenant>.kortos.app/book - SuperSaaS:
https://www.supersaas.com/schedule/<account>/<schedule> - Courtogo:
https://www.courtogo.com/venues/<venue>
Примечание для XBook: ваши логин и пароль XBook входят в URL, поэтому они сохраняются вместе с ним в том виде, в котором вы его ввели. Они могут попасть в историю браузера и в журналы прокси-серверов и серверов, через которые проходит URL. Пользователи, которые могут менять настройки парсинга этого объекта, видят их, а API портала возвращает сохранённый URL этим пользователям. Логи приложения маскируют учётные данные. Рекомендуем использовать отдельный аккаунт XBook, предназначенный только для чтения расписания, а не основной аккаунт.
Примечание для SuperSaaS: для публичных расписаний достаточно ссылки на расписание. Для закрытого расписания добавьте к ссылке ?email=<адрес с доступом к расписанию>. Другие параметры запроса не принимаются.
Просканируйте корты
Нажмите кнопку сканирования (значок радара) справа от поля URL. Система подключится к внешней платформе и получит список всех кортов на этой площадке.
Выберите ваш корт
После завершения сканирования появится выпадающий список со всеми найденными кортами. Выберите один корт, который хотите синхронизировать через парсер. Если у вас несколько кортов и вы хотите синхронизировать их все, настройте парсинг отдельно для каждого корта.
Протестируйте соединение
Нажмите кнопку «Тестовый парсинг» под выпадающим списком кортов. Система имитирует импорт слотов за проверяемый период и показывает сводку:
Найдено 42 свободных, 10 забронированных слотов за проверяемый период, последний свободный 25.05 19:00Нажмите «Показать детали», чтобы увидеть таблицу всех найденных слотов (дата, время, корт).
Сохраните
Если тест прошёл успешно, нажмите «Сохранить» в шапке панели. Парсинг теперь активен.
Управление активным парсингом
Когда парсинг включён для объекта:
Парсер запускается автоматически по расписанию. Импортированные слоты появляются в расписании объекта. Полное обновление всех слотов происходит примерно раз в час для каждого объекта, а ближайшие дни обновляются при каждом запуске парсера.
В поиске клиенты видят только то, что источник реально сообщил: час показывается свободным, только если источник его подтвердил. Часы, по которым от источника нет данных (за пределами обновляемого периода или до первой загрузки), свободными не показываются. Если вы закрыли объект на внешней платформе (например, на ремонт), его свободные часы в портале станут занятыми (с прежней ценой) после следующей загрузки.
| Действие | Эффект |
|---|---|
| Выключить | Парсинг приостановлен; сохранённые настройки, включая URL, остаются, но новые слоты не импортируются |
| Включить | Парсинг возобновляется и снова импортирует слоты |
| Изменить URL | Повторите сканирование кортов и тест перед сохранением |
| Удалить конфигурацию | Удаляет настройку парсинга; ранее импортированные слоты остаются |
В истории запусков объекта («История запусков») записываются два типа событий:
- Синхронизация — запуск, который изменил слоты: сколько слотов добавлено, обновлено и закрыто.
- Ошибка — неудачный запуск с текстом ошибки и URL с замаскированными учётными данными.
Запуски, которые не изменили слоты, в списке не выводятся. Чтобы увидеть последнюю успешную проверку, посмотрите «Последняя проверка» вверху истории запусков. Кнопка «История запусков» доступна после сохранения объекта, а историю видят пользователи, которые могут просматривать объект.
Цены слотов
Портал берёт цену каждого слота только из данных внешней платформы. Сам портал цену не придумывает и не подставляет значения по умолчанию.
- Платформа передала цену — слот отображается с этой ценой.
- Платформа указала цену 0 — слот отображается с ценой 0. Это реальная цена из источника.
- Платформа не передала цену на час (например, на ночные часы нет тарифа) или тариф невозможно прочитать — слот на этот час в портале не создаётся и не показывается. Вместо отсутствующей цены никогда не подставляется 0.
- Свободный час пропал из данных — если час был свободен, а в свежих данных платформы его больше нет, он закрывается в портале и показывается как занятый с прежней ценой.
- Playtomic — цена есть только у свободных часов. Занятые часы в сетке не показываются: на их месте пустое место, а не «занято». Это осознанное ограничение.
- Sports360 и SuperSaas — эти платформы цены не передают, поэтому слоты по ним в портале не создаются.
- Старые слоты с ценой 0.00 — слоты с ценой 0.00, созданные раньше и находящиеся вне периода, который парсер обновляет, не меняются.
Занятые слоты подчиняются тем же правилам: если цена занятого часа неизвестна, такой слот в портале не создаётся.
Если нужный час не появляется в расписании, проверьте на внешней платформе, что для этого часа задан тариф.
Решение проблем
Если при настройке или тестировании парсинга возникнет ошибка, обратитесь к этой таблице:
| Сообщение об ошибке | Причина | Решение |
|---|---|---|
| URL недействителен или имеет неверный формат | Неверный формат URL | Скопируйте URL из адресной строки браузера и вставьте его без изменений |
| Объект не найден по этому URL | URL верный, но объекта нет на платформе (или платформа временно не отвечает на проверочные запросы) | Система автоматически повторит проверку при следующей синхронизации. Если ошибка сохраняется, проверьте, совпадает ли название объекта на внешней платформе, или обратитесь в поддержку платформы |
| Источник временно недоступен. Попробуйте позже | Внешняя платформа не отвечает | Подождите несколько минут и попробуйте снова |
| Превышено время ожидания ответа от источника | Источник отвечает слишком долго | Платформа может работать медленно; подождите и повторите |
| Не удалось разобрать ответ источника | Источник вернул неожиданный формат | Возможно, этот источник пока поддерживается не полностью; проверьте раздел «Поддерживаемые источники» |
Расписание закрыто входом по логину на стороне источника — парсер читает только публичные расписания. Добавьте в ссылку ?email=<адрес с доступом к расписанию>, сделайте расписание публичным в настройках источника или укажите ссылку на публичное расписание | Расписание закрытое, а источник (SuperSaaS) требует вход | Добавьте в ссылку ?email= с адресом, у которого есть доступ к расписанию, сделайте расписание публичным или укажите ссылку на публичное расписание |
| Источник не принял адрес email из ссылки при входе. Проверьте, что у этого email есть доступ к расписанию на стороне источника, или укажите ссылку с подходящим email | Адрес в параметре ?email= не имеет доступа к расписанию | Проверьте, что этот адрес имеет доступ к расписанию на сайте источника, или укажите ссылку с адресом, у которого такой доступ есть |
| Сервис парсинга временно недоступен. Сообщите администратору | Сервис парсинга портала не в сети | Обратитесь к администратору |
| Источник не настроен на сервере. Сообщите администратору | Сервер не настроен для этого источника | Обратитесь к администратору |
| Источник больше не поддерживается | Этот источник был отключён | Выберите другой источник |
| По этому URL объекты не найдены | URL верный, парсер ответил, но не вернул ни одного объекта | Убедитесь, что на странице клуба действительно есть корты или площадки |
| Неверные данные запроса | Что-то пошло не так на стороне портала | Обратитесь к администратору |
Что дальше
После активации парсинга:
- Слоты появляются автоматически — Проверьте расписание объекта на предмет импортированных временных слотов
- Синхронизация происходит периодически — Новые и обновлённые слоты с внешней платформы появляются в портале
- Управляйте слотами как обычно — Вы по-прежнему можете создавать, редактировать или удалять слоты в портале; парсинг не препятствует ручным корректировкам
- Проверяйте запуски — Откройте «История запусков», чтобы увидеть изменения слотов и ошибки
Если вы отключите парсинг и затем включите его позже, парсер снова будет получать слоты с того момента, где он остановился. Существующие слоты, созданные только в портале, не будут затронуты.
Часто задаваемые вопросы
Поддерживает ли парсер объекты, которые работают после полуночи?
Да. Парсер поддерживает расписания, которые проходят через полночь. Например, если объект работает с 06:00 до 01:00 (с 6 утра до 1 ночи следующего дня), парсер импортирует слоты этих часов без ошибок. Никаких дополнительных настроек не требуется. Слот появится в портале, только если платформа передала для него цену. Если на ночные часы тариф не задан, эти часы в портале не показываются.