Monday, January 03, 2022
Friday, December 31, 2021
Saturday, September 25, 2021
Saturday, September 11, 2021
Thursday, August 12, 2021
Wednesday, May 12, 2021
Saturday, January 02, 2021
Wednesday, November 18, 2020
I wanted to find a way to be reminded of when sunset was coming up, and couldn't find anything useful anywhere. So I wrote up my own AppleScript that displays a notification an hour ahead of sunset, and another when sunset happens. This script relies on LocationHelper and JSONHelper to function properly.
Without further ado, here it is:
-- get current location tell application "Location Helper" -- Fetch the Google Map API information for the current location set current_location to get location coordinates set latitude to item 1 of current_location set longitude to item 2 of current_location end tell -- parse result tell application "JSON Helper" set json to fetch JSON from "https://api.sunrise-sunset.org/json?lat=" & latitude & "&lng=" & longitude set json_parsed to json's items set json_data to json_parsed's first item set sunset to sunset of json_data end tell -- change hour to 24h (getting sunset in 12h format) set sunset_time to date sunset set sunset_time_24h to sunset_time + 12 * hours set sunset_time to (time string of sunset_time_24h) -- set reminder to hour before set hour_before to sunset_time_24h - 1 * hours set hour_before to (time string of hour_before) -- get current time in UTC set UTC to (current date) - (time to GMT) set current_time to (time string of UTC) -- now time set time_now to current date set time_now to text 1 thru 5 of time string of time_now -- strip to hour and minutes set sunset_time to (text 1 thru 5) of sunset_time set hour_before_sunset to (text 1 thru 5) of hour_before set current_time to (text 1 thru 5) of current_time if current_time = hour_before_sunset then display notification "Sunset is in an hour!" with title "Sunset coming up" sound name "Submarine" delay 1 else if current_time = sunset_time then display notification "Sunset is now! (" & time_now & ")" sound name "Submarine" delay 1 end if
I have saved this script as an app in a folder under
~/Documents/SunsetReminder folder, and created the following plist file under
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>local.sunsetreminder.notify</string> <key>ProgramArguments</key> <array> <string>/bin/sh</string> <string>-c</string> <string>/usr/bin/osascript ~/Documents/SunsetReminder/SunsetReminder.app</string> </array> <key>StartInterval</key> <integer>60</integer> </dict> </plist>
Finally, you want to run
launchctl load -w /LaunchAgents/local.sunsetreminder.notify.plist from your terminal to load it. Good luck, and I hope it serves you well!