Created
August 10, 2011 02:32
-
-
Save gustavosf/1135953 to your computer and use it in GitHub Desktop.
Gerador de estatísticas básicas do brasileirão
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/php | |
<?php | |
/** Gerador de estatísticas básicas do brasileirão | |
* | |
* Os dados são extraídos diretamente do site da CBF, através do webservice | |
* em http://www.cbf.com.br/ServiceJogosDaRodadaCampeonatoBrasileiro | |
* | |
* Primeira execução do código os dados são buscados diretamente no servidor, | |
* o que deve resultar em demora para o resultado. | |
* | |
* A partir do segundo uso, com o uso dos arquivos temporários o resultado sai | |
* instantaneamente :) | |
* | |
* ----------------------------------------------------------------------------- | |
* Uso: php __ARQUIVO__ <rodada> [ordenamento] | |
* ----------------------------------------------------------------------------- | |
* | |
* <rodada> é obrigatório, e representa a rodada até a qual deve-se calcular | |
* a estatística | |
* | |
* [ordenamento] pode ser uma das quatro opções abaixo: | |
* - publico | |
* - renda | |
* - media_publico | |
* - media_renda | |
* | |
*/ | |
if (!isset($argv[1])) die("Uso: php ".__FILE__." <rodada> [ordenamento]\n\n"); | |
if ($argv[1] < '0' || $argv[1] > '36') die("Erro. Rodada inválida\n\n"); | |
if (!isset($argv[2])) $argv[2] = 'publico'; | |
if (!in_array($argv[2], array('publico', 'renda', 'media_publico', 'media_renda'))) | |
die ("Erro. Os seguintes ordenamentos são aceitos:\npublico, renda, media_publico ou media_renda\n\n"); | |
for ($rodada = 1; $rodada <= $argv[1]; $rodada++) { | |
if (is_file($rodada.'.tmp')) $result = file_get_contents($rodada.'.tmp'); | |
else { | |
$context = stream_context_create(array('http'=>array( | |
'method' => 'POST', | |
'header' => 'Content-type: application/x-www-form-urlencoded', | |
'content' => 'serie=S%C3%A9rie+A&ano=2011&rodada='.$rodada, | |
))); | |
$result = file_get_contents( | |
'http://www.cbf.com.br/ServiceJogosDaRodadaCampeonatoBrasileiro', | |
false, | |
$context | |
); | |
file_put_contents($rodada.'.tmp', $result); | |
} | |
preg_match_all('/img alt="(.*)".*Público: <\/strong>(.*)<.*R\$ (.*)</msU', $result, $match); | |
foreach ($match[1] as $k => $time) { | |
@$times[$time]['publico'] += str_replace(array(',', '.'), '', $match[2][$k]); | |
@$times[$time]['renda'] += str_replace(array(',', '.'), '', $match[3][$k]); | |
@$times[$time]['jogos']++; | |
@$times[$time]['media_publico'] = $times[$time]['publico'] / $times[$time]['jogos']; | |
@$times[$time]['media_renda'] = $times[$time]['renda'] / $times[$time]['jogos']; | |
} | |
} | |
uasort($times, function($a, $b){ | |
global $argv; | |
return $a[$argv[2]] < $b[$argv[2]]; | |
}); | |
printf("%-4s%-15s%s\n%'-35s\n", 'pos', $argv[2], 'time', ''); | |
$d = substr($argv[2],-1) == 'a' ? 2 : 0; | |
foreach ($times as $time => $dados) { | |
$v = $dados[$argv[2]] / ($d ? 100 : 1); | |
printf("%-4d%-15s%s\n", @++$i,number_format($v, $d, ',', '.'), $time); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment