Jump to content
SitoMan

[Resolvido] Usar API (exemplo dado, não funciona)

Recommended Posts

SitoMan

Viva pessoal,

Estou a precisar de captar alguma informação do IMDb, por isso tomei a liberdade por procurar APIs já desenvolvidas para me servir.

Encontrei este site: http://www.omdbapi.com/

Eles deixam um exemplo em Javascript, mas não me está a funcionar (fiz copy-paste do JS deles para o meu html):

<html>
<head>
</head>
<body>
<script type="text/javascript">

// IMDb ID to Search
var imdbId = "tt1285016";

// Send Request
var http = new ActiveXObject("Microsoft.XMLHTTP");
http.open("GET", "http://www.omdbapi.com/?i=" + imdbId, false);
http.send(null);

// Response to JSON
var omdbData = http.responseText;
var omdbJSON = eval("(" + omdbData + ")");

// Returns Movie Title
alert(omdbJSON.Title);

</script>
</body>
</html>

Eu sou leigo nisto, mas isto não devia de abrir uma pop-up com o suposto conteúdo?

Obrigado, e desculpem a massada.

Share this post


Link to post
Share on other sites
SitoMan

Olá,

Experimenta no Internet Explorer, deverá funcionar.

Se quiseres que funcione em vários browsers recomendo que uses jQuery.

Obrigado pela resposta, mas infelizmente também não funciona no IE.

Share this post


Link to post
Share on other sites
Rechousa

Aqui funcionou :)

Aqui vai uma versão com jQuery (funciona em IE, FF e Chrome):

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">

$( document ).ready(function() {
   $("#imdbGet").click(function() {
       getImdbInfo($("#imdbID").val());
       })
});

function getImdbInfo(imdbId) {
   var url = "http://www.omdbapi.com/?i=" + imdbId;
   $.ajax({
     url: url,
     cache: false,
     dataType: "jsonp",
     success: function(data) {
               console.log(data);
           var str = "";
           str += "<li>Id: " + data.imdbID + "</li>";
           str += "<li>Title: " + data.Title + "</li>";
           str += "<li>Year:" + data.Year + "</li>";
           str += "<li>Genre:" + data.Genre + "</li>";
           str += "<li>Rating:" + data.imdbRating + "</li>";

           str = "<ul>" + str + "</ul>";
           $("#info").html(str);
     },
     error: function (request, status, error) { alert(status + ", " + error); }
   });
}
</script>
<div>IMDB ID:
   <input id="imdbID" type="text" value="tt1285016" />
   <input id="imdbGet" type="button" value="Get IMDB Info" />
</div>
<div>
       <input type="button" value="The Hobbit" onclick="getImdbInfo('tt0903624');" />
       <input type="button" value="Drive" onclick="getImdbInfo('tt0780504');" />
       <input type="button" value="50/50" onclick="getImdbInfo('tt1306980');" />
</div>    
<div id="info"></div>
</body>
</html>


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
SitoMan

Funciona muito bem, obrigado.

Posso saber onde foste buscar o código?

Um abraço, obrigado uma vez mais!

Share this post


Link to post
Share on other sites
SitoMan

Eish, obrigado pelo trabalho!

Não entendi uma coisa: Como sabes que devias usar data.imdbID, data.Title, data.Year, etc?

EDIT:

Title, Director, Writer, Actors, Plot, Poster, Runtime, Rating, Votes, Genre, Released, Year, Rated, ID (IMDb ID), Cast, Crew, Critics, Trivia, Quotes

Deve ter sido mesmo aqui. Obrigado uma vez mais. Agora vou tentar adaptar à minha página em php.

Abraço, mais uma vez obrigado.

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
SitoMan

Agora o problema vai ser adaptar isto para sem ser com a função de click.

Share this post


Link to post
Share on other sites
Rechousa

Eish, obrigado pelo trabalho!

De nada, é para isso que estamos aqui. Construí um exemplo, agora tens de o adaptar à tua realidade.

Não entendi uma coisa: Como sabes que devias usar data.imdbID, data.Title, data.Year, etc?

Sabia, porque utilizei o console.log(data) que é o retorno do jSON. Fica aqui informação sobre o console.log, poderá ser-te útil.

Agora vou tentar adaptar à minha página em php.

Boa sorte!

Agora o problema vai ser adaptar isto para sem ser com a função de click.

O que é que tem? Qual é o problema? Queres que os dados apareçam automaticamente quando carregas a página (por exemplo)?

É fácil, é assim que se faz: Em vez de teres:

$( document ).ready(function() {
   $("#imdbGet").click(function() {
       getImdbInfo($("#imdbID").val());
       })
});

Podes ter algo do género (imaginando que tens uma varável em php com o nome $id_filme e o valor "tt0780504"):

$( document ).ready(function() {
   getImdbInfo("<?php echo($id_filme); ?>");
});

Abraços


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
SitoMan

Obrigado Rechousa, ajudou imenso.

Nunca tinha visto Javascript à frente, mas parece-me muito interessante. Penso que a partir daqui consigo adaptar à minha realidade.

Não teria sido possível sem a tua ajuda. Obrigado!

EDIT: Feito. Com a tua ajuda foi realmente fácil adaptar. Vou colocar a tag [Resolvido] no tópico. Abraço.

EDIT2: Já vi que já está.

Edited by SitoMan

Share this post


Link to post
Share on other sites
gajodoporto

Olá

Adicionei isto para me mostrar a imagem da capa do filme:

str += "<li>Poster:" + data.Poster + "</li>";

Mas o que me aparece é isto:

Poster:http://ia.media-imdb.com/images/M/MV5BMTM2ODk0NDAwMF5BMl5BanBnXkFtZTcwNTM1MDc2Mw@@._V1_SX300.jpg

o que tenho de alterar para me mostrar a imagem?

Share this post


Link to post
Share on other sites
Rechousa

Olá @gajodoporto,

Desculpa só agora vi a tua mensagem.

Adicionei isto para me mostrar a imagem da capa do filme:

str += "<li>Poster:" + data.Poster + "</li>";

Mas o que me aparece é isto:

Poster:http://ia.media-imdb.com/images/M/MV5BMTM2ODk0NDAwMF5BMl5BanBnXkFtZTcwNTM1MDc2Mw@@._V1_SX300.jpg

o que tenho de alterar para me mostrar a imagem?

Tens de renderizar uma imagem, assim:

str += "<li>Poster: <img src='" + data.Poster + "' /></li>";

Espero ter ajudado,

Edited by Rechousa

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. 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.