fr3nd.net fr3nd.net

  • rss
  • home
  • fotos
  • invaders
  • projects
  • quien soy

Migrado a Flickr!

fr3nd | 25/9/2006 | 3:23 am

flickrLa cantidad de fotos que tenía en la web ha ido creciendo de forma bastante espectacular con el tiempo, llegando a superar el Gb. Por eso y por otras razones, decidí migrar (casi) todo el contenido de imágenes a flickr.

Me hice con una cuenta pro y empecé a subir poco a poco todas las galerías que tenía.

Luego debía hacer que la migración fuese transparente… que todos los links siguiesen funcionando, pero sin acceder al software antiguo. Al final lo he solucionado utilizando mod_rewrite de apache y un pequeño script en python que sustituye al anterior cgi y que reescribe las url’s para que apunten a la imagen o a la galería correspondiente de flickr. Un follón…

El invento al parecer funciona. No he tenido que modificar ningún post y todas las imágenes siguen apareciendo en la web correctamente. Si encontrais algún error o alguna imágen que no se muestra como debería, os agradeceré que me lo comuniqueis.

Llevo poco tiempo jugando con flickr, puedo asegurar que engancha terriblemente… Es puro vicio!

  • Fotos de fr3nd.net en flickr

Si quieres ver mas detalles técnicos sobre como he hecho el cambio, sigue leyendo el post.

Para subir las fotos utilicé jUploadr, una aplicación Java que me facilitó mucho el trabajo de poner los tags y las fotos en los photosets correspondientes.

Me aseguré que todos los sets tuviesen exactamente el mismo nombre que las galerias antiguas, para poder enlazarlas correctamente.

Utilizando la api de flickr y la librería Beej’s Python Flickr API programé un pequeño script que se recorría todas las fotos que había subido y sacaba los id’s correspondientes.

#!/usr/bin/python
from flickrapi import FlickrAPI

flickrAPIKey = "xxxxxxxxxxxxxxxxxxxxxxxxxx"  # API key
flickrSecret = "yyyyyyyyyyyyyy"                  # shared "secret"

# make a new FlickrAPI instance
fapi = FlickrAPI(flickrAPIKey, flickrSecret)

# do the whole whatever-it-takes to get a valid token:
token = fapi.getToken(browser="firefox")

sets = fapi.photosets_getList(api_key=flickrAPIKey,auth_token=token)
fapi.testFailure(sets)
for set in sets.photosets[0].photoset:
        if set.title[0].elementText[0] == '2' or set.title[0].elementText == "back_to_school" or set.title[0].elementText == "comics_sergi" or set.title[0].elementText == "gatitos" or set.title[0].elementText == "casaguay":
                if set.title[0].elementText[-1] == '/':
                        # si el photoset acaba amb / eliminem el caracter
                        fapi.photosets_editMeta(api_key=flickrAPIKey,auth_token=token,photoset_id=set['id'],title=set.title[0].elementText[0:-1])
                photos = fapi.photosets_getPhotos(api_key=flickrAPIKey,auth_token=token,photoset_id=set['id'])
                fapi.testFailure(photos)
                for photo in photos.photoset[0].photo:
                        # photoset title:photo title:server id:photo id:photo secret:photoset id:
                        print set.title[0].elementText + ":" + photo['title'] + ":" + photo['server'] + ":" + photo['id'] + ":" + photo['secret'] + ":" + set['id'] + ":"

Esta información la guardé en un fichero de texto que mediante un cgi escrito también en python convertiría las url’s de las fotos antiguas a las nuevas url’s de flickr:

#!/usr/bin/python
"""
Script que ha de substituir l'anterior galeria, per poder fer la migracio a flickr
Necessita el fitxer infos.txt que conte les dades de les fotos que s'han pujat
"""

import cgi
import sys

form = cgi.FieldStorage()
if form.has_key('mode'):
        mode = form["mode"].value
        album = form["album"].value
        # el album de despedida de inlander esta malament. s'ha d'arreglar a ma
        if album == '/fotos/200310_24_despedida_inlander':
                album = '/fotos/20031024_despedida_inlander'

        if form.has_key('picture'):
                picture = form['picture'].value.replace('SMALL','')
        if form.has_key('Width'):
                width = form['Width'].value
        else:
                width = ""
