Mercurial > rsstweet
comparison app/models/tweet.rb @ 137:00dc9346dfaa
Skip self retweets
| author | nanaya <me@nanaya.pro> |
|---|---|
| date | Wed, 13 Dec 2017 03:44:43 +0900 |
| parents | 59991d10f8a3 |
| children | 7907fe886675 |
comparison
equal
deleted
inserted
replaced
| 136:59991d10f8a3 | 137:00dc9346dfaa |
|---|---|
| 1 class Tweet | 1 class Tweet |
| 2 TIMELINE_OPTIONS = { | |
| 3 :count => 100, | |
| 4 :exclude_replies => false, | |
| 5 :include_rts => true, | |
| 6 :tweet_mode => :extended, | |
| 7 } | |
| 8 | |
| 2 def initialize(twitter_id) | 9 def initialize(twitter_id) |
| 3 @clients = {} | 10 @clients = {} |
| 4 @twitter_id = twitter_id | 11 @twitter_id = twitter_id |
| 5 end | 12 end |
| 6 | 13 |
| 12 initial_config_id = client_config_id | 19 initial_config_id = client_config_id |
| 13 | 20 |
| 14 @timeline ||= | 21 @timeline ||= |
| 15 Rails.cache.fetch({ :timeline => @twitter_id }, :expires_in => cache_expires_time) do | 22 Rails.cache.fetch({ :timeline => @twitter_id }, :expires_in => cache_expires_time) do |
| 16 begin | 23 begin |
| 17 client.user_timeline(@twitter_id, :count => 100, :exclude_replies => false, :include_rts => true, :tweet_mode => :extended) | 24 client.user_timeline(@twitter_id, TIMELINE_OPTIONS).select do |tweet| |
| 25 tweet.retweeted_status.nil? || tweet.user.id != tweet.retweeted_status.user.id | |
| 26 end.map do |tweet| | |
| 27 # Fails when there's Twitter::NullObject initiated somewhere in previous select | |
| 28 # Reference: https://github.com/sferik/twitter/issues/892 | |
| 29 tweet.to_h | |
| 30 end | |
| 18 rescue Twitter::Error::TooManyRequests | 31 rescue Twitter::Error::TooManyRequests |
| 19 @client_config_id += 1 | 32 @client_config_id += 1 |
| 20 | 33 |
| 21 if initial_config_id == client_config_id | 34 if initial_config_id == client_config_id |
| 22 raise | 35 raise |
| 23 else | 36 else |
| 24 retry | 37 retry |
| 25 end | 38 end |
| 26 end | 39 end |
| 40 end.map do |tweet_hash| | |
| 41 Twitter::Tweet.new(tweet_hash) | |
| 27 end | 42 end |
| 28 end | 43 end |
| 29 | 44 |
| 30 def user | 45 def user |
| 31 @user ||= | 46 @user ||= |
