All Projects → whatadewitt → Yahoo Fantasy Sports Api

whatadewitt / Yahoo Fantasy Sports Api

Licence: mit
NodeJS wrapper for the Yahoo! Fantasy Sports API

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Yahoo Fantasy Sports Api

Nba.js
A Node.js library for current and historical NBA stats, scores, and data.
Stars: ✭ 339 (+154.89%)
Mutual labels:  sports
Opendata
A project to collect, collate and share an open data set with contributions from users of the GoldenCheetah application
Stars: ✭ 21 (-84.21%)
Mutual labels:  sports
Hockey Scraper
Python Package for scraping NHL Play-by-Play and Shift data
Stars: ✭ 93 (-30.08%)
Mutual labels:  sports
Nba Player Movements
🏀 Visualization of NBA games from raw SportVU data logs
Stars: ✭ 481 (+261.65%)
Mutual labels:  sports
Chir.py
twitter news bot that builds followers, posts, and bitcoin via ppc links
Stars: ✭ 10 (-92.48%)
Mutual labels:  sports
Stravazpot Android
A fluent API to integrate with Strava on Android apps
Stars: ✭ 62 (-53.38%)
Mutual labels:  sports
Localradio
📻 LocalRadio is "Radio for Cord-Cutters" – a Software-Defined Radio (SDR) app for your Mac and mobile devices. With an inexpensive RTL-SDR USB device, LocalRadio provides a casual, home-based radio listening experience for your favorite local frequencies - FM broadcasts/free music/news/sports/weather/public safety & aviation scanner/etc.
Stars: ✭ 269 (+102.26%)
Mutual labels:  sports
Fit
A Go package for decoding and encoding Garmin FIT files
Stars: ✭ 128 (-3.76%)
Mutual labels:  sports
March Madness Data
NCAA brackets in JSON form
Stars: ✭ 14 (-89.47%)
Mutual labels:  sports
Basketball analytics
Repository which contains various scripts and work with various basketball statistics
Stars: ✭ 88 (-33.83%)
Mutual labels:  sports
Alphapy
Automated Machine Learning [AutoML] with Python, scikit-learn, Keras, XGBoost, LightGBM, and CatBoost
Stars: ✭ 564 (+324.06%)
Mutual labels:  sports
Nba
Node.js client for nba.com API endpoints
Stars: ✭ 637 (+378.95%)
Mutual labels:  sports
Sports Betting
Sports betting assistant (with interface) which optimizes earnings regarding odds and offers
Stars: ✭ 72 (-45.86%)
Mutual labels:  sports
Mlbgame
A Python API to retrieve and read MLB GameDay data
Stars: ✭ 446 (+235.34%)
Mutual labels:  sports
Tennis Crystal Ball
Ultimate Tennis Statistics and Tennis Crystal Ball - Tennis Big Data Analysis and Prediction
Stars: ✭ 107 (-19.55%)
Mutual labels:  sports
Mlb Led Scoreboard
An LED scoreboard for Major League Baseball ⚾️
Stars: ✭ 321 (+141.35%)
Mutual labels:  sports
Soccergraphr
Soccer Analytics in R using OPTA data
Stars: ✭ 42 (-68.42%)
Mutual labels:  sports
Ncaahoopr
An R package for working with NCAA Basketball Play-by-Play Data
Stars: ✭ 132 (-0.75%)
Mutual labels:  sports
Sportspress
An open source league statistics plugin for WordPress created by ThemeBoy.
Stars: ✭ 124 (-6.77%)
Mutual labels:  sports
Songtianyi.github.io
blog pages
Stars: ✭ 77 (-42.11%)
Mutual labels:  sports

Yahoo! Fantasy API Node Module

This is a node module created to wrap the Yahoo! Fantasy Sports API (link). At the moment, not all subresources are available, nor are any of the 'collection' elements. I do hope to add them, and they have been added to the code, but as of now this project is very much in an open beta phase.

