Jump to content

Script Imdb


Skywriter
 Share

Recommended Posts

Tive a tirar as formatações e alterar mais algumas, poucas, coisas e o código final é este:

<?php
   /*-------------------------------------------------------------------------*/
   // regex_parse_imdb: cria a caixinha do imdb
//
// function coded by jamesp0tter
   /*-------------------------------------------------------------------------*/

   $imdb_count = 0;	
   function regex_parse_imdb($attr, $content="")
   {

	   global $imdb_count;
	  
	   // supostamente nao deve acontecer, maaaaas...
	   if ($content == "") return;

	   //numero de tags [imdb] processadas para este post
	   $imdb_count++;
	  
	   //se superior ao nº permitido, terminar
	   if ($imdb_count > 1) return;

	   /* eleminar tudo o qe nao seja numeros do argumento (http://www.imdb.com/title/tt0326905/, mdb.com/title/tt0326905/, http://www.imdb.com/title/tt0326905/www.imdb.com/, etc --> 0326905)   */  
	   $idfilme = preg_replace('/[^0-9]/i',"\\1",$content);
	  
	   if (strlen($idfilme) != 7) { $this->error = 'imdb_nao7'; return; }

	   // get css styles
	   //$imdb_style = $this->wrap_style('imdb');
	
	   // url imdb
	   $imdb_url = "http://imdb.com/title/tt".$idfilme."/";
	
	   // grab html
	   $imdb = @fopen($imdb_url, "r");
	   if ($imdb == FALSE) { $this->error = 'imdb_invalido'; return; }
	   while (!feof($imdb))
		   $imdb_raw .= fgets($imdb, 4096);
	   fclose($imdb);
		  
	   // e agora separar a informaçao
		  
	   // capa
		   //  preg_match ( "'<img border=\"0\" alt=\"cover\" src=\"(.*?)\"'" , $imdb_raw , $capa );				
		   //$capa = $capa[1];
	   // titulo do filme
			 preg_match ( "'>IMDb message board for (.*?)</a>'" , $imdb_raw , $titulo );			
		   $titulo = strip_tags($titulo[1]);
	   // genero
			 preg_match ( "'<h5>Genre:</h5>\\n(.*?)(>more</a>)'" , $imdb_raw , $genero );			
		   $genero = @strip_tags($genero[1]);

	   // resumo
			 preg_match ( "'<h5>Plot:</h5>\\n(.*?)( <a class)'" , $imdb_raw , $resumo );		
		   $resumo = rtrim($resumo[1],'|');
	   // duraçao
			 preg_match ( "'<h5>Runtime:</h5>\\n(.*?)\\n</div>'" , $imdb_raw , $duracao );		
		   $duracao = @$duracao[1];
	   // votaçao, nº d votos, e estrelas
			 preg_match ( "'>(.*?) votes</a>'" , $imdb_raw , $votacao );					
		   $votos = @$votacao[1];
			 preg_match ( "'</div>\\n<div class=(.*?)>\\n<b>(.*?)/10</b>'" , $imdb_raw , $votacao );					
		   $votacao = @$votacao[2];
		   $estrelas = 4 + $votacao * 9 + log10($votacao);
		   $estrelas = '<span style="font-size: 16px; background: url(\'http://www.fastnewsforum.org/style_images/1/imdb_rate_full.gif\')"><img src="http://upload.wikimedia.org/wikipedia/commons/3/33/Yellow_Square.png" width="'.($estrelas - 1).'" height="16"></span><span style="font-size: 16px; background: url(\'http://www.fastnewsforum.org/style_images/1/imdb_rate_none.gif\') right"><img src="http://www.bedbathandbeyond.com/assets/product_images/40/white.jpg" width="'.(101 - $estrelas).'" height="16"></span>';
	   // top250
			 preg_match ( "'Top 250: (.*?)</a>'" , $imdb_raw , $top );		
		   $top = @strip_tags($top[0]);
	   // slogan
			if ($top <> "") preg_match ( "'<h5>Tagline:</h5>\\n(.*?)\\n'" , $imdb_raw , $slogan );
			else preg_match ( "'<h5>Tagline:</h5>\\n(.*?)<(.*?)\\n'" , $imdb_raw , $slogan );
		   $slogan = @$slogan[1];
	   // premios
			 preg_match ( "'<h5>Awards:</h5> \\n(.*?)(\\n<a)'" , $imdb_raw , $premios );		
		   $premios = @$premios[1];
			  
	   // cast
			 preg_match ( "'link=/name(.*?)/name/(.*?)>(.*?)</a></td>(.*?)link=/name(.*?)/name/(.*?)>(.*?)</a></td>(.*?)link=/name(.*?)/name/(.*?)>(.*?)</a></td>(.*?)link=/name(.*?)/name/(.*?)>(.*?)</a></td>(.*?)link=/name(.*?)/name/(.*?)>(.*?)</a></td>'" , $imdb_raw , $cast );		
	   $cast[2] = rtrim($cast[2], '"');
	   $cast[6] = rtrim($cast[6], '"');
	   $cast[10] = rtrim($cast[10], '"');
	   $cast[14] = rtrim($cast[14], '"');
	   $cast[18] = rtrim($cast[18], '"');
	   $imdb_name = "http://imdb.com/name/";
	   
	   
	   // $imdb_final vai ser o codigo html final da caixa IMDB
	   $imdb_final = "<blockquote>\n";
	   $imdb_final .= "<b><a href='".$imdb_url."'target = '_blank' >".$titulo."</a></b><br>";	  
	   if ($genero <> "") $imdb_final .= "<b>Género</b>: $genero<br>\n";
	   if ($slogan <> "") $imdb_final .= "<b>Slogan</b>: $slogan<br>\n";
	   if ($resumo <> "") $imdb_final .= "<b>Resumo</b>: $resumo<br>\n";
	   if ($cast <> "") $imdb_final .= "<b>Elenco</b>: <a href=".$imdb_name."$cast[2]> $cast[3]</a> <a href=".$imdb_name."$cast[6]> $cast[7]</a> <a href=".$imdb_name."$cast[10]> $cast[11]</a> <a href=".$imdb_name."$cast[14]> $cast[15]</a> <a href=".$imdb_name."$cast[18]> $cast[19]</a><br>\n";
	   if ($votos <> "") $imdb_final .= "<b>Pontuação</b>: $votacao/10 ($votos votos)<br>\n";
//	   if ($votos <> "") $imdb_final .= "<b>Pontuação</b>: $votacao/10 $estrelas ($votos votos) <b>$top</b><br>\n";
	   if ($duracao <> "") $imdb_final .= "<b>Duração</b>: $duracao<br>\n";
	   if ($premios <> "") $imdb_final .= "<b>Prémios</b>: $premios<br>\n";
	   $imdb_final .= "</blockquote>\n";
	 
	   //e finalmente mandar todo o html processado para o post
	   return "<!--ImdbBegin".$idfilme."-->\n".$imdb_style['START'].$imdb_final.$imdb_style['END']."\n<!--ImdbEnd".$idfilme."-->\n";
	
   }

add_shortcode('imdb', 'regex_parse_imdb');
?>
quem quiser usar no Wordpress, basta inserir este código na página single.php do template, e quando quiserem chamar a função a partir de um post basta escreverem:

[imdb]id do filme[/imdb]
Exemplo:
[imdb]1013752[/imdb]

Depois podem personalizar à vossa maneira. No meu caso, ficou assim (por enquanto):

Posted Image

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.