Automate your Zoom recording to Google Drive workflow with ease!
⚡ AI-Assisted Development: This application was developed with the assistance of Large Language Models (LLMs) to enhance code quality and documentation. While this has helped create robust and efficient code, please review and test thoroughly for your specific use case.
This application streamlines the process of managing Zoom recordings by automating downloads, organization, and Google Drive uploads. Built with the assistance of AI/LLMs to ensure efficient and reliable performance! 🚀
- 📥 Downloads Zoom recordings based on meeting name and user email
- 🎯 Supports video, audio, transcript, and chat file downloads
- 📁 Organizes files by date in Google Drive
- 💬 Sends notifications to Slack when videos are uploaded
- 📊 Includes progress bars for download and upload operations
- 🧹 Automatically cleans up local downloads after successful upload
- Python 3.8 or higher
- pip (if not already installed, follow the instructions here)
- Zoom OAuth 2.0 credentials (official documentation)
- Google Drive API credentials (official documentation)
- Slack webhook URL (optional)
- Clone the repository:
git clone https://github.com/thesammykins/zoom-to-drive.git
cd zoom-to-drive
- Create a virtual environment and activate it:
python3 -m venv venv
source venv/bin/activate && pip install -e .
- Install required packages:
pip install -r requirements.txt
- Set up credentials:
- Copy
.env_example
to.env
- Fill in your credentials:
- Zoom OAuth 2.0 credentials (from Zoom Marketplace)
- Google Drive API credentials
- Slack webhook URL (optional)
- Store your Google Cloud service account key as a GitHub Secret
- Copy
- Create required directories:
mkdir -p logs downloads credentials
- Configure
.env
file:- Never commit this file (it should be in .gitignore)
- Fill in your actual credentials:
ZOOM_CLIENT_ID=your_actual_client_id
ZOOM_CLIENT_SECRET=your_actual_client_secret
ZOOM_ACCOUNT_ID=your_actual_account_id
GOOGLE_SHARED_DRIVE_ID=your_drive_id
GOOGLE_DRIVE_FOLDER_ID=your_folder_id
GOOGLE_SERVICE_ACCOUNT_KEY=your_service_account_key
SLACK_WEBHOOK_URL=your_webhook_url # Optional
DEBUG=false
Run the script from the root directory:
python zoom_manager.src.main.py --name "Meeting Name" --email "[email protected]" --days 7
Arguments:
--name
: Target recording name to search for (required)--email
: Email of the Zoom user (required)--days
: Number of days to search (default: 7)--drive-id
: Google Drive folder ID (optional, overrides environment variable)--shared-id
: Google Shared Drive ID (optional, overrides environment variable)
Log levels are controlled by the DEBUG environment variable:
- With
DEBUG=true
:- Detailed API responses
- Download progress
- File operations
- No downloads are made
- With
DEBUG=false
:- Important operations
- Errors and warnings
- Final status
- Downloads are made
Logs are stored in:
./logs/zoom_manager.log
(main log file)./logs/error.log
(error-only logs)
The application includes comprehensive error handling for:
- API authentication
- Download failures
- Upload issues
- File system operations
- Ensure that your Zoom OAuth 2.0 and Google Drive API credentials are correct.
- Verify that the
GOOGLE_SERVICE_ACCOUNT_KEY
is set correctly in the.env
file.
- Check your Zoom OAuth 2.0 credentials in the
.env
file. - Ensure that your Zoom account has the necessary permissions.
- Verify that your Google Drive API credentials are correct.
- Check the internet connection and retry the operation.
For more detailed logs, enable debug mode by setting DEBUG=true
in the .env
file.
For issues and questions, please open an issue in the GitHub repository.
Copyright (c) 2024, thesammykins All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.