Аналитика (json)

Материал из wiki.Sletat.ru
Версия от 16:00, 28 октября 2019; Kdadmin (обсуждение | вклад) (Минимальные цены по параметрам поиска)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Введение

XML-шлюз аналитики Слетать.ру содержит набор методов для ценового анализа данных о турах. Анализ может быть как динамическим (отслеживание изменений стоимости данного тура с момента выпуска), так и сравнительным (сопоставление разных туров по стоимости). На страницах настоящего руководства описаны следующие группы методов:

  • «Минимальные цены по параметрам поиска». Этот метод позволяет получать информацию о самых дешёвых турах, соответствующих введённым параметрам поиска, на каждую дату заданного диапазона. На Рис. 0.1. представлен пример реализации графика минимальных цен. По заданному поисковому запросу (тур из Москвы в Египет на двоих, продолжительностью от 6 до 16 ночей, без ограничений по курорту, туроператору, категории отеля, типу размещения или типу питания), выводятся минимальные цены на туры в диапазоне «дата поиска + 45 дней»; цены на туры представлены в виде гистограммы; диапазон дат вылета, выбранный при поиске (5 апреля – 13 апреля) выделен затенением; при наведении курсора мыши на столбец гистограммы выводится точная цена тура, название туроператора, тип питания, тип номера, название курорта, название отеля и количество звёзд.
Пример реализации графика минимальных цен на сайте sletat.ru.
  • «Минимальные цены тура на другие даты». Метод, описанный в этом разделе, используется для построения графика изменения цены тура, соответствующего заданным параметрам поиска, в диапазоне дат. На Рис. 0.2 приведён пример реализации графика. В описании таблицы приведены параметры тура: отель (с указанием количества звёзд), курорт, город вылета, продолжительность тура (в ночах), тип питания и тип размещения; на гистограмме представлены минимальные цены на туры, соответствующие заданным параметрам, на интервал дат, ограниченный только датой поиска (анализируются данные по всем турам, представленным в системе Слетать.ру); при наведении курсора мыши на столбец гистограммы во всплывающем окне выводится информация о туроператоре, дате вылета, дате и времени поиска и цене тура (в сравнении с ценойанализируемого тура); пользователь может отфильтровать данные по туроператорам.
Пример реализации графика других дат вылета на сайте sletat.ru.
  • «История цены тура». Эта группа методов позволяет строить график изменения цены на выбранный тур с момента его появления в системе до момента поиска. На Рис. 0.3 приведён пример реализации графика. Для выбранного тура (на двоих в Хургаду 9 апреля, с вылетом из Москвы, продолжительностью 6 ночей, отель Triton Empire Hotel 3*, тип размещения Standard, тип питания HB, оператор Pegas Touristik) выводится график изменения цены; пользователь может просмотреть динамику за неделю, за месяц или за всё время с момента появления тура в системе поиска Слетать.ру.
Пример реализации графика изменения цены тура на сайте sletat.ru

Минимальные цены по параметрам поиска

Метод GetToursGroupByDate позволяет получать информацию о самых дешёвых турах, соответствующих введённым параметрам поиска, на каждую дату заданного диапазона. Адрес сервиса:

https://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 – за последние сутки, и т.д.).

Пример вызова:

https://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&sources=380,6

Запрашиваются данные по направлению Москва – Египет (Шарм-эль-Шейх и Хургада), в отели 4 и 5 звезд, тип питания AI, продолжительность 7-10 ночей, на диапазон дат с 12 мая по 27 июня по туроператорам TUI и Coral

Пример ответа:

{
  "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 возвращает данные для построения графика (дата – минимальная цена) и вывода подсказок к каждой точке (дата последнего обновления информации о туре, туроператор). Адрес сервиса:

https://graph.sletat.ru/main.svc.
Хеши туров

В выдаче GetTours (JSON API) для каждого тура в массиве данных элемент с индексом 79 или параметр TourHash в ответе метода GetRequestResult (XML API) содержит уникальный хеш тура, который запрашивает данные для описываемого графика.

Параметры:

  • countryId - идентификатор страны;
  • dptCityId - идентификатор города вылета;
  • hash – хеш тура (поле TourHash в ответе метода GetRequestResult или элемент с индексом 79 в ответе GetTours);
  • dateStart - первая дата в диапазоне дат в формате dd.MM.yyyy;
  • dateEnd - вторая дата в диапазоне дат в формате dd.MM.yyyy;
  • sources - список идентификаторов туроператоров (по умолчанию не используется).

Пример вызова:

https://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 позволяют строить график изменения цены на выбранный тур с момента его появления в системе до момента поиска. Адрес сервиса:

https://graph.sletat.ru/main.svc.
Хеши туров

В выдаче GetTours (JSON API) для каждого тура в массиве данных элемент с индексом 68 содержит уникальный хеш тура, который используется для получения статистических данных по нему. В XML API к каждому туру хеш передается в поле TourArchiveHash. Используя данные хеши туров, можно вызывать методы сервиса graph.sletat.ru.

GetToursPriceLogCount

Метод принимает один или несколько хешей и выдает первоначальную цену тура, по которой он был найден первый раз. Данная цена может использоваться для указания на процент изменения цены по сравнению с текущей ценой. Также метод возвращает количество зафиксированных изменений цены для каждого тура. Параметр hashes – список хешей. Хеши отделяются знаком |.Пример вызова:

https://graph.sletat.ru/main.svc/GetToursPriceLogCount?login=xxx&password=yyy&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 — хеш тура. Пример вызова:

https://graph.sletat.ru/main.svc/GetTourPriceLog?login=xxx&password=yyy&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 – хеши туров, разделенные знаком “|”

Пример вызова:

https://graph.sletat.ru/main.svc/GetTourPriceLogBulk?login=xxx&password=yyy&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 является уникальным идентификатором тура, для которого предоставлены данные.