转发使用tweepy的最新推文

时间:2014-09-03 00:50:45

标签: python twitter tweepy

我一直在使用tweepy python模块来创建一个Twitter机器人,它会转发我关注的几个特定帐户的每条推文。我已经能够按照模块文档并成功转发所有帐户的推文。因为大多数人可能知道一些帐户不像其他人那样定期发推文,我不想多次转推相同的推文。我无法从文档中获得关于'getting the most recent tweet'的明确解决方案,因此我想出了一个将tweet id与帐户ID存储为key value pair in a dictionary的解决方案。在转发之前,我会检查ID以查看它们是否匹配。如果是,我会跳过推文

这是一个很好的解决方案,还是我忽略了一个更简单的方法,应该再次浏览文档?

1 个答案:

答案 0 :(得分:0)

我有一个正在运行的代码,但这并不是那么简单。在我的情况下,人们可能会转发其他人,另外,稍微改变一下推文。所以我需要"看"如果它是否是同一主题。

我通过解析推文,删除通用词(a,the,un,...),获取主词,然后如你所说,将它们存储在变量上来实现这一点。在我的情况下,我选择使用pickle和FIFO系统。因此,当推文发出时,我会根据相关单词列表检查最相关的单词,接受1个单词作为偏差,只有它们决定转发或不转发。事实上,我再次发推文,而不是转发。如果你只转发,也许你只能存储推文ID,你会很好。但正如我所说的那样,请注意以下帐户可能会发布相同的内容,并且会有不同的ID。

--- FIFO ---

class Fifo:

    def __init__(self, max_limit):
        self.data = [[], []]
        self.max_limit = max_limit

    def append(self, value):
        self.data[1].append(value)
        if self.max_limit > 0:
            if len(self.data[0]) + len(self.data[1]) > self.max_limit:
                return self.pop()

    def pop(self):
        if not self.data[0]:
            self.data.reverse()
            self.data[0].reverse()
        return self.data[0].pop()

    def __len__(self):
        return len(self.data[0]) + len(self.data[1])

    def tolist(self):
        temp = (self.data[0])[:]
        temp.reverse()
        return temp + self.data[1]