Runescape::Stats 0.02 A simple interface to Runescape hiscores. Installation: --------------- %perl Makefile.PL %make %make test %make install email perl@madcoder.net if you *really* need help ======================================================== Runescape::Stats Documentation: NAME Runescape::Stats - A persistent, cached, and object-oriented interface to Runescape Hiscores. SYNOPSIS use Runescape::Stats; ## Persistent Constructor my $obj = new Runescape::Stats('filename'); ## ..Or Non-Persistent Constructor (Does not save cache to file) my $obj = new Runescape::Stats; my $statResult = $obj->getStat($username, $skill); print $statResult->level; my @statResults = $obj->getAllStats($username); print $_->level foreach (@statResults); DESCRIPTION This is Runescape::Stats. It was created to enable perl scripts to easily interface to the Jagex hiscores tables and use them as a data source. Not only does it maintain a per-object cache (stats are valid for a certain [settable] amount of time), but it also features the ability to read and write its cache to Storable files by passing a filename to the constructor. By saving the cache, multiple applications can share one cache file, avoiding system-wide repeated lookups. It also is able to mass-harvest all found Stats on any hiscore page, including the users which surround a queried user. This enables the cache to contain preliminary data for users that have not even been searched for -- data which speeds up requests and minimizes Jagex server load should those other users ever be searched for. Runescape::Stats contains two modules: * Runescape::Stats This module performs lookups, conversions, and caching, and also implements cache persistence should it be requested. This is the meat of the program and is the only one of these modules that you will manually instantiate. * Runescape::Stats::StatPod This small transport module contains very little code. It is used to shuttle resulting stat info back to the calling program from the Runescape::Stats data retrieval methods. This module increases the efficiency of stat retrieval and simplifies the code required to handle the stat data. Now that you know a little more about Runescape::Stats, let's examine how to use it... USING THE MODULE Instantiation To make use of Runescape::Stats, you only need one thing: a Runescape::Stats object. There are two ways to create a Runescape::Stats object, one which prepares it for cache persistence, and the other which disables cache persistence (and may give you a slight speed increase if your cache is large). * Non-persistent Constructor Takes no arguments. $object = new Runescape::Stats; * Persistent Constructor Takes filename of file in which to store persistent cache. This filename can be specified by more that one application which uses Runescape::Stats and they will all share statcaches. $object = new Runescape::Stats("/etc/statcache.data"); Moving on... Stat Retrieval Runescape::Stats objects provide two simple methods for stat retrieval: * $object->getStat($username, $skill) getStat retrieves data for a single user in a particular skill. $username will be automatically cleaned up by Runescape::Stats, so you need not worry about formatting or capitalization. $skill may be any full Sunescape skill name (i.e. 'Smithing'), or any skill number (i.e. 11). Skill names are case-insensitive. getStat returns a single Runescape::Stats::StatPod object. * $object->getAllStats($username) getAllStats executes getStat internally for every known skill and returns an array of the resulting Runescape::Stats::StatPod objects. Other Methods These are methods that generally do not need to be used in a script which utilizes Runescape::Stats: * loadData() This method will force a persistent Runescape::Stats object to reload its cache from it's assigned file. The file used is the one passed to the persistent constructor. Has no effect on non-persistent objects. * saveData() This method will force a persistent Runescape::Stats object to save its cache to it's assigned file. No effect on non-persistent objects. * clearCache() This method will clear the internal object cache. On a non-persistent Runescape::Stats object, this will cause new queries to re-retrieve data from the Jagex tables. In a persistent object, this call will have no effect unless followed by a call to saveData(), as the cache file will be reread before the next query begins. * setCacheTimeout($timeInSeconds) This is used on an object-by-object basis to set the length of time (in seconds) before any cached stat expires. Each stat in the cache is flagged with the time retrieved, and if the number of seconds elapsed since then is greater than this setting, that stat will be re-retrieved from the hiscore tables. Default value is 20,000 seconds in new Runescape::Stats objects, which is approximately five and a half hours. AUTHORS Designed, created, and developed by Ben Ullian : http://www.madcoder.net URL Information on using this module will soon be available on http://www.madcoder.net ======================================================== Runescape::Stats::StatPod Documentation:NAME Runescape::Stats::StatPod - A very, very simple module through which Runescape::Stats retuns data from it's stat retrieval functions. SYNOPSIS Runescape::Stats::StatPod items are created and returned by the getStat() and getAllStats() functions of Runescape::Stats. For example: $statpod = $statsobject->getStat($username, $skill); Each StatPod has seven accessor functions: * $statpod->name Returns username of user whose stats are within this StatPod. * $statpod->skill Returns name of Runescape skill which contains these stats for this user. * $statpod->lvl and $statpod->level Synonymic functions which both return the level of the specified user in the specified skill. * $statpod->rank Returns the rank of the specified user in the specified skill. * $statpod->xp, $statpod->exp, and $statpod->experience Synonymic functions which return the experience of the specified user in the specifed skill. What if the user doesn't appear in the stat table? The StatPod accessor methods for rank, level, and experience will all return undef. If any one of them returns undef, you can assume that the rest will be due to the logic used within Runescape::Stats. AUTHORS Designed, created, and developed by Ben Ullian : http://www.madcoder.net URL Information on using this module will soon be available on http://www.madcoder.net