---
# System prepended metadata

title: Python Tools Roadmap

---

# Python Setup - Ingest-tools planning

## Setting up your virtual environment

These are the steps you need to use to essentially get to the same point you're at when you start a Colab. 

The important thing to note is that this is creating an isolated environment that you have control over(instead of taking globally installed libraries for granted). 

It allows you to manage what versions of any given library your repo relies on, preventing issues from arising when bouncing between computers(among other things).

* Globally install `pip install virtualenv`
* cd into your working directory
	* `virtualenv venv
`
* `source venv/bin/activate`
* Activate Virtual Environment
	* `source venv/bin/activate`
	* enter any libraries you'll need
		* `pip install ffmpeg`
		* `pip install opencv-python`
		* etc
	* `deactivate` to leave venv
* BEFORE COMMITTING
	* `pip freeze > requirements.txt`
		* or, in order to install(think npm install):
			* `pip install -r requirements.txt`

## What needs to get built: 

### Singles(Stateless)

* Simple rename script
	* loop through a single shoot folder and rename everything within based on the directory structure
	* write any changes into a .txt file at the top of your directory
* Simple video transcode script
	* Transcode a single video file into the format we use in our proxy scripts
* Get FFPROBE data from:
	* Audio
	* Video
	* Stills(not ffprobe, exiftool)
* Compare the file sizes of 3 locations
* Gif machine

### Utilities
* Get all files from a Shoot folder
* Get file type, return audio/video/still
* Get a shoot id from a shoot folder
* Get a shoot id record from Airtable(from a shoot folder)
* Push audio/video/stills data into Airtable

### More complex(Stateful)
* Loop through entire shoot folder and transcode everything
	* special considerations for audio and stills
* Push Shoot script that runs the rename function
	* then stores the original file names in Airtable
	* and pushes all associated ffprobe/exif data for each file type
		* norm this data formatting for each device we regularly use
* Compare all the proxy folders in Synology10 against Airtable records in photo-video and simple-ingest
* RandomStills
	* pull random stills
	* push the stills up to Slack and log them in Airtable
		* Bonus points to make them non-random, use OpenCV to recognize changes in the composition and take stills based on black levels/waveform
* PeakGif 
	* create gif from a few seconds before and after the highest decibel moment of recording
* Check for Dupe M/Es
	* Loop through a shoot folder and use CV to check footage against each other