¿Como bajarte tus videos de Flickr a tu disco duro?

Flickr es muy bueno organizando fotos pero es terrible dándote opciones para poder sacar tus datos fuera del sitio web. Si bien es cierto que tiene una API basada en REST con la cual puedes buscar tus fotos, esta tiene rota la parte que te permite bajarte los videos en tamaño original.

La solución es utilizar el siguiente URL: https://www.flickr.com/video_download.gne?id=XXXX

En donde XXXX es el numero secreto que identifica cada foto en Flickr.

¿Pero como obtener todos los videos? En mi caso, como sólo tenia 900 videos hice dos llamadas desde el navegar en la página en donde pruebas la API.

1
2
3
4
5
{ "photos": { "page": 1, "pages": 2, "perpage": "500", "total": "912",
    "photo": [
      { "id": "1234567", "owner": "123456789@N022", "secret": "dddddd37e2", "server": "872", "farm": 1, "title": "", "ispublic": 0, "isfriend": 0, "isfamily": 1, "license": 0,
        "description": { "_content": "" }, "o_width": "1080", "o_height": "1920", "dateupload": "1523745151", "lastupdate": "1523745269", "datetaken": "2018-04-14 13:12:43", "datetakengranularity": 0, "datetakenunknown": 0, "ownername": "josevnz", "iconserver": "4412", "iconfarm": 5, "views": 0, "tags": "", "machine_tags": "", "originalsecret": "e44c0910bb", "originalformat": "jpg", "latitude": 40.836, "longitude": -73.801, "accuracy": 0, "context": 0, "place_id": "k16PdrJTUb_Neo9weg", "woeid": "23511805", "geo_is_family": 0, "geo_is_friend": 0, "geo_is_contact": 0, "geo_is_public": 0, "media": "video", "media_status": "ready", "url_sq": "https:\/\/farm1.staticflickr.com\/872\/XXXX_37e2_s.jpg", "height_sq": 75, "width_sq": 75, "url_t": "https:\/\/farm1.staticflickr.com\/872\/XXXX_37e2_t.jpg", "height_t": 100, "width_t": 56, "url_s": "https:\/\/farm1.staticflickr.com\/872\/XXXX_37e2_m.jpg", "height_s": "240", "width_s": "135", "url_q": "https:\/\/farm1.staticflickr.com\/872\/XXXX_37e2_q.jpg", "height_q": "150", "width_q": "150", "url_m": "https:\/\/farm1.staticflickr.com\/872\/XXXX_7e2.jpg", "height_m": "500", "width_m": "281", "url_n": "https:\/\/farm1.staticflickr.com\/872\/XXXX_7e2_n.jpg", "height_n": "320", "width_n": "180", "url_z": "https:\/\/farm1.staticflickr.com\/872\/XXXX_7e2_z.jpg", "height_z": "640", "width_z": "360", "url_c": "https:\/\/farm1.staticflickr.com\/872\/XXXX_7e2_c.jpg", "height_c": "800", "width_c": "450", "url_l": "https:\/\/farm1.staticflickr.com\/872\/XXXX_7e2_b.jpg", "height_l": "1024", "width_l": "576", "url_o": "https:\/\/farm1.staticflickr.com\/872\/XXXX_0bb_o.jpg", "height_o": "1920", "width_o": "1080", "pathalias": "josevnz" }
    ] }, "stat": "ok" }

Con esto puedo construir el URL. Por ejemple en Safari (OSX) puedes hacer copiar y pegar los URL en el botón que muestra las descargas y el navegador se las bajara todas automáticamente. Así que lo único que hay que hacer es un programa que muestre 54 (mas o menos) enlaces a la vez por pantalla para poder bajarse las fotos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env python
import json
import sys
from sys import stdin
if __name__ == "__main__":
  for file in sys.argv[1:]:
    with open(file) as json_data:
      movies = json.load(json_data)
      i = 1
      for movie_data in movies['photos']['photo']:
        #print "open -a 'Safari' 'https://www.flickr.com/video_download.gne?id=%s'" % movie_data['id']
        print "https://www.flickr.com/video_download.gne?id=%s" % movie_data['id']
        i = i + 1
        if i > 54:
          stdin.readline()
          i = 1

Y este produce una salida como esta:

1
2
3
4
5
6
7
8
9
10
11
12
Joses-iMac:Metadata josevnz$ ./get_id.py videos1.json videos2.json
https://www.flickr.com/video_download.gne?id=2897
https://www.flickr.com/video_download.gne?id=297
https://www.flickr.com/video_download.gne?id=236
https://www.flickr.com/video_download.gne?id=240937
https://www.flickr.com/video_download.gne?id=297
https://www.flickr.com/video_download.gne?id=248
https://www.flickr.com/video_download.gne?id=255
https://www.flickr.com/video_download.gne?id=24447
https://www.flickr.com/video_download.gne?id=2490
https://www.flickr.com/video_download.gne?id=24310
....

El truco no es perfecto ya que:

  • El API de flickr sólo te permite mostrar 500 videos o fotos a la vez, por lo que hay que recorrer todas las páginas
  • Safari no puede bajarse 500 fotos al mismo tiempo. De hecho con 54 tuve problemas y tuve que repetir la descarga de varias fotos, aunque fue rápido

Debo mencionar que probé muchos programas en linea que prometían hacer mi respaldo, pero ninguno de ellos funciono bien. Así que con un poco de imaginación decidí usar este truco.

En el siguiente articulo les voy a mostrar como me baje 30,000 fotos de mi cuenta. Eso si lo hice programando en java.