一个机器人,它可以抓取twitter、转发和跟踪其他用户。
twitter-santa的Python项目详细描述
推特圣诞老人
为什么?这个def con talk是创建此项目的动机。简而言之,一个家伙建立了一个机器人来转发Twitter比赛,并赢得了很多随机的东西。他从未发布过源代码,所以我决定实现这样的机器人将是度过周末的好方法。因此,我构建了一个更通用的bot版本;您可以配置bot并将其用于不同的目的,而不是转发比赛(例如,rt用于捐款)。
为什么要推特圣诞老人?好吧,圣诞节快到了,你可以给自己买件礼物:) 不过,说真的,我鼓励你把这个机器人只用于教育目的。我对这个机器人的界面设计更感兴趣,所以如果您对我们如何改进它有任何想法,请告诉我。
基本知识
在我们开始之前,您需要知道此机器人仅使用python>;=3。
此bot包含少量可以传入的命令行参数。 以下是它们的完整列表:
-a
或--代理
(包含向Twitter发出HTTP请求时要使用的用户代理的文件)-i
或--使
无效(删除所有保存的会话;这包括cookies或从以前的web请求中保存的任何其他数据)-c
或--config
(包含bot配置的文件;如果没有提供,我们将使用config目录中的默认配置)-e
或--执行器计数
(指定要启动的执行器数量-解释如下)
说到界面设计,我将在这里定义三个重要的抽象概念:
搜索者(主要职责是搜索所需的tweets并将其传递给处理者)
处理程序(负责过滤和解析tweets,以确定应应用于这些tweets的适当操作)。完成后,将操作传递给执行者)
动作(许多tweets请求不同的动作来参加比赛-retweet,like,follow,comment,etc.你也可以自定义它并添加你的动作)
执行者(从处理程序接收操作列表并执行它们。简单明了)
让我们深入了解这些对象的配置。下面是一个示例json文件:
{"searchers":[{"count":1,"search-queries":["rt to win","#contest"],"scan-time":560,"month-diff":1,"request-delay":5,"error-delay":5,"empty-request-delay":20,"error-tries":5,"empty-tries":5},{"count":2,"search-queries":["rt to donate","#donation","RT","donation"],"scan-time":560,"month-diff":1,"tweet-limit":500}],"handlers":[{"count":5,"keywords":["win","winner","lucky"],"avoid-usernames":["bot","bot spotter","bot spotting"]},{"count":2,"keywords":["charity","donate","donation"],"avoid-usernames":["bot","bot spotter","bot spotting"]}],"executors":[{"count":2,"request-delay":5}]}
搜索者:
count
(定义需要创建多少具有相同配置的搜索者。可选的)搜索查询
(应该用于搜索tweets的字符串数组。必需的)扫描时间
(指定此搜索者应废弃Twitter的时间。可选的)月差异
(以月为单位定义tweets的"到期日"。例如,如果指定了1,那么我们将只接受上个月内发出的tweets。可选的)请求延迟
(指定此搜索者在发出http请求之前应等待多长时间。可选的)错误延迟
(指定此搜索程序在发生错误后重试http请求之前应等待多长时间。可选的)空请求延迟
(指定在获取空的tweets列表后,此搜索者在发出另一个http请求之前应等待多长时间。可选的)错误尝试
(指定在终止bot之前允许尝试多少次错误。可选的)空尝试
(指定在终止之前允许进行多少次"空"尝试g当前搜索者。可选的)仅限图片
(真/假值。每条微博都应该包含一个图片吗?可选的)仅验证帐户
(真/假值。我们应该只搜索来自已验证帐户的推文吗?可选的)
处理程序:
count
(定义需要创建多少个具有相同配置的处理程序。可选的)关键字
(每个tweet都应该包含的字符串数组,以便进行处理。必需的)避免用户名
(我们应该避免的用户名数组-例如bot spotters。可选的)避免关键字
(我们应该避免的用户名数组-例如bot spotters。可选的)
大多数可选配置字段都有默认值。您可以查看源代码以了解更多信息。
PIC
免责声明
这个机器人只是为了教育目的而写的。 我对你用这个机器人做的事情或者你用这个机器人发生的事情不负任何责任。 滥用此机器人可能导致永久禁止使用Twitter(您的帐户或IP地址)。