Zoom Recording Downloader is a cross-platform Python script that uses Zoom's API (v2) to download and organize all cloud recordings from a Zoom account onto local storage.
Attention: You will need Python 3.6 or greater
$ git clone https://github.com/ricardorodrigues-ca/zoom-recording-downloader
$ cd zoom-recording-downloader
$ pip3 install -r requirements.txt
Attention: You will need a Zoom Developer account in order to create a Server-to-Server OAuth app with the required credentials
Create a server-to-server OAuth app, set up your app and collect your credentials (Account ID
, Client ID
, Client Secret
). For questions on this, reference the docs on creating a server-to-server app. Make sure you activate the app. Follow Zoom's set up documentation or this video for a more complete walk through.
Add the necessary scopes to your app. In your app's Scopes tab, add the following scopes: account:master
, account:read:admin
, account:write:admin
, information_barriers:read:admin
, information_barriers:read:master
, information_barriers:write:admin
, information_barriers:write:master
, meeting:master
, meeting:read:admin
, meeting:read:admin:sip_dialing
, meeting:write:admin
, meeting_token:read:admin:live_streaming
, meeting_token:read:admin:local_archiving
, meeting_token:read:admin:local_recording
, recording:master
, recording:read:admin
, recording:write:admin
, user:master
, user:read:admin
, user:write:admin
.
Copy zoom-recording-downloader.conf.template to a new file named zoom-recording-downloader.conf and fill in your Server-to-Server OAuth app credentials:
{
"OAuth": {
"account_id": "<ACCOUNT_ID>",
"client_id": "<CLIENT_ID>",
"client_secret": "<CLIENT_SECRET>"
}
}
You can optionally add other options to the configuration file:
{
"Storage": {
"download_dir": "downloads",
"completed_log": "completed-downloads.log"
}
}
{
"Recordings": {
"start_date": "2023-01-01",
"end_date": "2023-12-31"
}
}
{
"Recordings": {
"start_year": "2023",
"start_month": "1",
"start_day": "1"
}
}
{
"Recordings": {
"timezone": "America/Vancouver",
"strftime": "%Y.%m.%d-%H.%M%z"
}
}
{
"Recordings": {
"filename": "{meeting_time}-{topic}-{rec_type}-{recording_id}.{file_extension}",
"folder": "{year}/{month}/{meeting_time}-{topic}"
}
}
For the previous formats you can use the following values
$ python3 zoom-recording-downloader.py