Conseguir resultados/estatísticas ao vivo da NFL para ler e manipular?

Preciso de algum tipo de base de dados ou de alimentação para aceder a pontuações ao vivo(e possivelmente estatísticas de jogadores) para a NFL. Eu quero ser capaz de exibir as pontuações no meu site para a minha liga pickem e mostrar aos usuários se sua escolha está ganhando ou não.

Não sei bem como fazer isto. Alguém me pode indicar a direcção certa?

Além disso, tem de ser livre.

Author: John Salvetti, 2013-09-08

5 answers

Disclaimer: sou o autor das ferramentas que estou prestes a promover. No último ano, escrevi algumas bibliotecas Python que farão o que quiser. O primeiro é nflgame , que reúne dados de jogos (incluindo jogo A Jogo) de NFL.com o GameCenter JSON feed. Isto inclui jogos ativos onde os dados são atualizados aproximadamente a cada 15 segundos. nflgame tem um wiki com algumas dicas sobre como começar. Libertei o nflgame no ano passado e usei-o durante todo o ano. na última temporada. Penso que é razoavelmente estável. Neste último verão, trabalhei no seu irmão mais maduro, nfldb. nfldb fornece acesso ao mesmo tipo de dados que nflgame faz, exceto que ele mantém tudo armazenado em um banco de dados relacional. nfldb também tem um wiki , embora ainda não esteja completamente completo.

Por exemplo, isto irá produzir todos os jogos actuais e as suas pontuações:

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)
Como não estão a ser jogados jogos, isso produz todos os jogos para o próximo. semana com resultados. Esta é a produção com week=1: (da época de 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)

Ambos são licenciados sob a WTFPL e são livres de usar para qualquer finalidade.

N. B. percebi que marcaste isto como PHP, mas talvez isto te aponte na direcção certa. Em particular, você pode usar nfldb para manter um banco de dados PostgreSQL e consultá-lo com o seu programa PHP.
 22
Author: BurntSushi5, 2013-09-12 06:04:58
Encontrei algo que me dá a maior parte do que procurava. Ele tem estatísticas de jogo ao vivo, mas não inclui o down atual, jardas para ir, e posição de campo.

Temporada Regular: http://www.nfl.com/liveupdate/scorestrip/ss.xml

Pós-Temporada: http://www.nfl.com/liveupdate/scorestrip/postseason/ss.xml

Eu ainda gostaria de encontrar um jogador ao vivo para usar para adicionar futebol de fantasia ao meu site, mas eu não acho que exista um livre.
 4
Author: John Salvetti, 2014-01-24 20:57:59
Eu sei que isto é antigo, mas isto é o que uso apenas para pontuações... talvez ajude alguém um dia. Nota: Existem alguns elementos que você não vai usar e são específicos para o meu site... mas seria um bom começo para alguém.
<?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)
 3
Author: Mark Jones, 2015-09-29 01:22:47
$XML = "http://www.nfl.com/liveupdate/scorestrip/ss.xml";
$lineXML = file_get_contents($XML);
$subject = $lineXML;
//match and capture week then print
$week='/w="([0-9])/';
preg_match_all($week, $subject, $week);
echo "week ".$week[1][0]."<br/>"; 
$week2=$week[1][0];
echo $week2; 

//capture team, scores in two dimensional array  
$pattern = '/hnn="(.+)"\shs="([0-9]+)"\sv="[A-Z]+"\svnn="(.+)"\svs="([0-9]+)/';
preg_match_all($pattern, $subject, $matches);

//enumerate length of array (number games played)
$count= count($matches[0]);

 //print array values
 for ($x = 0; $x < $count ; $x++) {
         echo"<br/>";
         //print home team
         echo $matches[1][$x],"   ",
         //print home score
         $matches[2][$x],"   ",
         //print visitor team
         $matches[3][$x],"   ",
         //print visitor score
         $matches[4][$x];
         echo "<br/>";

       }
 0
Author: Chris, 2018-09-19 01:48:21