SUGESTÃO: Lista Progresso

Partilhem sugestões, reportem bugs e listagem dos mods instalados no fórum

SUGESTÃO: Lista Progresso

Postby kynno » Tue Sep 29, 2009 11:30 am

Ora boas amigos,

O processo de actualização dos rankings de progresso é trabalhoso e demorado, por isso tivemos a ideia de criar um processo mais automático via Base de dados MySQL e PHP, no entanto não temos know how para o fazer nós.

O que se pede é que alguém da comunidade se voluntarie para, juntamente com a equipa do warcraftportugal criar a ferramenta que vá listar o progresso das guilds portuguesas.

-----------------------------------------------------------------------//--------------------------------------------------------
Passo a explicar a ideia mais em detalhe:

Os rankings são copiados do wowprogress.com, dai que a ideia seria fazer uma pesquisa no wowprogress e carregar na nossa BD a pontuação de cada guild (corria um processo diariamente às 5h00, e via opção no backoffice).

Essa pontuação seria dividida pelos mesmos critérios que no wowprogress, ou seja duas áreas distintas de separação: Tipo; e Tier.

De momento de tipos teriamos dois: Encontros, e Achievements. (no entanto poderiam vir a ser mais no futuro)
De Tier teriamos 3: Tier8, Tier9(10) e Tier9(25). (no entanto poderiam ser mais no futuro)

Cada guild teria como dados, o seu nome, o link do wowprogress para sacar a informação, link do site da guild, e um apontamento se seria 100% portuguesa ou não.


Backoffice:

Introdução e edição dos dados de cada guild: link do site, link do wowprogress, nome da guild, realm, tipo (100% pt ou não).
Criação de novos "Tipos".
Criação de novos "Tiers".
Possibilidade de checkar se a guild/tipos/tiers estão activos para serem listados ou não.
Escolher Tipo e Tier a ser listado por defeito no frontend.


Frontend:
Listagem das guilds por ordem de rank "nacional", apurado pela pontuação de todas as guilds.
Apresentar o ranking mundial, europeu e realm.
Possibilidade de mudar a listagem por tipo ou por tier. (à semelhança do wowprogress)
Nome da guild seria link para o site da guild.
Pontuação no realm seria link para a página da guild no wowprogress.


Parece-me que é tudo. Se alguém tiver sugestões a dar agradecemos.
Thundermood Joga grátis no browser.
Image
User avatar
kynno
WoWPT Team
 
Posts: 510
Joined: Mon Mar 30, 2009 1:31 pm
Location: Seixal
Raça: Human
Classe: Paladin
Spec: MS Retr / OS Prot
Facção: Alliance
Server: Burning Steppes
Guild: The Survivors

Re: SUGESTÃO: Lista Progresso

Postby kynno » Tue Oct 06, 2009 10:16 am

Parece que ninguém está interessado em ajudar a fazer isto :(
Thundermood Joga grátis no browser.
Image
User avatar
kynno
WoWPT Team
 
Posts: 510
Joined: Mon Mar 30, 2009 1:31 pm
Location: Seixal
Raça: Human
Classe: Paladin
Spec: MS Retr / OS Prot
Facção: Alliance
Server: Burning Steppes
Guild: The Survivors

Re: SUGESTÃO: Lista Progresso

Postby chaos » Tue Oct 13, 2009 8:45 pm

Boas,
antes de mais parabéns pela menção no site wow-europe :)

Em relação ao website, o valor que é apresentado é retirado do "Score"?

Vi que para ir buscar dados de uma determinada guild, coloca-se o endereço e adiciona-se "/json_rank" no fim, por exemplo:

http://www.wowprogress.com/guild/eu/bur ... /json_rank
retorna:
{"score":"6489","world_rank":"1060","area_rank":"544","realm_rank":"2"}

Seria este 6489 (que parece ter de se dividir por 100) o valor usado para ordenar o ranking?


Resumindo seria reunir estes dados para as guilds registadas e apresentar por ordem de score?

