Copying EXIF metadata between files

This tip might be useful for those cases when an editor ignores a photo meta-information (which seems fairly common in phones).

$ exiftool -TagsFromFile source.jpg target.jpg


$ exiv2 ex -e e source.jpg  # Extraction. Also $ exiftool -exif -b source.jpg > source.exv
$ mv source.exv target.exv  # Names must match
$ exiv2 in -i e target.jpg  # Injection

Relevation 1.2 released

I've just published a new version of Relevation.

The biggest change is that it can now combine search terms, useful to reduce the number of results when you've got multiple similar logins alike. Check the updated man page for more details.

There's also a couple of small but important bugfixes.

See the changelog for the full list.

It will now handle wrong passwords a bit more gracefully and it's also easier to use on Windows now.

Relevation 1.2
or (zip includes PDF and HTML manpage)


Debian users can now also use my apt repository located at Instructions are provided there.

New tool release: Quick File Share for Android

I've published my second android app, a bit more useful than the first one (and also more prone to be a source of problems :P).

Quick File Share is meant to ease file sharing between devices by using a Wi-Fi network. Sharing content between Androids sucks: you can use bluetooth for a painfully slow experience or use email or cloud storage, with the unnecessary upload (which is also extremely slow for most people), while NFC is just a fancy way of triggering a bluetooth transfer; and that's about it.
Wi-Fi Direct (aka Wi-Fi P2P) finally emerged as a solution, but that requires discrete hardware that only newer devices have.
Meanwhile, if the devices are connected to a Wi-Fi network, than speedy, wireless, and already set up connection can't really be taken advantage of by default. That's the spot this app helps in filling, and it's certainly not the only option, but I couldn't help trying.

Select a file to share, and a temporary webserver will be started on the "sending" device. It will display a QR code and an HTTP address, so that the receiving device(s) can receive the file by just typing the address in a browser or scanning the code (scanning the code will also trigger the browser). The actual transfer is always over HTTP, so you can actually receive the file on essentially any device with network access.

What's the catch? There's always a catch. At least for the time being, the two devices must be connected to the same network. There are other tools on the marketplace that help the receiving device connect to the same network as the sender, but I didn't like that operation too much, so I preferred this way of operation.

Google Play Entry
Project Page

Screen captures:

Main window

Quick File Share

Main window, sharing enabled

Quick File Share, sharing enabled

New tool released: Network Type Indicator for Android

I recently published my first Android app, and I hope someone else finds it useful. It's a bit of niche tool, but comes to cover a missing feature of some phones.

This is a tool for those that like to know which kind of network coverage type they're under –in other words, if they're on a 2G, EDGE, 3G, etc… network–, yet their phone, like mine, doesn't display such information automatically.
It shows a status bar icon and a permanent notification identifying the network type.

It takes as little memory as possible and barely any CPU time, for those with severely limited handsets. Like me.

Unlike with my previous tools and not releasing the source code, for the time being, until I get more comfortable with Android development.

Google Play Entry
Project page

And here are some screen captures:

Network Type Indicator, dropdown permanent notification

Network Type Indicator, Persistent Notification

Network Type Indicator, light theme screenshot

Network Type Indicator, light theme

Network Type Indicator, dark theme screenshot

Network Type Indicator, dark theme

VCS 1.13 released

An updated version of vcs is available to download. Shame on me for the long wait since this has been pretty much completed for months.

The biggest change this time is the "blank frame avoidance" feature, with which (mostly) blank frames will not be captured, if possible, this is one of the cool features found in mtn and worth stealing 🙂

Also worth noting is the ability to load profiles automatically. E.g. adding "profiles=white,mosaic" to your ~/.vcs.conf file will use both profiles. A new profile ("compact") is added, and a list of installed profiles can be obtained with $ vcs –profile :list.
The manual page is finished too.
Of course you'll have to download and install the full package instead of just the script to get the profiles and man page installed.

Other minor additions are the identification of captures from FRAPS and of course the usual batch of fixes and scheduled changes. FreeBSD users, and hopefully Mac OS X too though I can't check, can again use the script too.

Finally, please read «Features to be removed from VCS» if you have any interest in VCS' future versions.

See the full changelog for more details.

vcs 1.13 (script only)
or (script, sample configuration, manpage and profiles)
deb, rpm, PKGBUILD & bz2
as usual at

Features to be removed from VCS

There's some features in vcs I plan to remove to ease working on it's absurdly big code. I haven't seen them used in the wild except long ago, plus in my samples and manuals by others. I'm calling for your opinion, however, to know for sure if I should actually remove them or not. Use the comments section below or, preferably, email me at

