https://github.com/jobstoit/zoomdl
A zoom cloud recording downloader
https://github.com/jobstoit/zoomdl
downloader zoom
Last synced: 2 months ago
JSON representation
A zoom cloud recording downloader
- Host: GitHub
- URL: https://github.com/jobstoit/zoomdl
- Owner: jobstoit
- License: mit
- Created: 2023-01-04T12:50:08.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-10-30T17:54:14.000Z (5 months ago)
- Last Synced: 2025-10-30T19:36:58.772Z (5 months ago)
- Topics: downloader, zoom
- Language: Go
- Homepage:
- Size: 92.8 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# ZoomDL
ZoomDL is a program that will get all your zoom cloud recordings and downloads them putting them in directories based on the title.
If specified it will delete the downloaded recordings after.
## Usage
On the [zoom marketplace create a Server-to-Server-OAuth app](https://marketplace.zoom.us/develop/create) to get the user id, client id and client secret.
Make sure to read the [Server-to-Server OAuth app docs](https://marketplace.zoom.us/docs/guides/build/server-to-server-oauth-app/)
The configuration is done in environment and captures the following:
```go
func NewConfig() *Config {
c := &Config{}
c.RecordingTypes = strings.Split(os.Getenv("ZOOMDL_RECORDING_TYPES"), ";")
c.IgnoreTitles = strings.Split(os.Getenv("ZOOMDL_IGNORE_TITLES"), ";")
c.Destinations = strings.Split(os.Getenv("ZOOMDL_DESTINATIONS"), ";")
if dir := os.Getenv("ZOOMDL_DIR"); dir != "" { // backwards compatibility
c.Destinations = append(c.Destinations, fmt.Sprintf("file://%s", dir))
}
c.UserID = envRequired("ZOOMDL_USER_ID")
c.ClientID = envRequired("ZOOMDL_CLIENT_ID")
c.ClientSecret = envRequired("ZOOMDL_CLIENT_SECRET")
c.APIEndpoint = envURL("ZOOMDL_API_ENDPOINT", "https://api.zoom.us/v2")
c.AuthEndpoint = envURL("ZOOMDL_AUTH_ENDPOINT", "https://zoom.us")
c.StartingFromYear = envInt("ZOOMDL_START_YEAR", 2018)
c.Concurrency = envInt("ZOOMDL_CONCURRENCY", 4)
c.ChunckSizeMB = envInt("ZOOMDL_CHUNKSIZE_MB", 256)
c.Duration = envDuration("ZOOMDL_DURATION", "30m")
c.DeleteAfter = os.Getenv("ZOOMDL_DELETE_AFTER") == "true"
return c
}
```
Use with docker:
```sh
$ docker run \
-e "ZOOMDL_USER_ID=" \
-e "ZOOMDL_CLIENT_ID=" \
-e "ZOOMDL_CLIENT_SECRET=" \
ghcr.io/jobstoit/zoomdl:latest
```
set destinations:
```
# local
file:///absolute/path/to/file
# s3
s3://access-key:access-secret@host/bucketname?region=us-east&pathstyle=true
```