else:
        print "Status: 301 Moved Permanently"
        print "Location: http://www.fr3nd.net/cgi-bin/photo/index2.cginn"
        sys.exit()

# mirem si hi ha un album. Si no hi ha cap, enviem als sets de flicker o al antic software segons correspongui

try:
        photoset = album.split('/')[2]
except:
        pass

f = open('infos.txt', 'r')

for line in f:
        props = line.split(':')
        try:
                if photoset == props[0]:
                        if mode == 'viewpicture':
                                if picture.split('.')[0] == props[1]:
                                        print "Status: 301 Moved Permanently"
                                        header = "Location: http://flickr.com/photos/fr3nd/" + props[3] + "/nn"
                                        print header
                                        sys.exit()
                        elif mode == 'view':
                                print "Status: 301 Moved Permanently"
                                header = "Location: http://flickr.com/photos/fr3nd/sets/" + props[5] + "/nn"
                                print header
                                sys.exit()
                        elif mode == 'rewrite':
                                if picture.split('.')[0] == props[1]:
                                        print "Status: 301 Moved Permanently"
                                        header = "Location: http://static.flickr.com/" + props[2] + "/" + props[3] + "_" + props[4]
                                        if width == '320':
                                                header = header + "_m"
                                        elif width == '640':
                                                pass
                                        elif width == '800':
                                                pass
                                        elif width == '100' or width == 'thumbnails' or width == 'thumbnail':
                                                header = header + "_t"
                                        header = header + ".jpgnn"
                                        print header
                                        sys.exit()
        except:
                break

# si no s'ha trovat la correspondencia enviem al software antic
if mode == 'viewpicture':
        print "Status: 301 Moved Permanently"
        print "Location: http://www.fr3nd.net/cgi-bin/photo/index2.cgi?mode=" + mode + "&album=" + album + "&picture=" + picture + "nn"
elif mode == 'view':
        if album == '/fotos':
                print "Status: 301 Moved Permanently"
                print "Location: http://flickr.com/photos/fr3nd/sets/nn"
        else:
                print "Status: 301 Moved Permanently"
                print "Location: http://www.fr3nd.net/cgi-bin/photo/index2.cgi?mode=" + mode + "&album=" + album + "nn"
sys.exit()

Finalmente, solo me quedaba renombrar el anterior index.cgi a index2.cgi y subir el nuevo.

El resto de fotos (las que se accedian directamente sin pasar por el cgi) las he redireccionado utilizando estas RewriteRules:

RewriteRule ^/?stuff//?/?/?fotos//?/?/?misc/.*$ - [S=1000]
RewriteRule ^/?stuff//?/?/?fotos//?/?/?fun/.*$ - [S=1000]
RewriteRule ^/?photodata//?/?/?/?fotos//?/?/?misc/.*$ - [S=1000]
RewriteRule ^/?photodata//?/?/?/?fotos//?/?/?fun/.*$ - [S=1000]

RewriteRule ^/?photodata//?/?/?/?fotos/(.*)/(.*)/(.*)$ http://www.fr3nd.net/cgi-bin/photo/index.cgi?album=/fotos/$1&mode=rewrite&picture=$3&Width=$2 [L]
RewriteRule ^/?stuff/fotos/(.*)/thumbnails/(.*)$ http://www.fr3nd.net/cgi-bin/photo/index.cgi?album=/fotos/$1&mode=rewrite&picture=$2&Width=thumbnails [L]
RewriteRule ^/?stuff/fotos/(.*)/(.*)$ http://www.fr3nd.net/cgi-bin/photo/index.cgi?album=/fotos/$1&mode=rewrite&picture=$2 [L]

Soy consciente que no es ni de lejos la forma mas óptima de hacerlo. Los scripts podrían buscar la información de las fotos de una forma mucho mas rápida y menos pesada, pero no estaba dispuesto a dedicarle muchas horas a algo que será temporal… Funciona, y con esto tengo suficiente ;)

Categories
fr3nd.net

« Día 8 – 2 de Agosto: Fushimi-ku y Nara No tindràs una casa en la puta vida »

9 responses

victor piscue | 25/9/2006 | 12:34 pm

Molt bé! ja era hora :D Bona currada de migració! HIP HIP API!

Cedric | 26/9/2006 | 1:05 pm

