Crear URL recortadas con Python (bit.ly)

Posted on sáb 25 enero 2014 in Tutorial Python • 2 min read

Todos conocemos lo famoso que se han hecho los sitios para recortar URL debido al problema de microblogin a 144 caracteres (donde tenemos que ahorrar en la escritura).

Los recortadores reducen la cantidad de caracteres que puede llegar a tener una url que queramos compartir.

Existen varios sitios que facilitan el recortar URL:

  • Bit.ly
  • Goo.gl
  • TinyURL

En este caso se va a probar con bit.ly, el sitio tiene un API para poder acceder desde un programa, su documentación se encuentra acá.

Es necesario registrar la aplicación y luego buscar el apikey.

El script que se va a hacer tiene de requerimiento los siguientes módulos de python:

  • urllib
  • urllib2
  • re
  • simplejson

El script es sencillo, se pasa la serie de módulos a utilizar, se pasa el usuario y el apikey que se obtuvo de ' bit.ly y se llama a la función que recorta la url.

A continuación se muestra el código:

#!/usr/bin/python


# Script que convierte un url a un url recortado por medio de bit.ly


# requiere urllib, urllib2, re, simplejson





#Se intenta importar los modulos que se necesito si no devuelve mensaje de error


#donde se menciona que se requiere los los modulos.


try:


  from re import match


  from urllib2 import urlopen, Request, HTTPError


  from urllib import urlencode


  from simplejson import loads


except ImportError, e:


  raise Exception('Required module missing: %s' % e.args[0])





#Definicion de usuario y clave bit.ly


user = "o_5j8ri77vv6aa"


apikey  = "R_172fe1dcf183470c85ce345aaa784cf9395"





#Funcion que recorta el url, se le pasa un url y devuelve el mismo recortado


def shorten(url):


    #Se maneja la excepcion de error http





    try:


        #Se le pasa los parametros url, user, apikey y formato de serializacion en


        #este caso json


        params = urlencode({'longUrl': url, 'login': user, 'apiKey': apikey, 'format': 'json'})


        #Se hace la solicitud al api de bit.ly pasandole los parametros


        req = Request("http://api.bit.ly/v3/shorten?%s" % params)


        #Se abre la respuesta.


        response = urlopen(req)


        #Se lee y se carga


        j = loads(response.read())


        #Si el codigo de estatus de la peticion http es 200


        #se retona el url recortada


        if j['status_code'] == 200:


            return j['data']['url']


        #Si no es 200 se genera una excepcion pasando el mensaje de estatus


        raise Exception('%s'%j['status_txt'])


    #Si no se logra la conexion http se devuelve un mensaje de error.


    except HTTPError, e:


        raise('HTTP error%s'%e.read())

if __name__ == '__main__':


    #Se importa argv del modulo sys


    from sys import argv


    #Si no inicia el argumento con http se devuelve un mensaje de error 


    #solicitando que se coloque el http al url.


    if not match('http://',argv[1]):


        raise Exception('Debe iniciar con "http://"')


    #Se muestra en la consola el url recortado

    print shorten(argv[1])

Al ejecutar el script se tiene lo siguiente:

ernesto@grievous:~/bin/python$ ./acortarurl.py http://blog.crespo.org.ve

http://bit.ly/LXP0QB

Con el script ya se puede ir recortando url de por ejemplo el artículo anterior donde se obtiene la lista de artículos de un blog por medio de rss.

¡Haz tu donativo! Si te gustó el artículo puedes realizar un donativo con Bitcoin (BTC) usando la billetera digital de tu preferencia a la siguiente dirección: 17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV

O Escaneando el código QR desde la billetera:

17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV