martes, 26 de julio de 2016

Como he publicado 247 fotos en twitter durante el último maratón de los cuentos

Advertencia: Este post no va sólo de fotografía, sino que requiere algunos conocimientos de programación.

Los que leais habitualmente mi blog ya conocéis el Maratón de los Cuentos de Guadalajara. Si queréis ver algunos posts antiguos sobre el tema, están accesibles en este enlace, y si queréis saber qué es el Maratón contado por sus organizadores más directos, tenéis una pagina web estupenda que os descubrirá lo que es, y os hará apuntar en la agenda el tercer fin de semana de junio del año que viene, para no faltar a la cita.

Este año se celebraba el 25 aniversario del Maratón, y con ese motivo, se ha querido actuar de manera especial en las redes sociales. Además de tratar de ser trending topic en twitter en algún momento del fin de semana (lo que se consiguió), queríamos ir mostrando a todos nuestros seguidores como había sido el Maratón de los ultimo años. Por este motivo, tuiteamos todas las fotos que hemos mostrado en la exposición que hacemos desde la Agrupación Fotográfica de Guadalajara en Noviembre desde 2008 hasta el año pasado. Eso suponía tuitear unas 250 fotos, una cada 11 minutos mas o menos para poder cubrir toda la exposición en las 46 horas que dura el maratón así:

Aunque hay aplicaciones que te permiten programar posts en twitter, mi querencia como ingeniero me llevó a preparar un sencillo programa en Python (para los legos, esto es un lenguaje de programación relativamente sencillo, pero suficientemente potente como para hacer cosas como ésta), y lanzarlo al inicio del maratón para que se encargara de tuitear por nosotros.

Para poder hacer esto, lo primero que debes hacer es pedir unas claves a twitter desde apps.twitter.com. Para tenerte mas controlado y que si haces algo raro te puedan localizar (aunque como medida es un poco inútil ante los malos de verdad), debes haberte autenticado con tu movil antes de que te den las claves. Si no lo has hecho aun, te pedirá que lo hagas en ese momento. En total tendrás 4 claves, llenas de números y letras, que tendrás que copiar y pegar en tu programa. Se supone que sólo tu has podido conseguirlas, por lo que nadie debería suplantarte. No es buena idea que se las des a nadie, ni que pases una copia de tu programa en python (que es legible por cualquiera), sin borrar o cambiar tus claves. Por supuesto, en el ejemplo que vais a ver, las claves que aparecen no son las mías ni las de la Agrupación Fotográfica de Guadalajara, desde cuya cuenta se tuitearon las fotos.

Para que el programa de Python os funcione, debéis haber instalado la librería "Tweepy", que es la que permitirá enviar mensajes de twitter. No voy a entrar aquí en cómo se instala la librería ni en cómo se utiliza Python, aunque os aseguro que es mucho más potente que el uso que le vamos a dar aquí, que consiste en tuitear mensajes con una foto y mandar mensajes directos. Para este post, voy a dar por supuesto que sabéis instalar librerías en vuestro ordenador. El código que os pongo a continuación funciona correctamente en Mac OS, y es cierto que lee los datos de un fichero de texto y que no tiene ningún control de errores, pero si tenéis cuidado y los ficheros que usáis están bien construidos, no habrá problemas. En este momento estoy preparando una versión que toma los datos de un fichero Excel y que tendrá protección contra posibles errores, pero en esta ocasión, entre la decisión de publicar las fotos y la fecha en que había que hacerlo sólo pasaron dos días, y estas cosas hay que hacerlas en el (poco) tiempo libre, no en horas de trabajo...

El programa en cuestión es el siguiente. Tened en cuenta que lo fundamental es lo que está en negrita. Lo que está en cursiva son comentarios. Ojo, porque hay un comentario en cursiva y en negrita, que hay que poner sí o sí... Los comentarios os permitirán saber a qué se dedica cada parte:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tweepy, time, sys

#Para leer el nombre del fichero de texto con los tuits argfile = str(sys.argv[1])

#Poned aqui las claves que has conseguido en apps.twitter.com.
#Con esto os identificáis vosotros y vuestro programa
#Mantened las comillas y poner aqui vuestra consumer key
CONSUMER_KEY = 'KsdALDHGvjashdgasjshsa'
#Mantened las comillas y poner aqui vuestra consumer secret key
CONSUMER_SECRET = '10IsdkjHd4iueñdiugf45hbalyrlfjwsfhb56sjlsjdafgHGSJH'
#Mantened las comillas y poner aqui vuestro access token
ACCESS_KEY = '7776318418-4F8jdshflhdslHJFDKSkkKDGKFG'
#Mantened las comillas y poner aqui vuestro access token secret
ACCESS_SECRET = 'H5jfkKGSHgk787SKDHJ6GhgdskgYD9Dh'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)

numlineas = 0

#Abrimos el fichero de texto con los tuits y las direcciones de las fotos
# y lo copiamos en lines[]
with open(argfile, "rb") as fp:
     lines = []
     for line in fp:
         numlineas = numlineas +1
         lines.append(line[:-1]) if line[-1] == "\n" else lines.append(line)
fp.close()

#Esto es solo para controlar que todo va bien.
# Nos dice cuantas lineas tiene el fichero
# y nos manda un mensaje directo a nuestra cuenta de Twitter
print(numlineas)
api.send_direct_message(user = '@tuiddetwitter', text = str(numlineas/2))

#El comando que usamos para envíar un tuit con imagenes.
# El primer campo es la imagen y el segundo el tweet
#api.update_with_media(f[1],f[0])

#Aqui recorrenos lines[] de dos en dos, para ir twiteando con imagenes
#El fichero que pasamos como argumento al programa
# tiene que tener en las lineas impares los tweets,
# y en las pares, el path completo hasta las imagenes
#Para comprobar que funciona, se puede comentar la linea de api.update...
# para que solo imprima las lineas.
# Si las imprime bien, es que luego, funcionara.
#Si todo va bien, cada 25 tuits nos manda un DM.
#El comando time.sleep(XXX) es para que espere XXX segundos entre un tuit y otro.
# En este caso, se mandaban cada 643 segundos (algo menos de 11 minutos).

linea = 0
while linea < numlineas:
     print(lines[linea])
     print(lines[linea + 1])
     api.update_with_media(lines[linea + 1],lines[linea])
     time.sleep(643)
     linea = linea + 2
     if linea % 50 == 0:
     api.send_direct_message(user = '@tuiddetwitter', text = str(linea/2))

#Esta ultima linea es para que sepamos que el programa ha acabado bien.
api.send_direct_message(user = '@tuiddetwitter', text = 'Prueba superada')

Además os hará falta un fichero de texto con los tweets y la ubicación de las fotos. Tiene que ser algo así como esto:

Este es el texto del tweet
/carpeta1/carpeta2/carpeta3/fichero1.jpg
Este es el texto del segundo tweet
/carpeta1/carpeta2/carpeta3/fichero2.jpg
Este es el texto del tercer tweet
/carpeta1/carpeta2/carpeta3/fichero3.jpg
...
Yo lo generé de manera más o menos automática con una hoja de excel que luego convertí a un fichero de texto, pero lo podéis hacer como más os guste. Si habéis llamado a vuestro programa "tuitea.py" y a vuestro fichero con los tuits y las direcciones de las fotos "datosparatuits.txt", lo que tenéis que hacer por último es:

prompt> python tuitea.py datosparatuits.txt
Tan sencillo como eso. No se si os servirá de mucho, pero os aseguro que para mí sí ha sido útil. Si a alguno de vosotros también os sirve, estupendo!.

martes, 19 de julio de 2016

Microstock (12): Etiquetado de nuestras fotografías (y II)

Posts anteriores:
  1. Introducción: Microstock, o como rentabilizar tus fotos
  2. Analizando el "estado del arte"
  3. ¿Stock o microstock?
  4. ¿Que hay que hacer para empezar?
  5. Tipos de fotos para vender
  6. Los temas mas populares (I)
  7. Los temas mas populares (II)
  8. Los temas mas populares (y III)
  9. Trabajando con modelos
  10. Cómo hacer buenas fotografías de microstock
  11. Etiquetado de nuestras fotografías (I)

Como decía en el post anterior, las etiquetas de una foto son las que te van a permitir que tus futuros clientes la encuentren y se la descarguen, que es el objetivo final que perseguimos.

