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: 32.572 ]

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

Implementando um tradutor de línguas no seu web site

Gerando documento PDF em PHP

Boleto Bancário em PHP ou ASP

Simulando o SSH via WEB

Wordpress: Hospede blogs no seu Linux

  
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