↓↓↓
At Welltory, we hold and record 3-4 virtual meetings every day. The easiest way is to record meetings in zoom.us, then upload them to YouTube where they can be accessed by anyone, from any device: phones, Chromecast, etc. We’ve automated video transfers from Zoom to YouTube, added notifications, and now every recording is automatically dropped into a Slack channel. We use privacy settings (unlisted) on YouTube to make sure people who aren’t on the team don’t have access to our meetings.
The project is written in Python and launched in Docker. This simplifies the project’s initial deployment.
Disclaimer: The utility is supplied "AS IS" without any warranties.
You can reach us at [email protected]
- Automatically download a new Zoom video
- Upload the video to YouTube (privacy settings: unlisted)
- Drop a link to the YouTube video into a Slack channel
- Filter settings: will not upload videos under 15 minutes long to prevent uploads of accidental recordings
Install Docker and Docker-Compose
- Docker installation instructions: https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-docker-ce
- Docker-compose installation instructions: https://docs.docker.com/compose/install/#alternative-install-options
Then create a Docker image. To do this, enter the command:
$ make build
You need to create a .env
file in the root directory of the project, specifying the keys listed below:
ZOOM_API_KEY
ZOOM_API_SECRET
ZOOM_EMAIL
To get the keys, follow these steps:
- Follow the link: https://marketplace.zoom.us/docs/guides/build/jwt-app
- Create JWT app
- Enter the
API Key
inZOOM_API_KEY
,API Secret
inZOOM_API_SECRET
Add the following keys to the .env
file
GOOGLE_REFRESH_TOKEN
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
To get the keys, follow these steps:
- Go to the developer console: https://console.developers.google.com/cloud-resource-manager
- Create a new project and go to the new project
- Follow the link: https://console.developers.google.com/apis/api/youtube.googleapis.com/overview
- Turn on
YouTube Data API v3
- Follow the link: https://console.developers.google.com/apis/credentials
- create OAuth client credentials.
- Select Other types or
Other
(depends on localization), create - Enter
Client ID
inGOOGLE_CLIENT_ID
andClient Secret
inGOOGLE_CLIENT_SECRET
To get the GOOGLE_REFRESH_TOKEN
follow these steps:
- Follow the link: https://accounts.google.com/o/oauth2/auth?client_id=<GOOGLE_CLIENT_ID>&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/youtube.upload&access_type=offline&response_type=code, replacing
<GOOGLE_CLIENT_ID>
with theGOOGLE_CLIENT_ID
, you got from the previous step - Select the Google account you need access for
- Get access
- Enter the token in the .env file, in the
.env
in theGOOGLE_CODE
field - Run the script in docker container
$ docker-compose run app bash
$ python3.6 src/get_google_refresh_token.py`
- Enter the refresh token in the
.env
file, in theGOOGLE_REFRESH_TOKEN
field
Add the following keys to the .env
file
SLACK_CHANNEL
SLACK_TOKEN
- Enter the recipients (separated with commas) in
SLACK_CHANNEL
, for exampleSLACK_CHANNEL=#my_cannel,@my_user
- Enter the slack token in
SLACK_TOKEN
To make sure all the keys were entered into the .env
file, run the script in docker container
$ docker-compose run app bash
$ python3.6 src/check_env.py
Launch the container:
$ make up
- Create a virtual environment
$ virtualenv venv -p /usr/bin/python3 --no-site-package
- Activate virtual environment
$ source venv/bin/activate
- Establish requirements
$ pip install -r requirements.txt
- Copy cron config
$ sudo cp cron/crontab /etc/cron.d/zoom2youtube-cron
- Restart cron
$ sudo service cron restart
ZOOM_API_KEY=AAAAAAAAAAAAAAA
ZOOM_API_SECRET=BBBBBBBBBBBB
[email protected]
GOOGLE_CLIENT_ID=AAAAAAAAAAAAAA.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=BBBBBBBBBBBBBb
GOOGLE_REFRESH_TOKEN=CCCCCCCCCCCC
GOOGLE_CODE=DDDDDDDDDDDDDD
SLACK_CHANNEL=@user
SLACK_TOKEN=AAAAAAAAAAAAA
// Extra/optional configs
ZOOM_FROM_DAY_DELTA=7
ZOOM_PAGE_SIZE=10