Mostrando las entradas con la etiqueta Python. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Python. Mostrar todas las entradas

jueves, enero 08, 2009

Subiendo mis fotos y videos a Picasa con Python

En mi opinión Picasa es uno de los mejores servicios que ofrece Google para compartir imágenes. Sin embargo, la versión actual del cliente para sistemas operativos Linux está aún en fase de desarrollo y por lo menos desde mi experiencia no he podido hacerlo funcionar al 100 %, dado que la funcionalidad de subir las fotos al album web no trabaja (de hecho la versión para Linux de Picasa es simplemente un ejecutable de windows que emula wine) y no encuentro la razón.

Como muchos de mis familiares comparten sus fotos en Picasa, me vi obligado a buscar una solución al problema, pues aunque desde la interfaz web de Picasa se pueden subir las fotos, es mucho más cómodo hacerlo desde un programa cliente y con una mínima intervención de parte del usuario. Adicionalmente, toda mi colección de fotografías la mantengo usando Digikam, un excelente software para manejo de colecciones de imágenes, que tiene un plugin para creacion de albumes y subida de fotos a PIcasa; sin embargo, el plugin tiene un bug al subir fotos a albumes cuyo nombre contiene espacios o algún carácter no ascii. Por lo tanto me fui en busca de otra solución.

Buscando dentro dentro de los blogs de Google, encontré que existe un API llamada GData, escrita en Python, que establece un protocolo para la lectura e introducción de datos en la web de Google (blogger, picasa, googledocs, etc). Hay numerosos ejemplos de uso y ahora la estoy usando para subir mis fotos y algunos videos cortos a Picasa, apoyado en un conjunto de scripts que encontré en:

http://wanted.eu.org/en/computers/linux/uploading_photos_to_picasaweb

El script que permite subir las fotos, consultando la base de datos de digikam, también me ha permitido subir algunos videos (tras algunas modificaciones).

TODO:
  • Implementar un método que me permita identificar la clase de archivo (video o imagen) y que se encargue de hacer la optimización. Por el momento el script base usa la python imaging library para la modificaciones de imágenes. Mi idea es usar Pymedia para la modificación y optimización de los videos.
  • Compilar Pymedia, pues he tenido algunos incovenientes.
Bueno, eso es por el momento. Espero publicar pronto los resultados.

viernes, marzo 23, 2007

Dominio gratis con FreeDNS

Algunas veces nos ha surgido la necesidad de poder acceder a nuestra máquina personasl remotamente (desde luego si contamos con una conexión dedicada), pero como sabemos que la dirección IP de nuestro PC cambia constantemente, es complicado saber de antemano que dirección IP tenemos asignada sin antes haber llamado a la casa y preguntarle a alguien cuál es la IP que tenemos. Este problema se me presentaba con frecuencia y encontré: freedns.afraid.org, un servicio que te permite tener un subdominio que apunte a tu máquina y poder acceder a ella mediante ese subdominio (entre otros servicios). Cómo hacerlo ?. Bien, basta con entrar a:


Y nos registramos. Una vez registrados, damos click en el menú Dinamic DNS de la parte izquierda y damos click en add. Después seleccionamos el tipo de dominio, el nombre del subdominio, el dominio y la IP (en este caso colocamos nuestra IP actual) y aceptamos. Nuestro nuevo dominio ha sido creado. Esperemos unos 5 minutos y si hacemos ping a ese dominio nuestra máquina debe responder:

jpromerobx@obiwan:~/Software/LastUpdater$ ping jpromerobx.mooo.com
PING jpromerobx.mooo.com (201.245.238.64) 56(84) bytes of data.
64 bytes from adsl201-245238064.dyn.etb.net.co (201.245.238.64): ....
64 bytes from adsl201-245238064.dyn.etb.net.co (201.245.238.64): .....

Sin embargo, cada vez que nuestra dirección IP cambie, debemos entrar a la página de FreeDNS y actualizar esa información, lo cual es muy engorroso, además de no proveer una solución completa. Para solucionar ese incoveniente en la tabla que lista los dominios registrados aparece un enlace llamado: Direct URL, el cual simplemente es una URL, pero que nos será de mucha utilidad, pues mediante esa URL nosotros podemos actualizar la dirección IP automáticamente sin necesidad de ingresar a la página. Bien, pues en la página de FreeDNS proporcionan una serie de clientes DNS para esa labor. Yo actualmente uso el lastupdater el cual se encuentra hecho en PHP, y simplemente en combinación con un cron es la solución a nuestro problema. Cada vez que nuestra máquina cambie de dirección IP, el script se ejecuta y actualiza la información. El script en PHP lo pueden descargar directamente de FreeDNS. Sin embargo para los que quieran probar, yo hice uno en Python (me base en lastupdater) y funciona muy bien, aqui va:


#!/usr/bin/python

# Antes de la ejecución creen un archivo llamado lastip.txt vacio.

import os
import urllib2
import time as tiempo
from datetime import *

update_url="DirectURL (cambienla)"
# ppp0 es mi interfaz de red, varia en cada máquina, por ejemplo eth0
getipcmd="/sbin/ifconfig ppp0 | grep 'inet ' | awk '{print $2}'";
f= open('lastip.txt')
last_ip=f.readline()
f.close()

while True:
ip=os.popen(getipcmd).read()
current_ip=ip[5:]
if last_ip != current_ip:
now=datetime.now()
date=now.strftime("%Y-%m-%d %H:%M:%S")
m = open('lastip.txt', 'w')
m.write(current_ip)
print date + " IP has changed from " + last_ip + " to " + ip
print "Grabbing url " + update_url + "....."
remote = urllib2.urlopen(update_url)
last_ip = current_ip
else:
print "IP " + current_ip + "has not changed"
tiempo.sleep(3600)



como ven es muy corto y sencillo. Ahora pueden agregar una tarea a cron mediante:

$ crontab -e
0 * * * * /path/del/script

y listo !. Ahora cada hora se ejecutará el script y verificará el cambio de IP. Ya es cuestión de ustedes que servicios tener habilitados para acceso remoto.