cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Surveyor

How do I extract mass audio recordings from a Canvas quiz?

Jump to solution

Our campus has an average of 1,000 students and use a voice recording of their first and last name or what they prefer to go by for our system. We put a course in as a quiz in canvas to capture these recordings, but need to know if there is a way of extracting the recordings.

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Navigator

candie@nmmi.edu 


What a great idea. I'm going fully online because of COVID and I may ask my students to do that.

All of this assumes that you created an assignment of a Media Recording type. If you did something else, then the instructions would likely change.

With media recordings, there is no "Download all submissions" button like there is for online submissions.

To get all of them downloaded efficiently, you would need to use the Canvas REST API and some scripting.

For example, my media submission has this pathname (the part after the Canvas instance)

   /courses/896851/assignments/27699305

I fetch the submission data from the API with this call.

   GET /api/v1//courses/896851/assignments/27699305/submissions?include[]=user

It returns a paginated list of entries, one for each student. For students who have submitted, there will be a media_comment property that contains a url. That url can be fetched and saved to download the media file.

The reason I added include[]=user is because you might want some information about the user to put into the name of the file you're saving. Without that, you have the Canvas user ID, which may be enough, but it is not human friendly.

You cannot fetch all 1000 students at the same time, you can only fetch up to 100 at a time. The default is 10 unless you add a per_page=100 query parameter to your request [ end it with ?include[]=user&per_page=100 ].

Note that if you use the List submissions for multiple assignments endpoint that you can put in a submitted_since parameter to fetch updates without having to go through the entire list of students. It's a great way to speed up the process if you have submissions after that initial download.

View solution in original post

0 Kudos
1 Reply
Highlighted
Navigator

candie@nmmi.edu 


What a great idea. I'm going fully online because of COVID and I may ask my students to do that.

All of this assumes that you created an assignment of a Media Recording type. If you did something else, then the instructions would likely change.

With media recordings, there is no "Download all submissions" button like there is for online submissions.

To get all of them downloaded efficiently, you would need to use the Canvas REST API and some scripting.

For example, my media submission has this pathname (the part after the Canvas instance)

   /courses/896851/assignments/27699305

I fetch the submission data from the API with this call.

   GET /api/v1//courses/896851/assignments/27699305/submissions?include[]=user

It returns a paginated list of entries, one for each student. For students who have submitted, there will be a media_comment property that contains a url. That url can be fetched and saved to download the media file.

The reason I added include[]=user is because you might want some information about the user to put into the name of the file you're saving. Without that, you have the Canvas user ID, which may be enough, but it is not human friendly.

You cannot fetch all 1000 students at the same time, you can only fetch up to 100 at a time. The default is 10 unless you add a per_page=100 query parameter to your request [ end it with ?include[]=user&per_page=100 ].

Note that if you use the List submissions for multiple assignments endpoint that you can put in a submitted_since parameter to fetch updates without having to go through the entire list of students. It's a great way to speed up the process if you have submissions after that initial download.

View solution in original post

0 Kudos
Labels