mirror of
https://github.com/thewesker/iron_ebooks.git
synced 2025-12-20 04:11:12 -05:00
65 lines
1.6 KiB
Ruby
65 lines
1.6 KiB
Ruby
# Worker code can be anything you want.
|
|
require 'rubygems'
|
|
require 'twitter'
|
|
|
|
require 'twitter_init'
|
|
require 'markov'
|
|
|
|
source_tweets = []
|
|
|
|
$rand_limit ||= 10
|
|
|
|
puts "PARAMS: #{params}" if params.any?
|
|
|
|
unless params.key?("tweet")
|
|
params["tweet"] = true
|
|
end
|
|
|
|
# randomly running only about 1 in $rand_limit times
|
|
unless rand($rand_limit) == 0 || params["force"]
|
|
puts "Not running this time"
|
|
else
|
|
# Fetch a thousand tweets
|
|
begin
|
|
user_tweets = Twitter.user_timeline($source_account, :count => 200, :trim_user => true, :exclude_replies => false, :include_replies => true)
|
|
max_id = user_tweets.last.id
|
|
source_tweets += user_tweets.reject {|t| t.text =~ /(http:\/\/)|(\bRT\b)|(\bMT\b)|@/ }
|
|
|
|
25.times do
|
|
user_tweets = Twitter.user_timeline($source_account, :count => 200, :trim_user => true, :max_id => max_id - 1, :exclude_replies => false, :include_replies => true)
|
|
max_id = user_tweets.last.id
|
|
source_tweets += user_tweets.reject {|t| t.text =~ /(http:\/\/)|(\bRT\b)|(\bMT\b)|@/ }
|
|
end
|
|
rescue
|
|
end
|
|
|
|
puts "#{source_tweets.length} tweets found"
|
|
|
|
markov = MarkovChainer.new(2)
|
|
|
|
source_tweets.each do |twt|
|
|
text = twt.text
|
|
text.gsub!(/\#[\w\d]+/, '') # remove hashtags
|
|
markov.add_text(text)
|
|
end
|
|
|
|
tweet = nil
|
|
|
|
5.times do
|
|
tweet = markov.generate_sentence
|
|
break if !tweet.nil? && tweet.length < 140 && !source_tweets.any? {|t| t.text != tweet }
|
|
end
|
|
|
|
if params["tweet"]
|
|
if !tweet.nil? && tweet != ''
|
|
puts "TWEET: #{tweet}"
|
|
Twitter.update(tweet)
|
|
else
|
|
raise "ERROR: EMPTY TWEET"
|
|
end
|
|
else
|
|
puts "DEBUG: #{tweet}"
|
|
end
|
|
end
|
|
|