User:Attackofthecold955

My backed up builds list: Builds.

Also i edited Hhhippo's edit of Irkm Desmet's history grabing script to gather a LOT of histories at once, then save them to a file. I'am hoping that 1 file with all the histories under the build name will be enough.


 * 1) !/usr/bin/perl
 * 2) Get list of contributors of a GuildWiki page
 * 3) Written by Irkm_Desmet
 * 4) Changes by Hhhippo (14 Apr 2007):
 * 5) - Sort contributors in order of their appearance on the history page
 * 6) - Removed skipping of minor editors (found a page creator who called that minor)
 * 7) - Some output cosmetics
 * 8) Changes by Hhhippo (16 Apr 2007):
 * 9) - escaped ampersand entity to avoid interpretation by the browser
 * 10) - added file output to facilitate use under windows
 * 11) Changes Also by AttackOfTheCold (1 May 2007):
 * 12) - You can now grab a LOT of histories all at one and save them to one file.
 * 1) - escaped ampersand entity to avoid interpretation by the browser
 * 2) - added file output to facilitate use under windows
 * 3) Changes Also by AttackOfTheCold (1 May 2007):
 * 4) - You can now grab a LOT of histories all at one and save them to one file.
 * 1) - You can now grab a LOT of histories all at one and save them to one file.

use warnings; use strict;

