elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Facebook Manager [ Perl ]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Facebook Manager [ Perl ]  (Leído 2,581 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Facebook Manager [ Perl ]
« en: 31 Diciembre 2010, 00:45 am »

Antes que nada, no pretende distribuir este pequeño programa, solo lo pongo a su disposición porque para mi es muy útil, lo desarrollé hace unos días.

Otra de las razones por las que no lo pongo a distribución es porque se necesitan algunos módulos que deberán instalar ustedes. Si no saben instalar módulos yo les enseñaré.

Otra cosa, no corre en Windows, es solo para GNU/Linux, claro que se puede correr sobre Windows, pero es mucho más engorro.

Ah, otra cosa, necesitan instalar fbcmd.




¿Y por qué no hacer todo esto directamente desde facebook.com?
Lo hice porque a veces no quiero entrar a facebook, simplemente quiero poner un status, o ver el estado de alguien
o lo que sea. Aparte si entro a veces me agarran en el chat.

Para que funcione necesitan algunos módulos, Gtk2, Gtk2::GladeXML, entre otros, instalarlos es muy sencillo, yo les
enseñaré como.

INSTALAR MÓDULOS DESDE CPAN

Citar
CPAN es el acrónimo de Comprehensive Perl Archive Network. Es un enorme archivo de software escrito en Perl, así como de
documentación sobre el mismo. Tiene presencia en la Web a través de su sitio www.cpan.org y sus 236 mirrors distribuidos
por todo el mundo.

Primero, ingresamos en:
http://search.cpan.org/

Ingresamos el nombre del módulo que queremos instalar. En este caso Gtk2, seleccionamos el primero que sale en la lista.
Al lado derecho sale la imagen del autor, debajo dice "Downloads", descargamos el módulo y lo descomprimimos:

Código
  1. leo@leo-desktop:~/Escritorio/test$ ls -1
  2. Gtk2-1.222.tar.gz
  3. leo@leo-desktop:~/Escritorio/test$ tar zxvf Gtk2-1.222.tar.gz
  4. ...
  5. ...
  6. ...

Nos creará una carpeta:

Código
  1. leo@leo-desktop:~/Escritorio/test$ ls -1
  2. Gtk2-1.222
  3. Gtk2-1.222.tar.gz

Entramos en ella e instalamos de la siguiente manera:

Código
  1. cd Gtk2-1.222/
  2. sudo perl Makefile.PL
  3. sudo make
  4. sudo make test
  5. sudo make install

Y eso es básicamente la instalación de módulos, también podemos hacerlo através de la utilidad cpan:
Código
  1. sudo cpan i /Gtk2-1.222/

Así continuamos con los demás modulos que nos pida instalar.

El programa está desarrollado con glade-e
Instalación:

Código
  1. sudo apt-get install glade

Seguro que les pedirá instalar muchos módulos, así que ¡paciencia!.

Les dejo el código y los archivos necesarios para su funcionamiento:

Código
  1. #!/usr/bin/perl -w
  2. # Leo Gutiérrez R.
  3. # leorocko13@hotmail.com
  4. use strict;
  5. use Gtk2 -init;
  6. use Gtk2::GladeXML;
  7. use 5.010;
  8. use encoding ':locale';
  9. use constant TRUE => 1;
  10. use constant FALSE => !TRUE;
  11.  
  12. # Variables globales indispensables.
  13. ########################################################################
  14.  
  15. my($programa, $ventana_principal);
  16. $programa = Gtk2::GladeXML->new('hola.glade');
  17. $ventana_principal = $programa->get_widget('window1');
  18. my $ventana_de_estado = $programa->get_widget('ventana_de_estado');
  19. my $ventana_about = $programa->get_widget('about');
  20.  
  21. # Cargamos los componentes.
  22. $programa->signal_autoconnect_from_package('main');
  23.  
  24. # La señal para que cuando cierre se CIERRE TODO.
  25. $ventana_principal->signal_connect(destroy => sub
  26. {
  27. Gtk2->main_quit();
  28. }
  29. );
  30.  
  31. $ventana_de_estado->signal_connect(destroy => sub
  32. {
  33. $ventana_de_estado->hide();
  34. }
  35. );
  36.  
  37. $ventana_about->signal_connect(destroy => sub
  38. {
  39. $ventana_about->hide();
  40. }
  41. );
  42.  
  43. # Mostrar todo.
  44. $ventana_principal->resize(520, 570);
  45. $ventana_principal->show_all();
  46. #$ventana_principal->set_resizable(FALSE);
  47.  
  48. my $user_selected;
  49. my @friends;
  50.  
  51. ########################################################################
  52.  
  53. # Agregar el combo.
  54. my $combito = $programa->get_widget('combito');
  55. &llenarComboAmigos;
  56. $combito->signal_connect('changed' => \&on_combito_changed);
  57. $combito->set_active(0);
  58.  
  59. # Agregar los TextBox
  60. my $texto = $programa->get_widget('texto');
  61. my $texto_2 = $programa->get_widget('texto_2');
  62.  
  63. # Agregar la barra de status
  64. my $status = $programa->get_widget('status');
  65. my $context_id = $status->get_context_id("");
  66.  
  67. # Agregar la imagen de perfil
  68. my $imagen_perfil = $programa->get_widget('perfil_Image');
  69.  
  70. # Agregar texto salida de información
  71. my $textoSalida = $programa->get_widget('textoSalida');
  72. my $buffer = $textoSalida->get_buffer();
  73.  
  74. $ventana_principal->show_all();
  75. Gtk2->main();
  76.  
  77. sub on_boton_cerrar_clicked
  78. {
  79.   Gtk2->main_quit();
  80. }
  81.  
  82. sub on_salirFileItem_activate
  83. {
  84. Gtk2->main_quit();
  85. }
  86.  
  87. sub llenarComboAmigos
  88. {
  89. for(qx|fbcmd friends|)
  90. {
  91. push(@friends, m/^\d+\s+(.*)/);
  92. }
  93. map($combito->append_text($_), sort @friends);
  94. }
  95.  
  96. sub on_combito_changed
  97. {
  98. my ($cb) = @_;
  99. if($cb->get_active())
  100. {
  101. $user_selected = $cb->get_active_text();
  102. $status->push($context_id, sprintf("Usuario seleccionado : %s", $user_selected));
  103. $buffer->set_text("");
  104. }
  105. }
  106.  
  107. sub on_texto_activate
  108. {
  109. unless ($user_selected)
  110. {
  111. $status->push($context_id, sprintf("Seleccione un usuario para enviar el mensaje."));
  112. }
  113.  
  114. my $mensaje = $texto->get_text();
  115. $mensaje =~ s/"/\\"/g;
  116. $mensaje =~ s/`/\\`/g;
  117. $mensaje =~ s/\(/\\(/g;
  118. qx|fbcmd wallpost "$user_selected" "${mensaje}"|;
  119.  
  120. $status->push($context_id, sprintf("Mensaje publicado en muro de usuario : %s", $user_selected));
  121. }
  122.  
  123. sub on_texto_2_activate
  124. {
  125. my $mensaje = $texto_2->get_text();
  126. $mensaje =~ s/"/\\"/g;
  127. $mensaje =~ s/`/\\`/g;
  128. $mensaje =~ s/\(/\\(/g;
  129. qx|fbcmd status "${mensaje}"|;
  130. $status->push($context_id, sprintf("Status cambiado"));
  131. }
  132.  
  133. sub on_verImagenDePerfil_activate
  134. {
  135. unless ($user_selected)
  136. {
  137. $status->push($context_id, sprintf("Seleccione un usuario de la lista."));
  138. }
  139.  
  140. qx|fbcmd ppics "$user_selected" . "-pf=[tname].jpg" -ppsize=1|;
  141. $imagen_perfil->set_from_file("$user_selected" . ".jpg");
  142. unlink("$user_selected" . ".jpg") or warn("No se pudo borrar el archivo \"${user_selected}.jpg\"");
  143.  
  144. }
  145.  
  146. # Ventana de estado
  147.  
  148. sub on_verEstado_activate
  149. {
  150. unless ($user_selected)
  151. {
  152. $status->push($context_id, sprintf("Seleccione un usuario de la lista."));
  153. }
  154.  
  155. my $vbox = Gtk2::VBox->new(FALSE, 5);
  156.  
  157. my $frame = Gtk2::Frame->new("Amigo - Estado");
  158. $frame->set_border_width(5);
  159.  
  160. my $sw = Gtk2::ScrolledWindow->new (undef, undef);
  161.    $sw->set_shadow_type ('etched-out');
  162. $sw->set_policy ('automatic', 'automatic');
  163. $sw->set_size_request (600, 100);
  164. $sw->set_border_width(5);
  165.  
  166. my $tview = Gtk2::TextView->new();
  167.   my $buffer = $tview->get_buffer();
  168. my $s = &getStatus();
  169. $buffer->set_text($s);
  170.  
  171. $sw->add($tview);
  172. $frame->add($sw);
  173. $vbox->pack_start($frame,TRUE,TRUE,4);
  174. $vbox->show_all();
  175. $ventana_de_estado->add($vbox);
  176.  
  177. $ventana_de_estado->show();
  178.  
  179. }
  180.  
  181. sub getStatus
  182. {
  183. my $s = qx|fbcmd fstatus "$user_selected"|;
  184.  
  185. my($status) = $s =~ m/^$user_selected\s+(.*)/gims;
  186. #$status =~ s/\s{22}(.*)/\n$1/gi;
  187. #$status =~ s/^(\s+)(.*)/$2/gim;
  188.  
  189. return $s;
  190.  
  191. }
  192.  
  193. sub getPresence
  194. {
  195. my($s) = qx(fbcmd finfo online_presence "${user_selected}") =~ m/(active|offline)$/;
  196. return $s;
  197. }
  198.  
  199. sub on_verPresencia_activate
  200. {
  201. $buffer->set_text("Presencia : " . &getPresence());
  202. }
  203.  
  204. sub on_aboutFileItem_activate
  205. {
  206. $ventana_about->run();
  207. $ventana_about->hide();
  208. }
  209.  

Archivos:
http://rapidshare.com/files/440038591/facebook_manager.rar
http://www.megaupload.com/?d=BZQBNEVS



« Última modificación: 31 Diciembre 2010, 00:50 am por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Perl] FSD Exploit Manager
Scripting
BigBear 0 1,996 Último mensaje 7 Octubre 2011, 01:14 am
por BigBear
[Perl] Mysql Manager
Scripting
BigBear 0 1,738 Último mensaje 7 Octubre 2011, 01:14 am
por BigBear
[Perl] Manager
Scripting
BigBear 0 1,653 Último mensaje 9 Octubre 2011, 17:50 pm
por BigBear
[Perl] FTP Manager
Scripting
BigBear 0 1,673 Último mensaje 14 Octubre 2011, 15:25 pm
por BigBear
[Perl] USB Manager 0.2
Scripting
BigBear 0 1,676 Último mensaje 3 Diciembre 2011, 16:34 pm
por BigBear
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines