An overcomplicated, but pretty smart program to record multitrack audio automatically according to Google Calendar events. Fully configurable.
Could be made generally usable with minimal effort - please drop an issue if you would like to use this! In its current state, this code is meant for personal use only.
Using FFMPEG / DirectShow (downloads runtime automatically).
# █▀█ █▀▀ █▀▀ █▀█ █▄░█ █▀▀ ▄▀█ █░░
# █▀▄ ██▄ █▄▄ █▄█ █░▀█ █▄▄ █▀█ █▄▄
# Config file generated by Record on Calendar
version: 4.2.0 # Don't change this!
# Config file format is YAML. The RecOnCal will try to migrate it to new versions if updated.
# Made by Benedek Fodor (RedyAu) in 2022-2024
debug: false # Set to true to see additional messages on console.
##########
# CALENDAR
# ID of Google Calendar
calendar_id: = PLEASE PUT A GOOGLE CALENDAR ID HERE =
# API key for Google Calendar
api_key: = PLEASE PUT A GOOGLE API KEY HERE =
# Update frequency of calendar (minutes)
frequency: 30
# Start recording minutes earlier then calendar event start
earlier: 5
# Stop recording minutes later then calendar event end
later: 30
# Only record on events matching following regular expression (help: regexr.com)
# "." means record every event
regex: .
##########
# FILES
# Keep this number of latest recordings, delete older automatically (0 means never delete)
keep: 0
##########
# EMAIL
# Send email notification after last recording on a day
# true - enable; false - disable
dailyEmail: false
# Example for email recipients: [example@example.com, tim@apple.com]
dailyEmailRecipients: [""]
calendarEmail: false
calendarEmailRecipients: [""]
# Email client
smtpHost: null
smtpPort: null
smtpUser: null
smtpPassword: null
# Host a web status page on this port (~ to disable)
webPort: 8080
# Daily email content
dailyEmailSenderName: Record On Calendar
dailyEmailSubject: Today's recorded events
# Available replacements: [today list] [future list] [stat - success count] [stat - failed count] [time]
# Make sure to put 2 spaces before every line.
dailyEmailContent: |
RecordOnCalendar has just finished recording the last event for today.
Recorded events today:
[today list]
Next 10 events to record in the future:
[future list]
Successfully recorded [stat - success count] events so far. Failed [stat - failed count] times.
Email sent at [time]
# Calendar email content
calendarEmailSenderName: Record On Calendar
calendarEmailSubject: Calendar updated
calendarEmailContent: |
RecordOnCalendar has detected that future events have been changed in the calendar.
Next 10 events to record are:
[future list]
Email sent at [time]
# DEVICES - TRACKS
# These are the audio devices the program detected in your computer.
# Please select which ones you want to record.
# If you remove an enabled device from the system, it does not get removed from here.
# New devices get added at the top.
# EXAMPLE:
# Example Microphone 1: # Human readable name of the input (this shows up in your OS; don't change)
# filename: John Guitar # You can specify a filename for this track. Leave on '~' to use the name of the device as track name.
# record: true # Set to true to record
LGPLite Stream Engine:
fileName: ~
record: false