This is a very simple utility, designed to be run from cron daily, which will collect "field recordings" from your Zoom acccount.
It will download any recordings found in the last "days" days, as calculated with the meeting's local timezone.
To use, populate ~/.zoom-lomax like this:
{
"api_key": "sdk_api_key",
"api_secret": "sdk_api_secret",
"user": "[email protected]",
"output_dir": "/home/user/zoom-recordings/",
"days": 1,
"notify": "Your Name <[email protected]>"
}
days
and notify
are optional, with the former defaulting to 1 day.
(You can also use the -c
command-line option to specify a different
config file.)
They don't make it obvious, but you will need a Pro account in order to be able to get the key and secret. The account owner has to follow the steps described here:
https://marketplace.zoom.us/docs/sdk/native-sdks/preface/sdk-keys-secrets
under "Create new SDK credentials".
Written in Rust; after installing Rust with rustup
, build with:
$ cargo build
and run with:
$ ./target/debug/zoom-lomax
This can also run as a lambda function. In this case, no downloads are done, and the notification email contents provides a list of URIs and times. It's easiest to build this with rust-musl-builder. The function also returns a payload listing all matching recordings and their URLs.
The JSON configuration above should be provided as the event for the
Lambda handler, except that api_key
and api_secret
should
instead refer to Parameter Store names, each of which contain a
SecureString
with the value. output_dir
is ignored currently.
Email notification works via Amazon SES, so that must be configured
(domain and potentially destination email both verified). Right now it's
hard-coded to use the us-east-1
region.
The Lambda function needs to run as a role with permissions for SES, and SSM
parameter store (such as AmazonSESFullAccess
and AmazonSSMReadOnlyAccess
).