Autor Tema: Linea de tiempo de un grupo de Identica a través de php  (Leído 7777 veces)

elpecoso

  • Milenari@
  • *
  • Mensajes: 1471
  • Esto es lo que somos
    • La madriguera del escobrice
Aquí os dejo un pequeño código en PHP para poder ver la linea de tiempo  de un grupo de identica.
Sirve por ejemplo, para incrustarlo en una web

Código: [Seleccionar]
<?php
header
('Content-Type: text/html; charset=UTF-8');
#-- Hay que habilitar en php.ini la linea ;extension=php_openssl.dll (simplemente quitar el ;)
#-- En la siguiente linea simplemente cambiamos fotolibre por el nombre del grupo
$xml simplexml_load_file("https://identi.ca/api/statusnet/groups/timeline/fotolibre.xml");
echo 
'<div style="font-size:small; width: 250; height: 300; overflow:scroll">';
foreach(
$xml->status as $status)
  {
  
$user=$status->user;
  
$imagen=$user->profile_image_url;
  
$perfil=$user->{'statusnet:profile_url'};
  
$fecha=$status->created_at;
  
$fecha=convertirfecha($fecha);
  
$texto=$status->text;
  
$texto=convertirURL($texto);
  
$texto=convertirgrupo($texto);
  
$texto=convertirusuario($texto);
  
$texto=convertiretiqueta($texto);
  
$html=$status->{'statusnet:html'};
  
#--Las siguientes dos lineas se hacen aquí, porque no fui capaz de que funcionara en las funciones
  
$texto=str_replace('group/!','group/',$texto);
  
$texto=str_replace('identi.ca/@','identi.ca/',$texto);
  
$texto=str_replace('identi.ca/tag/#','identi.ca/tag/',$texto);
  echo 
'<img src="'.$imagen.'" Align=ABSMIDDLE>'.'   '.
  
'<strong><a target="_blank" href="http://identi.ca/'.$status->user->screen_name.'">'.
  
$status->user->screen_name.'</a></strong><br \> '.
  
$texto.'<br /><a style="text-decoration:none;color:black" target="_blank" href="http://identi.ca/notice/'.$status->id.'">'.$fecha.'</a><br /><hr>';
  }
  echo 
'</div>';
  function 
convertirURL($url)
{
    
$reg '/(?<!(?:\]|=))(http:\/\/[\w\/*\?*\&*\=*\.*]+)(?!(?:\[|\]))/i';
$rep '<a target="_blank" href="$1">$1</a>';
return preg_replace($reg$rep$url);
}
 function 
convertirgrupo($url)
{
    
$reg'/(![\w]+)/i';
    
$rep '<a target="_blank" href="http://identi.ca/group/$1"><i>$1</i></a>';
return preg_replace($reg$rep$url);
}
 function 
convertirusuario($url)
{
   
$reg'/(@[\w]+)/i';
$rep '<a target="_blank" href="http://identi.ca/$1"><strong>$1</strong></a>';
return preg_replace($reg$rep$url);
}
 function 
convertiretiqueta($url)
{
   
$reg'/(#[\w]+)/i';
$rep '<a target="_blank" href="http://identi.ca/tag/$1"><strong>$1</strong></a>';
return preg_replace($reg$rep$url);
}
 function 
convertirfecha($fecha)
{
   
$f=strtotime($fecha);
   
$f=date('d/m/Y H:i',$f);
return $f;
}
?>




Un ejemplo
Evidentemente se aceptan sugerencias/cambios/mejoras que el php no es lo mío  ;)

chau!
editado para añadir las etiquetas
« Última Modificación: 12 ago 2011, 13:48 pm por elpecoso »
Me gustaría cambiar el mundo, pero no me dan el código fuente
<- La ultima de La madriguera del escobrice

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #1 on: 12 ago 2011, 08:41 am »
Cita
Warning: Cannot modify header information - headers already sent by (output started at /home/pedrezue/public_html/wp-content/themes/suffusion/header.php:24) in /home/pedrezue/public_html/wp-content/plugins/php-code-widget/execphp.php(44) : eval()'d code on line 2

Si es por lo de modificar el php.ini, chungo. Porque no siempre voy a poder hacerlo...

No parece hacer mucho caso al tamaño http://pedrezuela.net y vendría bien especificar el número de mensajes.

Gracias por el curro.
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

jofial

  • Palizas oficial
  • *
  • Mensajes: 9513
  • Φ el · sobre la y
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #2 on: 12 ago 2011, 08:44 am »
Gracias por el aporte, aunque sirve para ver las conversaciones... no he visto la linea de tiempo... o sea día hora y esas cosas que lleva el uso horario.  :)o

Nota aclaratoria: ni pajolera idea de php, asi que  8-)

Saludos

Jose
No hay nada peor que una imagen brillante de un concepto borroso.
Ansel Adams


