Перепрыгнеть в содержание


* * * * * 1 голосов

Betfair API-NG, тонкости


256 ответов в эту тему

#61 OFFLINE   A1977494

    Новичок


  • Участник
  • Пип
  • 3 сообщения
0

Добавлено 25 November 2014 - 06:57

я так понимаю запрос MarketCatalogue это тоже самое listMarketCatalogue и выглядит так,
[{
"jsonrpc": "2.0",
"method": "SportsAPING/v1.0/listMarketCatalogue",
"params": {
"filter": {
"eventIds": [
$id_list
]
},
"maxResults": "200"
},
"id": 1
}]
но мне в ответе не приходит значение RunnerDescription есть только это
[{"jsonrpc":"2.0","result":[{"marketId":"1.116418127","marketName":"Half Time","totalMatched":0.0},{"marketId":"1.116502743","marketName":"DRAW NO BET","totalMatched":0.0},{"marketId":"1.116418128","marketName":"Correct Score","totalMatched":30.48192},{"marketId":"1.116502744","marketName":"Both teams to Score?","totalMatched":0.0},{"marketId":"1.116502740","marketName":"Over/Under 4.5 Goals","totalMatched":0.0},{"marketId":"1.116418129","marketName":"Half Time/Full Time","totalMatched":0.0},{"marketId":"1.116502741","marketName":"Next Goal","totalMatched":0.0},{"marketId":"1.116418130","marketName":"Match Odds","totalMatched":1427.8678400000001},{"marketId":"1.116502742","marketName":"First Half Goals 1.5","totalMatched":0.0},{"marketId":"1.116502738","marketName":"Over/Under 1.5 Goals","totalMatched":358.17824},{"marketId":"1.116502739","marketName":"Over/Under 3.5 Goals","totalMatched":15.993599999999999},{"marketId":"1.116418126","marketName":"Over/Under 2.5 Goals","totalMatched":127.03936},{"marketId":"1.116418118","marketName":"Total Goals","totalMatched":0.0},{"marketId":"1.116502751","marketName":"Correct Score 2 Away","totalMatched":0.0},{"marketId":"1.116502752","marketName":"Philippines +1","totalMatched":0.0},{"marketId":"1.116502749","marketName":"Over/Under 8.5 Goals","totalMatched":0.0},{"marketId":"1.116502750","marketName":"Correct Score 2 Home","totalMatched":0.0},{"marketId":"1.116502747","marketName":"Over/Under 0.5 Goals","totalMatched":5834.010560000001},{"marketId":"1.116418131","marketName":"Half Time Score","totalMatched":0.0},{"marketId":"1.116502748","marketName":"Over/Under 7.5 Goals","totalMatched":78.33728},{"marketId":"1.116418132","marketName":"Asian Handicap","totalMatched":0.0},{"marketId":"1.116502745","marketName":"Over/Under 5.5 Goals","totalMatched":96.14976},{"marketId":"1.116502746","marketName":"Over/Under 6.5 Goals","totalMatched":62.68863999999999},{"marketId":"1.116502754","marketName":"First Half Goals 0.5","totalMatched":0.0},{"marketId":"1.116502753","marketName":"Indonesia +1","totalMatched":0.0}],"id":1}]
наверное в запросе чего то нехватает

#62 OFFLINE   clerk

    Специалист


  • Модератор
  • 584 сообщения
102

Добавлено 25 November 2014 - 07:10

Думается, что при комплектовании запроса в marketProjections надо добавить RUNNER_DESCRIPTION
ISet<MarketProjection> marketProjections = new HashSet<MarketProjection>();
....
marketProjections.Add(MarketProjection.RUNNER_DESCRIPTION);

#63 OFFLINE   A1977494

    Новичок


  • Участник
  • Пип
  • 3 сообщения
0

Добавлено 25 November 2014 - 08:24

Спасибо большое заработало получил что надо.

#64 OFFLINE   AndreBF

    Пунтер


  • Участник II
  • ПипПип
  • 88 сообщения
10

Добавлено 28 November 2014 - 21:36

Привет! Хочу написать собственного бота) знаний в этой области нет никаких, что не радует.
Подскажите с чего мне начать:
что нужно изучить, вот совсем начинающему,
какую среду программирования выбрать, учитывая новый АПИ,
да вообще любой совет пригодится)))
На текущий момент программа макс для меня это - получение списка событий, выбор интересующих рынков, простые ставки бэк/лэй
Буду признателен за помощь и ссылки

#65 OFFLINE   clerk

    Специалист


  • Модератор
  • 584 сообщения
102

Добавлено 29 November 2014 - 05:09

Когда я нашел это - вопрос о языке и среде решился однозначно. Сейчас этот туториал, конечно, несколько устарел, но тем не менее он остается определенным подспорьем. Здесь от того же автора формирование запроса на новом апи.
Если выбираете шарп - то вам сюда - экспресс бесплатно, но с ограничением функционала. Торговцы сидюками смогут, наверное, предложить и полнофункциональные версии студии.
Сюда идем за документацией и примерами апи

