用Django获取用户最新推文

时间:2010-03-19 12:59:14

标签: 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

到目前为止我所处的位置,但我完全松散地解决了如何解析RSS来获取最新推文的问题。有人可以帮我从这里出去吗?如果有更好的方法,欢迎任何建议!我相信有人会建议使用django-twitter或其他类似的库,但如果可能的话,我想手动执行此操作。

干杯

3 个答案:

答案 0 :(得分:3)

为什么重做石头?,你可以下载/安装/导入python-twitter并做类似的事情:

tweet = twitter.Api().GetUserTimeline( u.get_profile().twitter_account )[0]

http://code.google.com/p/python-twitter/

示例:http://www.omh.cc/blog/2008/aug/4/adding-your-twitter-status-django-site/

答案 1 :(得分:1)

任何xml解析器都可以解析Rss。我之前使用过内置模块htmllib来完成不同的任务,发现它很容易处理。如果您所做的只是解析rs,我建议feedparser。我以前没用过它,但看起来很简单。

答案 2 :(得分:1)

如果你使用python-twitter,那很简单。这是来自记忆,如果我在这里犯了错误,请原谅我。

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}