Advertisement
son_link

Lista y muestra las galerias de imagenes de Picasa en tu web

Mar 7th, 2011
819
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.22 KB | None | 0 0
  1. <?php
  2. # Galeria de imagenes desde tus albumnes en Picasa
  3. # (CC) 2011 Alfonso Saavedra "Son Link"
  4. # Bajo licencia GPLv3
  5. # http://sonlinkblog.blogspot.com
  6. # Agradecientos a IBM por su estupendo tutorial sobre como listar
  7. # las imágenes y galerías de Picasa por RSS (http://www.ibm.com/developerworks/library/x-picasalbum/)
  8.  
  9. $user_id = 'link.n4ever'; # Tu usuario de gmail sin el @gmail.com
  10. $limit_page = 20; # Total de imagenes a mostrar por pagina
  11. $limit_file = 5; # Numero de imagenes a mostrar por fila en la tabla
  12.  
  13. if (empty($_GET['ver'])){
  14.     # Si no existe la variable ver, se muestra un listado de las galerías disponibles
  15.    
  16.     // Construimos la URL al feed que contiene todas las galerias publicas
  17.     $feedURL = "http://picasaweb.google.com/data/feed/api/user/$user_id?kind=album";
  18.    
  19.     // Leemos el contenido del archivo y lo guardamos en la variable para usarla
  20.     $sxml = simplexml_load_file($feedURL);
  21.    
  22.     // Obtenemos la lista de galerias
  23.     echo "<div>";
  24.     echo "<div id=\"galeria_fotos\">";
  25.     echo "<h2>Galerías:</h2>";
  26.     echo "<ul>";
  27.     // Recorremos todos los elementos XML
  28.     foreach ($sxml->entry as $entry) {
  29.         $title = $entry->title; // Titulo del album
  30.         $gphoto = $entry->children('http://schemas.google.com/photos/2007');
  31.         $name = $gphoto->name; // Nombre del album
  32.         echo "<li><a href=\"?ver=$name\">$title</a></li>\n"; // Generamos los enlaces a las galerias
  33.     }
  34.     echo "</ul></div>\n";
  35. }else{
  36.     $album = $_GET['ver'];
  37.     $start = 1;
  38.     // Comprobamos si le pasamos la variable pg que indica el numero de pagina
  39.     if (isset($_GET['pag'])){
  40.         $pagina = $_GET['pag']-1;
  41.         $start = 20*$pagina+1;
  42.     }else{
  43.         $pagina = 0;
  44.     }
  45.     // Construimos la URL al archivo XML, al cual le pasamos el nombre del album, desde que pagina empieza y cuantas fotos nos devolvera
  46.     $feedURL = "http://picasaweb.google.com/data/feed/api/user/$user_id/album/$album?start-index=$start&max-results=$limit_page";
  47.    
  48.     // Leemos el archivo y lo guardamos
  49.     $sxml = simplexml_load_file($feedURL);
  50.    
  51.     // Obtenemos el total de fotos que hay en el album para calcular cuantas paginas debera de tener el album
  52.     $counts = $sxml->children('http://a9.com/-/spec/opensearchrss/1.0/');
  53.     $total = $counts->totalResults;
  54.     $total_paginas = ceil($total/20);
  55.     ?>
  56.     <div id="galeria">
  57.     <h1><?php echo $sxml->title; ?></h1>
  58.     Hay <?php echo $total; ?> foto(s) en un total de <?php echo $total_paginas ?> pagina(s).<br />
  59.     Pulse en una imagen para verla a tamaño original.
  60.     <?php
  61.     // Recorremos el XML para mostrar las miniaturas y generar los enlaces a la foto original
  62.     // print each entry's title, size, dimensions, tags, and thumbnail image
  63.    
  64.     echo "<table id=\"lista_galeria\"><tr>";
  65.     $i = 0;
  66.     foreach ($sxml->entry as $entry) {
  67.  
  68.         $media = $entry->children('http://search.yahoo.com/mrss/');
  69.        
  70.         /* Tamaños disponibles de las miniaturas (AnchoxAlto):
  71.          * $media->group->thumbnail[0] -> 72x41
  72.          * $media->group->thumbnail[1] -> 144x81
  73.          * $media->group->thumbnail[2] -> 288x172
  74.         */
  75.         $thumbnail = $media->group->thumbnail[1];
  76.         $url = $media->group->content; // URL a la imagen a tamaño real
  77.         ?>
  78.         <td><a href="<?php echo $url->attributes()->{'url'} ?>" >
  79.                 <img src="<?php echo $thumbnail->attributes()->{'url'} ?>" />
  80.                 </a></td>
  81.         <?php
  82.         // Si $i vale lo mismo que $limit_file creamos un salto de fila en la tabla que muestra las miniaturas
  83.         $i ++;
  84.         if ($i == $limit_file){
  85.             echo "</tr><tr>";
  86.             $i = 0;
  87.         }
  88.     }
  89.    
  90.     echo "</tr></table>";
  91.     // Lo siguiente se encarga de mostrar los enlaces a las distintas paginas del album (si hay mas de una)
  92.     echo '<p class="pagelink conl"><span class="pages-label">Paginas: </span> ';
  93.     $pagina += 1;
  94.     if ($pagina > 1){
  95.         $ant = $pagina-1;
  96.         echo "<a href=\"?ver=$album&pag=$ant\">Anterior</a>&nbsp;";
  97.     }
  98.     for ($n = 1; $n <= $total_paginas; $n++){
  99.         if ($n == $pagina){
  100.             echo "<strong class=\"item1\">$n</strong>&nbsp;";
  101.         }else{
  102.             echo "<a href =\"?ver=$album&pag=$n\">$n&nbsp;</a>";
  103.         }
  104.     }
  105.     if ($pagina < $total_paginas){
  106.         $sig = $pagina+1;
  107.         echo "<a href=\"?ver=$album&pag=$sig\">Siguiente</a>";
  108.     }
  109.     echo "<br /><a href=\"gallery.php\">Volver al listado de las galerías</a></p></div>";
  110. }
  111. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement