1

検索 API を使用して同じツイートを取得しない方法を見つけようとしています。それは私がやっていることです:

  1. ツイッターにリクエストする
  2. ツイートを保存する
  3. Twitterに別のリクエストを送信します
  4. ストアのツイート、
  5. 2 と 4 の結果を比較する

理想的には、ステップ 5 で 0 を取得します。これは、受信したツイートが重複していないことを意味します。したがって、Twitter サーバーに同じ情報を複数回要求することはありません。

しかし、別の呼び出しを行う必要があるステップ 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()  
4

1 に答える 1