https://github.com/rfabreu/googleupload
Handling of Blackmagic HyperDeck files upload to Google Drive.
https://github.com/rfabreu/googleupload
Last synced: about 1 month ago
JSON representation
Handling of Blackmagic HyperDeck files upload to Google Drive.
- Host: GitHub
- URL: https://github.com/rfabreu/googleupload
- Owner: rfabreu
- Created: 2024-11-22T22:38:25.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-01-19T00:38:25.000Z (3 months ago)
- Last Synced: 2025-01-19T01:23:49.097Z (3 months ago)
- Language: Python
- Homepage:
- Size: 11.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# HyperDeck & Google Drive Upload Automation Tool
## Overview
This tool automates the process of downloading media files from a Blackmagic HyperDeck device, uploading them to a specified Google Drive folder, and sending email notifications upon task completion. It features an interactive command-line interface (CLI) that guides users through selecting files for processing and ensures seamless integration with HyperDeck and Google Drive.
---
## Features
- **Interactive CLI**: Prompts the user to configure the HyperDeck connection, select files, and define custom file names.
- **HyperDeck Integration**: Connects to HyperDeck devices, lists available folders and files for download.
- **File Upload to Google Drive**: Supports large file uploads with resumable upload sessions for reliability.
- **Email Notifications**: Sends a success notification to the configured email upon completion of file uploads.
- **Progress Tracking**: Provides a progress bar with real-time updates during downloads and uploads.---
## Prerequisites
### Software Requirements
- Python 3.8 or later
- Required Python libraries:
- `requests`
- `tqdm`
- `google-auth`
- `google-api-python-client`
- `python-dotenv`### Setup
1. **Google Service Account**:
- Create a Google Service Account with access to Google Drive.
- Download the credentials JSON file for the service account.2. **App Password for Email**:
- Enable 2-Step Verification for your Gmail account.
- Generate an App Password for SMTP access to Gmail.3. **HyperDeck Device**:
- Ensure the Blackmagic HyperDeck device is accessible via its IP or URL.---
## Installation
1. Clone this repository:
```bash
git clone https://github.com/rfabreu/googleUpload.git
cd googleUpload
```2. Create a Python virtual environment and activate it:
```bash
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scriptsctivate
```3. Install dependencies:
```bash
pip install -r requirements.txt
```4. Set up a `.env` file for environment variables (see below).
---
## Environment Variables
Create a `.env` file in the root directory with the following contents:
```env
SERVICE_ACCOUNT_FILE=/path/to/your/service_account.json
FOLDER_ID=your-google-drive-folder-id
[email protected]
SMTP_PASSWORD=your-app-password
[email protected]
```- `SERVICE_ACCOUNT_FILE`: Path to the Google Service Account credentials JSON file.
- `FOLDER_ID`: The ID of the Google Drive folder where files will be uploaded.
- `SMTP_USER`: Your Gmail address for sending notifications.
- `SMTP_PASSWORD`: The App Password for your Gmail account.
- `EMAIL_TO`: The recipient email address for notifications.---
## Usage
1. Run the script:
```bash
python googleUpload.py
```2. Follow the interactive prompts:
- **Enter the HyperDeck IP or URL**: Input the IP or URL of the HyperDeck device.
- **Select Folder**: Choose a folder from the list of available folders.
- **Select Files**: Specify the files to download and upload by entering their corresponding numbers.
- **Set Custom Name**: Enter a custom name for the downloaded files (extensions will be preserved).3. The tool will:
- Download the selected files to a temporary location.
- Upload the files to Google Drive with the specified name.
- Send an email notification upon completion.---
## Example Workflow
```plaintext
$ python googleUpload.pyEnter the HyperDeck IP or URL: 192.xxx.xx.xx
Connecting to HyperDeck at http://192.xxx.xx.xx/mounts/...Available folders:
1. UNTITLED-sd1
2. UNTITLED-sd2Select a folder by number: 1
Accessing folder: UNTITLED-sd1Available files:
1. HyperDeck_0001.mcc
2. HyperDeck_0001.movEnter the file numbers to queue for download (comma-separated): 1,2
Enter a custom name for the downloaded files (without extension): CustomFileNameStarting download and upload for: HyperDeck_0001.mcc
Starting download for: HyperDeck_0001.mcc (Total Size: 10 MB)
Downloading HyperDeck_0001.mcc: 100%|█████████████████████| 10MB/10MB [00:05<00:00, 2MB/s]
Download complete for HyperDeck_0001.mcc.
Starting upload for CustomFileName.mcc...
Uploading CustomFileName.mcc: 100%|█████████████████████| 10MB/10MB [00:10<00:00, 1MB/s]
Upload complete for CustomFileName.mcc.Email notification sent successfully.
```---
## Troubleshooting
- **Email Notifications Failing**:
- Ensure the `.env` file contains valid SMTP credentials (`SMTP_USER` and `SMTP_PASSWORD`).
- Verify that the Gmail account has 2-Step Verification enabled and an App Password configured.- **Connection to HyperDeck Failing**:
- Ensure the HyperDeck IP/URL is correct and accessible from your network.- **Upload Errors**:
- Check the `FOLDER_ID` in the `.env` file to ensure it is valid and the Service Account has write permissions for the Google Drive folder.---
## Contributing
Feel free to fork this repository and submit pull requests for improvements or bug fixes.
---
## License
This project is licensed under the MIT License. See the LICENSE file for details.