require_relative '../../app/import_manager' require_relative '../../app/item_queue' require_relative '../../app/models/user' require_relative '../../app/post_downloader' require_relative '../../app/reports/console_report' require_relative '../../app/reports/simple_logger' task :enqueue_user do unless ENV['DID'] raise "Required DID parameter missing" end user = User.find_or_create_by!(did: ENV['DID']) if user.import_job puts "Import for #{user.did} is already scheduled." elsif user.active? puts "Import for #{user.did} has already started." else user.create_import_job! puts "Import for #{user.did} scheduled ✓" end end task :import_user do unless ENV['DID'] raise "Required DID parameter missing" end user = User.find_or_create_by!(did: ENV['DID']) unless ENV['COLLECTION'] raise "Required COLLECTION parameter missing" end import = ImportManager.new(user) import.report = ConsoleReport.new import.logger = SimpleLogger.new import.time_limit = ENV['UNTIL'] trap("SIGINT") { puts "\n\n\n\n\n" exit } import.start(ENV['COLLECTION']) puts "\n\n\n\n\n" end task :process_posts do queue = ItemQueue.new( [Like, Repost, Quote, Pin].map { |x| x.pending.to_a }.reduce(&:+) ) report = ConsoleReport.new trap("SIGINT") { puts "\n\n\n\n\n" exit } downloader = PostDownloader.new downloader.report = report downloader.stop_when_empty = true downloader.import_from_queue(queue) puts "\n\n\n\n\n" end