ricardorodrigues-ca / zoom-recording-downloader

Downloads and organizes all cloud recordings from your Zoom Business account
MIT License
127 stars 65 forks source link
cloud-recordings downloader meetings recording video zoom

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>"
          }
      }
  4. 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

  1. Run command:
$ python3 zoom-recording-downloader.py