my @fileff= ("Build:A/D Dark Shadow Forge Runner", "Build:A/D Disciple of Death", "Build:A/D Fox's Scythe", "Build:A/E Gloom Farmer", "Build:A/E Solo Green Farmer", "Build:A/E UW Farmer", "Build:A/Me Fever Outbreak", "Build:A/Me Solo Sin", "Build:A/Mo Vigorous Assassin", "Build:A/R Critical Barrager", "Build:A/R Relentless Spiker", "Build:A/R Solo Rajazan's Fervor Farmer", "Build:A/R Solo Securing Echovald Forest", "Build:A/Rt Splintering Nightmare", "Build:A/any Blind Promises", "Build:A/any Chkkr Farmer", "Build:A/any Chkkr Locust Lord Farmer", "Build:A/any Critical Fox", "Build:A/any PvE Attack Spammer", "Build:A/any Shadow Blossom", "Build:D/A Dark Silence Runner", "Build:D/E Mirror of Ice Scythe", "Build:D/E Obsidian Dervish", "Build:D/Me Dervish Solo FoW Farmer", "Build:D/Mo 130hp Dervish", "Build:D/Mo InvinciDervish", "Build:D/Mo Shielded Derv", "Build:D/Mo Vermin Farmer", "Build:D/N Contagious Reaper", "Build:D/W Lyssa's Avatar", "Build:D/W Silent Forge Runner", "Build:D/any Avatar Forge Runner", "Build:D/any Convicted Wounder", "Build:D/any Mystic Renewal", "Build:D/any Reaper's Vow", "Build:E/A Assassin's Promise Nuker", "Build:E/A Death's Wave", "Build:E/A Gloom Farmer", "Build:E/A Solo Green Farmer", "Build:E/D Sandstorm Vermin Farmer", "Build:E/Me Echo Nuker", "Build:E/Me Echoed Invoker", "Build:E/Me Mist Form Farmer", "Build:E/Me Searing Farmer", "Build:E/Me Terra Tank", "Build:E/Me Underworld Tank", "Build:E/Mo 330 Ele", "Build:E/Mo Earth Tank/PBAoE", "Build:E/Mo Ebon Earthquake", "Build:E/Mo Imperial Farmer", "Build:E/Mo Savannah Heat Farmer", "Build:E/Mo The Torment Farmer", "Build:E/R DoA Tank", "Build:E/R EoE Bomb", "Build:E/R Sanctum Cay Runner", "Build:E/Rt UW Vengeful Farmer", "Build:E/W UW Magnetic Aura Farmer", "Build:E/any Dual Attunement Air Spiker", "Build:E/any Multi-Purpose Farmer", "Build:E/any PvE Unsteady Ground Warder", "Build:E/any Renewal Nuker", "Build:E/any Searing Flames Elementalist", "Build:E/any Shockwave Vermin Farmer", "Build:Me/A Neutral IW", "Build:Me/A Shadow Runner", "Build:Me/D Extended Thorns", "Build:Me/E Air Spiker", "Build:Me/E Flashfire", "Build:Me/Mo Faster Caster", "Build:Me/N Incetol Farmer", "Build:Me/W Illusory Forge Runner", "Build:Me/any PvE Domination Mesmer", "Build:Mo/D Divine Wind Runner", "Build:Mo/D Monk Vermin Farmer", "Build:Mo/E Glyph Boon Healer", "Build:Mo/E Glyph Shield of Regen", "Build:Mo/E Shielded Sliver", "Build:Mo/E SoA Sliver", "Build:Mo/E Zealous PvE Healer", "Build:Mo/Me Barrier Bond Monk", "Build:Mo/Me Blessed Light Bond Monk", "Build:Mo/Me Elona's Bonder", "Build:Mo/Me Illusionary UW solo", "Build:Mo/Me Inspired Smiter", "Build:Mo/Me PvE WoH Monk", "Build:Mo/Me Tank Bonder", "Build:Mo/R Shiverpeaks Runner", "Build:Mo/W Aggressive Totem 55hp Monk", "Build:Mo/W Bold Forge Monk", "Build:Mo/any 55hp Solo Monk", "Build:Mo/any Canthan Bonder", "Build:Mo/any Holy Haste LoD Healer", "Build:Mo/any Light of Deliverance Hybrid", "Build:Mo/any SoA Monk", "Build:Mo/any Word of Healing Monk", "Build:N/D Mystic Blood Bonder", "Build:N/Me Death Farmer", "Build:N/Me FoC Spiker", "Build:N/Me Midnight Solo", "Build:N/Me SS Nuker", "Build:N/Mo Boss Farmer", "Build:N/Mo Jagged Nova Bomber", "Build:N/Mo Minion Master", "Build:N/Mo New Orders Necromancer", "Build:N/Mo Solo Bladed Aatxe and Grasping Nightmare UW", "Build:N/Mo Solo SS Necromancer", "Build:N/Mo Support Wells Necro", "Build:N/Mo Supportive Minion Master", "Build:N/Mo Tombs OOV", "Build:N/P Remains of Sahlahja Fun", "Build:N/R Explosive Extinction", "Build:N/R Stygian Solo Farmer", "Build:N/R Toxic Discord", "Build:N/any Aura of the Lich MM", "Build:N/any BiP Necro", "Build:N/any Icy Blighter", "Build:N/any Minion Master", "Build:N/any Virulent Minion Master", "Build:P/D Nightfall Hybrid Spiker", "Build:P/R Critical Spear", "Build:P/W Focused Warrior", "Build:P/W Party Support", "Build:P/W ToF Tank", "Build:P/any FoW Paratrooper", "Build:R/D Enchanted Forge Runner", "Build:R/D Impurity Farmer", "Build:R/Me Ettin Solo", "Build:R/Me Famine Farmer", "Build:R/Me Feverish Archer", "Build:R/Me Fissure Forest Farmer", "Build:R/Me Underworld Speed Trap Solo", "Build:R/Mo Basic Ranger Runner", "Build:R/N Shivering Marksman", "Build:R/N Touch Ranger", "Build:R/P Keen Shouter", "Build:R/Rt Armed Assault", "Build:R/Rt Brutal Glass Arrows", "Build:R/Rt Oath Spirit Spam", "Build:R/W Bold Forge Runner", "Build:R/W Choking Gas Ranger", "Build:R/W Melandru's Jungle Runner", "Build:R/W Stance Tank", "Build:R/any Chkkr Thousand Tail Farmer", "Build:R/any General Barrager", "Build:R/any General Interrupter", "Build:R/any Prepare to be Dazed", "Build:R/any Prepared Needle", "Build:R/any Solo Desert Trapper", "Build:R/any Solo Totem Axe Farmer", "Build:R/any Tank Master", "Build:Rt/A Offensive Promiser", "Build:Rt/D Spirit Scythe", "Build:Rt/Me Painful Echo", "Build:Rt/Me Vengeful Farmer", "Build:Rt/Mo Burst Healer", "Build:Rt/N Explosive Creation", "Build:Rt/P Maddened Spirit Killer", "Build:Rt/R Wanderlust Lord", "Build:Rt/W Smite Crawler Farmer", "Build:Rt/W Spirit Warrior", "Build:Rt/any Attuned Channeler", "Build:Rt/any Attuned Restorer", "Build:Rt/any Battlebox Spirit Spammer", "Build:Rt/any Continual Channeler", "Build:Rt/any Devouring Restorer", "Build:Rt/any Quick Channeler", "Build:Rt/any Ritual Lord", "Build:Rt/any Spirit Keeper", "Build:Rt/any Spirit Nuker", "Build:Team - 2 Monk Rotscale Farm", "Build:Team - 5 Man Farming (Tomb Ruins)", "Build:Team - 55/Famine", "Build:Team - 55/Famine Redux", "Build:Team - 55/SS", "Build:Team - 55/SS FoW", "Build:Team - 6 Man Deep Team", "Build:Team - Barrage/Pet (Tomb Ruins)", "Build:Team - DoA Balanced", "Build:Team - Dual Anguish Farmer", "Build:Team - Dual Monk UW team", "Build:Team - Dual UW Smite", "Build:Team - Eskimos", "Build:Team - Foundry Balanced", "Build:Team - Lutgardis FFF", "Build:Team - Shadow Flame", "Build:Team - Stygian Veil Symbiosis", "Build:Team - Underworld Speed Trap Duo", "Build:Team - Underworld trapping", "Build:Team - Urgoz Trappers", "Build:W/D Zealous Decapitater", "Build:W/E Obsidian Tank", "Build:W/E Sliver Vermin", "Build:W/E The Deep Soloer", "Build:W/Me Enduring Visage UW Solo", "Build:W/Me Raging IDS Farmer", "Build:W/Me Sanctum Cay Runner", "Build:W/Me UW Solo", "Build:W/Mo Arrahhsh Farmer", "Build:W/Mo Bold Forge Runner", "Build:W/Mo Dead Sword Solo", "Build:W/Mo Full Vigor Paladin", "Build:W/Mo Ghial Farmer", "Build:W/Mo Rajazan Farmer", "Build:W/Mo Regeneration IDS Farmer", "Build:W/Mo Vermin Farmer", "Build:W/Mo Wamo Hydra Farmer DNK", "Build:W/N Sskai's Sword Farmer", "Build:W/N The Quiverer", "Build:W/R Craw Stonereap Farmer", "Build:W/R Melandru's Resilience Totem Axe Farmer", "Build:W/Rt AoE Splinter", "Build:W/Rt Crude Earth", "Build:W/Rt Resilient Tank", "Build:W/Rt UW solo", "Build:W/any Axe Rune Farmer", "Build:W/any Basic PvE Hammer", "Build:W/any Cleave PvE Soldier", "Build:W/any Dwarven Hammer", "Build:W/any Fissure Spider Farmer", "Build:W/any Flailing Dragon", "Build:W/any Forceful Warrior", "Build:W/any Prophecies Tanker", "Build:W/any Steady Warrior", "Build:W/any Triple Chop PvE Warrior"); my $varI = 0;

