Voila, je m'explique, je cherche a créé un script d'imdb, cad si je tape /check_imdb batman bigins, il me retournera un certain nombre d'information qu'il ecrira dans une base de données.
je precise tout d'abord que je debute completement dans le socket :p
tout d'abord je créé l'alias qui va lancer les différente fonction:
alias check_imdb {
unset %var_check_imdb | unset %var2_check_imdb
sockclose check_imdb
sockclose result_imdb
sockclose vote_imdb
set %search_check_imdb /find?s=all&q= $+ $1-
write -c IMDB\search
write -c IMDB\result
write -c IMDB\vote
sockopen check_imdb www.imdb.com 80
}
ensuite je fais donc une recherche afin de récuperer l'url correspondant au film recherché:
;################################################
;# RECHERCHE DE LA VALEUR CORRESPONDANT AU FILM #
;################################################
on *:sockopen:check_imdb:{
if ($sockerr) { echo -a IMDB Connexion impossible | return }
sockwrite -nt $sockname GET %search_check_imdb
unset %search_check_imdb
}
on *:sockread:check_imdb:{
sockread %var_check_imdb
write IMDB\search %var_check_imdb
unset %var_check_imdb
}
on *:sockclose:check_imdb:{
set %var2_check_imdb $Traite_check_imdb
if ( %var2_check_imdb != BAD_RESULT ) {
set %result_check_imdb %var2_check_imdb
;le sockopen ici sert a la deuxieme partie du script pour récuperer les information
sockopen result_imdb www.imdb.com 80
}
else {
unset %var2_check_imdb
}
}
donc maintenant je recupere la deuxieme partie de l'url qui va me rediriger directement vers la page du film, pour batman bigins, ce sera donc l'url : /title/tt0372784/ précédé de l'autre morceau de l'url : www.imdb.com, ce qui donne completement : www.imdb.com/title/tt0372784/
alias -l Traite_check_imdb {
if ( $read(IMDB\search,w, *Popular?Titles* ,1) != $null ) {
%TRAITEM = $read(IMDB\search,w, *Popular?Titles* ,1)
%TRAITEM = $gettok($gettok(%TRAITEM,2,$asc(")),1,$asc(?))
return %traitem
}
else { return BAD_RESULT }
}
Maintenant, via la cmd sockopen contenu dans le sockclose précédent, je lance ma seconde fonction qui permet de récupérer toute les information relative au film:
on *:sockopen:result_imdb:{
if ($sockerr) { echo -a Connexion impossible | return }
sockwrite -n $sockname GET %result_check_imdb
sockwrite -nt $sockname Accept-Language: en-us
sockwrite -nt $sockname User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
sockwrite -nt $sockname Referer: http://www.imdb.com/search
sockwrite -nt $sockname Server: www.imdb.com
sockwrite -nt $sockname Connection: keep-alive
sockwrite -t $sockname $str($crlf,2)
unset %result_check_imdb
}
on *:sockread:result_imdb:{
sockread %var_result_imdb
write IMDB\result %var_result_imdb
unset %var_result_imdb
}
on *:sockclose:result_imdb:{
return %info_MOVIE
}
alias -l Traite_result_imdb {
%title_year_imdb = $remove($read(IMDB\result,w, *<title>* ,1),<title>,</title>)
if ( %title_year_imdb != $null ) {
return %title_year_IMDB
}
else { return BAD_RESULT }
}
voila en gros, une bonne partie de mon script, maintenant, j'explique les différent probleme rencontrer:
- dans le chargement de ma page www.imdb.com/title/tt0372784/ je n'obtient pas les meme résultat que si je la charge directement dans firefox, je m'explique, la premiere difference est ceci:
valeur recupérée dans mon fichier result:
<a href="/rg/title-tease/rating-stars/title/tt0372784/ratings">
<img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/greystar.gif"
t="18" border="0" align="middle" alt="_"></a>
valeur que je voudrais recupérer dans mon fichier result:
<a href="/rg/title-tease/rating-stars/title/tt0372784/ratings">
<img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/goldstar.gif" width="20" height="18" border="0" align="middle" alt="*"><img src="http://i.imdb.com/greystar.gif" width="20" height="18" border="0" align="middle" alt="_"></a>
<b>8.3/10</b> (79,145 votes)
evidement, c'est la seule valeur que je n'arrive pas a récuperer, et pourtant la plus importante de toute, puisque c les vote concernant le film en question :p
ensuite mon second probleme:
j'essaye désesperement de mettre cette ligne:
sockwrite -n $sockname GET %result_check_imdb HTTP/1.1
en pensant kel pourrait regler le probleme, mais c peine perdu puisque dès que je la met, ca ne load plus du tout la page.
bon, je pense avoir dis a peu pret tout je doute que j'aie ete a 100% explicite dans mes probleme rencontré mais bon, on verra bien si quelqu'un me comprends :p
merci de votre aide ^^