elpecoso

  • Milenari@
  • *
  • Mensajes: 1471
  • Esto es lo que somos
    • La madriguera del escobrice
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #3 on: 12 ago 2011, 08:59 am »
Colegota, prueba esto:
http://ferticidio.com/solucion-al-cannot-modify-header-information-headers-already-sent-by-de-wordpress

por lo que he visto es más cosa del WP que del php.ini
por cierto, mi script esta puesto en una pagina alojada en Aruba, asi que supongo que en muchos sitios lo del openssl lo tengan activado por defecto.

Edito para añadir que pruebes primero simplemente comentando (añade un # al principio) la linea que dice:
Código: [Seleccionar]
header('Content-Type: text/html; charset=UTF-8');

chau!
« Última Modificación: 12 ago 2011, 09:07 am por elpecoso »
Me gustaría cambiar el mundo, pero no me dan el código fuente
<- La ultima de La madriguera del escobrice

elpecoso

  • Milenari@
  • *
  • Mensajes: 1471
  • Esto es lo que somos
    • La madriguera del escobrice
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #4 on: 12 ago 2011, 09:04 am »
Gracias por el aporte, aunque sirve para ver las conversaciones... no he visto la linea de tiempo... o sea día hora y esas cosas que lleva el uso horario.  :)o

Nota aclaratoria: ni pajolera idea de php, asi que  8-)

Saludos

Jose

¿Tal vez sea interesante mostrar la hora/día a la que se escribió el mensaje?

chau!
Me gustaría cambiar el mundo, pero no me dan el código fuente
<- La ultima de La madriguera del escobrice

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #5 on: 12 ago 2011, 09:40 am »
Edito para añadir que pruebes primero simplemente comentando (añade un # al principio) la linea que dice:
Código: [Seleccionar]
header('Content-Type: text/html; charset=UTF-8');

Edito :collejas: Edito :collejas: Edito :collejas: Edito :collejas:  ¡Cuántas veces hay que decir que si editáis no nos enteramos desde el correo o si no volvemos a releer el mensaje! :collejas:
 :(
Pues sí, era eso.  :buf:

Echo en falta el que se vaya a ver el mensaje de alguna manera... por ejemplo con la fecha/hora apuntando al status, como dice Jose y sale en el badge actual. Y lo del tamaño, que no le hace caso y me pone una ristra enorme: http://pedrezuela.net
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

elpecoso

  • Milenari@
  • *
  • Mensajes: 1471
  • Esto es lo que somos
    • La madriguera del escobrice
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #6 on: 12 ago 2011, 09:51 am »
Y lo del tamaño, que no le hace caso y me pone una ristra enorme: http://pedrezuela.net

Prueba a cambiar overtflow:auto por overflow:scroll

chau!
Ps: prometo no editar nunca mas...
Me gustaría cambiar el mundo, pero no me dan el código fuente
<- La ultima de La madriguera del escobrice

tat

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 9622
  • Patch y buenas vibraciones
    • Libertat
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #7 on: 12 ago 2011, 12:05 pm »
Que guapo te ha quedado, enhorabuena!

elpecoso

  • Milenari@
  • *
  • Mensajes: 1471
  • Esto es lo que somos
    • La madriguera del escobrice
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #8 on: 12 ago 2011, 13:50 pm »
Actualizado el primer mensaje para incluir la fecha y la hora.
Haciendo clic en ellas, te lleva al mensaje en la página de identica.

chau!
Me gustaría cambiar el mundo, pero no me dan el código fuente
<- La ultima de La madriguera del escobrice

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #9 on: 12 ago 2011, 15:12 pm »
Actualizado el primer mensaje para incluir la fecha y la hora.
Haciendo clic en ellas, te lleva al mensaje en la página de identica.

¡Qué nivelazo! (1)
¿Crees que se podría diferenciar algo más visualmente la fecha para que se viera lo de pinchar ahí? Tal vez comenzando con un "Publicado:" o algo así o con otro color.... Es que los que tienen más enlaces no destaca... como lo veas.


(1) Siento las collejas, pero es que me estaba volviendo loco porque ni el enlace que me pasabas colaba porque ya lo tenía en ANSI, y había rebuscado media Internet cuando iba a responderte al mensaje directamente y... O:-) O:-) O:-)
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

JoRdi

  • Palizas oficial
  • *
  • Mensajes: 10191
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #10 on: 13 ago 2011, 22:17 pm »
Buenas,

Se agradece la aportación q:)

Ta lu3go

elpecoso

  • Milenari@
  • *
  • Mensajes: 1471
  • Esto es lo que somos
    • La madriguera del escobrice
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #11 on: 14 ago 2011, 07:27 am »
¿Crees que se podría diferenciar algo más visualmente la fecha para que se viera lo de pinchar ahí? Tal vez comenzando con un "Publicado:" o algo así o con otro color.... Es que los que tienen más enlaces no destaca... como lo veas.

