Skip to content

Instantly share code, notes, and snippets.

@gustavosf
Created August 10, 2011 02:32
Show Gist options
  • Save gustavosf/1135953 to your computer and use it in GitHub Desktop.
Save gustavosf/1135953 to your computer and use it in GitHub Desktop.
Gerador de estatísticas básicas do brasileirão
#!/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