web-dev-qa-db-ja.com

読み、操作するためのライブNFLスコア/統計を取得しますか?

NFLのライブスコア(および場合によってはプレーヤーの統計)にアクセスするには、何らかのデータベースまたはフィードが必要です。私のサイトで自分のピケムリーグのスコアを表示し、ピックが勝ったかどうかをユーザーに示すことができるようにしたいと考えています。

どうすればいいのかわかりません。誰かが私を正しい方向に向けることができますか?

また、無料である必要があります。

13
John Salvetti

免責事項:私はこれから宣伝するツールの作成者です。

過去1年間で、私はいくつかのPython必要な機能を実行するライブラリを作成しました。最初のライブラリは nflgame で、ゲームデータ(プレイバイを含む)を収集します-play)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プログラムでクエリすることができます。

23
BurntSushi5

これは古いことはわかっていますが、これはスコアのみに使用するものです...いつか誰かを助けるかもしれません。注:使用しない要素や、私のサイトに固有の要素がいくつかあります...しかし、これは誰かにとって非常に良いスタートです。

<?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
Mark Jones

だから私は私が探していたもののほとんどを私に与える何かを見つけました。ライブゲームの統計情報がありますが、現在のダウン、ヤード、フィールドポジションは含まれていません。

レギュラーシーズン: http://www.nfl.com/liveupdate/scorestrip/ss.xml

ポストシーズン: http://www.nfl.com/liveupdate/scorestrip/postseason/ss.xml

私のウェブサイトにFantasy Footballを追加するために使用するライブプレーヤーの統計フィードを見つけたいのですが、無料のフィードは存在しないと思います。

4
John Salvetti

私は昨年、シンプルなCLIツールの開発に費やして、独自のNFLデータベースを簡単に作成しました。現在、PostgreSqlとMongoをネイティブでサポートしています。拡張したい場合は、プログラムでエンジンと対話できます。

エンジンを使用して独自の異なるデータベース(MySqlなど)を作成したいですか(またはPostgres/Mongoを使用して、独自のスキーマを使用します)?インターフェースを実装するだけで、エンジンがあなたのために働きます。

データベースのセットアップやすべての最新の統計での更新を含むすべての実行は、1つのコマンドで実行できます。

ffdb setup

私はこの質問が古いことを知っていますが、これを行うための機能的で使いやすいツールが依然として必要であることも理解しています。これを作成した理由は、近いうちに自分のサッカーアプリを強化するためです。これが他の人の役に立つことを願っています。

また、質問がかなり古いため、現時点では多くの回答が機能していないか、維持されていない参照プロジェクトがあります。

プログラム、CLIコマンド、およびその他の情報をダウンロードする方法の詳細については、githubリポジトリページを確認してください。

FFDB Githubリポジトリ

1
Isaiah Lee
$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
Chris