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