En primer lugar, supongamos que estas dispuesto a pagar la tarifa de lightburner. En ese caso, ProStockMaster es la opción perfecta, porque cuando abres la ventana de gestión de etiquetas, puedes poner una palabra relacionada con tu fotografía y pedir sugerencias. Inmediatamente, la aplicación te propone varias decenas de palabras que puedes seleccionar e incluir en tu foto. Por mi experiencia (de cuando todo esto era gratuito), vale que sugieras cuatro palabras que identifiquen tu foto para que tengas un conjunto de 50 sinónimos realmente bueno.

La mala noticia, como decía, es que este servicio es de pago, y a mi me parece muy caro. Es cierto que va unido a mas cosas, como una plataforma de subida de fotos automatizada a todos tus sitios favoritos de microstock, pero aun así, no me convence.

¿De donde sacamos entonces las palabras clave? Afortunadamente hay buenas personas por el mundo que nos ofrecen herramientas gratuitas. Una de estas personas, además, es uno de los mejores fotógrafos de microstock. Yuri Arcurs es una de las (pocas) personas que vive bien de este tipo de fotografía. Cuando digo que vive bien, es que me da la impresión de que vive muy bien… Sus fotos, de todos los temas y estilos, tienen una característica que siempre debemos buscar en nuestras fotos de Stock: al ver la foto, parece que estás ahí, dentro de la imagen. Gestiona perfectamente el punto de vista ideal para la imagen y el concepto que quiere transmitir.

Ademas de todo esto, en su página web tiene una herramienta para ayudarte a etiquetar tus fotos. Supongamos que queremos etiquetar esta fotografía:

El procedimiento con la herramienta de Yuri es muy simple:

  1. Ponemos unas cuantas palabras clave que definan nuestra foto (en inglés). En este caso, uso "garlic isolated" (ajos aislados) y marco que solo me muestra fotos, y no ilustraciones
  2. Al hacer la búsqueda, nos aparecerá un buen montón de fotos que tienen esas palabras clave.
  3. Seleccionamos aquellas que más se parezcan a la nuestra (aunque os creáis muy originales, casi siempre hay algo parecido)
  4. Le damos a la opción de generar palabras clave, et voilà, ya tenemos una lista de palabras que podemos utilizar
  5. De esa lista seleccionamos aquellas que más nos cuadren con nuestra foto. Para poder hacerlo mejor, la aplicación nos dice como de utilizada es cada palabra en Shutterstock. Esto es una ayuda muy interesante: cuanto mas especifica sea una palabra (menos fotos la incluyan), más facil será que nuestra foto aparezca en una búsqueda cuando se ponga esa palabra. Si nos define fien, no dejemos de ponerla. Por otro lado, veremos algunas palabras que están en casi todas las fotos. Yo también las incluyo, no sea que por no estar, al final no encuentren mi foto.
  6. Por ultimo, le pedimos que nos muestre la lista de palabras elegidas, y copiamos y pegamos todas ellas en ProstockMaster (o en la aplicación que prefiráis utilizar para manejar las palabras clave).
La cosa es mucho más sencilla de lo que parece, y en cuanto lo hagáis un par de veces, veréis que no tiene ningún misterio.

martes, 12 de julio de 2016

Engañando a nuestro cerebro: Blanco y Negro visto en Color

Hace unos días me encontré con un post en uno de los blogs que sigo habitualmente que presentaba una ilusión óptica que me dejo pensativo... El caso es que me dicen que la cosa es muy vieja, pero yo no la conocía, al menos en este "formato".

El asunto es que si ves una fotografía con los colores invertidos, cuando pasas a verla en blanco y negro, durante unos instantes eres capaz de verla en el color real, aunque esa imagen (la de color real) no esté en ningún sitio... Como soy curioso por naturaleza pensé en comprobarlo por mi mismo, y descubrí algunas cosas interesantes.

La primera es que si la foto original tiene mucho rojo, la cosa no funciona tan bien. Probé con una foto llena de amapolas, y los colores que se llegan a ver son una especie de rosa pálido. La segunda es que todo funciona mucho mejor si la habitación en la que ves el video está a oscuras.

