class Myredditnews::App

Public Instance Methods

fetch_sources() click to toggle source
# File lib/myredditnews.rb, line 237
def fetch_sources
  sources = {}
  @sources.each do |source|
    begin
      sources[source] = source.fetch
    rescue FeedFetchingError => e
      $logger.info("Could not fetch feed #{source.source}. Reason:")
      $logger.info("Exception: #{e.message}. Backtrace:")
      $logger.info(e.parent.backtrace.drop(1).map {|s| "\t#{s}"}.join("\n"))
    end
  end
  sources
end
only_new(submissions) click to toggle source
# File lib/myredditnews.rb, line 234
def only_new submissions
  @history.filter(submissions)
end
sync() click to toggle source
# File lib/myredditnews.rb, line 208
def sync
  $logger.info("Mode: dry = #{Myredditnews.dry}")
  reddit = Snoo::Client.new(useragent: useragent)
  $logger.info("Logging in with #{@username}")
  reddit.log_in @username, @password
  total = 0
  fetch_sources().each do |source, submissions|
    only_new(submissions).each do |submission|
      begin
        source.format(submission).submit(reddit, @target_subreddit)
        @history.posted! submission
        total += 1
      rescue RedditError => e
        puts "Error submitting #{submission}"
        puts "Reason: #{e.message}"
      rescue => e
        puts "Failed submitting #{submission}"
        puts "Message: #{e.message}"
        puts e.backtrace
      end
    end
  end
  $logger.info("Sent #{total} entries to r/#{@target_subreddit}")
  reddit.log_out
  history.append_entries!
end