rasher / nflapi

MIT License
13 stars 6 forks source link

NFL API

The nflapi library provides an interface for the NFL.com api. It essentially acts like a browser, accessing the same functionality available through nfl.com.

Installing

The library has not yet been released on PyPI, since it's still in a pretty rough state. There's a distinct risk that this might not ever change. To install, you can use pip's ability to to install directly from a git repository::

pip install -e git+ssh://git@github.com:rasher/nflapi.git#egg=nflapi

Examples

Basic boilerplate to getting going::

from nflapi import NFL nfl = NFL(ua="nflapi example script")

That's it. You can now use the nfl object to query various objects off the NFL api. A couple of helpers are added to perform common queries and return the results as reasonable objects.

Getting the current season and week::

week = nfl.schedule.current_week() print(("{w.current_season[default]}" " {w.current_season_type[default]}" " {w.current_week[default]}").format(w=week)) 2018 PRE 2

Getting standings information::

records = nfl.standings.current() for team, record in records: ... print("{t.nick_name} {r.overall_pct:.3f}".format(t=team, r=record)) ... Cardinals 0.500

Have a look at nflcli.py for more examples.

You can also query the API directly if you're feeling adventurous.::

op = Operation(shield.Viewer) player = op.viewer.player(id='3213464f-4c05-8566-2020-85b506da0baa') player.person.display_name() nfl.query(player).viewer.player.person.display_name 'Nick Foles'

If you want to get even more wild, you can pass in a raw graphql query. In that case you'll have to deal with the raw JSON response::

query = """{ viewer{ league{ gamesByWeek(week_seasonValue: 2020, week_seasonType: REG, week_weekValue: 2) { id gameTime awayTeam{ abbreviation } homeTeam{ abbreviation } } } } }""" games = nfl.endpoint(query) games['data']['viewer']['league']['gamesByWeek'][0]['gameTime'] '2020-09-22T00:15:00.000Z'

TODOs