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

node-shiftstats

v1.0.0

Published

Library for talking with DigitalShift network sites (HockeyShift, BasketballShift, etc.)

Downloads

10

Readme

node-shiftstats

This package pulls data from DigitalShift sites such as HockeyShift, SoccerShift, LacrosseShift, FootballShift, BasketballShift, and BaseballShift.

For the Ruby version of this library, see shift_stats

npm version

Install

You can install node-shiftstats via npm: npm install node-shiftstats

Usage

const ShiftStats = require('node-shiftstats')

Create a new instance of ShiftStats with

let s = new ShiftStats()

then await or .then() on s.login(). This connects to the ShiftStats server, logs in, and stores the ticket hash so you're ready to make any other request. This ticket is only valid for a limited amount of time.

Optionally specify your API key (note: by default uses the same API key as the Android HockeyShift app)

let s = new ShiftStats('yourApiKeyHere')

Attempting to login or call any API can reject/catch if there are network issues or the API key is invalid.

See the included example script for a small sample of interfacing with the library.

Available methods

  • leagues - Get a list of all available leagues.
  • league(leagueId) - Show details for a specific league.
  • leagueSeasons(leagueId) - Get a list of seasons for a specific league.
  • leagueSuspensions(leagueId, onlyActive = true) - Get a list of suspended players for the specified league.
    • onlyActive controls whether expired suspensions are included or not.
    • WARNING: this response can be very large, especially if onlyActive is false.
  • teamSearch(sportName, teamName) - Search for the given team in the given sport for all active seasons.
  • teamSchedule(teamId) - Retrieve the game schedule for the supplied team.
  • teamPlayersList(teamId) - Get the list of players on a specific team.
  • teamsInDivision(divisionName, leagueId, currentSeason = true) - Get all teams in the named division in the specific league.
    • This is an odd API that requires the division be a name, not an ID, and requires specifying a league ID to search in.
  • teamGames(teamId, includeFuture = true, includeToday = true) - Get all games for a specific team.
  • teamGamesForStatus(teamId, status = 'Final,In Progress,Forfeit') - Get a list of all games for a specific team matching the specified type.
    • Valid values for status are Final, In Progress, and Forfeit, and can be mixed and matched, separated by commas.
  • teamPractices(teamId, includeFuture = true, includeToday = true) - Get a list of practices schedule for the specified team.
  • teamSuspensions(teamId, onlyActive = true) - Get a list of suspensions of players on the specified team.
    • onlyActive controls whether expired suspensions are included or not.
  • game(gameId) - Returns data about the specified game.
  • gameGoals(gameId, only = null) - Returns a list of goals in the specified game.
    • Valid values for only are 'home' and 'away'. If not specified, both teams' goals are included.
  • gameGoalies(gameId, only = null) - Returns a list of goalies in the specified game.
    • Valid values for only are 'home' and 'away'. If not specified, both teams' goalies are included.
  • gamePenalties(gameId, only = null) - Returns a list of penalties in the specified game.
    • Valid values for only are 'home' and 'away'. If not specified, both teams' penalties are included.
  • gameRoster(gameId, only = null) - Returns the roster for the specified game.
    • Valid values for only are 'home' and 'away'. If not specified, both teams' rosters are included.
  • divisionGamesList(divisionId) - Returns all games for a specified division.
  • divisionStandings(divisionId, type = 'Regular Season') - Returns a ranked list of teams for the specified division.
    • Valid values for type are Regular Season, Playoffs, and Exhibition.
  • divisionTeams(divisionId) - Lists all teams in the specified division.
  • divisionLeaders(divisionId, type = 'Regular Season', limit = 20, metrics = ['points', 'goals']) - Lists up to limit number of leaders for the specified division.
    • Valid values for type are Regular Season, Playoffs, and Exhibition.
    • Valid values for metrics include anything listed in league(leagueId).league.view_settings.leader_metrics.
  • divisionSuspensions(divisionId, onlyActive = true) - Get a list of suspensions of players in the specified division.
    • onlyActive controls whether expired suspensions are included or not.
  • season(seasonId) - Show details for a specific season.
  • seasonDivisionsList(seasonId) - Lists all divisions for the specified season.
  • seasonSuspensions(seasonId, onlyActive = true) - Get a list of suspended players for the specified season.
    • onlyActive controls whether expired suspensions are included or not.

Bug reports, feature requests, contributions

Please create an issue or pull request on github. Assistance is most welcome.

There are more endpoints available on Shift sites, but none are documented. Running a mobile app inside an emulator and watching wireshark, fiddler, etc. is how the current endpoints were discovered.