The API is designed to act as a helper for those interacting with the Y! Fantasy API. The goal is for ease of use for the user, both in terms of querying endpoints and parsing responses. I've noticed that in working with the API, the data is not always the easiest to understand, so hopefully what I have created here will help people out.

Installation

You can install the module via npm by running:

$ npm install yahoo-fantasy

Licence

This module is available under the MIT Licence

Documentation

More complete documentation can be found using the application sandbox. This sandbox is always a work in progress, if I've learned anything it's that nothing is ever complete.

The API can be used by simply importing the module and querying data, since version 4.0 the authentication flow has been built into the library to make things easier for users.

// import the library
const YahooFantasy = require('yahoo-fantasy');

// you can get an application key/secret by creating a new application on Yahoo!
const yf = new YahooFantasy(
  Y!APPLICATION_KEY, // Yahoo! Application Key
  Y!APPLICATION_SECRET, // Yahoo! Application Secret
  tokenCallbackFunction, // callback function when user token is refreshed (optional)
  redirectUri // redirect endpoint when user authenticates (optional)
);

// you can authenticate a user by setting a route to call the auth function
// note: from v4.0 on, public queries are now supported; that is, you can query
// public resources without authenticating a user (ie/ game meta, player meta,
// and information from public leagues)
yf.auth(
  response // response object to redirect the user to the Yahoo! login screen
)

// you also need to set up the callback route (defined as the redirect uri above)
// note: this will automatically set the user and refresh token if the request is
// successful, but you can also call them manually, described below
yf.authCallback(
  request, // the request will contain the auth code from Yahoo!
  callback // callback function that will be called after the token has been retrieved
)

// if you're not authenticating via the library you'll need to set the Yahoo!
// token for the user
yf.setUserToken(
  Y!CLIENT_TOKEN
);

// you can do the same for the refresh token...
// if you set this and the token expires (lasts an hour) then the token will automatically
// refresh and call the above "tokenCallbackFunction" that you've specified to persist the
// token elsewhere
yf.setRefreshToken(
  Y!CLIENT_REFRESH_TOKEN
);

// query a resource/subresource
yf.{resource}.{subresource} (
  {possible argument(s)},
  function cb(err, data) {
    // handle error
    // callback function
    // do your thing
  }
);

Starting with v3.1.0 you can also use a promise chain to query resources and subresources

