Télésite Twitter sur TV et Freebox

Si vous êtes chez Free et que vous voulez, comme moi, pouvoir voir les derniers tweets de vos amis sur votre télé sans avoir à allumer votre ordinateur, voilà comment je me suis débrouillé pour coder un télésite en HTML Freebox (en attendant les premières Connected TV qui disposeront d’un widget Twitter en natif, notamment via Yahoo Connected TV, et qui devraient arriver sous peu).

twitter_sur_tv_freebox_telesite

Adaptez le script PHP ci-dessous avec vos identifiants Twitter. Vous pouvez bien sûr ajouter un peu de HTML, mais n’oubliez pas que l’HTML compris par la Freebox est assez rudimentaire (basé sur 3.2, référence ici).

<!DOCTYPE HTML PUBLIC "-//Freebox//DTD HTML 3.2//EN">
<html>
<head>
<meta name="refresh" content="60;url=">
<meta name="panel_display" content="twitter">
</head>
<body>

<img src="twitter.png"/>
<?php echo date("D M j G:i"); ?>
&amp;nbsp;<br />

<?php
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/friends_timeline.xml?count=8");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//authentification Twitter
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "identifiant:mot_de_passe");
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);

echo "<table>";

$xml = @simplexml_load_string($output);
foreach ($xml->status as $status) {
echo '<tr><td width="50" height="82">';
echo '<img src="'.$status->user->profile_image_url.'"/>';

echo "</td><td>";
echo $status->user->name;
echo "&amp;nbsp;&amp;nbsp;";
echo date("G:i", strtotime($status->created_at));
echo "&amp;nbsp;<br />&amp;nbsp;<br />";
echo '<font size="1">';
echo utf8_decode($status->text);
echo '</font>';
echo "</td></tr>";
}

echo "</table>";

?>
</body>
</html>

Il faut ensuite héberger ce script. Le catch ici est que Free demande un serveur IPv6 pour les télésites (cf. le document de référence). Donc soit vous disposez d’un hébergement mutualisé IPv6 (hautement improbable en 2009…), soit vous hébergez le script sur votre machine perso en IPv6 (mais alors tout cela n’a plus trop d’intérêt, car votre PC est allumé..), soit enfin, comme moi, vous profitez d’une offre gratuite spécifique d’hébergement Télésite comme celle proposée par au12.info. Vous pouvez alors récupérer sur ce serveur IPv6 le contenu produit par le premier script sur le serveur “non-IPv6” (NB: rien ne vous empêche de fusionner les deux scripts sur le serveur IPv6 si vous le souhaitez…) à l’aide d’un script de ce type :

<?php
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, "http://mon-site.fr/telesite.php");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);

echo $output;

Il ne vous reste alors qu’à activer ce télésite sur votre panneau de configuration Free. Si tout se passe bien, vous pouvez alors accéder, via le menu Télésites de votre Freebox HD, à un widget Twitter sur votre télé 😉