Features marked for deletion:

Descarga de vídeos Flash, Parte 3: El formato F4F

Y continuando con la serie, tenemos un nuevo formato que, de nuevo, viene a complicarnos la vida, aunque como de costumbre hay formas de descargarlo: El (relativamente) nuevo formato de Adobe "HTTP Dynamic Streaming" (o F4F). A día de hoy este formato lo utiliza, por ejemplo, La Sexta en sus programas completos.

La mayor complicación de este formato es que los vídeos vienen en múltiples fragmentos pequeños, y unirlos tiene su truco. Por suerte un tal KSV ha preparado un script que permite automatizar el proceso de descarga y unión de fragmentos. El script está escrito en PHP por lo que debería funcionar en cualquier sistema operativo, una vez instalado el intérprete de PHP.

En el caso que he probado, la descarga no puede ser más fácil: hay que obtener la URL del "manifiesto" (un archivo que indica qué archivos hay que descargar) y ya está.
Una forma fácil de obtener esta URL (aunque un pelín complicada de explicar) es abrir Firefox, presionar CTRL+SHIFT+K para desplegar la consola y asegurarse que "Net" está marcado, cargar la pagina del vídeo y darle al "play". En la consola introducimos ".f4m" en el campo Filtro y deberíamos obtener la URL indicada, haciendo click en la URL se abrirá una ventana, donde la linea Request URL (o URL de la petición) es la que nos interesa.

Por ejemplo, si obtenemos:
Request URL:, deberemos ejecutar el script con:

$ php AdobeHDS.php --manifest ""

con lo cual se descargarán y unirán los fragmentos, creando un archivo con extensión .flv. Los fragmentos individuales no se borrarán automáticamente.
No lo he comprobado pero dependiendo del servidor es posible que tengas que pasar también el argumento --auth {VALOR}, donde {VALOR} se obtiene de forma parecida a como con el manifiesto pero filtrando con "Seg".

Se puede obtener el script AdobeHDS.php en
 (y otros scripts del mismo autor en


nautilus-folow-symlink 1.2 released

I've just published an updated nautilus-follow-symlink, in case anyone is actually using it 😛

I've finally tested this version against both GNOME 2 and GNOME 3, and I'm also providing a variant to build against MATE's Caja (MATE is a fork of GNOME 2, and Caja its fork of Nautilus).

I've also written a version for Thunar, though that one I'm not publishing just yet.

This is pretty much a final version, I started looking for alternative desktops after GNOME 3 clashed with my brain, and as a consequence I've reduced my use of Nautilus considerably. I'll try to keep n-f-s buildable, but that's about it.

You can download the updated version as usually at
There's both sources and binaries for Debian Stable (i386 & ambd64) and Fedora 17 (i686).
Additionally there a binary package of caja-follow-symlink for LMDE (i386).

VCS 1.12.3 released

I haven't updated VCS in a while and somehow managed to keep this update ready but unreleased for months, so today I decided it was about time to get rid of it and be free to work on 1.13 😛

This is a minor update with a couple bugfixes, but most importantly, it marks the switch to bash 3; this means a lot of small changes to the code so you should update to 1.12.3 to test if it works correctly before I release future versions (eventually 🙂 with much more important changes.

Changes (excerpt):

  • Bugfix: Actually handle –ffmpeg and –mplayer [#169]
  • Bugfix: Correct parsing of -U [#187]
  • Switch to a minimum of bash 3.1 [#173]
  • Avoid re-capturing the same frame twice [#122]
  • Use getent instead of /etc/passwd when available
  • Bugfix/Internal: Don't use mplayer's length as a ceil for timecode removal [#174]

vcs 1.12.3 (script only)

or (script, sample configuration, manpage and profiles)

deb, rpm, PKGBUILD & bz2
as usual at

Relevation 1.1 released

A small update for Relevation.

It will now handle wrong passwords a bit more gracefully and it's also easier to use on Windows now.

Full list of changes:

  • Support cryptopy if PyCrypto is not available. Enhances cross-platform support.
  • Print an error message if the decryption produced wrong data (normally caused by a bad password)
  • Add PyCrypto/cryptopy to version info (--version)
  • Windows support enhancements:
    • Minimalistic GUI
    • Py2exe support
    • Packaging scripts
  • Fix $ make uninstall procedure

Relevation 1.1
or (zip includes PDF and HTML manpage)