Capítulo 13 - Buscando informações na web

Um dos campos da tabela verbo em nossa base conjuga é o chamado regular. Até o momento, sempre que um verbo novo é inserido na base de dados nós simplesmente confiamos no julgamento do usuário e marcamos com o número um o campo regular, na linha correspondente ao nome do verbo. Que tal, porém, verificar também em uma fonte confiável, na web, se o verbo é regular ou irregular?

#!/usr/bin/python 
# -*- coding: iso-8859-15 -*- 
# Programa que conjuga verbos regulares 
# versão 0.08 por Cesar Brod em 29/08/2013 
# variáveis iniciadas por "seu_" são fornecidas pelo usuário 
# variáveis terminadas por "_bd" tem origem na base de dados 
# variáveis terminadas em "_web" são relativas a consultas online 
# Informações de conexão à base de dados: 
#     carrega a biblioteca de funções de acesso e manipulação de dados 
import MySQLdb 
#     informa os dados da conexão 
dados = MySQLdb.connect(host="192.168.1.104",  # endereço do servidor MySQL 
                        port=3306,             # porta usada na conexão 
                        user="root",           # usuário 
                        passwd="artista",      # senha 
                        db="conjuga")          # nome da base 
#     cria o cursor para a manipulação de dados 
cobra = dados.cursor() 
# Informações relativas à conexão com a web 
#     carrega a biblioteca de funções para o acesso web 
import urllib2 
print chr(27) + "[2J"  # limpa a tela 
# Solicita informações do usuário 
print '====================================================' 
print 'Programa conjugador de verbos regulares em português' 
print '====================================================' 
print 
seu_nome = raw_input("Digite seu primeiro nome   : ") 
seu_sobrenome = raw_input("Digite seu último sobrenome: ") 
# Verifica se o usuário já existe na base 
existe = cobra.execute(("SELECT nome, sobrenome \ 
                         FROM usuario WHERE nome=%s AND sobrenome=%s"), 
                      (seu_nome, seu_sobrenome)) 
if existe > 0: 
    print 
    print 'Obrigado por usar novamente nosso conjugador, ' \ 
          + seu_nome + ' ' + seu_sobrenome + '!' 
    print 
else: 
    print 'Essa é a primeira vez que você usa nosso conjugador, ' \ 
          + seu_nome + ' ' + seu_sobrenome + '!' 
    cobra.execute("INSERT INTO usuario (nome, sobrenome, visitas) \ 
               VALUES(%s, %s, %s)", (seu_nome, seu_sobrenome, 1)) 
    dados.commit() 
# Listas com as terminações de verbos regulares 
pessoas = ['Eu', 'Tu', 'Ele', 'Nós', 'Vós', 'Eles']; 
conjuga_ar = ['o', 'as', 'a', 'amos', 'ais', 'am']; 
conjuga_er = ['o', 'es', 'e', 'emos', 'eis', 'em']; 
conjuga_ir = ['o', 'es', 'e', 'imos', 'is', 'em']; 
# O usuário informa o verbo 
seu_verbo = raw_input("Digite o infinitivo de um verbo regular: ") 
# Consulta o Wikcionário para ver se o verbo é regular 
print 'Aguarde um momento enquanto consulto o Wikcionário para saber' 
print 'se o verbo ' + seu_verbo + ' consta como verbo regular.' 
print 
#     primeiro, monta o endereço, incluindo o nome do verbo 
endereco_web = 'http://pt.wiktionary.org/wiki/' + seu_verbo 
#     depois, cria a requisição para a busca 
req_web = urllib2.Request(endereco_web, headers={'User-Agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0"}) 
#     busca o conteúdo 
conteudo_web = urllib2.urlopen(req_web) 
#     armazena o conteúdo 
conteudo_web = conteudo_web.read() 
#     pesquisa se o verbo é regular 
if ("Verbo regular da " in conteudo_web):
    print 'Confirmado: ' + seu_verbo + ' é um verbo regular!' 
    print 'Agora verificarei se ele já foi conjugado anteriormente.' 
    print 
# Verifica a existência do verbo na base de dados 
    existe = cobra.execute(("SELECT verbo \ 
                             FROM verbo WHERE verbo=%s"), 
                          (seu_verbo)) 
    if existe > 0: 
        cobra.execute(("SELECT frequencia FROM verbo WHERE verbo=%s"), (seu_verbo)) 
        frequencia_bd = cobra.fetchone() 
        frequencia_bd = frequencia_bd[0]  # extrai o primeiro dado da tupla 
        print 'O verbo ' + seu_verbo + ' já foi conjugado ' + str(frequencia_bd) + ' vezes.' 
        cobra.execute("UPDATE verbo SET frequencia = %s WHERE verbo = %s", (frequencia_bd + 1, seu_verbo)) 
        dados.commit() 
    else: 
        print 'Essa é a primeira vez que conjugo ' + seu_verbo + '!' 
        cobra.execute("INSERT INTO verbo (verbo, frequencia, regular) \ 
                   VALUES(%s, %s, %s)", (seu_verbo, 1, 1)) 
        dados.commit() 
    termina_em = seu_verbo[-2:]  # separa a terminação do verbo 
# De acordo com a terminação do verbo, conjugamos apropriadamente 
    if termina_em == 'ar': 
        for i in range(6):  # repete seis vezes, percorrendo a lista 
            print pessoas[i]+' '+seu_verbo[:-2]+conjuga_ar[i] 
    elif termina_em == 'er': 
        for i in range(6):  # repete seis vezes, percorrendo a lista 
            print pessoas[i]+' '+seu_verbo[:-2]+conjuga_er[i] 
    elif termina_em == 'ir': 
        for i in range(6):  # repete seis vezes, percorrendo a lista 
            print pessoas[i]+' '+seu_verbo[:-2]+conjuga_ir[i] 
else: 
    print 'Tem certeza que '+seu_verbo+' é um verbo regular?' 
    print 
    print 'O Wikcionário é um projeto colaborativo e pode ser que ' + seu_verbo 
    print 'ainda não conste nele. Se esse for o caso, visite a página web' 
    print 'http://pt.wiktionary.org e complemente a informação sobre ' + seu_verbo + '.' 
    print 
    print 'Obrigado por usar nosso conjugador!' 
    print 
dados.close()

Atenção: O serviço de compartilhamento utilizado para armazenar os arquivos desse livro, o UbuntuOne, foi descontinuado. O novo link para os arquivos referenciados no livro são os seguintes:

raquete.png
bola.png
imagem da máquina virtual
explode.tar.bz2
bolas.tar.bz2



Design: Dobro Comunicação. Desenvolvimento: Brod Tecnologia. Powered by Drupal