|

Articulos relacionados

En linea

Hay 55 invitados 

Iniciar sesion




Designed by:
SiteGround web hosting Joomla Templates
wikilapse (timelapse + wikipedia) Imprimir Correo electrónico
Valoración de los usuarios: / 2
PobreEl mejor 
Escrito por Julián Perelli   
Sábado 26 de Junio de 2010 21:39

Es muy interesante ver como un articulo de wikipedia cambia en el tiempo, segun las ediciones que realizan los wikipedistas.

Un video de timelapse se realiza juntando imágenes de algo, y reproduciéndolas a una velocidad superior a la velocidad real (en general, mas de 10 veces). Las formas mas comunes de adquirir estas imágenes son 2:

  • seleccionando 1 de cada N cuadros (frames) de un video.
  • tomando fotos con una camara cada una cantidad de tiempo fija.

luego se compone un video en base a esas imágenes seleccionadas.

La idea de un wikilapse, es realizar un video de timelapse adquiriendo imágenes de un artículo de wikipedia en diferentes momentos del tiempo, pudiendo ver facilmente la evolución del mismo.

Como obtener imágenes de wikipedia en el tiempo?

Por razones fundamentales de un software de tipo colaborativo, wikipedia mantiene un historial de cada articulo, que aparece en todos sus articulos al hacer click sobre la pestaña edicion y luego "ver historial"

En esa pagina aparecen enlaces a cada edicion que hubo, haciendo click en ellos, se puede ver la pagina en ese momento en el tiempo (snapshot).

Teniendo esta información sólo hace falta ver el código fuente de la pagina (ctrl + U en firefox) que tiene el historial y de alguna manera (un poco de edicion del codigo fuente de esa pagina en un editor de textos, un poco de uso de macros, y listo) obtener una lista con los link a cada uno de los snapshot.

Código en python para obtener links a cada una de las páginas del historial de un artículo:

wikilapse-links.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import urllib2

ARTICULO = "Terremoto_de_Chile_de_2010" # solo caracteres ASCII
IDIOMA = "es"
BROWSER_ANCHO = 1024
IMG_ANCHO = 800
IMG_LARGO = 600

#generar listado de links a snapshots
listado = []
url = "http://"+IDIOMA+".wikipedia.org/w/index.php?title="+ARTICULO+"&action=history"
# headers necesarios para que wkipedia no detecte la peticion como bot.
headers = {}
headers['User-Agent'] =
'Mozilla/5.0 (Windows; U; Windows NT 5.1;'+
'en-GB; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4'
while url.find("limit") == -1:
# leer pagina
print "abriendo:", url
request = urllib2.Request(url, headers=headers)
web = urllib2.urlopen(request).read()

# sacar listado de links a snapshots
pos2 = 0
pos1 = 0
while pos1 != 5:
pos1 = web.find('href="/w/index.php?title='+ARTICULO+'&oldid=', pos2) + 6
pos2 = web.find('"', pos1)
if pos1 != 5:
link = ("http://"+IDIOMA+".wikipedia.org" + web[pos1:pos2]).replace("amp;","")
listado.append(link)
print "acumulado leidos:", len(listado)

# sacar pagina siguiente si hay
pos = web.find("href", web.find('class="mw-prevlink"')) + 6
pos1 = (web.find("href", web.find('class="mw-lastlink"')) + 6) if pos == 5 else pos
pos2 = web.find('"', pos1)
url = ("http://"+IDIOMA+".wikipedia.org" + web[pos1:pos2]).replace("amp;","")

En la variable listado (una lista, valga la redundancia) quedan guardados los links a las paginas, que se pueden volcar a un archivo o ser impresos a la salida estandar, o iterar sobre ellos, para usarlos en la ejecucion de un programa externo.


Una vez obtenida la lista de enlaces a los snapshots, con la ayuda de un programa para convertir una pagina web en imagen, se puede realizar una imagen a partir de cada link a snapshot.

En estos programas, en general se puede dar un tamaño fijo o flexible de visor de pagina, por lo cual, una página puede verse ajustada al contenido o puede ser de un largo fijo, con lo cual la pagina puede quedar con espacios sobrantes o con el contenido cortado.

Como realizar un video a partir de imagenes de distintos tamaños?

Ver este artículo

Y la escala de tiempo?

Pensemos un segundo en algo: cada imagen que capturamos a partir de los snapshots, representa una edición, y el tiempo que transcurre entre una edicion y la siguiente no es siempre igual. Tal vez un artículo se editó en un momento, luego pasaron 2 hs hasta la proxima edición y luego en 10 minutos hubo 3 ediciones. Por lo tanto no se representa bien el tiempo en el video si se toman todas las imagenes como frames del video directamente, ya que estos frames estarían dispuestos en espacios de tiempo regulares (24 fps, tal vez)

Lo que se necesita es de alguna manera agregar o quitar imágenes para construír una escala de tiempo regular, y esto convertirlo en un video.

Cabe destacar que cada snapshot de la wikipedia tiene fecha y hora, por lo cual se puede tomar una escala real de tiempo.

Combinación

De la combinación de todo lo antes mostrado, generé el siguiente código que hace muy simple la tarea de generar el video wikilapse. Realiza lo siguiente en orden:

  1. Obtiene todos los links a las páginas de historia del articulo de wikipedia deseado.
  2. Obtiene las paginas web, y utilizando webkit2img las transforma en imágenes.
  3. Convierte todas las imágenes a la misma resolución y tamaño manteniendo la relación de aspecto.
  4. Incluye la fecha de la edición del artículo en cada imágen.

Fuentes aqui: wikilapse.py webkit2png.py

Modo de uso:

  1. Descargar
    descarga ambos archivos en un mismo directorio

  2. Probablemente necesites instalar algunos modulos de python
    sudo apt-get install python-qt4 python-imaging python-tk
  3. Editar variables iniciales del archivo wikilapse.py
    ARTICULO      = "Terremoto_de_Chile_de_2010" # solo caracteres ASCII
    IDIOMA = "es" # en/es
    BROWSER_ANCHO = "1024"
    IMG_ANCHO = "800"
    IMG_ALTO = "600"
  4. Ejecutar
    python wikilapse.py 

  5. Crear video
    utilizar ffmpeg o mencoder, o cualquier otra herramienta. Ver este articulo
NOTA: Si no funciona, te invito a comentar tu problema en la zona de comentarios Wink

Video resultado 1: Pandemia wikilapse

El video de wikilapse, corresponde al artículo generado por la pandemia de gripe A del año 2009 en inglés, a 24fps con tamaño de captura de snapshots fija, y sin tomar en cuenta la escala real de tiempo.

Video resultado 2: wikilapse del terremoto de chile 2010

El video de wikilapse, corresponde al artículo generado por el terremoto de chile del año 2010 en español, a 48fps con tamaño de captura de snapshots variable, y sin tomar en cuenta la escala real de tiempo.

 

 

Última actualización el Miércoles 21 de Julio de 2010 16:11
 

Escribir un comentario


Código de seguridad
Refescar