Аналитика (json)
Содержание
Введение
XML-шлюз аналитики Слетать.ру содержит набор методов для ценового анализа данных о турах. Анализ может быть как динамическим (отслеживание изменений стоимости данного тура с момента выпуска), так и сравнительным (сопоставление разных туров по стоимости). На страницах настоящего руководства описаны следующие группы методов:
- «Минимальные цены по параметрам поиска». Этот метод позволяет получать информацию о самых дешёвых турах, соответствующих введённым параметрам поиска, на каждую дату заданного диапазона. На Рис. 0.1. представлен пример реализации графика минимальных цен. По заданному поисковому запросу (тур из Москвы в Египет на двоих, продолжительностью от 6 до 16 ночей, без ограничений по курорту, туроператору, категории отеля, типу размещения или типу питания), выводятся минимальные цены на туры в диапазоне «дата поиска + 45 дней»; цены на туры представлены в виде гистограммы; диапазон дат вылета, выбранный при поиске (5 апреля – 13 апреля) выделен затенением; при наведении курсора мыши на столбец гистограммы выводится точная цена тура, название туроператора, тип питания, тип номера, название курорта, название отеля и количество звёзд.
- «Минимальные цены тура на другие даты». Метод, описанный в этом разделе, используется для построения графика изменения цены тура, соответствующего заданным параметрам поиска, в диапазоне дат. На Рис. 0.2 приведён пример реализации графика. В описании таблицы приведены параметры тура: отель (с указанием количества звёзд), курорт, город вылета, продолжительность тура (в ночах), тип питания и тип размещения; на гистограмме представлены минимальные цены на туры, соответствующие заданным параметрам, на интервал дат, ограниченный только датой поиска (анализируются данные по всем турам, представленным в системе Слетать.ру); при наведении курсора мыши на столбец гистограммы во всплывающем окне выводится информация о туроператоре, дате вылета, дате и времени поиска и цене тура (в сравнении с ценойанализируемого тура); пользователь может отфильтровать данные по туроператорам.
- «История цены тура». Эта группа методов позволяет строить график изменения цены на выбранный тур с момента его появления в системе до момента поиска. На Рис. 0.3 приведён пример реализации графика. Для выбранного тура (на двоих в Хургаду 9 апреля, с вылетом из Москвы, продолжительностью 6 ночей, отель Triton Empire Hotel 3*, тип размещения Standard, тип питания HB, оператор Pegas Touristik) выводится график изменения цены; пользователь может просмотреть динамику за неделю, за месяц или за всё время с момента появления тура в системе поиска Слетать.ру.
Минимальные цены по параметрам поиска
Метод GetToursGroupByDate позволяет получать информацию о самых дешёвых турах, соответствующих введённым параметрам поиска, на каждую дату заданного диапазона. Адрес сервиса:
http://graph.sletat.ru/main.svc/
Метод принимает поисковые параметры и возвращает массив из двух колонок для постройки графика, в первой – даты вылета в формате dd.MM.yyyy, во второй – минимальная цена тура на дату.
Параметры:
- countryId - идентификатор страны;
- cityFromId - идентификатор города вылета;
- cities - список идентификаторов курортов через запятую (по умолчанию не используется);
- meals - список идентификаторов питания через запятую (по умолчанию не используется);
- stars - список идентификаторов категорий отелей через запятую (по умолчанию не используется);
- hotels - список идентификаторов отелей через запятую (по умолчанию не используется);
- adults - количество взрослых, по умолчанию 2;
- kids - количество детей, по умолчанию 0;
- nightsMin – минимальная продолжительность тура (в ночах), по умолчанию 3;
- nightsMax - максимальная продолжительность тура (в ночах), по умолчанию 10;
- priceMin - минимальная цена тура (по умолчанию не используется);
- priceMax - максимальная цена тура (по умолчанию не используется);
- date1 - первая дата в диапазоне дат туров в формате dd.MM.yyyy, по умолчанию текущая дата + 1 день;
- date2 - вторая дата в диапазоне дат туров в формате dd.MM.yyyy, по умолчанию текущая дата + 8 дней;
- sources - список идентификаторов туроператоров через запятую (по умолчанию не используется);
- ticketsIncluded - при значении 1 отображаются цена на туры только с перелетом (по умолчанию 0);
- limitMin – временной интервал (от текущих даты и времени), за который нужно сделать выборку данных (60 – за последний час, 1440 – за последние сутки, и т.д.).
Пример вызова:
http://graph.sletat.ru/main.svc/GetToursGroupByDate?login=xxx&password=yyy&countryId=40&cityFromId=832&cities=1592,1642&meals=115&stars=403,404&adults=2&nightsMin=7&nightsMax=10&date1=12.09.2015&date2=27.09.2015&ticketsIncluded=1
Запрашиваются данные по направлению Москва – Египет (Шарм-эль-Шейх и Хургада), в отели 4 и 5 звезд, тип питания AI, продолжительность 7-10 ночей, на диапазон дат с 12 мая по 27 июня.
Пример ответа:
{
"GetToursGroupByDateResult":
{
"Data":
{
"data":
[
[
"12.05.2013",
15537,
"12.05.2013",
"18:25",
"Sunmar",
"Fortuna Fortuna Sharm el-Sheikh 4*",
"4*",
"Шарм-Эль-Шейх",
"AI",
"Standard",
"DBL",
7
],
[
"13.05.2013",
15537,
"12.05.2013",
"18:25",
"Sunmar",
"Fortuna Fortuna Sharm el-Sheikh 4*",
"4*",
"Шарм-Эль-Шейх",
"AI",
"Standard",
"DBL",
7
],
[
"14.05.2013",
16674,
"12.05.2013",
"18:25",
"Pegas Touristik",
"Aida Hotel Sharm",
"4*",
"Шарм-Эль-Шейх",
"AI",
"Standard Room Double",
"---",
7
]
]
},
"ErrorMessage": null,
"IsError": false
}
}В примере ответа для читаемости оставлены данные лишь для трех дат. Массив data содержит вложенные массивы, каждый из которых содержит краткое описание самого дешевого тура для каждой даты из указанного в параметрах диапазона. Ниже описывается каждый элемент таких массивов:
|
Поле |
Тип |
Описание |
|
data[0] |
str |
Дата начала тура в формате dd.MM.yyyy. |
|
data[1] |
int |
Цена тура. |
|
data[2] |
str |
Дата последнего изменения информации о туре в базе данных в формате dd.MM.yyyy. |
|
data[3] |
str |
Время последнего изменения информации о туре в базе данных в формате HH:mm. |
|
data[4] |
str |
Название туроператора. |
|
data[5] |
str |
Название отеля. |
|
data[6] |
str |
Категория отеля. |
|
data[7] |
str |
Название курорта. |
|
data[8] |
str |
Тип питания. |
|
data[9] |
str |
Тип размещения. |
|
data[10] |
str |
Тип номера. |
|
data[11] |
int |
Продолжительность тура, ночей. |
Минимальные цены тура на другие даты
Метод GetTourPriceGroupByDate возвращает данные для построения графика (дата – минимальная цена) и вывода подсказок к каждой точке (дата последнего обновления информации о туре, туроператор). Адрес сервиса:
http://graph.sletat.ru/main.svc.
| Хеши туров
В выдаче GetTours (JSON API) для каждого тура в массиве данных элемент с индексом 67 содержит уникальный хеш тура, который запрашивает данные для описываемого графика. |
Параметры:
- countryId - идентификатор страны;
- dptCityId - идентификатор города вылета;
- hash – хеш тура (поле TourArchiveHash в ответе метода GetRequestResult);
- dateStart - первая дата в диапазоне дат в формате dd.MM.yyyy;
- dateEnd - вторая дата в диапазоне дат в формате dd.MM.yyyy;
- sources - список идентификаторов туроператоров (по умолчанию не используется).
Пример вызова:
http://graph.sletat.ru/Main.svc/GetTourPriceGroupByDate?&login=xxx&password=yyy&countryId=40&dptCityId=832&dateStart=13.08.2015&dateEnd=23.09.2015&hash=J7YKqhBQORktZuYWXFamDA%3D%3D
Запрашиваются данные для тура по направлению Москва – Египет для диапазона дат с 13 августа 2015 г. до 23 сентября 2015 г.Пример ответа:
GetTourPriceGroupByDateResult: {
Data: {
dates: [
"14.08.2015",
"15.08.2015",
"16.08.2015",
"17.08.2015",
"18.08.2015",
"19.08.2015",
"20.08.2015",
"21.08.2015",
"22.08.2015",
...
],
found: [
"13.08.2015 11:31:00",
"13.08.2015 10:23:00",
"13.08.2015 10:23:00",
"12.08.2015 13:41:00",
"13.08.2015 12:36:00",
"12.08.2015 13:11:00",
"13.08.2015 12:36:00",
"13.08.2015 01:00:00",
"13.08.2015 12:30:00",
"13.08.2015 12:26:00",
...
],
offers: [
268127847,
1202512476,
1202512474,
244057401,
268571106,
1177213682,
268571122,
1204447483,
267572652,
265763194,
...
],
prices: [
38335,
33153,
31734,
49263,
34565,
49278,
38855,
40635,
43535,
43535,
...
],
requests: [
1340488352,
1340309141,
1340309141,
1338385388,
1340675097,
1338304937,
1340675097,
1339574679,
1340654525,
1340641344,
...
],
sources: [
3,
148,
148,
3,
3,
148,
3,
148,
3,
3,
...
]
},
ErrorMessage: null,
ExecutionTimeMs: 0,
IsError: false
}Возвращаются массивы данных:
- dates — даты, для которых есть цена на тур;
- found — дата и время последнего обновления информации к каждой дате из массива dates;
- offers — offerId каждого тура;
- prices — минимальные цены тура на каждую дату из массива dates;
- requests — requestId каждого тура;
- sources — идентификатор туроператора каждого тура;
История цены тура
Методы GetToursPriceLogCount, GetTourPriceLog и GetTourPriceLogBulk позволяют строить график изменения цены на выбранный тур с момента его появления в системе до момента поиска. Адрес сервиса: http://graph.sletat.ru/main.svc.
| Хеши туров
В выдаче GetTours (JSON API) для каждого тура в массиве данных элемент с индексом 68 содержит уникальный хеш тура, который используется для получения статистических данных по нему. В XML API к каждому туру хеш передается в поле TourArchiveHash. Используя данные хеши туров, можно вызывать методы сервиса graph.sletat.ru. |
GetToursPriceLogCount
Метод принимает один или несколько хешей и выдает первоначальную цену тура, по которой он был найден первый раз. Данная цена может использоваться для указания на процент изменения цены по сравнению с текущей ценой. Также метод возвращает количество зафиксированных изменений цены для каждого тура. Параметр hashes – список хешей. Хеши отделяются знаком |.Пример вызова:
http://graph.sletat.ru/main.svc/GetToursPriceLogCount?hashes=ybzzZjdSGrM5N07eDIccHQ%3D%3D%7CzjlRE0oa0a1NizaBj%2Fnmog%3D%3D%7CX1%2BF8A81B4Z8rhlFBanrZQ%3D%3D
Пример ответа:
{
"GetToursPriceLogCountResult":
{
"Data":
{
"counts"
[
10,
10,
10
],
"firstPrices"
[
52250,
52833,
53417
]
},
"ErrorMessage":null,
"IsError":false
}
}Массив counts содержит кол-во зафиксированных изменений цен к каждому туру (последовательность элементов в массиве соответствует каждому хешу в параметре hashes). Массив firstPrices содержит первую зафиксированную цену для каждого тура.
GetTourPriceLog
Метод возвращает зафиксированные изменения цен для указанного тура. Параметр hash – хеш тура.Пример вызова:
http://graph.sletat.ru/main.svc/GetTourPriceLog?hash=ybzzZjdSGrM5N07eDIccHQ%3D%3D
Пример ответа:
{
"GetTourPriceLogResult":
{
"Data":
{
"Dates":
[
"04.02.2013",
"08.02.2013",
"12.02.2013",
"17.02.2013",
"21.02.2013",
"25.02.2013",
"01.03.2013",
"05.03.2013",
"09.03.2013",
"13.03.2013"
],
"Prices":
[
52250,
51999,
51623,
51498,
49443,
49202,
49202,
42554,
42554,
42554
]
},
"ErrorMessage":null,
"IsError":false
}
}Массив Dates содержит даты, в которые были зафиксированы изменения цены, а массив Prices содержит минимальное значение цены в этот день.
GetTourPriceLogBulk
Функционал аналогичен методу GetTourPriceLog, но с помощью этого метода можно запросить данные сразу по нескольким турам (до 100 туров за один запрос). Параметр hashes – хеши туров, разделенные знаком “|”
Пример вызова:
http://graph.sletat.ru/main.svc/GetTourPriceLogBulk?hashes=9g5NjLS2rtCYgL3I7ZpQfg%3D%3D%7COhF1RqS9dfLXHsEBeMBnkw%3D%3D
Пример ответа:
{
"GetTourPriceLogBulkResult":
{
"Data":
{
"Array":
[
{
"Dates":
[
"17.03.2013",
"21.03.2013",
"25.03.2013",
"29.03.2013",
"02.04.2013",
"06.04.2013",
"10.04.2013",
"14.04.2013",
"18.04.2013",
"19.04.2013",
"23.04.2013",
"24.04.2013",
"28.04.2013",
"02.05.2013",
"07.05.2013",
"11.05.2013",
"12.05.2013",
"15.05.2013",
"16.05.2013",
"17.05.2013",
"18.05.2013",
"21.05.2013",
"22.05.2013",
"23.05.2013",
"27.05.2013",
"28.05.2013",
"31.05.2013",
"04.06.2013",
"08.06.2013",
"10.06.2013",
"14.06.2013",
"18.06.2013",
"22.06.2013",
"26.06.2013",
"27.06.2013",
"28.06.2013",
"29.06.2013",
"30.06.2013",
"07.07.2013",
"08.07.2013"
],
"Hash": "OhF1RqS9dfLXHsEBeMBnkw==",
"Prices":
[
20406,
20336,
20352,
20224,
20307,
20829,
20733,
20662,
20989,
21103,
21030,
21030,
20738,
20719,
12466,
12467,
12467,
12447,
12409,
12355,
12355,
12321,
12298,
12343,
12397,
12389,
12535,
12683,
12897,
13072,
13150,
12921,
13265,
13149,
13149,
13107,
13072,
13072,
13109,
13109]
},
{
"Dates":
[
"14.05.2013",
"15.05.2013",
"16.05.2013",
"18.05.2013",
"21.05.2013",
"22.05.2013",
"23.05.2013",
"27.05.2013",
"28.05.2013",
"31.05.2013",
"04.06.2013",
"08.06.2013",
"10.06.2013",
"14.06.2013",
"18.06.2013",
"22.06.2013",
"26.06.2013",
"27.06.2013",
"28.06.2013",
"29.06.2013",
"30.06.2013",
"01.07.2013",
"07.07.2013",
"08.07.2013"
],
"Hash": "9g5NjLS2rtCYgL3I7ZpQfg==",
"Prices":
[
31093,
30966,
31161,
31064,
24144,
23935,
23973,
31015,
31015,
28892,
29251,
29466,
29466,
29511,
28892,
29933,
29888,
30067,
30032,
29879,
29879,
29879,
31674,
31674
]
}
]
},
"ErrorMessage": null,
"ExecutionTimeMs": 73,
"IsError": false
}
}
Массив Array содержит элементы, каждый из которых описывает данные по изменению цен для одного тура. Каждый такой элемент содержит массив Dates с датами, в которые были зафиксированы изменения цены, а массив Prices содержит минимальное значение цены в этот день. Элемент hash является уникальным идентификатором тура, для которого предоставлены данные.


