API

Jump to navigation Jump to search
Revision as of 25 March 2013 at 04:08.
The highlighted comment was created in this revision.

Ok, I have a simple API up. Just add &api=True to any Rankings or BotDetails page and it will return in nice easy-to-parse JSON-ish format. I say JSON-ish because real JSON puts double-quotes around everything, whereas I'm lazy and don't feel like doing a ton of double-quote escaping, and besides, we don't have commas or colons in our data so there isn't any risk.

If you don't want the entire pairings detail from the BotDetails, add &limit=0 to the page and it will leave them out.

Some usage examples:

http://literumble.appspot.com/Rankings?game=nanorumble&api=True

http://literumble.appspot.com/BotDetails?game=nanorumble&name=sheldor.jk.Yatagan%201.0.5&api=True

http://literumble.appspot.com/BotDetails?game=nanorumble&name=sheldor.jk.Yatagan%201.0.5&api=True&limit=0

Of course, I'd rather you call Rankings once than call BotDetails with &limit=0 985 times, because although it doesn't generate the JSON, it still has to pull all the data in, which adds up for lots of requests. I'd ask that if you are getting more than 3, rather use the Rankings.

If there's anything else you'd like me to add to the API just ask, if it's already saved in my data it should be easy to whip something up to return it.

    Skilgannon22:57, 24 March 2013

    Sweet! I'll take a look at updating RR API clients in the next couple days. (That's @roborumble on Twitter, Category:Archived RoboRumble Rankings, RumbleStats, and BedMaker.)

    I'll let you know how it goes or if I hit any snags. Hopefully the JSON libs I use don't mind JSON-ish. ;)

      Voidious23:16, 24 March 2013
       

      Well, the Perl JSON library is indeed unhappy about the lack of quoting, but I think I've got it covered:

      $content =~ s/([\{,]\s*)([^:\{,]*):/$1\"$2\":/g;
      $content =~ s/:([^\[][^,\}]*)([,\}]*)/:\"$1\"$2/g;
      

      =)

        Voidious00:57, 25 March 2013
         

        Cool, got it working with archived rankings, eg: RumbleArchives:RoboRumble 20130324. This checks back hourly when rumbles don't have complete pairings, but that may be forever without priority battles so I'll kill it in a couple days. =)

        Only useful thing that I found missing so far is that Darkcanuck's results came back sorted and had a "rank" field. Seems like you have logic for sorting in there so it'd be nice if you could honor the "order" param like you do for the normal pages, but not a big deal (/shamefully hides his bubble sort). The quote thing wasn't a huge deal for me but that might also screw some people up since I imagine most clients use a JSON parser instead of doing it manually.

          Voidious02:46, 25 March 2013

          And @roborumble, yay: [1]

          I'll look at RumbleStats and BedMaker tomorrow. Will be nice that other people can actually use BedMaker now. =) If anyone's interested, I had to make one more tweak to my regex to properly quote the &limit=0 format:

          $content =~ s/([\{,]\s*)([^:\{,]*):/$1\"$2\":/g;
          $content =~ s/:([^\[][^,\}\n]*)([,\}]*)/:\"$1\"$2/g;
          
            Voidious03:29, 25 March 2013
             

            I didn't think adding qoutes would be that hard if you don't have to escape anything.

              Chase05:08, 25 March 2013