使用tweepy转发最新推文
我最近在玩一个叫做 tweepy
的 Python 模块,目的是创建一个推特机器人,让它自动转发我关注的几个特定账号的每一条推文。我按照模块的说明文档操作,成功地转发了所有这些账号的推文。不过,大家可能知道,有些账号发推的频率没有那么高,我不想重复转发同一条推文。我在文档中没有找到关于 '获取最新推文'
的明确解决方案,所以我想出了一个方法:把 推文 ID
和账号 ID 存储在一个 字典
中,作为 键值对
。在转发之前,我会检查一下 ID 是否匹配。如果匹配,我就跳过这条推文。
这样做算是个好办法吗?还是我忽略了更简单的方法,应该再看看文档?
1 个回答
0
我有一段代码可以做到这一点,但其实没那么简单。在我的情况下,人们可能会转发别人的推文,而且还可能稍微修改一下内容。所以我需要“看”一下这条推文是不是同一个主题。
我通过解析推文来实现这个功能,去掉一些常见的词(比如“a”、“the”、“un”等),提取出主要的词汇。然后,正如你所说的,我把这些词存储在一个变量里。我的选择是使用pickle和一个先进先出(FIFO)的系统。所以,当有新的推文过来的时候,我会把最相关的词和一个相关词的列表进行对比,允许有一个词的偏差,只有在这种情况下,我才决定是否转发这条推文。实际上,我是重新发这条推文,而不是简单地转发。如果你只是转发,可能只需要存储推文的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]