Python: encurte URL com o migre.me

Migre.me

Fiz esse código em Python para encurtar uma URL através da API do migre.me. Como não sou um expert (como o Walter Cruz, o Rafael Martins e Osvaldo Santana), o programa ficou simples e, claro, pode precisa ser melhorado.

O Rafael Martins fez um script melhor que o meu. Download: migreme.py

Vamos lá

Faça o download do script e dê a ele a permissão para ser executado:

$ wget http://labs.luishenrique.org/python/migreme.py
$ chmod +x migreme.py

Para executá-lo:

$ ./migreme.py

Exemplo de uso:

lh@debian:~$ ./migreme.py http://luishenrique.org/blog/posts/python-api-migre-me
 
> Shortened URL: http://migre.me/9clv

Para rodar como um programa nativo, faça um link simbólico com o superusuário (ou copie o arquivo) em alguma pasta contida na variável $PATH.

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 
$ cd /usr/local/bin/
# ln -s /home/pasta/do/script/migreme.py migreme

E execute agora somente com:

$ migreme

Código-fonte (Python 2) do migreme.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#! /usr/bin/env python
#! /usr/bin/env python
#
# Simple script using the migre.me API
# Author: Luis Henrique B. Sousa <contato@luishenrique.org>
# Date: 2009-10-16
#
# Usage: python migreme.py <url>
# Example: ./migreme.py http://twitter.com/luish_
#	
 
from sys import argv
import urllib
import xml.dom.minidom
 
api = 'http://migre.me/api.xml?url=%s'
 
def migreme(url):
	mm_url = api % url
	dom = xml.dom.minidom.parse(urllib.urlopen(mm_url))
 
	return str(dom.getElementsByTagName('migre')[0].childNodes[0].data)
 
def main(*args):
	list = args[0]
	if len(list) == 1:
		print '\n-> Shortened URL:', migreme(str(list[0]))
	else:
		print """
- It works only with a URL.
- Usage: ./%s <url>
""" % argv[0]
 
if __name__ == "__main__":
    main(argv[1:])

E para Python 3:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#! /usr/bin/env python
 
import urllib.request, urllib.parse, urllib.error
import xml.dom.minidom
import sys 
 
api = 'http://migre.me/api.xml?url=%s'
 
def migreme(url):
	mm_url = api % url
	dom = xml.dom.minidom.parse(urllib.request.urlopen(mm_url))
 
	return str(dom.getElementsByTagName('migre')[0].childNodes[0].data)
 
def main(*args):
	list = args[0]
	if len(list) == 1:
		print('Shortened url:', migreme(str(list[0])))
	else:
		print("""
- It works only with a URL.
- Usage: ./migreme.py
-- Example: ./migreme.py http://yoursite.com/articles/search/?query=linux&amp;page=5&amp;language=en
""")
 
if __name__ == "__main__":
    main(sys.argv[1:])

UPDATE 26/01/2009: Atualizei o script com a dica do Rafael Martins. :-)

Se houver dúvida e/ou sugestão, por favor, escreva um comentário ou use o formulário de contato.

Compartilhe:

  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • PDF
  • Twitter
  • Add to favorites
  • RSS
  • Identi.ca

Comentários

  1. [...] This post was mentioned on Twitter by Luís Henrique and Luís Henrique, Luís Henrique. Luís Henrique said: Encurte URL com a api do @migreme usando #python http://bit.ly/10KYt6 [...]

  2. Rafael Martins 16 de outubro de 2009

    Eu fiz algo aqui… aparentemente não precisa desse ‘for’

    http://hg.rafaelmartins.eng.br/scripts/file/0506383cceff/python/migreme.py

    só roda em python2 ;-)

  3. Luís Henrique 16 de outubro de 2009

    Rafael Martins, show de bola o seu script, principalmente o tratamento de erros. Ficam claros sua experiência e minha ignorância. hehe Mas, é claro, o aprendizado vem com o tempo, prática e erros. No mais, acho que pode ser integrado em ambos os scripts um tratamento a URL (do argumento) usando o unicode utf-8. Ah, vou tirar o for medíocre dali. :P

    Valeu pela contribuição. Abraço!

  4. Walter Cruz 19 de outubro de 2009

    Gostei do exemplo do Rafael. Dá uma olhada no meu feed2mb!

Deixe um comentário:

* Campo de preenchimento obrigatório.

XHTML: Você pode usar estas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Para mostrar uma foto nos comentários, use o Gravatar.