Lo del color es sencillo, solamente tienes que cambiar donde dice
Código: [Seleccionar]
style="text-decoration:none;color:black"por otro color
por ejemplo
Código: [Seleccionar]
style="text-decoration:none;color:olive"Lo puse en negro porque se me llenaba el mensaje de "azul enlace" y visualmente no quedaba bien

Lo de que no muestre scroll pudiera ser por que donde esta metido ya sea un <div> y haya que ponerle el overflow:auto a ese <div>

chau!
Me gustaría cambiar el mundo, pero no me dan el código fuente
<- La ultima de La madriguera del escobrice

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Linea de tiempo de un grupo de Identica a través de php
« Respuesta #12 on: 16 ago 2011, 08:49 am »
Buenas,

yo es que lo tengo dentro de un Widget de WordPress y ahí parece que no me tiene en cuenta las dimensiones del "div" que se le dan desde el script. Mientras tanto he hecho unos pequeños apaños.

He puesto un límite de mensajes a mostrar que se define al principio en la variable $cuantos_quieres. Con ello me ahorro los problemas del scroll hasta que no de con una solución más elegante. La desventaja, claro, es que sólo se ven estos que se indican.

También he apañado el aspecto más parecido al badge original. Poniendo la imagen como flotante para que aparezcan el usuario y la fecha a la derecha. Y el texto debajo de todo.

Me queda esto que se puede ver en http://pedrezuela.net funcionando con el grupo !15m.

Código: [Seleccionar]
<?php
#-- Hay que habilitar en php.ini la linea ;extension=php_openssl.dll (simplemente quitar el ;)
#___ ¿Cuántos quieres que salgan? ___
$cuantos_quieres=5;
#-- En la siguiente linea simplemente cambiamos fotolibre por el nombre del grupo
$xml simplexml_load_file("https://identi.ca/api/statusnet/groups/timeline/15m.xml");
echo 
'<div style="font-size:small; width: 250; height: 300; overflow:auto">';
foreach(
$xml->status as $status)
  {
  
$user=$status->user;
  
$imagen=$user->profile_image_url;
  
$perfil=$user->{'statusnet:profile_url'};
  
$fecha=$status->created_at;
  
$fecha=convertirfecha($fecha);
  
$texto=$status->text;
  
$texto=convertirURL($texto);
  
$texto=convertirgrupo($texto);
  
$texto=convertirusuario($texto);
  
$texto=convertiretiqueta($texto);
  
$html=$status->{'statusnet:html'};
  
#--Las siguientes dos lineas se hacen aquí, porque no fui capaz de que funcionara en las funciones
  
$texto=str_replace('group/!','group/',$texto);
  
$texto=str_replace('identi.ca/@','identi.ca/',$texto);
  
$texto=str_replace('identi.ca/tag/#','identi.ca/tag/',$texto);
  echo 
'<img style="float:left;margin:2px" src="'.$imagen.'" Align=ABSMIDDLE>'.'   '.
  
'<strong><a target="_blank" href="http://identi.ca/'.$status->user->screen_name.'">'.
  
$status->user->screen_name.'</a></strong><br \> '.
  
'<a style="text-decoration:none;color:black" target="_blank" href="http://identi.ca/notice/'.$status->id.'"> '.$fecha.'</a><br /><div style="clear:both;">'.
  
$texto.'<hr>';
  if (++
$cuantos_van == $cuantos_quieres) break;
  }
  echo 
'</div></div>';
  function 
convertirURL($url)
{
    
$reg '/(?<!(?:\]|=))(http:\/\/[\w\/*\?*\&*\=*\.*]+)(?!(?:\[|\]))/i';
$rep '<a target="_blank" href="$1">$1</a>';
return preg_replace($reg$rep$url);
}
 function 
convertirgrupo($url)
{
    
$reg'/(![\w]+)/i';
    
$rep '<a target="_blank" href="http://identi.ca/group/$1"><i>$1</i></a>';
return preg_replace($reg$rep$url);
}
 function 
convertirusuario($url)
{
   
$reg'/(@[\w]+)/i';
$rep '<a target="_blank" href="http://identi.ca/$1"><strong>$1</strong></a>';
return preg_replace($reg$rep$url);
}
 function 
convertiretiqueta($url)
{
   
$reg'/(#[\w]+)/i';
$rep '<a target="_blank" href="http://identi.ca/tag/$1"><strong>$1</strong></a>';
return preg_replace($reg$rep$url);
}
 function 
convertirfecha($fecha)
{
   
$f=strtotime($fecha);
   
$f=date('d/m/Y H:i',$f);
return $f;
}
?>


:ot: A ver si se anima alguien más a publicar en el grupo !15m de identi.ca que sólo salimos el Invi y yo. :)
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]