#66 OFFLINE   AndreBF

    Пунтер


  • Участник II
  • ПипПип
  • 88 сообщения
10

Добавлено 29 November 2014 - 13:20

Спасибо за ответ
Сразу же появилась куча вопросов, главный из них:
как подключиться к сервисам биржи через API? Где можно почитать про подключение к новому API?
Я так понял ссылки на FBGlobal и BFExchange - это прошлый век; теперь все запросы должны идти через
https://api.betfair....ting/rest/v1.0/ <имя запроса>
или https://api.betfair....ing/json-rpc/v1.
Но когда я добавляю эти ссылки в service references, мой VS2013 не хочет показывать сервисы BF. Пишет ошибку 404 или 400.
может на форуме уже были подобные вопросы?

#67 OFFLINE   clerk

    Специалист


  • Модератор
  • 584 сообщения
102

Добавлено 29 November 2014 - 15:10

В документации есть примеры консольных приложений на многих языках. Примеры вполне законченные. Конечно там нет формы, нет ставок, но логин, получение событий, рынков там есть. Разберите эти примеры и у вас появится достаточно информации для перевода туториала "степ бай степ" на новый апи (кстати ставок нет и в этом туторе, но дойдя до сетки рынка поймете и ставки и прочее). Проще, конечно, было бы перестроиться при работающем старом апи, но, как говорится, "поздняк метаться".
В сервис референс ссылки пихать не надо. Их надо включать в запрос.

#68 OFFLINE   denvb

    Специалист


  • Участник II
  • ПипПипПип
  • 382 сообщения
90

Добавлено 18 December 2014 - 08:52

СообщенияАртений, on 17 December 2014 - 19:55, сказал:

Обнаружилась ещё одна проблема... Время рынка отображается на 1 ч больше чем реальный старт - это относится ко всем росписям как на сайте так и данным через API
Да, на сайте биржи нет выбора +3 для московского пояса, она отображает +4, а вот про апи вы не правы. Попробую объяснить - если посмотреть ответ до json-сериализатора, то увидим, что время даётся правильно и в полном формате, включая поясной сдвиг
Прикрепленный файл  2014-12-18_100608.png   64.22K   1 Количество загрузок

а вот дальше, не в обиду коллегам-ботостроителям, большинство берёт сериализатор из коробки и получает вот такую "странность"

Прикрепленный файл  2014-12-18_101415.png   25.13K   1 Количество загрузок

причина проста - сериализатор не понимает сдвиг и считает, что время локальное. Я пользуюсь библиотекой google-gson, там есть настройка формата и всё встаёт на свои места

P.S. внимательные заметят нестыковку дат на скрине, это не суть, пришлось сделать костыль для демонстрации

#69 OFFLINE   denvb

    Специалист


  • Участник II
  • ПипПипПип
  • 382 сообщения
90

Добавлено 18 December 2014 - 09:37

Сообщенияdenvb, on 18 December 2014 - 08:52, сказал:

время даётся правильно и в полном формате, включая поясной сдвиг
сорри, тут я сам себя запутал :) сдвига там конечно нет, ибо всё время даётся в GMT (All times are returned in GMT).
А дальше смысл верный - сериализатор считает, что время локальное

#70 OFFLINE   Артений

    воин добра и света


  • Участник II
  • ПипПипПип
  • 336 сообщения
0
  • МестоположениеРоссия, Центральное Черноземье

Добавлено 18 December 2014 - 10:09

Сообщенияdenvb, on 18 December 2014 - 08:52, сказал:

Да, на сайте биржи нет выбора +3 для московского пояса, она отображает +4, а вот про апи вы не правы. Попробую объяснить - если посмотреть ответ до json-сериализатора, то увидим, что время даётся правильно и в полном формате, включая поясной сдвиг
Про API имелось в виду время, указанное в названии рынка. Например getClearedOrders включает время в название рынка для скачек, так там это время тоже возвращается в UTC+4.

#71 OFFLINE   denvb

    Специалист


  • Участник II
  • ПипПипПип
  • 382 сообщения
90

Добавлено 18 December 2014 - 10:51

СообщенияАртений, on 18 December 2014 - 10:09, сказал:

Про API имелось в виду время, указанное в названии рынка. Например getClearedOrders включает время в название рынка для скачек, так там это время тоже возвращается в UTC+4.
вот вы про что, ясно. Тогда думаю это привязано к аккаунту, а там Москва +4 :mellow:

#72 OFFLINE   cookro

    Специалист


  • Участник II
  • ПипПипПип
  • 187 сообщения
23
  • МестоположениеRiga

Добавлено 18 December 2014 - 21:02

