I was able to do this without making my iCloud calendar public. Look around for vdirsyncer. It gives you the ability to log in to iCloud and replicate your calendar locally. Then point your calendar to your local ics file. I have mine refreshing a few times a day. Works like a charm.
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
Read the statement by Michael Teeuw here.
L