Ja veuràs diversos comentaris a flickr! ;-)

Quina currada… y si, confirmed, flickr es puro vicio :P

Tania | 28/9/2006 | 10:42 am

si, mucho curro… por cierto recomiendas el jUploadr??

fr3nd | 28/9/2006 | 10:53 am

La verdad es que no he probado ningún otro programa para subir las fotos, así que no puedo comparar. Pero a mi me fué bien. Es bastante intuitivo y rápido, y puedes poner los tags a varias fotos a la vez, e incluso crear un photoset con las fotos que selecciones.

[aMc] | 30/9/2006 | 3:03 am

Yo estaba pensando en abrirme una cuenta flickr para subir fotos mias personales. La Pro es de pago, verdad?

Aunque he estado hablando con varios conocidos para montar un fotolog entre nosotros con otro sistema, no me convence mucho porque no se pueden poner comentarios más allá del que pone la foto.

Nada como saber programarselo uno mismo, cachisss.

fr3nd | 30/9/2006 | 2:42 pm

Si, es de pago, pero solo cuesta 20€ (al cambio) al año… creo que vale la pena teniendo en cuenta que puedes almacenar la cantidad de fotos que quieras siempre que no subas mas de 20Gb en un mes ;)

Comentarios en las fotos puede poner todo el mundo, pero necesitas estar registrado.

[aMc] | 30/9/2006 | 3:30 pm

Lastima que no puedas hacer como Blogger, almacenar el sistema en tu propio hosting ya que en Aruba por 27€ tengo espacio ilimitado y transferencia ilimitada. xD

Bueno, esto no es Renault ocasión, no se puede tener todo. xDDD

[aMc] | 16/12/2006 | 3:43 pm

Uy! Un spammer xD

Edu | 21/12/2006 | 2:02 am

Benvingut a Flickr i Benvingut a Dublin!!

Si encara estàs per aqui, fes-nos una visita a la web.

Randompic

Black_smoke
06-05-2010 a las 00:00

Ver todos

Songs

January 2012

  • Metronomy - Corinne

December 2011

  • Skrillex - Syndicate

All Songs

Proyectos

  • Learn Japanese
  • DS Go 2
  • Clearlooks-NeXT
  • apache-top
  • Third Age
  • ssshell
  • mysqlpdump
  • pyproctools
  • splitdump
  • Don Simon
  • Nis Gaim Theme
  • Gaim Popupwin

Comentarios

Comentarios recientes:
  • fr3nd: On està?

  • Invader: Hi ha un fantasma de super mario per gracia tambe!

  • fr3nd: Cool. Nice update! :)

  • Mark: Loved the apache-top python script. I have modified the script so that it is better responsive, and I added the...

  • Yami: Igualment, bones festes ;D

Categorias

  • abc música! (12)
  • Art (9)
  • Dublin (7)
  • fr3nd.net (8)
  • friki (14)
  • gadgets (8)
  • General (65)
  • Informática (14)
  • Informática Retro (5)
  • Internet (17)
  • Irlanda (2)
  • Japan (19)
  • Libros (5)
  • Linux (9)
  • Música (15)
  • Personal (42)
  • pixel (15)
  • Projects (6)
  • space-invaders (30)
  • thoughts (10)
  • travel (6)
  • Viaje a Japón (10)
  • work (3)
  • ZonaDance (3)

Links

  • friends

    • Adria Garcia
    • ag0ny
    • eunice popcorn
    • fr3nd’s home
    • if i shrink will I shrink?
    • Mundodisea
    • Ojete Cable
    • Sushi’s web
    • t4bLeT
    • tetrins.com
    • uRi
    • [aMc]
  • Web presence

    • delicious
    • Facebook
    • flickr
    • JapanDict Japanese dictionary
    • last.fm
    • Learn Japanese (Twitter)
    • LinkedIn
    • twitter
    • Visited Countries
    • YouTube
  • Archivos

    • December 2011 (1)
    • November 2011 (1)
    • October 2011 (2)
    • September 2011 (1)
    • August 2011 (2)
    • June 2011 (1)
    • December 2010 (1)
    • November 2010 (1)
    • October 2010 (1)
    • September 2010 (1)
    • July 2010 (1)
    • June 2010 (1)

    Ver todos los archivos

    Search


    Creative Commons License

    :wq