Mostrando entradas con la etiqueta Gratuito. Mostrar todas las entradas
Mostrando entradas con la etiqueta Gratuito. Mostrar todas las entradas

miércoles, 9 de marzo de 2016

Incorporar el santoral a tu web



En anteriores publicaciones he explicado como incorporar datos del tiempo o de la fase lunar a tu web (o a tu calendario).
Yo, para completar mi calendario le he incorporado el santo del día.
He realizado varios intentos buscando algún API del santoral (un sitio donde un ordenador pueda hacer una llamada pasando algo de información -la fecha por ejemplo- y recibir el santo correspondiente a esa fecha) y no lo he conseguido, no he encontrado ningún API del santoral, SI he encontrado varios widgets y he sacado la información de los mismos.

En este articulo te explico como extraer la información del widget del santoral para integrarla en tu web o tu calendario, y además podrás utilizar esta idea para trabajar con cualquiera otra integración.

A modo de ejemplo, aquí tienes varias direcciones de componentes para integrar en tu web el santo del día:




Si lo que necesitas es un widget, encontrarás documentación fácil en las webs respectivas de cómo integrarlo, en este post quiero explicar como trabajar con el contenido que te proporcionan para extraerlo y darle otros usos.

Esta función recupera el string (el nombre) del widget que proporciona santopedia.com.


function recuperar_santoral($fecha) {
    # Aqui voy a recuperar el santoral desde http://www.santopedia.com
    $url = "http://www.santopedia.com/widget.html";
    $widgetsantoral = file_get_contents($url);
    $posini = strpos($widgetsantoral, 'target="_blank">');
    if (!($posini === false)) {
        $santo = substr($widgetsantoral, $posini + 16, 150);
        $posfin = strpos($santo, '</a>');
        if (!($posfin === false)) {
            $santo = substr($santo, 0, $posfin);
        }
    }
    return $santo;
}

Vamos a explicarlo un poco:
En la definición de la función recibo una fecha (que no utilizo para nada, ya que el widget te da el santo de hoy, sin que le pases parámetros).
Defino la variable $url con la url que voy a invocar.
y utilizo la instrucción 'file_get_content'. Con esta instrucción en vez de presentar en pantalla el resultado que me entrega el widget, lo que hago es almacenarlo en una variable, ahora busco dentro del contenido de esa variable el santo de hoy.
Hay que analizar el contenido (hay que poner la url en el navegador, ejecutarlo y con el widget en pantalla seleccionar 'view page source').

Esto es lo que presenta el widget:










Y esta es la información que te entrega 'view page source':




















Entre la información, hay que buscar dentro del <body> el texto que estamos buscando, en este caso 'San Juan de Dios', e identificar el string constante anterior que le precede. El string que encuentras delante es 'target="_blank">'.
Con esto ya sabemos donde buscar.
A continuación identificar el string constante que encuentras detrás de 'San Juan de Dios' , que es '</a>' y ya lo tenemos.
Ahora identifico en que posición aparece el string anterior y recorto a partir de ese punto (16 caracteres más ya que mi string de búsqueda es de 16 caracteres), Elimino también los caracteres a partir de </a> y finalmente en la variable $santo me queda el texto 'San Juan de Dios'.

Los comandos clave que he utilizado son sencillos: 
  • file_get_contents para obtener y mantener la información que me entrega la web del santoral.
  • strpos para identificar en que posición esta la información que busco.
  • substr para recortar de toda la página la información necesaria.

¿Como he utilizado esta función?:
Estoy presentando, en la cabecera de mi calendario diario, algo de información adicional (Santoral, fase lunar, tiempo actual), esta información la presento en un cuadro, justo por encima de la agenda del día.
En el calendario es configurable qué información se presenta en este cuadro.
Toda la información la compongo en una variable llamada '$contenido' que finalmente presento en pantalla.

Así es como incorporo el santo del día a mi cabecera del calendario:


$santo = recuperar_santoral($identificador);
$contenido = $contenido . '. Santo de hoy: ' .
      '<acronym title="Informacion gracias a www.santopedia.com">' .
      $santo . ' </acronym>';
Es importante, SI, es importante, mantener la información de la fuente o vínculos que el widget nos estaba entregando, nuestra intención no es robar la información, solo es adaptarla a nuestro formato, por lo tanto debemos presentarla en nuestra pantalla también con la referencia a su origen, tal como nos la han entregado en el widget. En este caso he definido el santo como un acrónimo, con esta definición aparece subrayado (seleccionable) y al poner el ratón encima nos muestra la información contenida en title. Esta información es importante mantenerla.

Cualquier duda... comentar.

lunes, 26 de octubre de 2015

Gratuito, gratuito, gratuito.

Gratuito, gratuito, gratuito

En marzo de 2015 comencé con el proyecto de MyFamilyServer. La idea era crear un servidor web que pudiese correr en un hardware con pocos recursos, para así aprovechar algún pc antiguo y no tener que comprar uno nuevo. Sobre este servidor web se construye una aplicación para compartir cualquier cosa.

Lo interesante no es esto, lo interesante es que encontré el sistema operativo que necesitaba (justo lo que necesitaba) de forma gratuita, la base de datos, excelente base de datos, gratuita, el servidor web, el más utilizado en el mercado, gratuito, las herramientas de desarrollo, gratuitas, los lenguajes de desarrollo también gratuitos.

El proyecto continua queriendo dar publicidad a lo que he construido, entonces busco alguna opción para crear una web dinámica y actual y también encuentro este servicio de forma gratuita. Y por supuesto un blog para comentar novedades y curiosidades... También gratuito.

Ahora, con el servidor funcionando he tenido que buscar soluciones a detalles menores, como la gestión remota del servidor y la asignación de nombre de dominio sobre ip dinámica y ..... Curiosamente también lo encuentro de forma gratuita.

Es sorprendente la gran gran cantidad de software de calidad que encuentras disponible de forma gratuita, sin soporte? de eso nada, por cada pequeño problema encuentras 100 soluciones en publicaciones de unos y de otros. 
Es muy llamativo la cantidad ingente de soluciones gratuitas y de calidad, serias, que encuentras disponibles en internet, (habría que analizar, caso por caso, por que son gratuitas) pero creo, sinceramente, que un alto porcentaje son trabajos altruistas, lo cual dice mucho de nosotros mismos.

La verdad es que solo se me ocurre decir: Gracias, gracias, gracias.