npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

osrs-json-hiscores

v2.18.0

Published

The Old School Runescape API wrapper that does more!

Downloads

662

Readme

OSRS .json Hiscores

npm downloads types build

The Old School RuneScape API wrapper that does more!

What it does

The official hiscores API for Old School RuneScape (OSRS) can return CSV or a simple JSON array. This wrapper converts the hiscores data into a more usable JSON object and provides extra information about the given player. By comparing player info it infers the player's game mode, as well as any previous modes (de-ultimated, de-ironed and/or died as a hardcore ironman).

Additional functions are provided that screen-scrape the OSRS leaderboards and return a list of players as json. Also simple utility functions are provided to fetch the raw responses from Jagex's APIs, if desired.

osrs-json-hiscores has TypeScript support, with full definitions for all functions and custom data types.


⚠ Disclaimer ⚠

Jagex does not provide Access-Control-Allow-Origin headers in their responses. This means that CORS will block all browser requests to their hiscores API. In order to get around this, osrs-json-hiscores needs to be installed on the server side and exposed to the front end via a simple API. Here is an example of this in use: codesandbox.io/s/osrs-json-hiscores-demo

TLDR: You cannot use this library directly in your client side app e.g. React or Vue, you must set up a server which uses this lib internally and have your client fetch data from your server.


Installation

With npm:

$ npm install osrs-json-hiscores

With Yarn:

$ yarn add osrs-json-hiscores

How to use

Install the package and then import it into your project:

import { getStatsByGamemode, getSkillPage } from 'osrs-json-hiscores';

Once you import it you can call the functions asynchronously:

const stats = await getStatsByGamemode('Lynx Titan');
const topPage = await getSkillPage('overall');

getStats will return a full player object with gamemode.
getStatsByGameMode will return a stats object and accepts a gamemode parameter:

| Game mode | Param | | ---------------- | :----------: | | Regular | main | | Ironman | ironman | | Hardcore Ironman | hardcore | | Ultimate Ironman | ultimate | | Deadman Mode | deadman | | Tournament | tournament | | Leagues | seasonal |

getSkillPage and getActivityPage require a skill / activity and optionally a gamemode and page:

getSkillPage('attack', 'main', 1)
  .then((res) => console.log(res))
  .catch((err) => console.error(err));

Activities consist of all levels of clue scrolls as well as minigames and bosses:

Clue Scrolls

| Type | Param | | -------- | :-------------: | | All | allClues | | Beginner | beginnerClues | | Easy | easyClues | | Medium | mediumClues | | Hard | hardClues | | Elite | eliteClues | | Master | masterClues |

Minigames

| Minigame | Param | | ------------------------------- | :---------------: | | Bounty Hunter (Legacy - Rogue) | rogueBH | | Bounty Hunter (Legacy - Hunter) | hunterBH | | Bounty Hunter (Rogue) | rogueBHV2 | | Bounty Hunter (Hunter) | hunterBHV2 | | LMS - Rank | lastManStanding | | PvP Arena - Rank | pvpArena | | Soul Wars Zeal | soulWarsZeal | | Rifts closed | riftsClosed | | Colosseum Glory | colosseumGlory |

Points

| Activity | Param | | -------------- | :-------------: | | League Points | leaguePoints | | Deadman Points | deadmanPoints |

Bosses

| Boss Name | Param | | --------------------------------- | :----------------------------: | | Abyssal Sire | abyssalSire | | Alchemical Hydra | alchemicalHydra | | Artio | artio | | Barrows Chests | barrows | | Bryophyta | bryophyta | | Callisto | callisto | | Calvar'ion | calvarion | | Cerberus | cerberus | | Chambers Of Xeric | chambersOfXeric | | Chambers Of Xeric: Challenge Mode | chambersOfXericChallengeMode | | Chaos Elemental | chaosElemental | | Chaos Fanatic | chaosFanatic | | Commander Zilyana | commanderZilyana | | Corporeal Beast | corporealBeast | | Crazy Archaeologist | crazyArchaeologist | | Dagannoth Prime | dagannothPrime | | Dagannoth Rex | dagannothRex | | Dagannoth Supreme | dagannothSupreme | | Deranged Archaeologist | derangedArchaeologist | | Duke Sucellus | dukeSucellus | | General Graardor | generalGraardor | | Giant Mole | giantMole | | Grotesque Guardians | grotesqueGuardians | | Hespori | hespori | | Kalphite Queen | kalphiteQueen | | King Black Dragon | kingBlackDragon | | Kraken | kraken | | Kreearra | kreeArra | | K'ril Tsutsaroth | krilTsutsaroth | | Lunar Chests | lunarChests | | Mimic | mimic | | Nex | nex | | Nightmare | nightmare | | Phosani's Nightmare | phosanisNightmare | | Obor | obor | | Phantom Muspah | phantomMuspah | | Sarachnis | sarachnis | | Scorpia | scorpia | | Scurrius | scurrius | | Skotizo | skotizo | | Sol Heredit | solHeredit | | Spindel | spindel | | Tempoross | tempoross | | The Gauntlet | gauntlet | | The Corrupted Gauntlet | corruptedGauntlet | | The Leviathan | leviathan | | The Whisperer | whisperer | | Theatre Of Blood | theatreOfBlood | | Theatre Of Blood: Hard Mode | theatreOfBloodHardMode | | Thermonuclear Smoke Devil | thermonuclearSmokeDevil | | Tombs of Amascut | tombsOfAmascut | | Tombs of Amascut: Expert Mode | tombsOfAmascutExpertMode | | TzKal-Zuk | tzKalZuk | | TzTok-Jad | tzTokJad | | Vardorvis | vardorvis | | Venenatis | venenatis | | Vetion | vetion | | Vorkath | vorkath | | Wintertodt | wintertodt | | Zalcano | zalcano | | Zulrah | zulrah |

What you'll get

getStats returns a player object that looks like this:

{
  name: 'Lynx Titan',
  mode: 'main',
  dead: false,
  deulted: false,
  deironed: false,
  main: {
    skills: {
      overall: {rank: 1, level: 2277, xp: 4600000000},
      attack: {},
      defence: {},
      // ...
    },
    clues: {},
    leaguePoints: {},
    bountyHunter: {},
    lastManStanding: {},
    pvpArena: {},
    soulWarsZeal: {},
    riftsClosed: {},
    bosses: {}
  }
}

getSkillPage returns and array of 25 players (This represents a page on the hiscores):

[
  { rank: 1, name: 'Lynx Titan', level: 2277, xp: 4600000000, dead: false },
  {},
  {}
  // ...
];

Helpful Extras

Get the properly formatted name of any skill, boss, clue or other activity:

// kril === "K'ril Tsutsaroth"
const kril = FORMATTED_BOSS_NAMES['krilTsutsaroth'];