class ScrapePanoptoJob < ApplicationJob queue_as :default def perform(*args) courses = Course.all courses.each do |course| self.scrape_course(course) end end # @param [Course] course def scrape_course(course) panopto_folder_ids = course.panopto_folders panopto_folder_ids.each do |folder_id| lectures_data = Panopto::list_folder folder_id attributes = lectures_data.map do |lecture_data| { title: lecture_data['title'], start_time: Time.new(lecture_data['start_time']), recording_id: lecture_data['panopto_delivery_id'], course_id: course.id, status: :undetermined } end Lecture.insert_all(attributes, unique_by: :recording_id) end end end