Аналитика (json) — различия между версиями

Материал из wiki.Sletat.ru
Перейти к: навигация, поиск
(Новая страница: «== Введение == XML-шлюз аналитики Слетать.ру содержит набор методов для ценового анализа да…»)
(нет различий)

Версия 11:13, 10 июля 2015

Введение

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

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

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

Метод 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?countryId=40&cityFromId=832&cities=1592,1642&meals=115&stars=403,404&adults=2&nightsMin=7&nightsMax=10&date1=12.05.2013&date2=27.06.2013&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 – хеш тура;
  • dateStart - первая дата в диапазоне дат в формате dd.MM.yyyy;
  • dateEnd - вторая дата в диапазоне дат в формате dd.MM.yyyy;
  • sources - список идентификаторов туроператоров (по умолчанию не используется).

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

http://graph.sletat.ru/Main.svc/GetTourPriceGroupByDate?countryId=40&dptCityId=832&dateStart=07.05.2013&dateEnd=06.07.2013&hash=Gb1cwWo1vF4xCEPuHVo71Q%3D%3D

Запрашиваются данные для тура по направлению Москва – Египет для диапазона дат с 7 мая 2013 г. до 6 июля 2013 г.Пример ответа:

{
  "GetTourPriceGroupByDateResult":
  {
    "Data":
    {
      "dates":
      [
        "13.05.2013",
        "14.05.2013",
        "15.05.2013",
        "16.05.2013",
        "18.05.2013",
        "19.05.2013",
        "20.05.2013",
        "23.05.2013",
        "26.05.2013",
        "27.05.2013",
        "30.05.2013",
        "03.06.2013",
        "06.06.2013",
        "09.06.2013",
        "10.06.2013",
        "13.06.2013",
        "16.06.2013",
        "17.06.2013",
        "20.06.2013",
        "23.06.2013",
        "24.06.2013",
        "27.06.2013",
        "30.06.2013",
        "01.07.2013",
        "04.07.2013"
      ],
      "found":
       [
        "12.05.2013 19:00:00",
        "11.05.2013 12:53:00",
        "12.05.2013 19:03:00",
        "11.05.2013 19:31:00",
        "11.05.2013 14:28:00",
        "12.05.2013 19:03:00",
        "12.05.2013 19:03:00",
        "12.05.2013 19:00:00",
        "12.05.2013 18:56:00",
        "12.05.2013 18:56:00",
        "12.05.2013 17:17:00",
        "12.05.2013 18:41:00",
        "12.05.2013 18:41:00",
        "12.05.2013 17:57:00",
        "12.05.2013 17:57:00",
        "12.05.2013 12:06:00",
        "12.05.2013 09:08:00",
        "12.05.2013 17:30:00",
        "12.05.2013 17:30:00",
        "12.05.2013 13:41:00",
        "12.05.2013 13:41:00",
        "12.05.2013 13:41:00",
        "11.05.2013 20:45:00",
        "12.05.2013 19:03:00",
        "12.05.2013 17:50:00"
      ],
      "prices":
       [
        19020,
        38328,
        20901,
        22324,
        22324,
        21596,
        21596,
        21596,
        24474,
        24474,
        25928,
        27351,
        27351,
        27351,
        27351,
        27351,
        26023,
        24474,
        24474,
        24474,
        24474,
        24474,
        24474,
        24474,
        24474
      ],
      "sources":
       [
        7,
        119,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163,
        163
      ]
    },
    "ErrorMessage": null,
    "IsError": false
  }
}

Возвращаются четыре массива данных:

  • dates – даты, для которых есть цена на тур;
  • found – дата и время последнего обновления информации к каждой дате из массива dates;
  • prices – минимальные цены тура на каждую дату из массива dates;
  • 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 является уникальным идентификатором тура, для которого предоставлены данные.