2013-05-09 2 views
1

검색 API를 사용하여 같은 트윗을 얻지 못하는 방법을 찾고 있습니다. 내가 뭘하는지의 그 :python-twitter 검색 API를 사용하여 최신 짹짹 ID를 얻는 방법

  1. 가 트위터
  2. 스토어 트윗 또 다른 요청을 트위터
  3. 스토어 트윗
  4. 에 요청을,
  5. 2, 4
  6. 에서 결과를 비교

이상적으로 5 단계에서 나는 0을 얻습니다. 즉, 수신 된 겹침 짹짹이 없음을 의미합니다. 그래서 트위터 서버에 동일한 정보를 두 번 이상 묻지 않습니다.

하지만 3 단계에서 멈춰서 전화를 다시해야한다고 생각합니다. 일부 특정 지점 이후에 짹짹을 얻으려고 'since_id' 인수를 사용하려고합니다. 하지만 내가 사용하는 값이 맞는지 확실하지 않습니다.

코드 :

import twitter 

class Test(): 

    def __init__(self): 
     self.t_auth() 
     self.hashtag = ['justinbieber'] 

     self.tweets_1 = [] 
     self.ids_1 = [] 
     self.created_at_1 = [] 
     self.tweet_text_1 = [] 
     self.last_id_1 = '' 
     self.page_1 = 1 

     self.tweets_2 = [] 
     self.ids_2 = [] 
     self.created_at_2 = [] 
     self.tweet_text_2 = [] 
     self.last_id_2 = '' 
     self.page_2 = 1 


     for i in range(1,16): 
      self.tweets_1.extend(self.api.GetSearch(self.hashtag, per_page=100, since_id=self.last_id_1, page=self.page_1)) 
      self.page_1 += 1; 
     print len(self.tweets_1) 
     for t in self.tweets_1: 
      self.ids_1.insert(0,t.id) 
      self.created_at_1.insert(0,t.created_at) 
      self.tweet_text_1.insert(0,t.text) 
      self.last_id_1 = t.id    

     self.last_id_2 = self.last_id_1 

     for i in range(1,16): 
      self.tweets_2.extend(self.api.GetSearch(self.hashtag, per_page=100, since_id=self.last_id_2, page=self.page_2)) 
      self.page_2 += 1; 
     print len(self.tweets_2) 
     for t in self.tweets_2: 
      self.ids_2.insert(0,t.id) 
      self.created_at_2.insert(0,t.created_at) 
      self.tweet_text_2.insert(0,t.text) 
      self.last_id_2 = t.id 

     print 'Total number of tweets in test 1: ', len(self.tweets_1) 
     print 'Last id of test 1: ', self.last_id_1 

     print 'Total number of tweets in test 2: ', len(self.tweets_2) 
     print 'Last id of test 2: ', self.last_id_2 

     print '##################################' 
     print '#############OVERLAPING###########' 

     ids_overlap = set(self.ids_1).intersection(self.ids_2) 
     tweets_text_overlap = set(self.tweet_text_1).intersection(self.tweet_text_2) 
     created_at_overlap = set(self.created_at_1).intersection(self.created_at_2) 

     print 'Ids: ', len(ids_overlap) 
     print 'Text: ', len(tweets_text_overlap) 
     print 'Created_at: ', len(created_at_overlap) 

     print ids_overlap 
     print tweets_text_overlap 
     print created_at_overlap 



    def t_auth(self): 
     consumer_key="xxx" 
     consumer_secret="xxx" 
     access_key = "xxx" 
     access_secret = "xxx" 

     self.api = twitter.Api(consumer_key, consumer_secret ,access_key, access_secret) 
     self.api.VerifyCredentials() 

     return self.api 

if __name__ == "__main__": 
    Test() 
+0

당신은 내림차순으로 저장된 Since_ID와 다른 배열을 생성 한 다음 전화를 걸기 전에 상위 배열을 검색 할 수 있습니다. – LonelySoul

답변

1

'since_id'뿐만 아니라, 당신이 'max_id'를 사용할 수 있습니다. 결과 세트의

순회 : 다음 Twitter API documentation에서 매개 변수 등의 수는, since_id, 때까지, 우리는 검색 결과를 반복하는 방법이 트윗의 대형 세트가 될 수 있기 때문에, 제어 할 수 max_id.

이 값을 동적으로 설정하면 검색 결과가 겹치지 않도록 제한 할 수 있습니다. 예를 들어, max_id가 1100으로 설정되고 since_id가 1000으로 설정되면 두 값 사이에 ID가있는 트윗을 갖게됩니다.

관련 문제