lecture-attendance-manager/app/jobs/scrape_panopto_job.rb

41 lines
1.1 KiB
Ruby

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|
recording_data = Panopto::list_folder folder_id
attributes = recording_data.map do |lecture_data|
{
title: lecture_data['title'],
start_time: Time.new(lecture_data['start_time']),
recording_uuid: lecture_data['panopto_delivery_id'],
course_id: course.id,
}
end
created = Recording.insert_all(attributes, unique_by: :recording_uuid, returning: [:id, :title, :course_id, :start_time])
created.each do |new_recording_attrs|
new_recording = Recording.new(new_recording_attrs)
Lecture.create!(
title: new_recording.nice_title,
start_time: new_recording.start_time,
course_id: new_recording.course_id,
status: :undetermined,
recording_id: new_recording.id
)
end
end
end
end