 |
| Welcome to Elitist Jerks |
We're testing some new features on the site regarding OpenID registration and coordination with gamerDNA. If you experience any issues with registering an account, please take the time to fill out a report and send it to this e-mail address. We would appreciate any assistance you could provide in making sure everything is functioning as intended. Thanks!
If this is your first visit, please be sure to check out the FAQ and the forum rules. Users must register to post and new registrations are subject to a one day "mute" period to get acquainted with the community.
|
07/16/09, 10:23 AM
|
#76
|
|
Von Kaiser
Draenei Shaman
Burning Blade
|
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.
|
|
|
|
|
|
07/19/09, 2:54 PM
|
#77
|
|
Glass Joe
Draenei Shaman
Stormrage (EU)
|
ok i'm working on a script from an idea in this thread but i'm stuck on displaying stats right
from the character_sheet.xml i'm pulling
<baseStats>
<strength attack="242" base="121" block="6" effective="131"/>
<agility armor="162" attack="-1" base="71" critHitPercent="3.89" effective="81"/>
<stamina base="135" effective="1014" health="9960" petBonus="-1"/>
<intellect base="141" critHitPercent="7.84" effective="939" mana="13805" petBonus="-1"/>
<spirit base="145" effective="155" healthRegen="16" manaRegen="79"/>
<armor base="15519" effective="15519" percent="50.47" petBonus="-1"/>
</baseStats>
but becuase its not in the normal xml format with name"" block i cant display the stats right for each segment
i got a simple code working
$basestats_array = array();
foreach($basestats->children() as $basestat)
{
echo' STAT:'. $basestat['effective'] .'<br/>';
}
but for the love of me i've tried alsorts including
!isset and a count++ within a multi line statement.
if anyone could help me i'd really appreciate it
|
|
|
|
|
|
07/20/09, 9:55 AM
|
#78
|
|
Glass Joe
Night Elf Druid
Stormrage
|
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/>";
}
|
|
|
|
|
|
07/21/09, 1:29 PM
|
#79
|
|
Glass Joe
Draenei Shaman
Stormrage (EU)
|
Evanaescent; thank you for your reply it works perfect.
For the people wondering what i'm working on its an armory page, It is still in the early in stages but heres what i have working upto now,