Есть проблемы с login,Есть проблемы с login,долго думает и нелогинится.а так для free soft,даже очень хорошая вещь.

#73 OFFLINE   d_electric

    Пунтер


  • Banned
  • ПипПип
  • 42 сообщения
1

Добавлено 18 December 2014 - 23:43

подскажите а в каком методе можно получить данные о матче такие как минута матча, текущий счет и тд?

#74 OFFLINE   Пешеход

    Пунтер


  • Участник II
  • ПипПип
  • 73 сообщения
7

Добавлено 19 December 2014 - 00:07

Сообщенияd_electric, on 18 December 2014 - 23:43, сказал:

подскажите а в каком методе можно получить данные о матче такие как минута матча, текущий счет и тд?
В API-NG такой реализации нет, только если парсить со сторонних сайтов, при этом придется сопоставлять команды.

#75 OFFLINE   d_electric

    Пунтер


  • Banned
  • ПипПип
  • 42 сообщения
1

Добавлено 19 December 2014 - 00:29

СообщенияПешеход, on 19 December 2014 - 00:07, сказал:

В API-NG такой реализации нет, только если парсить со сторонних сайтов, при этом придется сопоставлять команды.
блин жаль.
а как их потом сопоставить нужно будет?

#76 OFFLINE   bardmauzer

    Специалист


  • Участник II
  • ПипПипПип
  • 368 сообщения
63

Добавлено 23 December 2014 - 22:56

Скачал для себя полную версию рабочего консольного примера бота АПИ-НГ с сайта бетфаера.Думаю новичкам будет тяжело его найти на сайте БФ,поэтому выложил его на яндекс диск.Его можно спокойно использовать как каркас для своего бота.Скачиваем и пользуемся. https://yadi.sk/d/FBlT_0oYdaDc5

#77 OFFLINE   bardmauzer

    Специалист


  • Участник II
  • ПипПипПип
  • 368 сообщения
63

Добавлено 23 December 2014 - 23:34

Сообщенияbardmauzer, on 23 December 2014 - 22:56, сказал:

Скачал для себя полную версию рабочего консольного примера бота АПИ-НГ с сайта бетфаера.Думаю новичкам будет тяжело его найти на сайте БФ,поэтому выложил его на яндекс диск.Его можно спокойно использовать как каркас для своего бота.Скачиваем и пользуемся. https://yadi.sk/d/FBlT_0oYdaDc5







П.С. Забыл написать,что пример на C#

Отредактировано bardmauzer, 23 December 2014 - 23:35.


#78 OFFLINE   bardmauzer

    Специалист


  • Участник II
  • ПипПипПип
  • 368 сообщения
63

Добавлено 24 December 2014 - 10:40

Сообщенияpozitrone23, on 23 November 2014 - 09:56, сказал:

ISet, IHash, JsonProperty меня напрягают)


Я конечно более-менее разобрался в примере c# от разрабов, но боюсь дальше все же заплутаю) вы не могли бы или привести в пример код попроще этого фильтра, или же более менее понятно объяснить как же там работают эти Iset<string> и Property)))



Сразу скажу,что я не программист,так что сильно не пинайте.Хочу написать всем,кому трудно догнать о всяких ISet<string> и тому подобное,что вместо них можно использовать обычные типы и их массивы.Главное уметь правильно их сериализовать и десериализовать в тект JSON.С точки зрения БФ им похеру,из какого объекта вы преобразуете текстовый файл для запроса.Например ISet<string>,можно заменить List<string> или просто массивом типа string[].Мало того,текст для запроса можно оформить даже в ручную.А когда возвращается ответ от БФ,нужно знать,какой массив должен прийти и поставить для преобразования,заранее созданный свой объект.

#79 OFFLINE   bardmauzer

    Специалист


  • Участник II
  • ПипПипПип
  • 368 сообщения
63

Добавлено 24 December 2014 - 22:29

Народ подскажите,кто может.Проблема в перечислении.Когда я сериализую объект,в котором поле-перечисление,то в тексте JSON отображается порядковое числовое значение этого поля,вместо самого значения.Как это исправить?А еще траблы с типом DataTime. Когда в фильтре заполняю дату,то возвращается пустая строка ответа.Что это может быть?

#80 OFFLINE   clerk

    Специалист


  • Модератор
  • 584 сообщения
102

Добавлено 25 December 2014 - 04:41

Про фильтр. Надо заполнять две даты: MarketStartTime.From и MarketStartTime.To Думается, что первая должна быть "старше" второй. И внутри означенного диапазона времени должен находиться хотя бы один рынок (событие)
По поводу сериализации перечисления сказать не берусь - с JSON не разбирался, тупо использую примеры и аналогии. По аналогии предположу, что для отображения строкового значения применяется
[JsonConverter(typeof(StringEnumConverter))]
например, в перечислении МаркетСтатус , но это лишь предположение