iFraan / vandal.js

Wrapper for Valorant stats api
GNU General Public License v3.0
2 stars 1 forks source link

vandal.js

CodeFactor NPM-Version NPM-Downloads Github Stars Issues

This a wrapper/scrapper of the TRNetwork site with Valorant stats.

There are no dependencies nor API key required.

Instalation

This module uses curl to fetch data I assume every OS should have it but worth mentioning it anyhow...

To install use:

npm i vandal.js

Usage

There is only one static function that takes the username and the tag, both required.

/* returns an API class instance with the data already fetched */
await API.fetchUser(user, tag) // user#tag

You must call API.fetchUser before using any other method.

Methods Description
info user and mmr info
ranked ranked stats
unrated unrated stats
agents stats for all played agents
gamemodes stats for all queues
raw return raw response

Example code

Feel free to use my riot username for testing

const { API } = require('vandal.js')

try {

    const user = await API.fetchUser('iFraan_', 'G4G')

    console.log('User:', user.info())
    /*
    User: {
        platform: 'riot',
        uuid: 'bc4b1936-febc-4c4d-96e6-84b4ceae1197',
        name: 'iFraan#G4G',
        userid: 'iFraan#G4G',
        avatar: 'https://titles.trackercdn.com/valorant-api/playercards/d29e6e34-44bd-21c8-f7bb-b0a73f267e50/displayicon.png',
        pageViews: 99,
        rank: 'Gold 2',
        peakRank: 'Diamond 1'
    }
    */

    console.log('Ranked:', user.ranked())
    /*
    Ranked: {
        matchesPlayed: 22,
        matchesWon: 11,
        matchesLost: 11,
        matchesTied: 0,
        matchesWinPct: 50,
        matchesDuration: 2077.090909090909,
        timePlayed: 45696,
        roundsPlayed: 468,
        roundsWon: 220,
        roundsLost: 248,
        roundsWinPct: 47.008547008547005,
        roundsDuration: 97.64102564102564,
        score: 113621,
        scorePerMatch: 5164.590909090909,
        scorePerRound: 242.77991452991452,
        kills: 390,
        killsPerRound: 0.8333333333333334,
        killsPerMatch: 17.727272727272727,
        deaths: 368,
        deathsPerRound: 0.7863247863247863,
        deathsPerMatch: 16.727272727272727,
        assists: 146,
        assistsPerRound: 0.31196581196581197,
        assistsPerMatch: 6.636363636363637,
        kDRatio: 1.059782608695652,
        kDARatio: 1.4565217391304348,
        kADRatio: 1.4565217391304348,
        damage: 74307,
        damageDelta: 7144,
        damageDeltaPerRound: 15.264957264957266,
        damagePerRound: 158.77564102564102,
        damagePerMatch: 3377.590909090909,
        damagePerMinute: 97.64388961892247,
        damageReceived: 67163,
        headshots: 266,
        headshotsPerRound: 0.5683760683760684,
        headshotsPercentage: 26.347826086956523,
        grenadeCasts: 146,
        grenadeCastsPerRound: 0.31196581196581197,
        grenadeCastsPerMatch: 6.636363636363637,
        ability1Casts: 294,
        ability1CastsPerRound: 0.6282051282051282,
        ability1CastsPerMatch: 13.363636363636363,
        ability2Casts: 345,
        ability2CastsPerRound: 0.7371794871794872,
        ability2CastsPerMatch: 15.681818181818182,
        ultimateCasts: 38,
        ultimateCastsPerRound: 0.0811965811965812,
        ultimateCastsPerMatch: 1.7272727272727273,
        dealtHeadshots: 303,
        dealtBodyshots: 774,
        dealtLegshots: 73,
        receivedHeadshots: 235,
        receivedBodyshots: 1014,
        receivedLegshots: 80,
        econRating: 1351,
        econRatingPerMatch: 61.40909090909091,
        econRatingPerRound: 2.8867521367521367,
        suicides: 0,
        firstBloods: 70,
        firstBloodsPerRound: 0.14957264957264957,
        firstBloodsPerMatch: 3.1818181818181817,
        firstDeaths: 51,
        firstDeathsPerRound: 0.10897435897435898,
        lastDeaths: 57,
        survived: 105,
        traded: 67,
        kAST: 70.09,
        mostKillsInMatch: 40,
        flawless: 17,
        thrifty: 0,
        aces: 2,
        teamAces: 1,
        clutches: 10,
        clutchesPercentage: 2.1367521367521367,
        clutchesLost: 53,
        clutches1v1: 5,
        clutches1v2: 4,
        clutches1v3: 1,
        clutches1v4: 0,
        clutches1v5: 0,
        clutchesLost1v1: 6,
        clutchesLost1v2: 10,
        clutchesLost1v3: 17,
        clutchesLost1v4: 13,
        clutchesLost1v5: 7,
        kills1K: 142,
        kills2K: 64,
        kills3K: 26,
        kills4K: 8,
        kills5K: 2,
        kills6K: 0,
        plants: 35,
        plantsPerMatch: 1.5909090909090908,
        plantsPerRound: 0.14285714285714285,
        attackKills: 209,
        attackKillsPerRound: 0.8530612244897959,
        attackDeaths: 193,
        attackKDRatio: 1.0829015544041452,
        attackAssists: 71,
        attackAssistsPerRound: 0.2897959183673469,
        attackRoundsWon: 119,
        attackRoundsLost: 126,
        attackRoundsPlayed: 245,
        attackRoundsWinPct: 48.57142857142857,
        attackScore: 61658,
        attackScorePerRound: 251.66530612244898,
        attackDamage: 41068,
        attackDamagePerRound: 167.62448979591838,
        attackHeadshots: 148,
        attackTraded: 35,
        attackSurvived: 56,
        attackFirstBloods: 34,
        attackFirstBloodsPerRound: 0.13877551020408163,
        attackFirstDeaths: 22,
        attackFirstDeathsPerRound: 0.08979591836734693,
        attackKAST: 68.16,
        defuses: 8,
        defusesPerMatch: 0.36363636363636365,
        defusesPerRound: 0.03587443946188341,
        defenseKills: 181,
        defenseKillsPerRound: 0.8116591928251121,
        defenseDeaths: 175,
        defenseKDRatio: 1.0342857142857143,
        defenseAssists: 74,
        defenseAssistsPerRound: 0.33183856502242154,
        defenseRoundsWon: 101,
        defenseRoundsLost: 122,
        defenseRoundsPlayed: 223,
        defenseRoundsWinPct: 45.2914798206278,
        defenseScore: 51963,
        defenseScorePerRound: 233.01793721973095,
        defenseDamage: 33239,
        defenseDamagePerRound: 149.05381165919283,
        defenseHeadshots: 118,
        defenseTraded: 32,
        defenseSurvived: 49,
        defenseFirstBloods: 36,
        defenseFirstBloodsPerRound: 0.16143497757847533,
        defenseFirstDeaths: 29,
        defenseFirstDeathsPerRound: 0.13004484304932734,
        defenseKAST: 70.4,
        rank: null,
        trnPerformanceScore: 631,
        peakRank: null
    }
    */

    console.log('Unrated: ', user.unrated())
    /*
    Unrated:  {
        matchesPlayed: 6,
        matchesWon: 3,
        matchesLost: 3,
        matchesTied: 0,
        matchesWinPct: 50,
        matchesDuration: 2354.8333333333335,
        timePlayed: 14129,
        roundsPlayed: 139,
        roundsWon: 72,
        roundsLost: 67,
        roundsWinPct: 51.798561151079134,
        roundsDuration: 101.64748201438849,
        score: 32810,
        scorePerMatch: 5468.333333333333,
        scorePerRound: 236.0431654676259,
        kills: 107,
        killsPerRound: 0.7697841726618705,
        killsPerMatch: 17.833333333333332,
        deaths: 102,
        deathsPerRound: 0.7338129496402878,
        deathsPerMatch: 17,
        assists: 41,
        assistsPerRound: 0.2949640287769784,
        assistsPerMatch: 6.833333333333333,
        kDRatio: 1.0490196078431373,
        kDARatio: 1.4509803921568627,
        kADRatio: 1.4509803921568627,
        damage: 21922,
        damageDelta: 1702,
        damageDeltaPerRound: 12.244604316546763,
        damagePerRound: 157.71223021582733,
        damagePerMatch: 3653.6666666666665,
        damagePerMinute: 93.28510638297873,
        damageReceived: 20220,
        headshots: 67,
        headshotsPerRound: 0.48201438848920863,
        headshotsPercentage: 18.660287081339714,
        grenadeCasts: 43,
        grenadeCastsPerRound: 0.30935251798561153,
        grenadeCastsPerMatch: 7.166666666666667,
        ability1Casts: 95,
        ability1CastsPerRound: 0.6834532374100719,
        ability1CastsPerMatch: 15.833333333333334,
        ability2Casts: 105,
        ability2CastsPerRound: 0.7553956834532374,
        ability2CastsPerMatch: 17.5,
        ultimateCasts: 9,
        ultimateCastsPerRound: 0.06474820143884892,
        ultimateCastsPerMatch: 1.5,
        dealtHeadshots: 78,
        dealtBodyshots: 318,
        dealtLegshots: 22,
        receivedHeadshots: 69,
        receivedBodyshots: 252,
        receivedLegshots: 28,
        econRating: 368,
        econRatingPerMatch: 61.333333333333336,
        econRatingPerRound: 2.647482014388489,
        suicides: 0,
        firstBloods: 12,
        firstBloodsPerRound: 0.08633093525179857,
        firstBloodsPerMatch: 2,
        firstDeaths: 23,
        firstDeathsPerRound: 0.16546762589928057,
        lastDeaths: 16,
        survived: 38,
        traded: 13,
        kAST: 69.06,
        mostKillsInMatch: 23,
        flawless: 9,
        thrifty: 0,
        aces: 0,
        teamAces: 0,
        clutches: 3,
        clutchesPercentage: 2.158273381294964,
        clutchesLost: 16,
        clutches1v1: 2,
        clutches1v2: 1,
        clutches1v3: 0,
        clutches1v4: 0,
        clutches1v5: 0,
        clutchesLost1v1: 0,
        clutchesLost1v2: 3,
        clutchesLost1v3: 6,
        clutchesLost1v4: 3,
        clutchesLost1v5: 4,
        kills1K: 32,
        kills2K: 24,
        kills3K: 9,
        kills4K: 0,
        kills5K: 0,
        kills6K: 0,
        plants: 9,
        plantsPerMatch: 1.5,
        plantsPerRound: 0.13043478260869565,
        attackKills: 64,
        attackKillsPerRound: 0.927536231884058,
        attackDeaths: 47,
        attackKDRatio: 1.3617021276595744,
        attackAssists: 15,
        attackAssistsPerRound: 0.21739130434782608,
        attackRoundsWon: 40,
        attackRoundsLost: 29,
        attackRoundsPlayed: 69,
        attackRoundsWinPct: 57.971014492753625,
        attackScore: 18135,
        attackScorePerRound: 262.82608695652175,
        attackDamage: 11559,
        attackDamagePerRound: 167.52173913043478,
        attackHeadshots: 34,
        attackTraded: 8,
        attackSurvived: 23,
        attackFirstBloods: 7,
        attackFirstBloodsPerRound: 0.10144927536231885,
        attackFirstDeaths: 10,
        attackFirstDeathsPerRound: 0.14492753623188406,
        attackKAST: 71.01,
        defuses: 3,
        defusesPerMatch: 0.5,
        defusesPerRound: 0.04285714285714286,
        defenseKills: 43,
        defenseKillsPerRound: 0.6142857142857143,
        defenseDeaths: 55,
        defenseKDRatio: 0.7818181818181819,
        defenseAssists: 26,
        defenseAssistsPerRound: 0.37142857142857144,
        defenseRoundsWon: 32,
        defenseRoundsLost: 38,
        defenseRoundsPlayed: 70,
        defenseRoundsWinPct: 45.714285714285715,
        defenseScore: 14675,
        defenseScorePerRound: 209.64285714285714,
        defenseDamage: 10363,
        defenseDamagePerRound: 148.04285714285714,
        defenseHeadshots: 33,
        defenseTraded: 5,
        defenseSurvived: 15,
        defenseFirstBloods: 5,
        defenseFirstBloodsPerRound: 0.07142857142857142,
        defenseFirstDeaths: 13,
        defenseFirstDeathsPerRound: 0.18571428571428572,
        defenseKAST: 62.86,
        peakRank: null
    }
    */

    console.log('ALL GAMEMODES (including deathmatch, spike-rush, etc) ', user.gamemodes())
    /* 
    ALL GAMEMODES (including deathmatch, spike-rush, etc)  {
    competitive: {
        timePlayed: 162654267,
        matchesPlayed: 80,
        matchesWon: 32,
        ... 
    },
    deathmatch: {
        timePlayed: 13160672,
        matchesPlayed: 30,
        matchesWon: 4,
        ... 
    },
    escalation: {
        timePlayed: 943011,
        matchesPlayed: 2,
        matchesWon: 0,
        ...
    },
    spikerush: {
        timePlayed: 3577956,
        matchesPlayed: 7,
        matchesWon: 6,
        ...
    },
    unrated: {
        timePlayed: 110172811,
        matchesPlayed: 58,
        matchesWon: 27,
        ...
    }
    }
    */

    console.log('Agents: ', user.agents())
    /*
    Agents:  {
        Killjoy: {
            timePlayed: 1904406,
            matchesPlayed: 1,
            matchesWon: 0,
            matchesLost: 1,
            matchesWinPct: 0,
            matchesDuration: 1904406,
            roundsPlayed: 19,
            roundsWon: 6,
            roundsLost: 13,
            roundsWinPct: 31.57894736842105,
            roundsDuration: 100231,
            econRating: 45,
            econRatingPerMatch: 45,
            econRatingPerRound: 2.3684210526315788,
            score: 3456,
            scorePerMatch: 3456,
            scorePerRound: 181.89473684210526,
            kills: 12,
            killsPerRound: 0.631578947368421,
            killsPerMatch: 12,
            killsPerMinute: 0.3870967741935484,
            headshots: 4,
            headshotsPerRound: 0.21052631578947367,
            headshotsPerMatch: 4,
            headshotsPerMinute: 0.12903225806451613,
            headshotsPercentage: 5.555555555555555,
            deaths: 16,
            deathsPerRound: 0.8421052631578947,
            deathsPerMatch: 16,
            deathsPerMinute: 0.5161290322580645,
            assists: 3,
            assistsPerMatch: 3,
            assistsPerRound: 0.15789473684210525,
            assistsPerMinute: 0.0967741935483871,
            kDRatio: 0.75,
            kDARatio: 0.8125,
            kADRatio: 0.9375,
            damage: 2071,
            damagePerMatch: 2071,
            damagePerRound: 109,
            damagePerMinute: 66.80645161290323,
            damageReceived: 2622,
            plants: 1,
            plantsPerMatch: 1,
            plantsPerRound: 0.05263157894736842,
            defuses: 0,
            defusesPerMatch: 0,
            defusesPerRound: 0,
            firstBloods: 1,
            firstBloodsPerMatch: 1,
            grenadeCasts: 16,
            grenadeCastsPerMatch: 16,
            grenadeCastsPerRound: 0,
            ability1Casts: 6,
            ability1CastsPerMatch: 6,
            ability1CastsPerRound: 0,
            ability2Casts: 12,
            ability2CastsPerMatch: 12,
            ability2CastsPerRound: 0,
            ultimateCasts: 3,
            ultimateCastsPerMatch: 3,
            ultimateCastsPerRound: 0,
            grenadeKills: 6,
            ability1Kills: 0,
            ability2Kills: 5,
            ultimateKills: 1,
            dealtHeadshots: 4,
            dealtBodyshots: 64,
            dealtLegshots: 4,
            receivedHeadshots: 9,
            receivedBodyshots: 42,
            receivedLegshots: 10,
            deathsFirst: 1,
            deathsLast: 6,
            mostKillsInMatch: 12,
            mostKillsInRound: 2,
            flawless: 1,
            clutches: 1,
            thrifty: 0,
            aces: 0,
            teamAces: 0,
            attackKDRatio: 0.625,
            attackKills: 5,
            attackDeaths: 8,
            attackAssists: 1,
            attackRoundsPlayed: 7,
            attackRoundsWon: 7,
            attackRoundsLost: 0,
            attackRoundsWinPct: 100,
            defenseKDRatio: 0.875,
            defenseKills: 7,
            defenseDeaths: 8,
            defenseAssists: 2,
            defenseRoundsPlayed: 12,
            defenseRoundsWon: 6,
            defenseRoundsLost: 6,
            defenseRoundsWinPct: 50,
            ability1KillsPerMatch: 0,
            ability2KillsPerMatch: 5,
            grenadeKillsPerMatch: 6,
            ultimateKillsPerMatch: 1
        },
        Sage: {
          ...
        },
        Omen: {
          ...
        },
        Jett: {
          ...
        },
        Phoenix: {
          ...
        },
        Raze: {
          ...
        }
    }
    */
} catch (e) {
    console.log(e)
    /* Error: We could not find the player [player]. */
}

Disclaimer

This project is fully for educational purposes and if you want to use the valorant api in a production/commertial enviroment you should ask for one at Riot Developers or email the guys at TRNetwork.