Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including krosmap with all npm packages installed. Try it out:

var krosmap = require("krosmap")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

krosmap v1.0.3

Krosmaga data wrapper

Krosmap

Krosmaga website parser

install

npm i krosmap --save

usage

const krosmap = require('krosmap')

const json = await krosmap.fetchUser('OTK-Val')

console.log(json) // Data may be missing

stable methods

fetchUser( username )                       // fetch all data of user

fetchUserGlobal( username )                 // fetch global position
fetchUserSeason( username, season="last" )  // fetch season position

fetchGlobal()                               // fetch global top 100
fetchSeason( season="last" )                // fetch season top 100

fetchUserProfile( username )                // fetch profile only

other properties

krosmap.images.global //=> https://static.ankama.com/krosmaga/www/modules/community/ladder/header_eternal.fr.jpg
krosmap.images.season //=> https://static.ankama.com/krosmaga/www/modules/community/ladder/header_season.fr.jpg

fetchUser( string: username ): Promise( Object )

When you fetch a user with fetchUser method, you get a JSON object containing information on their Ankama profile as well as their position in the global ranking and their position in the seasonal ranking of the last season.

The fetchUser method simply calls three other Krosmap methods: fetchUserProfile, fethUserGlobal and fetchUserSeason.

return {
  profile: {
    username: 'OTK-Val',
    avatar: 'https://static.ankama.com/web-test/0.png',
    description: "\nOTK-Val n'a pas encore rédigé de description personnalisée"
  },
  global: { position: 722, win: 1558, lose: 1167, elo: 1553 },
  lastSeason: { position: 3409, win: 3, lose: 1, rank: 9 }
}

Krosmap being a data parser tool from Krosmaga website, there is a non-zero chance that some of its data will not reach you. So consider testing each direct property of the JSON data.

return {
  profile: false, // usually due to error 429 (try again later)
  global: false, // just because of bugs in the web page
  lastSeason: false // the same as for "global" property
}

fetchGlobal( ): Promise( Array )

The fetchGlobal method provides the top 100 of the global ranking.

// example data are fake kappa
return [
  { position: 1, win: 100, lose: 1, elo: 1950, username: 'Ghom' },
  { position: 2, win: 100, lose: 5, elo: 1800, username: 'OTK-Val' },
  { position: 3, win: 200, lose: 120, elo: 1400, username: 'ASK-ing' },
  { position: 4, win: 100, lose: 60, elo: 1310, username: 'BOSS-RNG' },
  {...}
  { position: 100, win: 50, lose: 50, elo: 900, username: 'Nono42' },
]

fetchSeason( number|string: ?season = 'last' ): Promise( Array )

The fetchSeason method provides the top 100 of the last season ranking or of the given season.

return [
  { position: 1, win: 100, lose: 1, rank: 30, username: 'Ghom' },
  { position: 2, win: 100, lose: 5, rank: 30, username: 'OTK-Val' },
  { position: 3, win: 200, lose: 120, rank: 30, username: 'ASK-ing' },
  { position: 4, win: 100, lose: 60, rank: 30, username: 'BOSS-RNG' },
  {...}
  { position: 100, win: 50, lose: 50, rank: 29, username: 'Nono42' },
]
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free