yf.{resource}.{subresource} (
  {possible argument(s)}
)
.then(data => // do your thing)
.catch(err => // handle error)

This also opens the door to use async/await in version of node that support it

try {
  let data = await yf.{resource}.{subresource} (
    {possible argument(s)}
  )

  // do your thing
} catch(err) {
  // handle error
}

Bugs & Issues

This project is very much still a work in progress, please report any issues via the GitHub issues page.

Changelog

4.1.3

  • Fixed a bug where Yahoo! apparently no longer requires ;type=week when building a URL for team.stats and player.stats, leading to no stats coming back for those resources (Issue #70)

4.1.2

  • Fixed bug where "selected position" was no longer working due to a change in the data format coming from Yahoo! (merge PR #69) (Thanks brisberg)

4.1.1

  • Small change to the way the resource and collection files are being imported as it was causing issues on some hosts...

4.1.0

  • Maybe would have made sense as a 5.0.0 as there may be breaking changes, but I haven't been able to find any yet...
  • the authCallback() function will now return an object with the user's access_token and refresh_token
  • the auth() function will accept a "state" string, allowing for state persistence through the authentication process
  • re-enabled the transactions.fetch() collection call
  • cleaned up the "wavier_days" and "stat_categories" objects on league resources
  • added deprecation warnings to the game.leagues and game.players functions as they're not very useful in that context

4.0.0

  • Added auth(), authCallback, setRefreshToken() functions to the library
  • Automatically handle refreshing of the token and call a user defined function when the token has expired
  • Added support for public queries
  • General cleanup

3.2.0

  • Added "players" subresource to "league" in order to obtain weekly / season stats for a player based on league settings
  • Fixed a bug where the starting status wasn't properly being returned due to a shift in how the data was being returned
  • Removed use of "request" library for size and performance reasons
  • General code optimizations and improvements

3.1.2

  • Updated outdated dependencies

3.1.1

  • Resolve error when no team logo is present (Issue #42)

3.1.0

  • Introduced promise based flow for all endpoints as an alternative to callbacks. Thanks Marois!

3.0.4

  • Fixed a bug in the players.league collection call where it was trying to use split on an array... (Issue #46).
  • Fixed similar bugs in other places...

3.0.3

  • Added the ability to specify a date or week when querying the team.stats resource.
  • Unit test fixes (Issue #42). Thanks Marios!
  • Updated "vulnerable" dependencies.

3.0.2

  • Fixed an issue with the user.game_leagues resource, where the data was not at all user friendly (renamed leagues to games at the top level of the return object)

3.0.1

  • Fixed some typos in some import statements which caused issues on some servers

3.0.0

  • Major refactor to use ES6?... 2015? ...2018? Whatever the hell they're calling it now...
  • Using ES Modules (mjs) files where possible
  • Removed transactions collections (they'll be back!)

2.0.4

  • Added a fix to give a cleaner value for the new "batting order" attribute in the player oject.

2.0.3

  • Fixed a bug where the league players collection was not properly parsing the ownership subresource

2.0.2

  • Fixed a bug where "mapTeamPoints" helper function was not defining "self". Thanks platky!

2.0.1

  • Removed the code that added a "reason" to errors coming from Yahoo! as it was breaking other errors. Retry notifications should now be handled within the application using the module.

2.0.0

  • Moved to Yahoo!'s OAuth2.0 authentication mechanism.

1.0.2

  • Fixed game resource roster postions callback bug.

1.0.1

  • Fixed a typo that was breaking team mapping.

1.0.0

  • Breaking changes
  • Fixed NFL scoreboard/matchups bug (Issue #19)
  • In fixing this bug I realized that my "team" set up was really only useful for MLB fantasy, so I rewrote team mapping to work better across all sports and give additional details that weren't previously reported. This will cause errors if you are using the team.manager attribute in your code.

0.5.3

  • Fixed a bug where leagueFetch was throwing an error, thanks danielspector!

0.5.2

  • Fixed a bug where player stats by week url was not being created properly, thanks withsmilo!

0.5.1

  • Fixed a bug where collections that contained subresources would return no data.

0.5.0

  • Added "Transactions" collection with functionality to add players, drop players, and add/drop players, thanks again githubsmilo!

0.4.4

  • Fixed a bug in player.draft_analysis, thanks githubsmilo!

0.4.3

  • Added weeks param for league.scoreboard
  • Added weeks param for team.matchups
  • Fixed a bug where individual players weren't mapping properly
  • Minor code cleanup

0.4.2

  • Added the ability to specify a date or week when querying the roster resource.
  • Cleaned up the player normalization model
  • Fixed a bug where the team.roster call was erroring

0.4.1

  • Fixes to how POST data is handled

0.4.0

  • Significantly restructured the code to have more consistency and set it up better for future plans, namely POST methods and proper unit testing
  • Removed the "refresh user token" and instead return the error to the user who can handle the refresh within their application.

0.3.1

  • Additional player attributes added, thanks ryus08!

0.3.0

  • Added a method to refresh the user's token if it has expired.

0.2.2

  • Hotfix to fix "Teams" collection - use error first convention

0.2.0

  • Made helper classes more consistent
  • Added collections for games, leagues, players, and teams
  • Moved to error first convention because JavaScript

0.1.2

  • Added 'Team Matchups' subresource
  • Added 'League Scoreboard' subresource
  • Minor code cleanup and improvements

0.1.1

  • Refactored module to fix a bug where user sessions were not necessarily unique because of require caching.

0.1

  • Initial release.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].