MetaData for a race meeting

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • bfexplorer
    Senior Member
    • Sep 2018
    • 212

    #16
    Originally posted by OzPunter View Post
    Cool it guys, It's not worth squabbling about. Everyone has something to contribute, whether I accept the information or not is my choice. I was prompted to ask the question about track condition because I am having great success in Australian racing by laying the top weighted runners on rain affected tracks, so I was considering making a bot to do the same on UK tracks, but the program would need to know the track condition before placing a bet. That's all, I didn't mean to start WW3.
    Of course I meant it this way, and just show what data can be retrieved, without providing exact endpoints, because using anything what is not documented breaches betfair T&C. If you manage to get this data for your own use, as I did myself, it is your problem only, and as I said betfair tolerates such data usage when you are real customer betting on betfair.

    This is developers forum, so anyone here has some skills and can find solution in reasonable time yourself.

    Geof have needs to kick to me without actually checking what information I had provided, so because he did not get anything constructive to your post, I really do not understand why he posted here anything.

    Comment

    • Guest

      #17
      Just on RUNNER_METADATA which is returned by listMarketCatalogue for Horse Racing , is there a class defined for RUNNER_METADATA???

      for instance the JSON returned for "metadata" is ….

      Code:
      "metadata":{"SIRE_NAME":"Mcardle","CLOTH_NUMBER_ALPHA":"2","OFFICIAL_RATING":null,"COLOURS_DESCRIPTION":"Whi
      te Tabtouch Logo","COLOURS_FILENAME":"c20190827trots_GLOUCESTERPARK/756045.png","FORECASTPRICE_DENOMINATOR":null,"DAMSIRE_NAME":"Sokys Atom","WEIGHT_VALUE":null,"SEX_TYPE":"G","DAYS_SINCE_LAST_RUN":"4","WEARING":null,"OWNER_NAME":null,"DAM_YEAR_BORN":null,"SIRE_BRED":"USA","JOCKEY_NAME":"Bailey Mcdonough","DAM_BRED":"NZ","ADJUSTED_RATING":null,"runnerId":"5883932","CLOTH_NUMBER":"2","SIRE_YEAR_BORN":null,"TRAINER_NAME":"Cheyenne King-Davies","COLOUR_TYPE":"BR","AGE":"10","DAMSIRE_BRED":"USA","JOCKEY_CLAIM":null,"FORM":"x6708","FORECASTPRICE_NUMERATOR":null,"BRED":"NZ","DAM_NAME":"Laurent Perrier","DAMSIRE_YEAR_BORN":null,"STALL_DRAW":"2","WEIGHT_UNITS":null}

      Or do I just need to create my own?




      Comment

      • geoffw123
        Senior Member
        • Mar 2014
        • 250

        #18
        Hi

        Not sure I fully understand the question but a typical approach is for your RunnerDescription class to have a dictionary for metaData key value pairs E.g.

        public Dictionary<string, string> Metadata { get; set; }

        This is flexible as it allows Betfair to send as many or as few key value metadata pairs as they like, you just load up your dictionary as they come in

        Regards

        Comment

        • Guest

          #19
          Thanks Geoff, yes I understand the dictionary however was not ideal as it can causes errors. Let me explain …....

          my RunnerDescription.vb class was defined below
          Code:
          [FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Namespace[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] API_NG.TO[/SIZE][/FONT][/SIZE][/FONT]
          [FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] <[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]Serializable[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]()> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Class[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]RunnerDescription[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
          [FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]    <[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]JsonProperty[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px](PropertyName:=[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515]"selectionId"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px])> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Property[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] SelectionId() [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]As[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Long[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
          [FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]    <[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]JsonProperty[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px](PropertyName:=[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515]"runnerName"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px])> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Property[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] RunnerName() [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]As[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]String[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
                  <[FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]JsonProperty[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px](PropertyName:=[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515]"handicap"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px])> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Property[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] Handicap() [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]As[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Double[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
                  <[FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]JsonProperty[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px](PropertyName:=[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515]"sortPriority"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px])> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Property[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] SortPriority() [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]As[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Integer[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
                  <[FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]JsonProperty[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px](PropertyName:=[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515]"metadata"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px])> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Property[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] Metadata() [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]As[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]Dictionary[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Of[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]String[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px], [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]String[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]) [/SIZE][/FONT][/SIZE][/FONT]
          Metadata() is defined as a dictionary so to access data I would do something like ...
          Code:
              RunnerAge = MC(0).Runners(0).Metadata("AGE")
          However if the JSON returned string does not contain the AGE in the metadata then the above code causes an error! So to fix this I simple changed Metadata from a dictionary string to its own class RunnerMetaData as per below.

          Code:
          [FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]    <[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]JsonProperty[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px](PropertyName:=[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515]"metadata"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px])> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Property[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] Metadata() [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]As[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]RunnerMetaData[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]


          The RunnerMetaData.vb class is
          Code:
          [FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Namespace[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] API_NG.TO[/SIZE][/FONT][/SIZE][/FONT]
          [FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] <[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]Serializable[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]()> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Class[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]RunnerMetaData[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
          [FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]     <[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]JsonProperty[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px](PropertyName:=[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515]"WEIGHT_UNITS"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px])> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Property[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] WEIGHT_UNITS() [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]As[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]String[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#008000][FONT=Consolas][SIZE=10px][COLOR=#008000][FONT=Consolas][SIZE=10px][COLOR=#008000]'pounds[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
          [FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]     <[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF][FONT=Consolas][SIZE=10px][COLOR=#2B91AF]JsonProperty[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px](PropertyName:=[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515][FONT=Consolas][SIZE=10px][COLOR=#A31515]"ADJUSTED_RATING"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px])> [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]Property[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px] ADJUSTED_RATING() [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]As[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF][FONT=Consolas][SIZE=10px][COLOR=#0000FF]String[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
          [FONT=Consolas][SIZE=10px][FONT=Consolas][SIZE=10px]     etc [/SIZE][/FONT][/SIZE][/FONT]
          To access the data I now do something like ...….

          Code:
              RunnerAge = MC(0).Runners(0).Metadata.AGE
          More importantly if AGE was not retuned in the JSON string then no error occurs.




          Last edited by Guest; 28-08-2019, 02:00 AM.

          Comment

          • Guest

            #20
            OK having played around with the Metadata I note some Metadata is not provided for instance :

            ADJUSTED_RATING
            OFFICIAL_RATING

            FORECASTPRICE_DENOMINATOR
            FORECASTPRICE_NUMERATOR

            JOCKEY_CLAIM

            Any help appreciated

            Comment

            • geoffw123
              Senior Member
              • Mar 2014
              • 250

              #21
              Hi Troy

              IMHO you chose the wrong solution to that problem where the AGE parameter might be missing. I would have left this as a dictionary and just put an if statement to check if AGE is present in the metadata before accessing it. If its not there, nothing you can do, just skip the accessing code.
              The metadata is far too unpredictable to make a class out of it. For example "JOCKEY_CLAIM" is only sent for claiming jockeys, its missing for all the others.

              I only noticed yesterday but Football can have metadata too, I think it was the "GOALS_LINE" market has 1 or 2 items of metadata for each selection, its nothing useful but it is present. For football your metadata class would not make sense. what would you fill in for Man Utd's "DAM_NAME" ? I could make a few suggestions but I will resist the temptation.

              Regards

              Comment

              • OzPunter
                Junior Member
                • Apr 2009
                • 161

                #22
                On metadata, what I do is store each entire string with a reference to the runner, rather than try to make a class out of it. As Geoff says if data is missing then it can make a mess of your class, so by storing the entire metadata string and searching for the value when required is the safe way to handle it, I think.. I just pick out the bits my program requires, but it may not exist.

                Comment

                • Guest

                  #23
                  Originally posted by LiamP View Post
                  Sure Geoff, you can find the endpoint if you open up developer tools on chrome or IE and go to a horse racing market. The endpoint is:

                  https://www.betfair.com/rest/v2/raceCard

                  It uses uses an appKey that is stored on the betfair home page which looks to be static which you can find if you open up the source of a betfair page and search for it. The parameters are a bit odd so I recommend having a look at what the site sends.
                  Hi Liam just following up on this thread and I note you talk about using the private API as referenced by your code https://github.com/liampauling/betfa...ts/racecard.py

                  To access this end pont (
                  https://www.betfair.com/rest/v2/raceCard) do I need to have any other subscription other than my betfair live API key? Ie do I need a TimeForm subscription - i think thats what BF calls it????

                  Also in my code which I based on the original example VB code my endpoint for betting is "https://api.betfair.com/exchange/betting/json-rpc/v1" To be 100% honest I don't really understand the difference between /json-rpc/ and /rest/. As soon as I got this working I simply moved on


                  I will have a read through your python code over the next few days however I do find it more difficult to read than VB or C#. Hey is there any other info out there on the input and output classes ?
                  Last edited by Guest; 27-05-2020, 09:37 AM.

                  Comment

                  • LiamP
                    Junior Member
                    • Oct 2015
                    • 284

                    #24
                    It uses the site key which can be found in the website source, I use regex to pull it out but it hasn’t changed since implementing. It’s a private api so no docs, it’s based off timeform data but from a betfair subdomain.

                    Feel free to join the slack to ask more questions as there are quite a few of us using it:

                    https://betfairlightweight.herokuapp.com/

                    Comment

                    • Guest

                      #25
                      Thanks Liam I joined the Slack conversation and had a search through. I think I found that static key on the betfair "nzIFcwyWhrlwYMrh" however I note in reading the info that there is not timeform data for Australian races which is where my main focus is.

                      Comment

                      • OzPunter
                        Junior Member
                        • Apr 2009
                        • 161

                        #26
                        Originally posted by troyedwards8 View Post
                        Thanks Liam I joined the Slack conversation and had a search through. I think I found that static key on the betfair "nzIFcwyWhrlwYMrh" however I note in reading the info that there is not timeform data for Australian races which is where my main focus is.
                        Hi Troy, just thought I'd throw in my two bob's worth as you have mentioned Australian racing. What I do is extract data (by automated download) from RISA and RacingNSW websites, not too hard to do and then match it up with Betfair Market info.. You might find what you're looking for there.

                        Comment

                        Working...
                        X