lib/chatterbot/search.rb in chatterbot-1.0.2 vs lib/chatterbot/search.rb in chatterbot-2.0.0.pre

- old
+ new

@@ -2,56 +2,66 @@ # # handle Twitter searches module Search + # set a reasonable limit on the maximum number of tweets we will + # ever return. otherwise it is possible to exceed Twitter's rate limits MAX_SEARCH_TWEETS = 1000 @skip_retweets = true # - # modify a query string to exclude retweets from searches + # exclude retweets from searches # def exclude_retweets @skip_retweets = true end + # + # include retweets from searches + # def include_retweets @skip_retweets = false end + + # + # check if this is a retweet that we want to skip + # def skippable_retweet?(t) @skip_retweets && t.retweeted_status? end # internal search code def search(queries, opts = {}, &block) debug "check for tweets since #{since_id}" - + max_tweets = opts.delete(:limit) || MAX_SEARCH_TWEETS if queries.is_a?(String) queries = [queries] end + query = queries.join(" OR ") + # # search twitter # - queries.each { |query| - debug "search: #{query} #{default_opts.merge(opts)}" - @current_tweet = nil - client.search( query, default_opts.merge(opts) ).take(max_tweets).each { |s| - update_since_id(s) - debug s.text - if has_whitelist? && !on_whitelist?(s) - debug "skipping because user not on whitelist" - elsif block_given? && !on_blacklist?(s) && !skip_me?(s) && !skippable_retweet?(s) - @current_tweet = s - yield s - end - } - @current_tweet = nil + + debug "search: #{query} #{default_opts.merge(opts)}" + @current_tweet = nil + client.search( query, default_opts.merge(opts) ).take(max_tweets).each { |s| + update_since_id(s) + debug s.text + + if block_given? && valid_tweet?(s) + @current_tweet = s + yield s + end } + @current_tweet = nil + end end end