open (OUTFILE, '>>authors.txt');

for($varI=0;$varI<=scalar(@fileff);$varI++) {

my $pageTitle = $fileff[$varI]; my $url = "http://gw.gamewikis.org/wiki?title=$pageTitle&action=history&limit=500"; my $content = getURL($url); my ($originalAuthor, $users) = extractUserNames($content);

my $contribs="\n== $pageTitle ==\n\nCredits\n"; $contribs = $contribs."Original author: ". "" . $originalAuthor . " \n"; $contribs = $contribs."Additional contributors: \n";

foreach (sort { $$users{$a}{number} <=> $$users{$b}{number} } keys %$users) { next if $_ eq $originalAuthor; $contribs = $contribs. "" . $_ . ",\n" } $contribs =~ s/,\n$/\n\n\n/s;

print OUTFILE $contribs;

}

close (OUTFILE);

sub extractUserNames { my $content = shift;

my @lines = split(/\n/, $content); #print "Lines= $#lines\n";

my $count = 0; my $userno = 0;

# Skip leading lines while ($lines[$count] !~ /^\(cur\)/) { $count++; }

my %users; my $originalAuthor;

while ($lines[$count] =~ /^/) { #  if ($lines[$count] =~ / m<\/span>/) { #  # minor edit -> skip #  $count++; #   next; #  }    $lines[$count] =~ /\(.*?)\<\/span\>/; my $part = $1; #print "\n$part\n"; if ($part =~ /(.*?)<\/a>/) { my ($pagename1, $pagename2,$userlink, $username) = ($1,$2,$3,$4);

if (!exists($users{$username})) { $users{$username}{number} = $userno++; if (defined($pagename1)) { #print "Pagename1 = $pagename1, Userlink=$userlink, Username=$username\n"; $users{$username}{pagename} = $pagename1; $users{$username}{userlink} = $userlink; } else { #print "Pagename2 = $pagename2, Userlink=$userlink, Username=$username\n"; $users{$username}{pagename} = $pagename2; $users{$username}{userlink} = $userlink; }       }        # remember author, last in list is original author $originalAuthor = $username; } else { print "unparsed line: $part\n"; }   $count++; }   print "Contributors: $userno\n"; return $originalAuthor, \%users; }

sub usage { print "Usage: getAuthors.pl \n"; print "Example: getAuthors.pl \"Build:W/D_Zealous_Decapitater\"\n"; }

sub getURL {

use LWP::UserAgent; use URI;

my($url,$ret) = @_;

if(!defined $ret) { $ret = 5; }

my($ua) = LWP::UserAgent->new(env_proxy => 1,                                 keep_alive => 1,                                  timeout => 60,                                  # agent => "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; T312461)",                                 ); my($furl) = URI->new($url)->canonical; print "Getting URL : $url\n"; my($response) = $ua->get($furl); my($count); while(!$response->is_success) { $count++; warn "Error getting $furl, retrying ($count)."; sleep 5; if($count == $ret) { warn "Can't get $furl, aborting after $ret retries."; return undef; }   }

return $response->content; }

__END__

For the array @fileff (bunch of stuff here); you can choose certain builds to get by changing it to @fileff ("Build 1", "Builds 2"); Have fun :)