1) Куда поехать отдыхать
Действительно, нужно перечитать множество источников, чтобы определиться, где сейчас (или когда вы там собрались) тепло, нужна ли для въезда в страну виза, сколько стоит путёвка и т.д.
2) Когда поехать отдыхать
Допустим, вы знаете, что хотите провести свой отпуск в Египте, но не знаете когда. Самый важный вопрос для многих — когда дешевле всего туда ехать? Так же важно знать, какая там погода и т.д.
Как это работает
Загрузка
У многих туроператоров имеются так называемые xml-шлюзы для выгрузки цен. Через эти шлюзы можно получить цены на те или иные туристические продукты. К сожалению, для доступа к этим данным очень часто требуется договор с туроператором. Так что просто так выполнить экспорт не получится. Для этого пришлось зарегистрироваться как юридическое лицо и помучаться с подписанием множества документов.
Данные, поставляемые туроператорами, выглядят приблизительно так:
<entry>
<tour_date>18.11.2014</tour_date>
<aircompany>Трансаэро (аэропорт Пафос / Ларнака)</aircompany>
<town>Пафос / Paphos</town>
<room>STANDARD Inland View BB</room>
<dt>18.11.2014</dt>
<id_hotel>102610001680</id_hotel>
<id_ns>104610415895</id_ns>
<duration>1</duration>
<o_duration>1</o_duration>
<quota>9</quota>
<id_price>121132934133</id_price>
<price>
<amount>435</amount>
<RUR>25435</RUR>
<ag>14+, 14+</ag>
<id_vr>102510005340</id_vr>
</price>
</entry>
Раз в неделю встроенный в Java scheduler начинает процесс сборки информации. За один проход осуществляется просмотр более 4000 отелей в 21 стране мира.
Сбор данных осуществляется более чем со 100 туроператоров.
Данные бережно укладываются в базу данных до востребования.
Новые отели так же добавляются автоматически. Это решает проблему изменения названия отеля или его закрытия.
Так же автоматически осуществляется сбор множества дополнительной информации.
Приблизительная схема базы данных наглядно демонстрирует множество параметров:
На текущий момент в базе данных под управлением Apache Derby содержит примерно 2 Гб данных.
Куда поехать отдыхать
Отталкиваемся от того, что пользователь знает некоторые критерии своего будущего путешествия, но не знает пункт назначения.
На основе статистических данных о ценах, а так же используя вспомогательные данные, а именно:
— Даты и краткое описание праздников;
— Экскурсии, цены на них, краткое описание и тип (познавательные, экстремальные, обзорные);
— Необходимость в визе в ту или иную страну, а так же примерная цена, срок изготовления и место её получения;
— Время перелёта;
— Питание в отеле;
можно рассчитать в процентном соотношении, на сколько подходит каждая из 21 страны, предложенной сервисом.
Все параметры равновесные, так что применяя не очень хитрую формулу можно получить интересный результат:
Когда поехать отдыхать
В этом случае пользователь знает, куда он хочет поехать и просто хочет посмотреть, как менялась цена и погода, а так же дополнительные параметры страны.
В этом случае мы просто отображаем так называемую «Карточку страны», которая отразит много полезной информации:
История создания
Идея зародилась еще? на 3м курсе (далёкий 2010) моего университета (спасибо СПбГПУ).
Захотелось мне как-то в отпуск, но возникла проблема — непонятно, когда дешевле и где теплее отдыхать.
На форумах пишут разные, порои? противоречивые сведения, а саи?тов с реальнои? статистикои? хоть каких-то данных я не нашел.
Как это принято в IT-сфере, если не нашел решение — напиши сам.
Первым шагом была ручная сборка данных. Была табличка в Excel и пару функций, которые строили графики по данным. Через некоторое время стало лень (или просто забывал) добавлять данные.
Вторым шагом стало изучение языка C++. Практически вовремя в университете мы стали изучать язык C++ и делать на нём простенькие проекты. Мне сразу же захотелось автоматизировать процесс сборки данных и я написал сервис, который собирает данные с нескольких туроператоров. Данные он складывал в файлик и ни о каких базах данных или веб-серверах тогда речи не шло. Запускался сервис по крону на домашнем компьютере.
Третьим шагом стало полное переписывание проекта на Java с одновременным изучением EJB (Java EE), добавлением реляционной СУБД и веб-сервером для отображения данных пользователю (табличный вид).
В дальнейшем я добавлял различные js-библиотеки для построения графиков, улучшал производительность, устранял ошибки и так далее.
Перенёс сервис на «настоящий» сервер с моего домашнего компьютера
Заказал дизайн сайта у своего коллеги с одной из прошлых работ.
Зачем всё это?
На самом деле, всё просто — проект был придуман исключительно для собственного использования. Мне просто хотелось получить сведения для наиболее дешевого и приятного отдыха.
Затем мне захотелось поделиться информацией со всем миром, чтобы каждый мог найти для себя полезную информацию.
Сейчас это хобби, время от времени я занимаюсь его развитием. Особых вложений денег я не осуществляю, кроме хостинга, домена, сертификатов, дизайна и времени (время же деньги).
Могут быть ошибки в вёрстке или другие мелкие проблемы — прошу не судить строго.
Шейринг приветствуется
protury.info
Комментарии (39)
Infanty
06.04.2015 21:041. >> К сожалению, для доступа к этим данным очень часто требуется договор с туроператором. Так что просто так выполнить экспорт не получится. Для этого пришлось зарегистрироваться как юридическое лицо и помучаться с подписанием множества документов.
2. >> Сбор данных осуществляется более чем со 100 туроператоров.
3. >> Своими руками.
Из этого следует вопрос — всё таки ко всем 100 операторами подключались руками и потратили на это человеко-год? Или всё же подключались к нескольким более глобальным шлюзам а нескольких пришлось подключить руками? Интересен данный момент — буду благодарен если расскажите.leoleovich Автор
06.04.2015 21:36+1К сожалению не все туроператоры предоставляют доступ к данным даже по договору. Так что в текущей версии сбор осуществляется также и с «глобальных шлюзов». И да, я потратил на это очень много времени:)
MAXXL
06.04.2015 23:14Хорошая штука. Как -то задавался подобным вопросом, и нечто подобное было только у одного из туроператоров в открытом доступе.
Psychosynthesis
07.04.2015 00:45Выбираю «люблю зимние виды спорта» и стоимость поездки на двоих 40к.
Показывает мне Египет — зимние виды?!
И Доминикану — цена от 140к.leoleovich Автор
07.04.2015 00:59Как я указал в статье, параметры. Это значит, что другие параметры удовлетворяют запросу.
Согласен, иногда результат неожиданный:)
lopatoid
07.04.2015 01:19Результат уж очень неожиданный. Указал цену до 30000, в списке одной из подходящих мне стран выдало Тунис; написало, что подходит на 50%, и что предложения отсутствуют. Если предложения отсутствуют, зачем вообще указывать в списке подходящих стран?
leoleovich Автор
07.04.2015 01:33Спасибо за замечание.
Предложения могут отсутствовать по разным причинам… Можно попросить список всех параметров, тогда я смогу исправить ошибку:)lopatoid
07.04.2015 01:35Поставил галочку «стоимость отдыха», нажал подобрать страну. Всё.
leoleovich Автор
07.04.2015 01:39-1В данном случае у вас выбрано по умолчанию «Вас интересует пляжный отдых?» — «Да». Это значит, что Тунис всё же отвечает на 50% вашему запросу. Думаете действительно нужно автоматически ставить 0%?
lopatoid
07.04.2015 01:50+2Как программист, я и сам понимаю, откуда могла получиться цифра 50%. Но с точки зрения пользователя — зачем мне видеть направления, на которые я не могу купить тур?
leoleovich Автор
07.04.2015 22:48Отчитываюсь вот.
Сделал веса для параметров. Как видно из примера несмотря на то, что заданы 5 параметров запроса и Тунис подходит по 4м из них (кроме наличия цены) он получает не 80%, а всего лишь 58%. К сожалению выкинуть полностью я не могу, так как он всё же подходит по многим параметрам. Но в «ТОП» теперь точно не вылезет.
Спасибо за идею!:)
Keroro
07.04.2015 14:16А почему в списке мало стран? Нет Японии, Китая, Кореи?
leoleovich Автор
07.04.2015 14:30На данный момент 21 страна и примерно 60 курортов.
Здесь собраны наиболее популярные направления по «пакетным» турам.
Но да, расширяться никогда не поздно:)
leoleovich Автор
07.04.2015 15:24Спасибо всем огромное за комментарии/сообщения тут и через фидбек на сайте.
Постараюсь исправить все недочёты:)
crazydima
09.04.2015 11:05Какая правильная штука, а главное масштабируется на другие государства. Есть такое в планах?
Ну и интерфейсик бы привести в порядок ;)leoleovich Автор
09.04.2015 12:06Интерфейс требует денег) А вот сбор статистики отовсюду есть в планах:)
china
10.04.2015 06:00+1Верхняя позиция в поиске по странам подсвечивается синим — не сразу её заметил.
В виндовс, с её синими окошками привыкаешь не обращать внимания на полоску сверху синего же цвета.and7ey
10.04.2015 10:28Если бы вы об этом не написали, то я бы так и не узнал, что в списке есть еще одна страна (первая!). Интерфейс точно надо как минимум поправить.
leoleovich Автор
10.04.2015 16:16Поменял цвет на желтый. Надеюсь не придут пользователи виндовс с золотыми окошками;)
and7ey
10.04.2015 16:17А зачем вообще выделение цветом первой позиции нужно? У меня Mac, но я до прочтения этого комментария строчку эту не видел (т.е. Windows тут не причем).
china
10.04.2015 06:11По цене: если она указана, то это доминирующий фактор.
В отличие от других параметров цена — имеет широкий диапазон, а значит если я согласен на «подороже», то выставлю цену побольше, а если «подешевле» — то соответственно снижу планку. Т.е. пользователь явно указал свои предпочтения.
Поэтому цену нужно при расчете веса страны учитывать более жестко, сейчас в пятерке верхних для поиска «до 33 тр + пляж» выдается Доминикана за 110 тр и Индонезия за 145 тр.
upd: «в шестерке верхних — опять не заметил синюю Турцию ((
china
10.04.2015 06:23Хочу посмотреть туры, жму «хочу туда», получаю ответ «заказать на email» — это у меня только или сейчас нельзя посмотреть список туров?
man_without_face
10.04.2015 08:48Выбрал Испанию, указал курорт «Мадрид» и выкидывается бесконечный alert
leoleovich Автор
10.04.2015 16:17Исправил. По крайней мере нет бесконечного alert больше. Но данных по Мадриду всё равно не достаточно, чтобы построить график. Он здесь скорее из-за того, что столица. Такая же проблема была ещё с несколькими городами.
Вроде всё, что нашел исправил.
Спасибо огромное за фидбэк.
and7ey
10.04.2015 10:30Новые отели так же добавляются автоматически. Это решает проблему изменения названия отеля или его закрытия.
Как автоматическое добавление новых отелей решает проблему с изменением названия существующего отеля?leoleovich Автор
10.04.2015 13:35Сайт периодически просматривает все существующие отели. Скажем в Турции. Если отель был переименован (а это достаточно часто происходит), то через некоторое время вместо тысяч отелей реальные данные будут собираться по 100.
Конкретно эту проблему это решает:)
unlying
10.04.2015 10:56Серьёзно? Очень полезный сайт. При выборе Канарских островов без попыток что-то бронировать.
leoleovich Автор
10.04.2015 13:34+1Сайт перебрасывает на это окно, если вы пытаетесь посмотреть «статистику» за будущие даты.
Иными словами вы хотите увидеть не статистику а актуальные предложения.
Раньше был модуль, который покажет стоимость туров в будущем. Но пока мы его убрали.
И так, попробуйте выбрать правильные даты. Я проверил, работает:)unlying
10.04.2015 14:17Конечно, мне интересны предложения) Сайт называется «Когда и куда поехать на отдых». А не статистика прошлых лет :)
Lexxtor
13.04.2015 11:54У Яндекса есть что-то подобное: travel.yandex.ru
Но цены там большие.leoleovich Автор
13.04.2015 21:47У Яндекса даже в проекте этого сервиса не было, когда мой уже работал:)
muon
14.04.2015 09:02Без джаваскрипта выглядит чудовищно, аж с кусками html-тегов.
А вообще спасибо.leoleovich Автор
16.04.2015 16:38Да, пожалуйста, пользуйтесь на здоровье:)
И да, я всё же не спец по js, скорее админ;)
botaniQQQ
Я «прошлёпал» ссылку в тексте или ее нет?
leoleovich Автор
protury.info
Пользуйтесь на здоровье!