Encounter:
tier9(25) - http://www.wowprogress.com/guild/eu/bur ... /json_rank
tier9(10) - http://www.wowprogress.com/guild/eu/bur ... /json_rank
tier8(10) - http://www.wowprogress.com/guild/eu/bur ... /json_rank

Achivements:
tier9(25) - http://www.wowprogress.com/guild/eu/bur ... /json_rank
tier9(10) - http://www.wowprogress.com/guild/eu/bur ... /json_rank
tier8(10) - http://www.wowprogress.com/guild/eu/bur ... /json_rank

No entanto o wowprogress diz que quando se pretende informação de várias guilds, deve-se fazer o download do ficheiro deste sitio http://www.wowprogress.com/export/ranks e processar localmente (para diminuir o tráfego)


Para os interessados, o wowprogress tem uma secção que explica isto:
http://www.wowprogress.com/post/37_Data_Export


chaos
User avatar
chaos
 
Posts: 14
Joined: Sun Oct 11, 2009 11:10 am
Location: Portimão
Raça: Undead
Classe: Warlock
Spec: Destruction
Facção: Horde
Server: Thunderhorn
Guild: LeftHandPath

Re: SUGESTÃO: Lista Progresso

Postby Slyphoe » Wed Oct 14, 2009 12:14 pm

Obrigado pela informação!

Ontem fiz 2 ou 3 testes (nunca programei em php por isso vai levar mais um bocado) e para o que nós queremos essa info do wowprogress serve perfeitamente

Cumps
User avatar
Slyphoe
WoWPT Team
 
Posts: 267
Joined: Fri Mar 27, 2009 1:28 pm
Location: Caldas da Rainha
Raça: Human
Classe: Priest
Spec: Shadow
Facção: Alliance
Server: Burning Steppes
Guild: The Survivors

Re: SUGESTÃO: Lista Progresso

Postby kynno » Thu Oct 15, 2009 6:50 pm

Obrigado pela informação,
O que teremos é de criar uma BD e um processo que vá periodicamente "sacar" a pontuação das guilds portuguesas e depois listar numa página de php.
Thundermood Joga grátis no browser.
Image
User avatar
kynno
WoWPT Team
 
Posts: 510
Joined: Mon Mar 30, 2009 1:31 pm
Location: Seixal
Raça: Human
Classe: Paladin
Spec: MS Retr / OS Prot
Facção: Alliance
Server: Burning Steppes
Guild: The Survivors

Re: SUGESTÃO: Lista Progresso

Postby chaos » Thu Oct 15, 2009 8:40 pm

Boas,
a minha questão era mais para confirmarem se os dados a ir buscar e utilizar para criar a lista eram os que referi.

Slyphoe, se tiveres alguma duvida sobre php podes perguntar que tento ajudar.


chaos
User avatar
chaos
 
Posts: 14
Joined: Sun Oct 11, 2009 11:10 am
Location: Portimão
Raça: Undead
Classe: Warlock
Spec: Destruction
Facção: Horde
Server: Thunderhorn
Guild: LeftHandPath

Re: SUGESTÃO: Lista Progresso

Postby kynno » Thu Oct 15, 2009 10:03 pm

chaos wrote:Boas,
a minha questão era mais para confirmarem se os dados a ir buscar e utilizar para criar a lista eram os que referi.

Slyphoe, se tiveres alguma duvida sobre php podes perguntar que tento ajudar.


chaos


Desculpa, de facto não te respondi, ao que me parece será essa informação mesmo que precisamos.
Thundermood Joga grátis no browser.
Image
User avatar
kynno
WoWPT Team
 
Posts: 510
Joined: Mon Mar 30, 2009 1:31 pm
Location: Seixal
Raça: Human
Classe: Paladin
Spec: MS Retr / OS Prot
Facção: Alliance
Server: Burning Steppes
Guild: The Survivors

Re: SUGESTÃO: Lista Progresso

Postby Slyphoe » Fri Oct 16, 2009 7:48 am

