Archive for the ‘Python’ Category

Python como wget

Thursday, February 12th, 2009

Inspirado por este e-mail, resolvi tentar escrever um `wget -r` em Python. Com a ajuda do BeautifulSoup, bastou meia-hora para chegar numa prova de conceito bem interessante…

#!/usr/bin/env python

"""
Proof-of-concept Python implementation for `wget -r`.

Downloads only what looks like files.
That is: it isn't really recursive (yet). :)
"""

from urllib import urlopen, urlretrieve
from urlparse import urlsplit
import sys
import os

from BeautifulSoup import BeautifulSoup

URL = 'http://humberto.digi.com.br'

print "Opening", URL, "..."
b = BeautifulSoup(urlopen(URL).read())

links = [a['href'] for a in b.findAll('a')]
internal = [l for l in links if l.startswith(URL)]

# urlsplit:
#
# (u'http',
#  u'humberto.digi.com.br',
#  u'/wp-content/uploads/2008/03/delimport.png',
#  '',
#  '')

site_name = urlsplit(URL)[1]
if not os.path.isdir(site_name):
    os.mkdir(site_name)
os.chdir(site_name)

def reporthook(*a):
    sys.stdout.write('.')

for url in internal:
    # Gets only the file path, stripping first '/'
    path = urlsplit(url)[2][1:]
    print path,
    if not path or path.endswith('/'):
        # Looks like a directory, skip
        print 'skip'
        continue
    # Replicate directory structure
    dirname, fname = os.path.split(path)
    if dirname and not os.path.isdir(dirname):
        os.makedirs(dirname)

    urlretrieve(url, path, reporthook)

    print "OK"

Esse artigo é dedicado ao FTP Offline [2001-2008] da Diginet, feito em PHP com wget.

Falando em podcasts…

Monday, October 13th, 2008

Descobri agora pelo twitter que o áudio das palestras da PyCon UK 2007 também está disponível:
http://www.pyconuk.org/community/Audio2007

Não chega a ser um podcast propriamente dito — é apenas uma página Wiki com links para os arquivos. Além disso, os arquivos são distribuídos em formato Ogg, que a Apple teima em não suportar no iTunes (mais um motivo pelo qual eu odeio o iTunes, mas isso é motivo para outro post). Pra poder ouvir no iPod, o jeito vai ser convertê-los com o Audacity.


Nota: Se você não leu meu artigo sobre podcasts, leia aqui.

Campanha BR-Linux

Tuesday, June 24th, 2008

O que você tem que fazer:

  1. Copiar o texto abaixo no seu blog.
  2. Inscrever-se no site da campanha (escolhendo o projeto Python Brasil, obviamente ;-).

E qual o resultado disso? Você concorre a vários prêmios e ajuda a multiplicar a doação que será feita aos projetos de Software Livre.

Ah, achei massa que o “programa” de sorteio também é software livre! :)

awk 'BEGIN {foo=srand()} {print rand()*10000,rand()*200,$0}' inscritos.txt | sort -n | nl


Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!
…e também a pen drives, card drives, camisetas geeks, livros e mais! O BR-Linux e o Efetividade lançaram uma campanha para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e participe - quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!

WSGI: a resposta para a questão definitiva sobre Python, a web e tudo mais?

Wednesday, April 23rd, 2008

Pessoal, publiquei minha palestra do FISL 9.0 no SlideShare:
(more…)

Python: A Linguagem do Ano

Tuesday, January 8th, 2008

Esse post é apenas pra comemorar a escolha de Python como “A” Linguagem de 2007 no índice TIOBE, com o maior crescimento entre todas (2%) e finalmente ultrapassando Perl.

P.S.: Java continua em primeiro, mas como o índice conta apenas linhas de código escritas, vai ser difícil ganhar essa posição — e, diga-se de passagem, ainda bem!

Studying SQLAlchemy

Saturday, August 18th, 2007

Well, I could be stealing, I could be killing, I could even be programming… But today, inspired by this enlightening SQLAlchemy diagram and some great docs, I decided to just… draw.
… 

(more…)