twython周围一个新闻界固执己见的包装
birdfeeder的Python项目详细描述
birdfeeder==Feed on tweets
安装
pip install birdfeeder
测试
需要nose
nosetests
用法
birdfeeder通过处理许多常见的 使用Twitter API时出现的问题,包括:
- 分页
- 速率限制
- url取消排序
- 错误处理
到目前为止,我们已经实现了5个方法:connect,search, list_timeline、user_timeline和user_stats(自定义 方法:
连接
如果您有TWT_API_KEY,TWT_API_SECRET,TWT_ACCESS_TOKEN, 并将TWT_ACCESS_SECRET设置为环境变量,可以使用 所有方法都没有显式连接但是,如果你想 事先显式连接,还可以将连接传递为 conn到任何方法:
importbirdfeederconn=birdfeeder.connect()tweets=birdfeeder.search(q="hello world",count=10,conn=conn)fortintweets:printt
此外,还可以使用 access_token:
importbirdfeederfortinbirdfeeder.search(q="hello world",access_token="authenticed_users_token"):printt
搜索
importbirdfeedertweets=birdfeeder.search(q="hello world",count=10)fortintweets:printt
列出时间线
importbirdfeedertweets=birdfeeder.list_timeline(owner_screen_name='cspan',slug='members-of-congress',count=100)fortintweets:printt
用户时间线
importbirdfeedertweets=birdfeeder.user_timeline(screen_name='newslynx')fortintweets:printt
用户统计
这将返回一个用户的统计字典,包括用户运行的时间。 它旨在创建用户元数据的时间序列:
importbirdfeederstats=birdfeeder.user_stats(screen_name="newslynx")printstats
分页
使用birdfeeder,分页很简单,只需添加pagination=True 任何方法,即:
importbirdfeedertweets=birdfeeder.user_timeline(screen_name='newslynx',count=5,pagination=True)fortintweets:printt
这将跟踪每个请求的max_id,并迭代 通过结果直到所有的东西都被取回(或者直到其他 指定-更多信息见下文)对于每个请求,它将等待 15秒以避免速率限制。
并发性
通过gevent向任何方法添加并发:
tweets=birdfeeder.user_timeline(screen_name="brianabelson",concurrent=True)fortintweets:printt
自定义选项
我们为每个方法添加了一些自定义选项,如下所示:
- throttle-每个请求之间等待的时间(以秒为单位)(仅 当paginate = True时相关 < $ }——请求的最大数量(仅) 当paginate = True时相关
- wait-错误发生后等待的默认秒数
- backoff-在每次错误后乘以wait的因子
- timeout-我们应该放弃 容易出错的请求。在这里,birdfeeder将记录一个警告,但是 否则会悄无声息地失败。
以下是所有方法的默认参数:
default_kws={'paginate':False,'concurrent':False,'num_workers':20,'max_id':None,'throttle':15,'count':200,'max_requests':None,'wait':1,'backoff':2,'timeout':30}
流媒体
最后,我们包含了一个简单的流式api客户端(来自 here)。 这样,初始化时可以传入三个函数:解析 函数、存储函数和错误函数,即:
frombirdfeederimportStreamdefparse(data):returndata['text']defstore(data):printdatadeferror(status_code,data):passs=Stream(parse=parse,store=store,error=error)s.statuses.filter(track='twitter')
致谢
为了写这个图书馆,我大量引用了杰里米·辛格·维恩的 优秀的`twick<;https://github.com/jsvine/twick>;`