I literally just implemented a slightly beefier version of this for a project I'm working on so obviously there's a need. There's a python implementation (dateutil) of the icalendar rrule format which handles nearly arbitrarily complicated repeating schemes with a decent API that you might want to look at.