Skip to content

Record multitrack audio automatically according to Google Calendar events.

Notifications You must be signed in to change notification settings

RedyAu/record_on_calendar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Record On Calendar

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).

Example config:

# █▀█ █▀▀ █▀▀ █▀█ █▄░█ █▀▀ ▄▀█ █░░
# █▀▄ ██▄ █▄▄ █▄█ █░▀█ █▄▄ █▀█ █▄▄

# 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]

Example audio setup:

# 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