PHP-GD retorna status do MSN Messenger , Skype e GTalk

Este artigo mostra como desenvolver um script para exibir o status do Messenger, do Skype ou GTalk de modo personalizado, sem precisar copiar e colar os códigos (e as figuras toscas) exibidas por estes serviços e comunicação. Ao final haverão sugestões de uso e de melhorias nas funcionalidades.

[ Hits: 30.891 ]

Por: Guilherme em 23/09/2009


PHP script - Skype status



<?php
/* Este script PHP exibe o status do Skype: On-line ou Off-line

Nota: A variável ambiente allow_url_fopen do PHP deve estar no modo ativado "ON" para que permita o download da figura PNG
*/

/* ***** Passo 1 - Download da figura PNG de status do Skype *****
adaptado de www.php.net/fopen
*/

// Coloque na variável $file_source a URL correspondente ao seu login:

$file_source = "http://mystatus.skype.com/balloon/guiguigoiano";

// Coloque na variável $file_target o caminho absoluto do arquivo PNG que é criado pelo serviço de comunicação, no caso o Skype:
$file_target = "/tmp/skype_status.png";
$rh = fopen($file_source, 'rb');
$wh = fopen($file_target, 'wb');
        if ($rh===false || $wh===false) {
//echo "error reading or opening file";
           //return true;
        }
        while (!feof($rh)) {
            if (fwrite($wh, fread($rh, 1024)) === FALSE) {
                   //echo 'Download error: Cannot write to file ('.$file_target.')';
                   //return true;
               }
        }
        fclose($rh);
        fclose($wh);
        // No error
        //return false;
   //echo "imagem salva e tudo ok!";


/* ***** Passo 2 - A biblioteca GD lê o pixel e retorna a cor *****
No nosso caso, o pixel selecionado é o x=55 e y=15, que dá uma cor verde para On-line e cor cinza para offline.
adaptado de www.php.net/imagecolorat
*/

$im = @imagecreatefrompng ($file_target); /* Attempt to open */
    if (!$im) { /* See if it failed */
        echo "erro no na captura da imagem";
    }
$rgb = imagecolorat($im, 55, 15);
if ($rgb == 59) {
   echo "Usuário Skype On-line";
   // Método retorna TRUE
   } else {
   echo "Usuário Skype Off-line";
   // Método retorna False
   }

/*
Pronto, agora o script PHP retorna se você está online ou offline automaticamente. Assim você pode escrever ou não no site o seu status.
Sugestão 1: Para sites com muitos acessos, utilize um "cache" de modo que a consulta ao servidor do Skype só ocorra a cada 30 segundos após a criação do arquivo temporário.
Sugestão 2: Faça deste código um método de um objeto PHP.
Sugestão 3: Se o admin do seu serviço de hospedagem não deixar o Apache escrever na pasta /tmp do servidor, então crie uma pasta na sua conta de hospedagem com permissão de escrita.
*/

?>

Página anterior     Próxima página

Páginas do artigo
   1. Por quê e como funciona?
   2. PHP script - MSN Messenger Live status
   3. PHP script - Skype status
   4. PHP script - GTalk status
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

O que é o e107

Ambiente LAMP no Debian

Instalando o phpBB num servidor Web

Simulando o SSH via WEB

Lighttpd + SQLite + PHP

  
Comentários
[1] Comentário enviado por marciolara em 23/03/2011 - 09:56h

Tenho um site e gostaria de inserir os códigos HTML do msn, skype e o talk. O sistema do site é Joomla , e o suporte não está conseguindo. Tem alguma coisa a ver com o sistema Joomla? Uso em meu blog e funciona normalmente. Obrigado.
Márcio O. Lara
Águas Vermelhas-MG

[2] Comentário enviado por douglasjam em 15/02/2012 - 09:11h

Quem quiser um script mais simplificado, segue abaixo:

<?php
if (imagecolorat(imagecreatefromgif("http://messenger.services.live.com/users/<SUA ID>@apps.messenger.live.com/presenceimage?mkt=pt-BR"), 5, 10) == 45)
echo 'Online';
else
echo 'Offline';
?>

[3] Comentário enviado por diegokorvo em 17/10/2012 - 15:16h

corrigi um problema que estava tendo com muitos clientes utilizando este código e fazendo uma pequena modificação.
O status do Msn poderia ficar ausente, ou ocupado também. Então mudei a configuração para a cor de um pixel da imagem Offline

<?
$idMsn = <IDdoMSN>;
if (imagecolorat(@imagecreatefromgif ("http://messenger.services.live.com/users/".$idMsn."@apps.messenger.live.com/presenceimage?mkt=pt-br"), 5, 2) != 46) {
echo "Online";
}
else
{
echo "Offline";
}
?>

[4] Comentário enviado por guiguix em 17/10/2012 - 16:14h

Obrigado douglasjam e diegokorvo, vocês melhoraram o script. Lembro aos visitantes e amantes do PHP que:

1) O GTALK desativou este serviço. Por isso, se você deseja um help desk simplificado, utilize o phpFreeChat (http://www.phpfreechat.net), um projeto gratuito e muito fácil de integrar;

2) Em PHPCLASSES (http://www.phpclasses.org) tem classes prontinhas para visualizar o status do Skype e MSN.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts