jueves, 25 de marzo de 2010

PHP, Curl, Tuenti, Login, Parser - Notificador de tuenti.



Bueno seguimos trabajando un poco en el proyecto y vamos sacando cosillas y corrigiendo fallos. Aquí os traigo la otra versión del tuenti.php.
El archivo clase_tuenti.php no será necesario para esta implementación.

Ya no será necesario la librería zenity ya que usaremos la notificación de señales de Ubuntu y GNOME, conocida como libnotify.
Para instalarla:
  • sudo apt-get install libnotify-bin
Repasamos pues todas las dependencias:
  • sudo apt-get install php5-cli
  • sudo apt-get install php5-curl
  • sudo apt-get install gnome-scheduler
  • sudo apt-get install libnotify-bin
Archivos necesarios:
Dentro de la carpeta que quieras # Recomendadio /home/usuario/Tuenti
ico.png # Icono con imagen del tuenti o lo que quieras.
tuenti.php
Como instalarlo:
Una vez tengas los 2 archivos, (recuerda modificar los capos en rojo en tuenti.php por tus datos del tuenti y la carpeta donde lo ejecutes), creamos una tarea programada que se ejecute cada minuto en Aplicaciones > Herramientas del sistema > Tareas programadas
El comando a ejecutar es php /home/tuusuario/Tuenti/tuenti.php
Si todo ha salido bien, cada vez que recibas una visita o tengas algún mensaje nuevo, te aparecerá un mensaje por pantalla informándote de todo.
<?php
/*
*      tuenti.php
*    
*      Copyright 2010 Eduardo Ramirez Martinez-Esparza <zeyt@ZeYt>
*    
*      This program is free software; you can redistribute it and/or modify
*      it under the terms of the GNU General Public License as published by
*      the Free Software Foundation; either version 2 of the License, or
*      (at your option) any later version.
*    
*      This program is distributed in the hope that it will be useful,
*      but WITHOUT ANY WARRANTY; without even the implied warranty of
*      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*      GNU General Public License for more details.
*    
*      You should have received a copy of the GNU General Public License
*      along with this program; if not, write to the Free Software
*      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
*      MA 02110-1301, USA.
*/

//CONFIG
    $usermail = "example@example.com";
    $password = "example";
    $ruta = "/home/tuusuario/Tuenti/";
    $archivo_visitas = "visitas.txt";
    $cookie = "cookie.txt";
    $opcion_mostrar_visitas = TRUE;
//CONFIG

   
    function login($usermail, $password, $tcookie){
        $ch= curl_init();
        curl_setopt ($ch, CURLOPT_URL, "https://www.tuenti.com/?m=login&func=do_login");
        curl_setopt ($ch, CURLOPT_POSTFIELDS, "email=$usermail&input_password=$password&timezone=1");
        curl_setopt ($ch, CURLOPT_POST, 1);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt ($ch, CURLOPT_COOKIEFILE, $tcookie);
        curl_setopt ($ch, CURLOPT_COOKIEJAR, $tcookie);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.5) Gecko/20091105 Fedora/3.5.5-1.fc11 Firefox/3.5.5");
        $res=curl_exec ($ch);
        curl_close($ch);
        return $res;
    }

    function consult($url,$tcookie){
        $ch= curl_init();
        curl_setopt ($ch, CURLOPT_URL, $url);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt ($ch, CURLOPT_COOKIEFILE, $tcookie);
        curl_setopt ($ch, CURLOPT_COOKIEJAR, $tcookie);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.5) Gecko/20091105 Fedora/3.5.5-1.fc11 Firefox/3.5.5");
        $res = curl_exec ($ch);
        curl_close($ch);
        return $res;
    }
  
    $resultado = consult("http://www.tuenti.com/?m=home&func=view_home",$cookie);
  
  if ((eregi("<h1>La sesión ha caducado",$resultado)) || (eregi("Por favor, introduce tu e-mail y contrase&ntilde;a de Tuenti para entrar.",$resultado))){
        $login=login($usermail, $password,$cookie);
        $resultado = consult("http://www.tuenti.com/?m=home&func=view_home",$cookie);
    }
  
    $info = explode("<ul>",$resultado);
    $info = explode("</ul>",$info[1]);
    $info = $info[0];
    $info = str_replace("</li>","</li>\n",$info);
  
    if (eregi('<div class="eventImage"',$info)){
            $info ="";
    }
    $info = strip_tags($info);
  
    if ($opcion_mostrar_visitas){
        $trozos = explode('<div class="views"><strong>',$resultado);
        $trozos = explode('</strong>',$trozos[1]);
        $visitas = $trozos[0];
        $visitas = str_replace(".","",$visitas);
       
        if (file_exists($archivo_visitas)){
            $f = fopen($archivo_visitas,"r");
            $visitas_old = fread($f,filesize($archivo_visitas));
            fclose($f);
        }else{
            $f = fopen($archivo_visitas,"w");
            fclose($f);
            $visitas_old = 0;
        }
       
        $mostrar_visitas = FALSE;
       
        if ($visitas>$visitas_old){
            $f = fopen($archivo_visitas,"w");
            fwrite($f,$visitas);
            fclose($f);
            $total = $visitas-$visitas_old;
            $mostrar_visitas = TRUE;
            $imprime_visitas = "Has tenido ". $total ." visitas nuevas. Totales: ".$visitas;
        }
    }
        $titulo = "Notificaciones tuenti:";
    if ($info != ""){
        exec('notify-send -t 2500 "'.$titulo.'" "'. $info .'" -i "'.$ruta.'ico.png" &');
    }
    if ($opcion_mostrar_visitas && $mostrar_visitas){
        exec('notify-send -t 2500 "'.$titulo.'" "'. $imprime_visitas .'" -i "'.$ruta.'ico.png" &');
    }
?>

3 comentarios:

  1. Como conejillo de indias he de decir que esto es de coña! Si es que es para ser perros, me las voy a gozar bien con esto! jajajaja

    Gracias por tu aporte donZeyt!

    ResponderEliminar
  2. jaja, joer, k casualidad
    ME MATO TODO EL DIA PARA CONSEGUIR UN NOTIFICADOR, (QUE FUNCIONA PERFECTO) Y VEO ESTO??
    :p, EL MIO AVISA DE MENSAJES Y DE TAL
    PERO TENGO LA API ACTUALIZADA!!
    Y EL ICONO DEL TUENTI TAMB, NO SE DISTORISIONA!
    míralo en mi blog!
    http://blogguino.blogspot.com
    me baso en el API PHP

    ResponderEliminar
  3. creo que tengo algun problema, no consigo que se me inicie, y eso que he seguido todos los pasos :S

    alguna idea, de donde puede estar el fallo?? uso 11.04 32bits

    gracias
    lordsaturos @hotmail.es

    ResponderEliminar