Получите статистику/статистику по НФЛ, чтобы читать и манипулировать?

Мне нужна какая-то база данных или фид для доступа к живым счетам (и, возможно, статистике игроков) для НФЛ. Я хочу, чтобы иметь возможность отображать оценки на моем сайте для моей лиги пикме и показывать пользователям, если их выбор выигрывает или нет.

Я не уверен, как это сделать. Может ли кто-нибудь указать мне в правильном направлении?

Кроме того, он должен быть бесплатным.

Ответ 1

Отказ от ответственности: я являюсь автором инструментов, которые я собираюсь продвигать.

За последний год я написал пару библиотек Python, которые будут делать то, что вы хотите. Первый - nflgame, который собирает игровые данные (включая пошаговые) из NFL.com GameCenter JSON. Сюда входят активные игры, где данные обновляются примерно каждые 15 секунд. nflgame имеет wiki с некоторыми советами по началу работы.

Я выпустил nflgame в прошлом году и использовал его в течение прошлого сезона. Я думаю, что он достаточно стабилен.

В течение этого лета я работал над своим более зрелым братом, nfldb. nfldb обеспечивает доступ к тому же типу данных nflgame, за исключением того, что он хранит все, что хранится в реляционной базе данных. nfldb также имеет wiki, хотя он еще не полностью завершен.

Например, это выведет все текущие игры и их оценки:

import nfldb

db = nfldb.connect()

phase, year, week = nfldb.current(db)
q = nfldb.Query(db).game(season_year=year, season_type=phase, week=week)
for g in q.as_games():
    print '%s (%d) at %s (%d)' % (g.home_team, g.home_score,
                                  g.away_team, g.away_score)

Так как никакие игры не воспроизводятся, это выводит все игры на следующей неделе с оценками 0. Это результат с week=1: (сезона 2013 года)

CLE (10) at MIA (23)
DET (34) at MIN (24)
NYJ (18) at TB (17)
BUF (21) at NE (23)
SD (28) at HOU (31)
STL (27) at ARI (24)
SF (34) at GB (28)
DAL (36) at NYG (31)
WAS (27) at PHI (33)
DEN (49) at BAL (27)
CHI (24) at CIN (21)
IND (21) at OAK (17)
JAC (2) at KC (28)
PIT (9) at TEN (16)
NO (23) at ATL (17)
CAR (7) at SEA (12)

Оба лицензируются в соответствии с WTFPL и могут использоваться для любых целей.

N.B. Я понял, что вы отметили это как PHP, но, возможно, это укажет вам в правильном направлении. В частности, вы можете использовать nfldb для поддержки базы данных PostgreSQL и запросить ее с помощью вашей программы PHP.

Ответ 2

Итак, я нашел кое-что, что дает мне БОЛЬШЕ того, что я искал. Он имеет статистику игры в реальном времени, но не включает текущие вниз, ярлыки и позицию поля.

Регулярный сезон: http://www.nfl.com/liveupdate/scorestrip/ss.xml

После сезона: http://www.nfl.com/liveupdate/scorestrip/postseason/ss.xml

Мне все равно хотелось бы найти фишку для игроков в реальном времени, чтобы добавить Fantasy Football на мой сайт, но я не думаю, что существует бесплатная.

Ответ 3

Я знаю, что это старо, но это то, что я использую только для оценки... возможно, это когда-нибудь поможет кому-то. Примечание. Есть некоторые элементы, которые вы не будете использовать и не являются конкретными для моего сайта... но это было бы очень хорошим началом для кого-то.

<?php
require('includes/application_top.php');
$week = (int)$_GET['week'];

//load source code, depending on the current week, of the website into a variable as a string
$url = "http://www.nfl.com/liveupdate/scorestrip/ss.xml"; //LIVE GAMES

if ($xmlData = file_get_contents($url)) {
$xml = simplexml_load_string($xmlData);
$json = json_encode($xml);
$games = json_decode($json, true);
}

$teamCodes = array(
'JAC' => 'JAX',
);

//build scores array, to group teams and scores together in games
$scores = array();
foreach ($games['gms']['g'] as $gameArray) {
$game = $gameArray['@attributes'];

//ONLY PULL SCORES FROM COMPLETED GAMES - F=FINAL, FO=FINAL OVERTIME
if ($game['q'] == 'F' || $game['q'] == 'FO') {
    $overtime = (($game['q'] == 'FO') ? 1 : 0);
    $away_team = $game['v'];
    $home_team = $game['h'];
    foreach ($teamCodes as $espnCode => $nflpCode) {
        if ($away_team == $espnCode) $away_team = $nflpCode;
        if ($home_team == $espnCode) $home_team = $nflpCode;
    }
    $away_score = (int)$game['vs'];
    $home_score = (int)$game['hs'];

    $winner = ($away_score > $home_score) ? $away_team : $home_team;
    $gameID = getGameIDByTeamID($week, $home_team);
    if (is_numeric(strip_tags($home_score)) && is_numeric(strip_tags($away_score))) {
            $scores[] = array(
                'gameID' => $gameID,
                'awayteam' => $away_team,
                'visitorScore' => $away_score,
                'hometeam' => $home_team,
                'homeScore' => $home_score,
                'overtime' => $overtime,
                'winner' => $winner
            );
    }
  }
}

//see how the scores array looks
//echo '<pre>' . print_r($scores, true) . '</pre>';
echo json_encode($scores);

//game results and winning teams can now be accessed from the scores array
//e.g. $scores[0]['awayteam'] contains the name of the away team (['awayteam'] part) from the first game on the page ([0] part)

Ответ 4

Я рекомендую зарегистрироваться на http://developer.espn.com и получить доступ к их JSON API. Мне потребовалось всего 5 минут, и у них есть документация, чтобы сделать практически любой вызов, который вам нужен.