Con estas ideas en la cabeza, me busqué una foto que tuviera verdes y azules mayoritariamente y me decidí por esta de un pequeño faro en Holanda:

Invertí los colores de la foto y le pude un punto rojo en el centro, para que tengas algo a lo que mirar:

y generé una foto en blanco y negro para ver después de la foto con los colores invertidos:

Y con todo ello hice este sencillo video para que veas como vuestro cerebro también juega con vosotros, Si que la experiencia sea mas intensa, ponedlo a pantalla completa (el video es Full HD), y dejad la habitación a oscuras (no hace falta que sea totalmente). No he puesto ningún tipo de música, para no distraer al espectador. Espero que disfrutéis de la experiencia.

martes, 5 de julio de 2016

Pixart Printing: impresion barata y de calidad

No suelo hacer publicidad de sitios web que den servicios, pero quizá sea una buena cosa ir compartiendo con vosotros aquellos que utilizo y veo que son interesantes...

Hace unos días un amigo me descubro un sitio en la red que hace unas impresiones magníficas (y MUY baratas). Cuando me dijo los precios que el había pagado (cierto que en un momento en el que había una oferta especial) no me lo podía creer. Entre en la web inmediatamente (que sería de nosotros sin los smartphones), y vi que era completamente real... Ya se porqué no me gusta hacer post de estas cosas: en este momento el post parece uno de esos que dicen "hice XXX y salve la vida en tres días". Bueno, no hay magia en esto, sino precios baratos y buena calidad (aunque aun no se si podrán sobrevivir con el modelo de negocio que tienen).

El sitio en cuestión es Pixart Printing y el material que yo he probado es el FOREX (PVC) de 5 mm. El asunto es que tenía que hacer una foto grande (de 100x57 cm) para decorar una habitación. Los presupuestos (en aluminio) que he manejado para fotos de este tamaño en las empresas con las que he trabajado en algunas ocasiones, se ponen en algo más de 100€ para fotos algo mas pequeñas, y en algún otro sitio donde puedes pedir que te lo hagan en FOREX de 5mm, el precio es de mas de 50 €/m2 (y tienes que ir a buscarlo a la tienda, que no esta cerca de mi casa).

El asunto es que en Pixart Printing, cualquier cosa por debajo de un metro cuadrado (100x100), puesta en casa, sale por 23,28€. El precio es el mismo para tamaños mas pequeños o mas grandes, pero te acumulan fotos en esa superficie por poco dinero. Por ejemplo: imagina que quieres hacer una foto de 70x50. Sale por esos 23,28€. Ahora, si quieres una copia adicional, el total será 24,74€, y si pides 3: 27,29. Si estas pensando en hacer una exposición, y tener copias extra para poder vender, no es mala opción en absoluto... y si quieres saber el precio en aluminio, para una foto de 100x70 ronda los 50€ (la mitad de lo que he pagado por alguna no hace mucho...)

¿Y como llega a casa una foto de ese tamaño en un material que no es completamente rígido? Pues viene en una caja de cartón que está bastante bien, y con las esquinas muy protegidas (fue lo primero en que pensé cuando vi la caja que llegaba a casa).

Para colgar la foto en la pared, te venden unos colgadores (a mi me recomendaban 3 por un precio de unos 2€, que pedí junto con la foto). Sin embargo, resultaron ser un autentico fiasco. Los colgadores que vienen son los que veis en la foto, y se supone que deben clavarse en el plástico y que cuando los doblas, permiten que cuelgues la foto. El caso es que no hay manera de que se queden sujetos a la parte de atrás, por lo que el riesgo de caida es grande.

En su lugar, he utilizado este invento, que no es más que una especie de velcro (algo diferente, porque ambas partes son de plástico), con cinta adhesiva. Se juntan las dos piezas que veis en a la derecha, se pegan en la parte de atrás de la foto, y se fijan en la pared (teniendo cuidado de que quede recta). Para la foto de 100x57 he usado 4, pero quizá he sido un poco exagerado y puede que bastara con 3 (dos arriba y uno abajo en el centro).

La foto en cuestión queda así en la pared:

Para los curiosos, es una fachada de una casa en Cartagena de Indias, y sí, la elegí porque el azul de las ventanas es el mismo que el de la pared de la habitación donde está... :)