You can use wowhead or another database site to pull the information for the item level, you can also use wowhead's armory profiler. You may also want to cache the item level for items, as that is unlikely to change.
Limit your queries to 1 a second and that will solve a lot of your banning problems. From there it seems to vary depending on the time of day how many you can do an hour, but if you do get banned, most are 12-24 hours. Lately I have been getting a 30 second ban after only doing 10-15 queries, so you may need to do more frequent pauses.
Not sure what you're doing with the array, assuming that is something different that you're trying to store results locally or whatever. For specifically what you're trying to do, all you need is the following:
foreach ($xml->characterInfo->characterTab->baseStats->children() as $stats)
{
echo $stats->getName()." : ".$stats['effective']."<br/>";
}
<!-- ENDPHP --><br/>
<br/>
<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->
This script is for PHPBB3 only at the moment but as i sort out caching to mysql and such i will entend it more, remember this make not look brilliant but it is the BASE of what i am working on.
ALSO, this script requires you to have crackpots wowhead tooltip installed which is available from >here< compliments of Ice of board3.de and crackpot of wowhead.com
I did something very similar, but in Java. Now I get "Server is busy. Please try again later." for all my requests. Seems like I got my IP banned.
Just a friendly warning to remember to put a delay between your requests. Don't want to see others getting banned.
Yes, that can happen quickly. But good news is that the ban is removed after a day or so. It seems the they just limit the number of requests per IP per day or maybe per 2 days.
I'm looking for an armory parser that can compare raid achievement for all my guildies. We have up to 50 active members and it would be easier if raid achievement tracking could be automated =)
Does anyone have heard of this type of parser ? Or should i just begin to write my own ?
I figured this was probably a good place to toss this information/question.
I hadn't really seen most sites/scripts that hit the armory make use of this except for one, and I wasn't quite sure why that was.
Essentially, if you append &rhtml=n to any armory URL, it forces XML output, regardless of the browser you're using, which pretty much eliminates needing to send user agent data at all. You can do this right in Chrome, Safari, Opera, IE, or Firefox (even though FF gets XML by default already).
http://www.wowarmory.com/character-sheet.xml?r=Magtheridon&n=Jadissa in a non-FF browser gives you HTML.
http://www.wowarmory.com/character-sheet.xml?r=Magtheridon&n=Jadissa&rhtml=n in any browser gives you XML.
http://www.wowarmory.com/character-sheet.xml?r=Magtheridon&n=Jadissa&rhtml=y in any browser gives you HTML.
I was curious if there was any reason why more scripts weren't making use of this additional tag, or if the information just wasn't widespread. Along the same lines, I'm trying to write up a script that scoops item information out of the WoW Armory database, and crams it into a local database for later usage to limit hits against the armory. However, when I load item-info as XML, it's missing all of the statistics, socket bonuses, etc, but if I load it as HTML, it appears. Anyone know why this is?
Here's hoping I didn't break an EJ rule, I've been lurking for a year or so without posting -_-.
Does anyone know if armory also bans for an overload of item page requests? Also in general, what is a safe time to wait between requests?
Currently I am waiting 3 seconds between each request, but it seemed to work most of the time with 2, however I did eventually get a ban, not sure if that was due to my script or going too fast.
Does anyone know if armory also bans for an overload of item page requests? Also in general, what is a safe time to wait between requests?
Currently I am waiting 3 seconds between each request, but it seemed to work most of the time with 2, however I did eventually get a ban, not sure if that was due to my script or going too fast.
I have recently written a website that accesses the armory (Team Robot WoW Simulator), and ran into the banning problem as well. It was really irritating, so I thought I'd add some information that might be useful to other people:
1. I have a little program that runs through about 1000 items and loads item-info.xml for each of them in just a few seconds, and it doesn't get me banned. It's not just how quickly you send requests... there must be some total volume limit, or sustained rate limit.
2. I scaled back my site to send 8 requests per second, and so far I haven't been banned. Though traffic has been much lower... highest traffic with that limit in place was 2000 users in one day. I'll provide more info if I run into problems when (hopefully) the site's traffic increases. I'd estimate that about 8000 armory requests were sent that day, sometimes in rapid bursts, sometimes with a lot of time between them.
3. Most of my requests are for character-sheet.xml and character-talents.xml... I cache the generic item-info.xml and item-tooltip.xml indefinitely (I just flush the cache and let it rebuild itself whenever items get updated by blizzard). Then I use logic to get a character's full info (which gems they have, which enchants on each item, etc.). This really reduces the amount of armory traffic that you need to do in order to load a character's complete information from the armory -- before I was loading each character-specific item-tooltip.xml, which requires 19 armory requests just to load 1 character. Yeah... that didn't last very long.
As I get further information about the armory banning, I'll post it here -- it's a really frustrating problem for developers using the armory, and there isn't very much good info about it.
Have you been doing 8 per second for character-sheet? I am running several worker threads to fill a db right now just waiting 2 seconds in between requests as I somehow got IP banned for requesting several (~10?) with no wait time.
e: When just sleeping for one second, I get a temp ip ban.
I talked to one of the guys who works on the program Xfire, and they do some armory stuff. He recommended the 8/sec number to me... said it works ok, but they sometimes will still get banned every now and again. I'm not exactly certain what all they parse or how often they do it -- I'll see if I can get more details. But yes, my site has been running with the 8/sec limit, sending mostly character-sheet and character-talents requests, with a few item-tooltip requests here and there. My traffic hasn't been that high this week though... so probably not a good stress test.
It's too bad that the armory doesn't allow flash/silverlight plug-ins to send requests directly to the armory... that would solve the problem for a website like mine at least. I tried contacting them via email about that, but they of course never responded.
Hey guys- I notice that the PHP modules and the perl libraries do some kind of browser spoofing to bypass the armory's server-side html rendering. I was wondering if anyone had any luck getting something similar working with the Yahoo Pipes "Fetch Data" module. I would like to turn my xml achievements into an RSS feed, and it would be quite simple if I could get the raw XML into Yahoo Pipes, but it doesn't seem to be able to extract the xml. Are there any parameters I can pass into the armory that will force it to return XML, or is browser spoofing the only way?
Until recently I used a generated forum signature image borrowed from perpetualguild.com featuring "Latest Earned Achievement" pulled from the armory. The generator seems to have been pulled a few days ago though as the page now returns a 404. Anyone have any suggestions on how to recreate/replicate the script used so I can host it myself? (im no coder but can probably figure it out with a few pointers) Or is there a better way to go about it with the new RSS feeds?
Last week I crawled every item-info.xml page on the Armory using a delay of 2.5 seconds between requests and didn't run into any banning issues at all.
I see people using a lot of different methods in PHP to request data and I figured this might be useful to some people. I use it in a personal project and it should work on nearly all php configurations. You can easily add different pages by adding a new function that follows the format of the character/guild functions, and all the input strings are automatically formatted for web requests by the http_build_query command. There are (quite) a few things done poorly in this code, but the code is easily expandable and easy to plug in to any project that grabs xml from the armory.
Oh, right, it supports US/KR/TW/EU realms as well. It also supports non-english sites.
You have to throttle your requests. If you exceed 45 requests in like a minute (or one per 1.5 seconds over a sustained period) you'll start pulling 503's. If you keep hammering after you're pulling 503's then it'll ban you for a day or so. It only lasts for a day or so, but it's your warning.
is this confirmed? I am at about a rate of 10 per minute on btmmo.com... ban is typically 12 hours...
Anyone else having trouble lately with the armory xml fetching? I use java to fetch the gear of a character to import them to my application, but for some reason the armory redirects my java client to the battle net login, which then redirects it back to the original page and thus gets stuck in an endless redirect loop.
You need to pass a cookie with "loginChecked=1" in it when requesting from the EU armory or you'll get stuck in an infinite loop. They broke something with the maintenance last night (early this morning?).