chaos wrote:Boas,
a minha questão era mais para confirmarem se os dados a ir buscar e utilizar para criar a lista eram os que referi.

Slyphoe, se tiveres alguma duvida sobre php podes perguntar que tento ajudar.


chaos


Desculpa, não entendi... Sim a info é essa... eu programo em ASP e sempre achei que devia fazer qualquer coisa em php e acho que vai ser desta :p

A cena vai ser mais ou menos assim ranking/ mas ainda nao está a gravar na DB porque é preciso verificar a semana em questão e só escrever o scoring se a semana for mais recente, para nao estar a atulhar a DB de lixo...

Orbigado pela disponibilidade!
User avatar
Slyphoe
WoWPT Team
 
Posts: 267
Joined: Fri Mar 27, 2009 1:28 pm
Location: Caldas da Rainha
Raça: Human
Classe: Priest
Spec: Shadow
Facção: Alliance
Server: Burning Steppes
Guild: The Survivors

Re: SUGESTÃO: Lista Progresso

Postby chaos » Fri Oct 16, 2009 9:22 am

Poderá funcionar assim:

* Quando se acede à página com a lista, verifica a data da ultima actualização
* Se passou mais de X dias desde a ultima actualização:
--- Coloca uma marca na base de dados a indicar que está a actualizar (para evitar repetir este processo se outro utilizador entrar ao mesmo tempo)
--- Mostra informação ao utilizador a dizer "Em actualização..."
--- Vai buscar os novos valores
--- Muda a data da ultima actualização para a data actual
--- Remove a marca que indica que está em actualização

Desta forma o processo será automatizado, sendo o utilizador que acede em primeiro lugar a provocar a actualização.

Convém mostrar também na lista a data em que os dados foram actualizados.


A parte mais chata será mesmo fazer o "backoffice" :D


Cumprimentos,
chaos
User avatar
chaos
 
Posts: 14
Joined: Sun Oct 11, 2009 11:10 am
Location: Portimão
Raça: Undead
Classe: Warlock
Spec: Destruction
Facção: Horde
Server: Thunderhorn
Guild: LeftHandPath

Re: SUGESTÃO: Lista Progresso

Postby Slyphoe » Fri Oct 16, 2009 9:48 am

chaos wrote:Poderá funcionar assim:

* Quando se acede à página com a lista, verifica a data da ultima actualização
* Se passou mais de X dias desde a ultima actualização:
--- Coloca uma marca na base de dados a indicar que está a actualizar (para evitar repetir este processo se outro utilizador entrar ao mesmo tempo)
--- Mostra informação ao utilizador a dizer "Em actualização..."
--- Vai buscar os novos valores
--- Muda a data da ultima actualização para a data actual
--- Remove a marca que indica que está em actualização

Desta forma o processo será automatizado, sendo o utilizador que acede em primeiro lugar a provocar a actualização.

Convém mostrar também na lista a data em que os dados foram actualizados.


A parte mais chata será mesmo fazer o "backoffice" :D


Cumprimentos,
chaos


Boa ideia... para já está o update está a ser feito manualmente, mas vou desenvolver essa ideia. O update vai ser, para já, feito semanalmente como puderás reparar... acho que é suficiente...


Fica aqui o codigo que fiz para os updates... dá uma vista de olhos e vê se há alguma coisa que esteja menos bem...
A diferença entre encontros e achievements é apenas adicionar /rating.ach/ á morada. Estão em 2 ficheiros separados mas vou juntar tudo no mesmo... Entretanto ja começo a desenvolver o processo de update automático pelos visitantes...

Muito obrigado!

Code: Select all
<?php
$link = mysql_connect('localhost', '***', '***');
if (!$link) {
    die('Erro ao ligar á DB: ' . mysql_error());
}

mysql_select_db('***');