<!-- INCLUDE overall_header.html -->
<!-- PHP -->
if (isset($_GET['n']) && isset($_GET['r']) && isset($_GET['z']) )
{
$search = true;
}
else $search = false;
if($search == true)
{
$BROWSER="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070319 Firefox/2.0.0.3";
$char_url = 'http://'.$_GET['z'].'.wowarmory.com/character-sheet.xml?r='.$_GET['r'].'&n='.$_GET['n'];
//init curl session for character sheet information
$ch = curl_init();
//set curl to return data instead of printing to browser
curl_setopt ($ch, CURLOPT_URL, $char_url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt ($ch, CURLOPT_USERAGENT, $BROWSER);
//execute the fetch
$xml = curl_exec($ch);
//Close the curl connect
curl_close($ch);
$xml_obj = simplexml_load_string($xml);
//Set the character's info into variables.
$name = $xml_obj->characterInfo->character['name'];
$level = $xml_obj->characterInfo->character['level'];
$class = $xml_obj->characterInfo->character['class'];
$guild = $xml_obj->characterInfo->character['guildName'];
$lastonline = $xml_obj->characterInfo->character['lastModified'];
$items = $xml_obj->characterInfo->characterTab->items;
$spec = $xml_obj->characterInfo->characterTab->talentSpecs;
$professions = $xml_obj->characterInfo->characterTab->professions;
$charactorbars = $xml_obj->characterInfo->characterTab->characterBars;
$basestats = $xml_obj->characterInfo->characterTab->baseStats;
$melee = $xml_obj->characterInfo->characterTab->melee;
$rang = $xml_obj->characterInfo->characterTab->ranged;
$healing = $xml_obj->characterInfo->characterTab->spell;
$spell = $xml_obj->characterInfo->characterTab->spell->bonusDamage;
//Array of item levels that will be searched for
$levelsOfInterest = array(187,200,213,219,226,232,239);
//Number of items below 187
$offGear = 0;
//init curl session for item information
$ch = curl_init();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($ch, CURLOPT_USERAGENT, $BROWSER);
$spec_array = array();
foreach($spec->talentSpec as $sp)
{
if($sp['active'] == 1) $active =' '. $sp['prim'] .' - '. Active .' - '. $sp['treeOne'] .'/'. $sp['treeTwo'] .'/'. $sp['treeThree'] .' <br/>';
if($sp['active'] == NULL) $inactive =' '. $sp['prim'] .' - '. Inactive .' - '. $sp['treeOne'] .'/'. $sp['treeTwo'] .'/'. $sp['treeThree'] .' <br/>';
}
//Create the array containing the item levels of the character's gear.
$item_array = array();
foreach($items->item as $i)
{
switch($i['slot'])
{
case '0':
$slot='Head';
break;
case '1':
$slot='Neck';
break;
case '2':
$slot='Shoulder';
break;
case '3':
$slot='Shirt';
break;
case '4':
$slot='Chest';
break;
case '5':
$slot='Waist';
break;
case '6':
$slot='Legs';
break;
case '7':
$slot='Feet';
break;
case '8':
$slot='Wrist';
break;
case '9':
$slot='Hands';
break;
case '10':
$slot='Ring 1';
break;
case '11':
$slot='Ring 2';
break;
case '12':
$slot='Trinket 1';
break;
case '13':
$slot='Trinket 2';
break;
case '14':
$slot='Cloak';
break;
case '15':
$slot='Main Hand';
break;
case '16':
$slot='Off Hand';
break;
case '17':
$slot='Ranged';
break;
case '18':
$slot='Tabard';
break;
default:
$slot='none';
break;
}
$item_url = 'http://eu.wowarmory.com/item-info.xml?i='.$i['id'];
curl_setopt ($ch, CURLOPT_URL, $item_url);
$xml_item = curl_exec($ch);
$xml_obj_item = simplexml_load_string($xml_item);
$itemLevel = $xml_obj_item->itemInfo->item['level'];
if ($i['slot'] == 0) {
$head = $i['id'];
$headlvl = $itemLevel;
$headimg = $i['icon'];
}
if ($i['slot'] == 1) {
$neck = $i['id'];
$necklvl = $itemLevel;
$neckimg = $i['icon'];
}
if ($i['slot'] == 2) {
$shoulder = $i['id'];
$shoulderlvl = $itemLevel;
$shoulderimg = $i['icon'];
}
if ($i['slot'] == 3) {
$shirt = $i['id'];
$shirtlvl = $itemLevel;
$shirtimg = $i['icon'];
}
if ($i['slot'] == 4) {
$chest = $i['id'];
$chestlvl = $itemLevel;
$chestimg = $i['icon'];
}
if ($i['slot'] == 5) {
$waist = $i['id'];
$waistlvl = $itemLevel;
$waistimg = $i['icon'];
}
if ($i['slot'] == 6) {
$legs = $i['id'];
$legslvl = $itemLevel;
$legsimg = $i['icon'];
}
if ($i['slot'] == 7) {
$feet = $i['id'];
$feetlvl = $itemLevel;
$feetimg = $i['icon'];
}
if ($i['slot'] == 8) {
$wrist = $i['id'];
$wristlvl = $itemLevel;
$wristimg = $i['icon'];
}
if ($i['slot'] == 9) {
$hands = $i['id'];
$handslvl = $itemLevel;
$handsimg = $i['icon'];
}
if ($i['slot'] == 10) {
$ringone = $i['id'];
$ringonelvl = $itemLevel;
$ringoneimg = $i['icon'];
}
if ($i['slot'] == 11) {
$ringtwo = $i['id'];
$ringtwolvl = $itemLevel;
$ringtwoimg = $i['icon'];
}
if ($i['slot'] == 12) {
$trinkone = $i['id'];
$trinkonelvl = $itemLevel;
$trinkoneimg = $i['icon'];
}
if ($i['slot'] == 13) {
$trinktwo = $i['id'];
$trinktwolvl = $itemLevel;
$trinktwoimg = $i['icon'];
}
if ($i['slot'] == 14) {
$cloak = $i['id'];
$cloaklvl = $itemLevel;
$cloakimg = $i['icon'];
}
if ($i['slot'] == 15) {
$main = $i['id'];
$mainlvl = $itemLevel;
$mainimg = $i['icon'];
}
if ($i['slot'] == 16) {
$off = $i['id'];
$offlvl = $itemLevel;
$offimg = $i['icon'];
}
if ($i['slot'] == 17) {
$ranged = $i['id'];
$rangedlvl = $itemLevel;
$rangedimg = $i['icon'];
}
if ($i['slot'] == 18) {
$tabard = $i['id'];
$tabardlvl = $itemLevel;
$tabardimg = $i['icon'];
}
if($itemLevel < 187)
{
$offGear += 1;
}
array_push($item_array,(int)$itemLevel);
}
curl_close($ch);
echo '<br/><br/><p align="center">';
//tabard and shirt will almost certainly be < 187, so we consider only if character has more than 2 low level items
echo '<div style="width:500px; height:460px; margin-left:auto; margin-right:auto;">';
//echo'<div><div class="tbl-h-l"><div class="tbl-h-r"><div class="tbl-h-c"><div class="tbl-title"><span style="float: center">Raid Progress</span></div></div></div></div> ';
echo '<div class="tablebg" style="float:left; width:50px; height:460px;">';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $headimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $head .'" target="_blank" /></a></div></div><p>'. $headlvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $neckimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $neck .'" target="_blank" /></a></div></div><p>'. $necklvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $shoulderimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $shoulder .'" target="_blank" /></a></div></div><p>'. $shoulderlvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $cloakimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $cloak .'" target="_blank" /></a></div></div><p>'. $cloaklvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $chestimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $chest .'" target="_blank" /></a></div></div><p>'. $chestlvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $shirtimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $shirt .'" target="_blank" /></a></div></div><p>'. $shirtlvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $tabardimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $tabard .'" target="_blank" /></a></div></div><p>'. $tabardlvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $wristimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $wrist .'" target="_blank" /></a></div></div><p>'. $wristlvl .'</p>';
echo '</div>';
echo '<div class="tablebg" style="float:right; width:50px; height:460px;">';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $handsimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $hands .'" target="_blank" /></a></div></div><p>'. $handslvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $waistimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $waist .'" target="_blank" /></a></div></div><p>'. $waistlvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $legsimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $legs .'" target="_blank" /></a></div></div><p>'. $legslvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $feetimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $feet .'" target="_blank" /></a></div></div><p>'. $feetlvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $ringoneimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $ringone .'" target="_blank" /></a></div></div><p>'. $ringonelvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $ringtwoimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $ringtwo .'" target="_blank" /></a></div></div><p>'. $ringtwolvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $trinkoneimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $trinkone .'" target="_blank" /></a></div></div><p>'. $trinkonelvl .'</p>';
echo '<div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $trinktwoimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $trinktwo .'" target="_blank" /></a></div></div><p>'. $trinktwolvl .'</p>';
echo '</div>';
echo '<div width="300" height="460" style="height:460px;"><div align="center"><b>' . $name . '</b> - ' . $level . ' ' . $class . '<br/><i>' . $guild . '</i><br/>' . 'Last Online: ' .$lastonline . '<br/>'.' <br/> <fieldset class="tablebg"><legend>Spec</legend>'. $active .' '. $inactive .' </fieldset><br/>';
echo '<fieldset class="tablebg"><legend>Professions</legend>';
$profession_array = array();
foreach($professions->skill as $profession)
{
echo' '. $profession['name'] .' - '. $profession['max'] .'/'. $profession['value'] .' <br/>';
}
echo'</fieldset><br/><fieldset class="tablebg"><legend>Item Levels</legend>';
foreach($levelsOfInterest as $i)
{
$count = count(array_keys($item_array,$i));
if($count > 0)
{
echo '<i>' . $count . 'x iLevel '. $i . '</i><br/>';
}
}
echo'</fieldset><br/><fieldset class="tablebg"><legend>Health - Mana/Rage/Energy</legend>';
$charactorbars_array = array();
foreach($charactorbars->children() as $characterbars)
{
if ($characterbars['type'] == null) { echo' Health '. $characterbars['effective'] .' <br/>'; }
if ($characterbars['type'] == e) { echo' energy '. $characterbars['effective'] .' <br/>'; }
if ($characterbars['type'] == m) { echo' mana '. $characterbars['effective'] .' <br/>'; }
if ($characterbars['type'] == r) { echo' rage '. $characterbars['effective'] .' <br/>'; }
}
echo'</fieldset><br/><fieldset class="tablebg"><legend>Stats</legend>';
foreach ($basestats->children() as $stats)
{
echo ''. $stats->getName() .' : '. $stats['effective'] .'<br/>';
}
echo'</fieldset><br/>';
$meleestats_array = array();
foreach($melee->children() as $mele)
{
if($mele['base'] != NULL) { echo' attack power:'. $mele['effective'] .'<br/>' ;}
}
$rangstats_array = array();
foreach($rang->children() as $ran)
{
if($ran['base'] != NULL) { echo'Ranged attack power:'. $ran['effective'] .'<br/>' ;}
}
$healingstats_array = array();
foreach($healing->children() as $heal)
{
if ($healer == null) { $healer = $heal['value']; }
if ($heal['hastePercent'] != null) { $haste = $heal['hasteRating']; }
}
$spellstats_array = array();
foreach($spell->children() as $spel)
{
if ($spellpower == null) { $spellpower = $spel['value']; }
}
echo' spell damage: '. $spellpower .' <br/>';
echo' bonus healing: '. $healer .' <br/>';
echo' haste rating: '. $haste .' <br/>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '<div align="center">';
echo '<div style="width:300px; margin-left:auto; margin-right:auto;">';
echo '<table class="tablebg" >';
echo '<td><div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $mainimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $main .'" target="_blank" /></a></div></div><p>'. $mainlvl .'</p></td>';
echo '<td><div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $offimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $off .'" target="_blank" /></a></div></div><p>'. $offlvl .'</p></td>';
echo '<td><div height="50" class="iconmedium" style="background: url(http://static.wowhead.com/images/icons/medium/'. $rangedimg .'.jpg) no-repeat scroll 4px 4px;"><div class="tile"><a href="http://www.wowhead.com/?item='. $ranged .'" target="_blank" /></a></div></div><p>'. $rangedlvl .'</p></td>';
echo '</table>';
echo '</div>';
echo '</div>';
//echo '<div width="100" class="tbl-f-l"><div width="100" class="tbl-f-r"><div width="300" class="tbl-f-c"></div></div></div></div><br />';
}
else
{
echo '<form method="get" action="<?php print $_SERVER['PHP_SELF']?>">';
echo ' <p>Name <input type="text" name="n"></p> ';
echo ' <p>Realm <input type="text" name="r"></p> ';
echo ' <p>Zone <input type="text" name="z"></p> ';
echo ' <p><input class="btnlite" type="submit" value="GO" /></p> ';
echo ' </form> ';
}
<!-- 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
Last edited by talonos : 07/21/09 at 1:57 PM.
|
|
|
|
|
|
08/06/09, 4:15 PM
|
#80
|
|
Glass Joe
Tauren Druid
Frostmane (EU)
|
fixed  sorry. This may be deleted
Last edited by SentriX : 08/06/09 at 4:57 PM.
Reason: Fixed problem
|
|
|
|
|
|
08/10/09, 4:06 PM
|
#81
|
|
Glass Joe
Undead Warlock
Un'Goro (EU)
|
Originally Posted by inktomi
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.
For me it's working well after some struggling: WoW Ranking Lists: Search Char
|
|
|
|
|
|
08/10/09, 4:12 PM
|
#82
|
|
Glass Joe
Undead Warlock
Un'Goro (EU)
|
Originally Posted by NinJOu
Hey guys,
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 ?
Thx in advance=)
|
--> WoW Ranglisten: Liste Raid Achievements (Plätze 1 bis 16)
You can also filter by guild there...
Send me a email and I can pass you the Java code...
|
|
|
|
|
|
08/25/09, 4:33 PM
|
#83
|
|
Glass Joe
|
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 -_-.
|
|
|
|
|
|
08/26/09, 2:46 AM
|
#84
|
|
Glass Joe
|
To scrape item data you need to get both item-tooltip.xml and item-info.xml.
|
|
|
|
|
|
09/23/09, 11:46 AM
|
#85
|
|
Important on the Internets
|
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.
|
|
|
|
|
|
10/15/09, 12:46 AM
|
#86
|
|
Von Kaiser
Night Elf Druid
Spinebreaker
|
Originally Posted by chaud
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.
|
|
|
|
|
|
10/15/09, 1:03 AM
|
#87
|
|
Important on the Internets
|
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.
Last edited by chaud : 10/15/09 at 3:12 AM.
|
|
|
|
|
|
10/15/09, 4:37 AM
|
#88
|
|
Von Kaiser
Night Elf Druid
Spinebreaker
|
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.
|
|
|
|
|
|
10/16/09, 8:25 PM
|
#89
|
|
Von Kaiser
Troll Shaman
Borean Tundra
|
Getting XML from armory into Yahoo Pipes?
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?
|
|
|
|
|
|
10/16/09, 8:41 PM
|
#90
|
|
Important on the Internets
|
Does the &rhtml=n on the end of the url not work?
|
|
|
|
|
|
10/16/09, 9:06 PM
|
#91
|
|
Von Kaiser
Troll Shaman
Borean Tundra
|
Originally Posted by chaud
Does the &rhtml=n on the end of the url not work?
|
Yes, that's exactly what I was looking for.
|
|
|
|
|
|
|