Last active
July 2, 2023 12:06
-
-
Save lincerely/92904bcb73bce7266b7236412e8d5fe7 to your computer and use it in GitHub Desktop.
register Youtube scheduled live reminder in macOS calendar (a calendar named "Youtube" need to be created before running this script)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
tmp=/tmp/yt.html | |
url="$1" | |
if [ -z "$url" ]; then | |
echo "USAGE: $0 URL" | |
exit 1 | |
fi | |
curl -sL "$url" > $tmp | |
title=`grep -m 1 -o 'title":"[^"]*' $tmp | sed 's/^title":"//'` | |
location=`grep -m 1 -o 'name": "[^"]*' $tmp | sed 's/^name": "//'` | |
startTime=`grep -m 1 -o 'scheduledStartTime":"[^"]*' $tmp | sed 's/^scheduledStartTime":"//'` | |
startTime=`date -d "$startTime" +%s` | |
rm $tmp | |
osascript -l JavaScript -e 'function run(argv){ | |
let url = argv[0] | |
let eventStart = new Date(argv[1] * 1000) | |
let location = argv[2] | |
let title = argv[3] | |
if (argv.length != 4) { | |
return "Usage: URL STARTTIME LOCATION TITLE" | |
} | |
var app = Application.currentApplication() | |
app.includeStandardAdditions = true | |
var Calendar = Application("Calendar") | |
var eventEnd = new Date(eventStart.getTime() + 1000) | |
var ytCalendars = Calendar.calendars.whose({name: "Youtube"}) | |
var ytCalendar = ytCalendars[0] | |
var event = Calendar.Event({summary: title, startDate: eventStart, endDate: eventEnd, url: url, location: location}) | |
var len = ytCalendar.events.push(event) | |
Calendar.reloadCalendars() | |
// Set alarm at 5 min before the event start | |
var displayAlarm = Calendar.DisplayAlarm({triggerInterval: -5}) | |
ytCalendar.events[len - 1].displayAlarms.push(displayAlarm) | |
Calendar.reloadCalendars() | |
}' "$url" "$startTime" "$location" "$title" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment