2014-09-03 82 views
0

伊夫转推最新的tweet被玩弄的tweepy Python模块来创建一个Twitter的机器人是从转推我遵循一些特定帐户每鸣叫。我已经能够遵循模块文档并成功地转发了所有账户的推文。正如大多数人可能知道一些帐户不像其他人一样频繁地发微博,我不想多次转推相同的微博。我不可能得到的文档约'getting the most recent tweet'一个明确的解决办法,所以我用的帐户ID作为key value pair in a dictionary存储tweet id的解决方案上来。在转推之前,我会检查身份证以查看是否匹配。如果是的话,我跳过鸣叫使用tweepy

这是一个很好的解决方案或有我忽略了一个更简单的方法,应该再次通过文档?

回答

0

我有一个正在运行的代码,不正是这一点,但并非如此简单。在我的情况下,人们可能会转发别人,另外,稍微改变推文。所以我需要“看”它是否是相同的主题。

我通过解析鸣叫,消除通用词(一,在联合国,...),得到了主的话,然后,正如你所说的,将它们存储在一个变量实现这一目标。在我的情况下,我选择使用泡菜和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] 
+0

是的,我这个昨天实现。我使用泡菜来存储我的字典。一旦我有有效的检查中跳过锐推同样的事情两次,生病的样子到你已指出的问题提出 – Beginner 2014-09-03 19:21:32

+0

我对我的回应添加的FIFO代码,我用它帮了我。 – Lovato 2014-09-03 19:31:34