我想创建一个功能,从特定组中抓取每个用户的最新推文。因此,如果用户在“作者”组中,我想抓住他们最新的推文,然后最终缓存当天的结果,所以我们只做一次疯狂的腿部工作。
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或其他类似的库,但如果可能的话,我想手动执行此操作。
干杯
答案 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}