Archivo de la etiqueta: SWF2JPG

Bajar presentaciones no disponibles para descarga en Slideshare

Este artículo va de saltarse restricciones, de forma manual y un poco chapucera, pero efectiva O:-)

Restricciones que quizá estén ahí por algo, pero que personalmente me tocan la moral porque no me gusta nada depender de la conexión a Internet y de que los hados de la Cloud Computing se apiaden de mí cuando los necesite.

El caso es que cuando encuentro una presentación en Slideshare que me gusta, suelo descargármela y archivarla en mi PC (muy 1.0, ya sé, pero es que se ven muchos sopapos 2.0 y tampoco estamos para perder el tiempo :-D).

Bueno, al tema. Como os digo, todo esto es un poco manual, quizá se pueda automatizar algo más (animaos a hacer sugerencias en los comentarios 😉 ):

  1. Instalamos GreaseMonkey en nuestro Mozilla Firefox.
  2. Instalamos y activamos el script «SlideShare Downloader» de GreaseMonkey.
  3. Instalamos el complemento DownThemAll! de Mozilla Firefox.
  4. Accedemos a una presentación en Slideshare que no permita la descarga (ésta, por ejemplo). Si hemos hecho los pasos anteriores bien, nos aparecerá un enlace «Download» al lado de la presentación (fijaos que es diferente del original «Get File»): Download Slideshare
  5. Pulsamos en el enlace y nos generará tantos enlaces a ficheros flash como transparencias tenga la presentación: Slideshare download all
  6. En esa ventana, botón derecho > DownThemAll! y nos bajamos todos los SWFs: Slideshare downthemall
  7. Pasamos los SWFs a JPG con SWF2JPG (quizá venga bien un bucle tipo: for F in *.swf; do swf2jpg $F $F.jpg; done).
  8. Con todos los JPGs, hacemos un PDF: convert *jpg presentación.pdf
  9. Profit! 😉

SWF2JPG en Linux

Bueno, realmente esta receta sirve para cualquier plataforma en la que funcionen Gnash y scrot (bonito nombre, LMAO! :-D).

El caso es que ayer me pasé toda la tarde buscando una solución decente para pasar SWFs (ShockWave Flash) a cualquier formato de imagen. Google está repleto de miles de programas cutre-shareware que no funcionan con Wine y la única orientación que veía en los foros de ayuda era usar las swftools, que son geniales, pero no hacen lo que necesitaba (renderizar una animación SWF y sacar un pantallazo de la misma).

Así que pensé: en UNIX se sigue el principio KISS (Keep It Simple, Stupid), cada aplicación pretende hacer pocas cosas y hacerlas bien. Tenemos una aplicación que reproduce SWF desde la línea de comandos y otra que saca pantallazos desde la línea de comandos. Las juntamos con un poco de pegamento shell script y arreglado 🙂

El resultado es un script que hace lo que promete, aunque tiene algunas limitaciones importantes:

  1. Tarda 1 segundo por animación SWF (no es muy lento, pero tampoco es que sea una maravilla).
  2. No te permite hacer nada más con el ordenador mientras se está utilizando (es un segundo por SWF, pero si son muchas… welcome back to the batch-world!!).
  3. Las imágenes generadas tienen la misma resolución que tu escritorio. Si las quieres en otra resolución, cambia la de tu escritorio 😀

Las limitaciones están causadas por el método troglodita para extraer el pantallazo. El script básicamente lanza la animación en pantalla completa, saca el pantallazo y mata el reproductor Flash. Ya sé que no es profesional, pero funciona O:-)

Aquí tenéis el código, quizá a alguien le sea de ayuda:

#!/bin/sh

GNASH="/usr/bin/gtk-gnash"
SCROT="/usr/bin/scrot"
OUTPUTFORMAT="jpg"

if [ $# -ne 1 ]
then
  echo "error, usage: $(basename $0) file.swf"
  exit 1
else
  $GNASH --fullscreen $1 &
  GNASHPID=$!
  $SCROT -d 1 $1.$OUTPUTFORMAT
  kill $GNASHPID
fi

Como podéis observar, es necesario indicar las rutas a Gnash y scrot para que funcione. Si queréis un SWF2PNG o similares, basta con cambiar el OUTPUTFORMAT.

Happy hacking 😉