Skip to content

Downloads and organizes all cloud recordings from your Zoom Business account

License

Notifications You must be signed in to change notification settings

ricardorodrigues-ca/zoom-recording-downloader

Repository files navigation

zoom-recording-downloader

Python 3.6 License

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.

Screenshot

screenshot

Installation

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

Usage

Attention: You will need a Zoom Developer account in order to create a Server-to-Server OAuth app with the required credentials

  1. 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.

  2. 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.

  3. 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>"
	      }
      }
  1. You can optionally add other options to the configuration file:
  • Specify the base download_dir under which the recordings will be downloaded (default is 'downloads')
  • Specify the completed_log log file that will store the ID's of downloaded recordings (default is 'completed-downloads.log')
      {
              "Storage": {
                      "download_dir": "downloads",
                      "completed_log": "completed-downloads.log"
              }
      }
  • Specify the start_date from which to start downloading meetings (default is Jan 1 of this year)
  • Specify the end_date at which to stop downloading meetings (default is today)
  • Dates are specified as YYYY-MM-DD
      {
              "Recordings": {
                      "start_date": "2023-01-01",
                      "end_date": "2023-12-31"
              }
      }
  • If you don't specify the start_date you can specify the year, month, and day seperately
  • Specify the day of the month to start as start_day (default is 1)
  • Specify the month to start as start_month (default is 1)
  • Specify the year to start as start_year (default is this year)
      {
              "Recordings": {
                      "start_year": "2023",
                      "start_month": "1",
                      "start_day": "1"
              }
      }
  • Specify the timezone for the saved meeting times saved in the filenames (default is 'UTC')
  • You can use any timezone supported by ZoneInfo
  • Specify the time format for the saved meeting times in the filenames (default is '%Y.%m.%d - %I.%M %p UTC')
  • You can use any of the strftime format codes supported by datetime
      {
              "Recordings": {
                      "timezone": "America/Vancouver",
                      "strftime": "%Y.%m.%d-%H.%M%z"
              }
      }
  • Specify the format for the filenames of saved meetings (default is '{meeting_time} - {topic} - {rec_type} - {recording_id}.{file_extension}')
  • Specify the format for the folder name (under the download folder) for saved meetings (default is '{topic} - {meeting_time}')
      {
              "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

  • {file_extension} is the lowercase version of the file extension
  • {meeting_time} is the time in the format of strftime and timezone
  • {day} is the day from meeting_time
  • {month} is the month from meeting_time
  • {year} is the year from meeting_time
  • {recording_id} is the recording id from zoom
  • {rec_type} is the type of the recording
  • {topic} is the title of the zoom meeting
  1. Run command:
$ python3 zoom-recording-downloader.py

About

Downloads and organizes all cloud recordings from your Zoom Business account

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages