2010-03-19 6 views
0

Je souhaite créer une fonction qui récupère le dernier tweet de chaque utilisateur d'un groupe spécifique. Donc, si un utilisateur est dans le groupe 'auteurs', je veux récupérer leur dernier tweet puis enfin mettre en cache le résultat de la journée pour que nous ne fassions qu'une seule fois le travail fou.Obtenir le dernier tweet des utilisateurs avec Django

def latest_tweets(self): 
    g = Group.objects.get(name='author') 
    users = [] 
    for u in g.user_set.all(): 
     acc = u.get_profile().twitter_account 
     users.append('http://twitter.com/statuses/user_timeline/'+acc+'.rss') 
    return users 

Est où je suis à ce jour, mais je suis à une extrémité libre complète à la façon dont je parser le flux pour y arriver le dernier tweet. Est-ce que quelqu'un pourrait m'aider? S'il y a une meilleure façon de le faire, toutes les suggestions sont les bienvenues! Je suis sûr que quelqu'un proposera d'utiliser django-twitter ou d'autres bibliothèques similaires, mais je voudrais le faire manuellement si possible.

Vive

Répondre

1

Rss peuvent être analysés par un analyseur XML. J'ai déjà utilisé le module intégré htmllib pour une tâche différente et je l'ai trouvé facile à gérer. Si tout ce que vous faites est rss parsing cependant, je recommanderais feedparser. Je ne l'ai pas encore utilisé, mais cela semble assez simple.

1

Si vous allez avec python -twitter c'est assez simple. C'est de mémoire alors pardonne-moi si je fais une erreur ici.

from django.core.cache import cache 
import twitter 


TWITTER_USER = 'username' 
TWITTER_TIMEOUT = 3600 

def latest_tweet(request): 

    tweet = cache.get('tweet') 
    if tweet: 
    return {"tweet":tweet} 

    api = twitter.Api() 
    tweets = api.GetUserTimeline(TWITTER_USER) 
    tweet = tweets[0] 

    tweet.date = datetime.strptime(
    tweet.created_at, "%a %b %d %H:%M:%S +0000 %Y" 
) 

    cache.set('tweet', tweet, TWITTER_TIMEOUT) 

    return {"tweet": tweet} 
Questions connexes