$result = mysql_query("SELECT * FROM r_guilds");
if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
echo "<table style='width:600px; font-family:Tahoma; font-size: 11px' border='1' cellpading='5'>";
   echo "<tr>";
      echo "<td colspan='6'>Actualização de Ranking por <b><i>Achievements</i></b></td>";
   echo "</tr>";
   echo "<tr>";
      echo "<td colspan='6'>&nbsp;</td>";
   echo "</tr>";
   echo "<tr>";
      echo "<td style='width:40%'><b>Guild</b></td>";
      echo "<td style='text-align:center'><b>Score Total</b></td>";
      echo "<td style='text-align:center'><b>Rank Mundial</b></td>";
      echo "<td style='text-align:center'><b>Rank Zona</b></td>";
      echo "<td style='text-align:center'><b>Rank Realm</b></td>";
      echo "<td style='text-align:center'><b>Semana</b></td>";
   echo "</tr>";
while($row = mysql_fetch_assoc($result))
{
   $id = $row['id'];
   $guild = $row['guild'];
   $guild = str_replace(" ", "+", $guild);
   $realm = $row['realm'];
   $realm = str_replace(" ", "-", $realm);
   $nweek = date('W');
   $zone = $row['zone'];

   $url = "http://www.wowprogress.com/guild/" . $zone . "/" . $realm . "/" . $guild . "/rating.ach/json_rank";
   $json = file_get_contents($url);
   $obj = json_decode($json);
   
   $gTotal = $obj->{'score'};
   $wRank = $obj->{'world_rank'};
   $eRank = $obj->{'area_rank'};
   $rRank = $obj->{'realm_rank'};
   
   $guildscore = mysql_query("SELECT WEEK(datascore) AS dsweek FROM r_ach WHERE idguild=".$id."");
   if (!$guildscore)
   {
      echo 'Erro ao executar consulta: ' . mysql_error();
      exit;
   }
   
   if($gTotal != "")
   {
      $gs = mysql_fetch_assoc($guildscore);
      $dsweek = $gs['dsweek'];
      
      if($nweek > $dsweek + 1)
      {
         echo "<tr>";
            echo "<td>" . $row['guild'] . " @ ". $row['realm'] . "</td>";
            echo "<td style='text-align:center'>" . $gTotal . "</td>";
            echo "<td style='text-align:center'>" . $wRank . "</td>";
            echo "<td style='text-align:center'>" . $eRank . "</td>";
            echo "<td style='text-align:center'>" . $rRank . "</td>";
            echo "<td style='text-align:center'>" . $nweek . " | " . $dsweek . "</td>";
         echo "</tr>";
      
      $strQuery = "INSERT INTO r_ach (idguild, score, wrank, erank, rrank) values " .
      @"(" . $id . ", " . $gTotal . ", " . $wRank . ", " . $eRank . ", " . $rRank . ")";
      mysql_query($strQuery) or die("Erro | " . $strQuery);
      }
      else
      {
         echo "<tr>";
            echo "<td style='color:red'><b>" . $row['guild'] . "<b> @ ". $row['realm'] . "</td>";
            echo "<td colspan='6' style='text-align:center; color:green'>..... Registo já actualizado na Base de Dados .....</td>";
         echo "</tr>";
      }
   }
   else
   {
      echo "<tr>";
         echo "<td style='color:red'><b>" . $row['guild'] . "<b> @ ". $row['realm'] . "</td>";
         echo "<td colspan='5' style='text-align:center; color:red'>..... sem registos .....</td>";
      echo "</tr>";
   }
}
mysql_close($link);
echo "</tr>";
echo "</table>";
echo "<p style='font-family:Tahoma; font-size: 11px'>Score por Encounter actualizado... <a href='index.php'>VOLTAR</a></p>";
?>
User avatar
Slyphoe
WoWPT Team
 
Posts: 267
Joined: Fri Mar 27, 2009 1:28 pm
Location: Caldas da Rainha
Raça: Human
Classe: Priest
Spec: Shadow
Facção: Alliance
Server: Burning Steppes
Guild: The Survivors

Next

Return to Sugestões / Bugs / Mods

Who is online

Users browsing this forum: No registered users and 1 guest


cron