•         

- - - - -

Связь между рынками Основной рынок тенисного матча и рынки по сетам


#1   Alex2016

    Новичок


  • Участник
  • 20
1

09 April 2016 - 08:16

Привет всем!
Хочу написать своего бота.
Потихоньку продвигаюсь.
Возник вопрос есть событие:
{"event":{"id":"27753941","name":"Errani v Vesnina","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":12}

после него идут события:
{"event":{"id":"27753943","name":"Set 01","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":13}
,{"event":{"id":"27753945","name":"Set 03","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":13}
,{"event":{"id":"27753944","name":"Set 02","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":13}


после запрашивания рынков видно по составу участников видно что это события одного матча, но объединяющих идентификаторов я не увидел.

Так вопрос в том, я их не увидел или их нет?
Если нет то как связать эти события в одно?

Заранее благодарен.

#2   VBman

    Специалист


  • Участник II
  • 203
44

09 April 2016 - 09:26

Так вопрос в том, я их не увидел или их нет?
Если нет то как связать эти события в одно?
В скачках так:

Например, есть событие Забег1.
К этого забега есть разные рынки, WIN, например и PLACE

так вот
{"event":{"id":"27753941"
этот id у одного забега в разных рынках должен быть одинаковый. По нему можно свзяать разные рынки у одного события


у вас они идут разные почему-то..

софтик - парсер json
https://jsonviewer.codeplex.com/

поможет разобраться в иерархии

#3   Alex2016

    Новичок


  • Участник
  • 20
1

09 April 2016 - 10:22

Вот ссылка на это событие

href="https://www.betfair.com/exchange/tennis/event?id=27753941">https://www.betfair.com/exchange/tennis/event?id=27753941

А вот на запрос

operation=listEventTypes&params=[{"jsonrpc": "2.0","method": "SportsAPING/v1.0/listEvents", "params":{ "filter": { "eventTypeIds": ["2"],"marketStartTime": { "from": "2016-04-09T09:25:05Z", "to": "2016-04-10T12:25:05Z" }  }  }, "id": 1 } ]


Ответ(не полный), интересующие идентификаторы: 27753945,27753944, 27753943, 27753941
{"jsonrpc":"2.0","result":[{"event":{"id":"27753945","name":"Set 03","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":13},{"event":{"id":"27753944","name":"Set 02","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":13},{"event":{"id":"27753949","name":"N Mejia v E Gomez","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T18:00:00.000Z"},"marketCount":4},{"event":{"id":"27753948","name":"Jo Link v El Mihdawy","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T14:00:00.000Z"},"marketCount":4},{"event":{"id":"27753951","name":"Galan v Benitez Chavarriaga","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T18:00:00.000Z"},"marketCount":4},{"event":{"id":"27753950","name":"Benkaim v E Bruna","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T18:00:00.000Z"},"marketCount":4},{"event":{"id":"27753403","name":"Donati/Napolitano v Kretschmer/Satschko","countryCode":"IT","timezone":"UTC","openDate":"2016-04-09T13:30:00.000Z"},"marketCount":4},{"event":{"id":"27753402","name":"G Elias v Kovalik","countryCode":"IT","timezone":"UTC","openDate":"2016-04-09T11:00:00.000Z"},"marketCount":4},{"event":{"id":"27753941","name":"Errani v Vesnina","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":12},{"event":{"id":"27753943","name":"Set 01","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":13},

Может проверите?

#4   VBman

    Специалист


  • Участник II
  • 203
44

09 April 2016 - 11:06

Вот ссылка на это событие

href="https://www.betfair.com/exchange/tennis/event?id=27753941">https://www.betfair.com/exchange/tennis/event?id=27753941

А вот на запрос

operation=listEventTypes&params=[{"jsonrpc": "2.0","method": "SportsAPING/v1.0/listEvents", "params":{ "filter": { "eventTypeIds": ["2"],"marketStartTime": { "from": "2016-04-09T09:25:05Z", "to": "2016-04-10T12:25:05Z" }  }  }, "id": 1 } ]


Ответ(не полный), интересующие идентификаторы: 27753945,27753944, 27753943, 27753941
{"jsonrpc":"2.0","result":[{"event":{"id":"27753945","name":"Set 03","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":13},{"event":{"id":"27753944","name":"Set 02","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":13},{"event":{"id":"27753949","name":"N Mejia v E Gomez","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T18:00:00.000Z"},"marketCount":4},{"event":{"id":"27753948","name":"Jo Link v El Mihdawy","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T14:00:00.000Z"},"marketCount":4},{"event":{"id":"27753951","name":"Galan v Benitez Chavarriaga","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T18:00:00.000Z"},"marketCount":4},{"event":{"id":"27753950","name":"Benkaim v E Bruna","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T18:00:00.000Z"},"marketCount":4},{"event":{"id":"27753403","name":"Donati/Napolitano v Kretschmer/Satschko","countryCode":"IT","timezone":"UTC","openDate":"2016-04-09T13:30:00.000Z"},"marketCount":4},{"event":{"id":"27753402","name":"G Elias v Kovalik","countryCode":"IT","timezone":"UTC","openDate":"2016-04-09T11:00:00.000Z"},"marketCount":4},{"event":{"id":"27753941","name":"Errani v Vesnina","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":12},{"event":{"id":"27753943","name":"Set 01","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"},"marketCount":13},

Может проверите?
ну запрашивая SportsAPING/v1.0/listEvents вы просите список событий для события "2" теннис.
Выбираете здесь нужные вам (например 27753944)

далее получаете список рынков через SportsAPING/v1.0/listMarketCatalogue
и уже в ответе все {"event":{"id":"27753944" будут содержать рынки именно этого события 27753944

#5   Alex2016

    Новичок


  • Участник
  • 20
1

09 April 2016 - 11:37

Я так и делаю.
Но вопрос в том то при запросе всех событий рынка теннис возвращает
четыре события, для одного матча
27753941- в этом событии рынки на весь матч. Кроме ставок по сетам.
27753943 - в этом событии ставки на геймы в первом сете
27753944 - в этом событии ставки на геймы в втором сете
27753945 - в этом событии ставки на геймы в третьем сете сете.

Я хочу их объединить одним идентификатором, чтобы все вместе помещать на форму для этого матча.
как определить что они относятся к одному матчу.

#6   VBman

    Специалист


  • Участник II
  • 203
44

09 April 2016 - 11:49

Я так и делаю.
Но вопрос в том то при запросе всех событий рынка теннис возвращает
четыре события, для одного матча
27753941- в этом событии рынки на весь матч. Кроме ставок по сетам.
27753943 - в этом событии ставки на геймы в первом сете
27753944 - в этом событии ставки на геймы в втором сете
27753945 - в этом событии ставки на геймы в третьем сете сете.

Я хочу их объединить одним идентификатором, чтобы все вместе помещать на форму для этого матча.
как определить что они относятся к одному матчу.
на этапе SportsAPING/v1.0/listEvents они все объеденены идентификатором "2". Больше никаких объединений нет. Только время события. Но это не выход.

Вариант -
Получать события через SportsAPING/v1.0/listMarketCatalogue, там какраз один иденификатор events будет для всех событий рынка. И получится вывести на форму все рынки события "id":"27753944"

#7   Alex2016

    Новичок


  • Участник
  • 20
1

09 April 2016 - 12:05

27753941- в этом событии рынки на весь матч. Кроме ставок по сетам.
27753943 - в этом событии ставки на геймы в первом сете
27753944 - в этом событии ставки на геймы в втором сете
27753945 - в этом событии ставки на геймы в третьем сете сете.

Вот пример SportsAPING/v1.0/listMarketCatalogue, с 27753944 возращает вот таких 13 блоков на каждый гейм во втором сете. (Убраны некоторые скобки)

{"marketId":"1.124154838","marketName":"Game 01","marketStartTime":"2016-04-09T19:00:00.000Z","totalMatched":0.0}
{"selectionId":10952985,"runnerName":"Sara Errani","handicap":0.0,"sortPriority":1,"runnerId":"10952985"}
{"selectionId":10951160,"runnerName":"Elena Vesnina","handicap":0.0,"sortPriority":2,"runnerId":"10951160"}
{"eventType":1,"id":"2","name":"Tennis"}
{"competition":1,"id":"9080236","name":"Charleston Open 2016"}
{"event":1,"id":"27753944","name":"Set 02","countryCode":"US","timezone":"UTC","openDate":"2016-04-09T19:00:00.000Z"}


А запрос SportsAPING/v1.0/listMarketCatalogue, 27753941 возвращает остальные ставки (на победителя, количество сетов и тд.)

#8   VBman

    Специалист


  • Участник II
  • 203
44

09 April 2016 - 12:23

https://api.develope...rket+Navigation

#9   Alex2016

    Новичок


  • Участник
  • 20
1

09 April 2016 - 13:22

А вы так строите меню?
ROOT

{
    "children": [
	    {
		    EVENT_TYPE1
	    },
	    {
		    EVENT_TYPE2
	    },
	    ...
    ],
    "id": 0, // always 0
    "name": "ROOT", // always ROOT
    "type": "GROUP" // always GROUP
}

EVENT_TYPE

{
    "children": [
	    {
		    GROUP or EVENT or RACE (RACE only if Greyhounds/Horse Racing)
	    },
	    ...
    ],
    "id": "1", // Betfair specific eventTypeId
    "name": "Soccer",
    "type": "EVENT_TYPE"
}

GROUP

{
    "children": [
	    {
		    GROUP or EVENT
	    },
	    ...
    ],
    "id": "74568202414", // Not a Betfair specific id, different for every GROUP
    "name": "Womens Soccer",
    "type": "GROUP"
}

EVENT


{
    "children": [
	    {
		    GROUP, MARKET or EVENT
	    },
	    ...
    ],
    "id": "27244118", // Betfair specific eventId
    "name": "South Korea U20 (W) v Mexico U20 (W)",
    "countryCode": "GB",
    "type": "EVENT"
}

В догонку вопрос что такое 'keep-alive'?

#10   denvb

    Специалист


  • Участник II
  • 382
90

09 April 2016 - 15:26

На самом деле всё не так и цепляться к eventId надо осторожно. Точнее, вообще не надо. Я конечно не bdp-team, просто по граблям походил. Попробую объяснить, что такое eventId. Скачки, вечером. Фаер утром выкатывает на этот забег 2 рынка, вин и плейс. Это и есть event, эти рынки получили свой id. Ближе к началу забега добавятся рынки TBP4, AvB... Это будет новый event и у них будет новый идентификатор! Они открылись позже, другая группа, другой eventId. А забег тот же!

Видел и ситуацию, когда рынки одного забега имели id от другого (более позднего) забега, просто их выкатили на биржу вместе.

Для себя не нашёл каких-то однозначных признаков соответствия, на конях стыкую по времени и иподрому, на футболе – время и стадион. Тут даже runner.name бывает разный на разных рынках.

Ещё вариант – запрос дерева меню, есть в документации, типа будет как на сайте, сам не пробовал

P.S. ну да, структура постом выше

#11   Alex2016

    Новичок


  • Участник
  • 20
1

09 April 2016 - 15:47

Как связать не знаю.
Дан пример:


Example Request


GET https://api.betfair.com/exchange/betting/rest/v1/en/navigation/menu.json
Connection: keep-alive
X-Application: <AppKey>
X-Authentication: <SessionToken>
Accept: application/json
Accept-Encoding: gzip,deflate

JSON - структура первая чость root и дальше ( см . высше)
ROOT


{
    "children": [
	    {
		    EVENT_TYPE1
	    },
	    {
		    EVENT_TYPE2
	    },
	    ...
    ],
    "id": 0, // always 0
    "name": "ROOT", // always ROOT
    "type": "GROUP" // always GROUP
}
Что из чего получается.
Может кто пример покажет?

#12   denvb

    Специалист


  • Участник II
  • 382
90

09 April 2016 - 15:52

Время и место

#13   Alex2016

    Новичок


  • Участник
  • 20
1

09 April 2016 - 16:27

Здесь и сейчас!

#14   Alex2016

    Новичок


  • Участник
  • 20
1

11 April 2016 - 18:49

Привет всем!
Скачал меню.
Размер загрузки в распакованном виде 2.7M.(в связи с этим прикрепить его не могу.
Полностью повторяет меню сайта.
Подробность до Market ID.

Парсить этот фаил или нет, пока думаю.

VBMEN спасибо за

софтик - парсер json
https://jsonviewer.codeplex.com/


denvb

Видел и ситуацию, когда рынки одного забега имели id от другого (более позднего) забега, просто их выкатили на биржу вместе.
Какой Id вы имели в виду: Евент или Маркет?

#15   pin

    Специалист


  • Участник II
  • 156
13
  • Местоположениеhell

27 May 2016 - 20:06

Парни, привет. А у всех нормально работает API? У меня авторизация проходит нормально, но вот когда пытаюсь получить информацию от https://api.betfair....ation/menu.json получаю
 " '{" code ":" UAG-007 "," message ":" Invalid Credentials "}'"
. Вот пример и ответ от авторизации;
 '{"token":"1Rk1234VHWD1234CE1234q43RQLE=","product":"xcfrv5frcd4","status":"SUCCESS","error":""}


#16   triggers

    Триггер Мастер


  • Участник II
  • 989
184

27 May 2016 - 20:47

Ты б еще логин-пароль выложил...

#17   pin

    Специалист


  • Участник II
  • 156
13
  • Местоположениеhell

27 May 2016 - 21:02

Ты б еще логин-пароль выложил...
Мужчина, а Вы попробуйте подберите и угоните кэш, или только флэймить умеете?
Может по делу, что есть сказать?

#18   triggers

    Триггер Мастер


  • Участник II
  • 989
184

27 May 2016 - 21:10

Уважаемый, я Вас пытался предостеречь от действий плохих "мужчин", а Вы такой злобный.
Указанных выше данных вполне хватит, чтобы отправить запрос к BetFair от Вашего имени.
Да, денег не снять, но ставку сделать можно.
Конечно, сессия может быть уже expired, но откуда ж мне знать сколь Вы подкованы в данном вопросе.

По сути - у меня все работает, гы :D

#19   pin

    Специалист


  • Участник II
  • 156
13
  • Местоположениеhell

27 May 2016 - 21:28

Уважаемый, я Вас пытался предостеречь от действий плохих "мужчин", а Вы такой злобный.
Указанных выше данных вполне хватит, чтобы отправить запрос к BetFair от Вашего имени.
Да, денег не снять, но ставку сделать можно.
Конечно, сессия может быть уже expired, но откуда ж мне знать сколь Вы подкованы в данном вопросе.

По сути - у меня все работает, гы :D

Мужчина, я представитель не самой лучшей стороны человечества. Не буду бравировать, но Вы ничего не сможете получить из того, что я выложил.

Для тех, кто столкнулся с такой же темой, как и я. Если Вы раньше работали с API, то вероятнее всего Вы ввели неправильно свой APP_KEY. Идём сюда https://developers.b...unt-operations/ , но перед этим, логинемся на BF, дальше получаем правильные данные и радуемся.

Уважаемый, я Вас пытался предостеречь от действий плохих "мужчин", а Вы такой злобный.
Указанных выше данных вполне хватит, чтобы отправить запрос к BetFair от Вашего имени.
Да, денег не снять, но ставку сделать можно.
Конечно, сессия может быть уже expired, но откуда ж мне знать сколь Вы подкованы в данном вопросе.

По сути - у меня все работает, гы :D

Но спасибо. Вы помогли :) На чём кодите?

#20   triggers

    Триггер Мастер


  • Участник II
  • 989
184

28 May 2016 - 14:45

php, c++, node.js