Francisco Souza

Open source, Python, Django, Java, agile e outras coisas mais

Atualizando O Twitter Na Linha De Comando Com Python

Eu sei, eu sei, isso é ser extremamente nerd. Mas é isso aí o objetivo :)

Fiz um scriptzinho ainda noob que serve para atualizar o Twitter via linha de comando! Ele também tem alguns outros recursos, que não valem nada. Mas é legal de vez em quando atualizar o Twitter pelo modo texto :O

Enfim, segue o código:

[cc lang=”python”]#! /usr/bin/python

coding: utf-8

”’Este script tem por intenção fazer um pequeno gerenciador de linha de comando para o twitter.

A principal intenção é conseguir atualizar o status, mas existem ainda outras funções.

O script é novo, fiz rapidamente, numa brincadeira. A ideia é ir incrementando ele COM O TEMPO.

Modos de uso:

python atualiza-twitter.py <usuário> <opção> (Modo não-interativo) python atualiza-twitter.py (Modo interativo)

Autor: Francisco Antônio da Silva Souza Versão: 0.1 Versão do Python: 2.6.x Data da última atualização: 06 de abril de 2009

Copyleft - Nenhum direito reservado.”’

import twitter import sys

Tentando otimizar o programa com um JIT Compilertry:import psycopsyco.full()except:pass

class TwitterError(Exception):

'''Classe que representa erros ocorridos.'''
def __init__(self, message=None):
    self.message = message

def determinar_acao(codigo):

'''Método que determina, dado um código inteiro, qual ação deve ser executada.'''
if codigo == 1:
    msg = 'atualizar'
elif codigo == 3:
    msg = 'amigos'
elif codigo == 4:
    msg = 'seguidores'
elif codigo == 5:
    msg = 'atualizacoes_amigos'
else:
    msg = 'timeline'return msg

def main(lista):

'''Método principal, onde a coisa realmente acontece.

O método recebe uma tupla com os argumentos.'''

if len(lista) < 4:
    raise TwitterError(message='''Verifique se você utilizou corretamente o script.\n

    Modo de uso: atualiza-twitter.py <usuario> <senha> <opcao>

    Opções possíveis:
      atualizar - Atualiza seu status, presente no quarto parâmetro;
      timeline - Visualizar timeline pública;
      amigos - Obter lista de amigos do usuário (pessoas que o usuário segue);
      seguidores - Obter lista de pessoas que estão seguindo o usuário;
      atualizacoes_amigos - Obter timeline dos seus amigos;''')

api = twitter.Api(lista[1], lista[2])
api.SetUserAgent('Chico Twitter Updater')
opcao = lista[3]

if opcao == 'atualizar':
    texto = raw_input('Digite o texto do status: ')
    tamanho = len(texto)

    if tamanho > 1 and tamanho <= 140:
        status = api.PostUpdate(texto.decode('utf-8'))
        print 'Status postado com sucesso!nTexto do Status: '%s'.' %(texto)
    else:
        raise TwitterError(message='Seu texto deve ter entre 2 e 140 caracteres!')
elif opcao == 'timeline':
    sts = api.GetPublicTimeline()
    print 'TIMELINE'
    for s in sts:
        print '%s: '%s'' %(s.user.name, s.text)
    print
elif opcao == 'amigos':
    amigos = api.GetFriends()
    print 'LISTA DE AMIGOS DO USUÁRIO:'
    for amigo in amigos:
        print ' * %s' %amigo.name
elif opcao == 'seguidores':
    seguidores = api.GetFollowers()
    print 'LISTA DE SEGUIDORES DO USUÁRIO:'
    for seguidor in seguidores:
        print ' * %s' %seguidor.nome
elif opcao == 'atualizacoes_amigos':
    atualizacoes = api.GetFriendsTimeline()
    print 'LISTA DE ATUALIZAÇÕES DOS AMIGOS DO USUÁRIO:'
    for st in atualizacoes:
        print ' %s: '%s'' %(st.user.name, st.text)
else:
    raise TwitterError('Opção inválida!')

Execução principal

if name == ’main’:

try:
    if len(sys.argv) == 1:
        print 'Para utilizar este script, você precisa estar autenticado.'
        login = raw_input('Digite seu login: ')
        senha = raw_input('Digite sua senha: ')
        opcao = input('''Selecione no menu abaixo sua opção:
              1 - Atualizar meu status
              2 - Visualizar timeline pública
              3 - Pessoas que estou seguindo
              4 - Pessoas que me seguem
              5 - Atualizações dos meus amigos

Digite sua opção: ”’)

        nome_opcao = determinar_acao(opcao)
        lista = [sys.argv[0], login, senha, nome_opcao]
        main(lista)
    else:
        main(sys.argv)
except TwitterError as e:
    print e.message
except:sys.exit(1)[/cc]

Dependências: Para usar este script você vai precisar do Python Twitter.

Publicação: Este script (para Python 2.5) também está disponível no Viva o Linux.