Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About Ronan

  • Rank
    Bear Fur
  • Birthday 12/12/1991

Profile Information

  • Gender
  • Location
    Edinburgh - Scotland

RuneScape Information

  • RuneScape Status
  • RSN
  1. Keep in mind it's a HTTP 200 status response, alongside Content-Length being 0 - just thought i'd clarify that!
  2. Hey, that's great Markup - they could be very useful as a starting point for those not looking to parse the full G.E to populate a database, cheers! (Although they're 403ing at the moment!)
  3. Cheers for putting that online - there's a few differences to what mine was so that's quite interesting to see how someone else would do it! I don't have much of a chance to test it at the moment, but I'm interested that a 5 second wait time is enough to not throw up any blocking errors from Jagex. Although, granted; in my testing I was parsing the item's pages after searching for pages - a further 3,400+ requests is going to change things! I did notice a couple of small things, Line 114 in Program.cs, you set reserror to indicate a WebException: catch (WebException ex) { PageErrors.Add(bs[i].ToString() + " Error:" + ex.Status); reserror = true; } if (reserror == true) { reserror = false; continue; } As far as I can tell, reserror isn't used anywhere else - it'd make more sense to just continue inside the catch-exception block rather than flag an error? I also noticed that your PageLoader class uses ArrayList as it's base class. To me that seems a little counter-intuitive, the class is making use of an ArrayList, rather than actually extending it? It seems cleaner to just have a class variable storing the ArrayList and accessors to that - less coupling that way. Lastly, I see you're not checking for Jagex blocking requests. When they block a request, they return a HTTP 200 OK status, which means no WebException is going to occur - the way to identify it is that the Content-Length response header indicates 0 length. Right now it looks like you're just skipping over this if there is no content - or, possible worst case, passing an empty string to the Json Converter? The biggest trouble I found with this is integrating it into a library such that callers either, 1) Don't have to deal with bottling issues / exceptions or 2) Have to catch the exception and re-send the request. I resorted to providing access to the library API through a gateway, where exceptions had to be caught; but alongside this I constructed an Asynchronous requester which allows callers to request callbacks when the page is retrieved - which would be whenever Jagex stop blocking the requests. Other than those, I do like it - there's a few points in there that I hadn't thought of and I like the Json parser, wasn't aware of JavascriptSerializer. Nice job! =D> If you're interested in seeing the API I constructed, I've thrown that up on GitHub: GitHub - GeApi. It's nowhere near perfect but may give you some ideas like yours did mine!
  4. Hey, my chair does exactly this! Haven't ever used it like that though, it actually is pretty comfy, although I feel like I want to be closer to the screen!
  5. Sounds like you went through the same thought process as me then - good stuff! Look forward to seeing the result.
  6. Sounds interesting - I actually experimented with this on a project not too long ago. Have you considered making it a library rather than a console application - extending it's usage a bit further abroad? Another point to note - how have you handled actually finding the IDs? The obvious initial attempt would be to iterate up to some given number testing the page responses are valid, but that's highly inefficient for both the utility and server requests! My final design used the category API to find how many items fall into each starting letter for each category, and then requested the search pages for these - which ended up compiling a list of all the valid (tradeable) IDs - as you say, ending up at around 3,400. A fairly smaller number than 20,000+! Did you do anything similar? Yet another good discussion is how you handled Jagex's temporary throttling of server requests? I've tried multiple ways; randomised timeouts, exponentially increasing timeouts, varying request time-spans - all not quite meeting an optimum point. I even attempted to craft multiple GET requests and send those along at once: still throttled. Any luck on your end? It'd be nice to have some guidelines on API usage from Jagex, but I don't believe that they'll ever be particularly forthcoming about parsing the full database quickly... Also, JSON.Net for parsing the responses?
  7. Mmm, off the top of my head - the Mug's still accessible from it's link here: /runescape-logo-mug-A14493928. If that's the correct one? Strange though, I couldn't find it anywhere in the shop, so the order may well not go through if the page is simply still there by mistake...
  8. Heh, pretty much agreed with the rest - some people suck <_<, very annoying when it happens...
  9. I think it was mentioned a while back from a forum post, apparently the 'editor' forgot to add it to the news notes!
  10. It was, heh! :) Nice fake, looks well done - character's great and I like the detail!
  11. Are you sure that it requires .NET 4? At first glance it doesn't seem to use any of the more recent features - although there's obviously more that you haven't shown. You may also want to get rid of the Linq using directive, I know Express builds automatically stick that in but it doesn't look like you're using it. Would be nice to have this released - save many people re-writing small utility classes to do exactly what this does. I'd contribute if you Open Source it. :)
  12. The 'How to use the Bestiary' explains this, it can be found here (or by clicking How to use the Bestiary at the upper-right on any monster's page). The information's also quoted below. :)
  13. Nice one! I just got round to getting that myself too. :)
  14. There's a semi-colon missing, it's http://zethara.deviantart.com/#/d321nr8 Fantastic pictures, well done to everyone! :)
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.